libX11-1.8.12/0000755014310600000120000000000014763154171006405 5libX11-1.8.12/AUTHORS0000644014310600000120000000243214763154126007376 Once upon a midnight hour, long ago, in a galaxy, far, far, away, Xlib was originally developed by Jim Gettys, of Digital Equipment Corporation (now part of HP). Warren Turkal did the autotooling in October, 2003. Josh Triplett, Jamey Sharp, and the XCB team (xcb@lists.freedesktop.org) maintain the XCB support. Individual developers include (in no particular order): Sebastien Marineau, Holger Veit, Bruno Haible, Keith Packard, Bob Scheifler, Takashi Fujiwara, Kazunori Nishihara, Hideki Hiura, Hiroyuki Miyamoto, Katsuhisi Yano, Shigeru Yamada, Stephen Gildea, Li Yuhong, Seiji Kuwari. The specifications and documentation contain extensive credits. Conversion of those documents from troff to DocBook/XML was performed by Matt Dew, with assistance in editing & formatting tool setup from Gaetan Nadon and Alan Coopersmith. This work was supported by many organizations (in no particular order), including the X Consortium, Digital Equipment Corporation, Tektronix, The Open Group, OMRON, Wyse Technology, Fujitsu Limited, Sun Microsystems, Fuji Xerox, Sony Corporation, Toshiba Corporation, Massachusetts Institute of Technology, Silicon Graphics, the XFree86 Project, among others. Patches/fixes came from all over. No doubt we've missed credits. Please let us know who should be credited. libX11-1.8.12/compile0000755014310600000120000001670514763154146007716 #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2024-06-19.01; # UTC # Copyright (C) 1999-2024 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN* | MSYS*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.lo | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . GNU Automake home page: . General help using GNU software: . EOF exit $? ;; -v | --v*) echo "compile (GNU Automake) $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ clang-cl | *[/\\]clang-cl | clang-cl.exe | *[/\\]clang-cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: libX11-1.8.12/test-driver0000755014310600000120000001213714763154147010532 #! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2024-06-19.01; # UTC # Copyright (C) 2011-2024 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <. GNU Automake home page: . General help using GNU software: . END } test_name= # Used for reporting. log_file= # Where to save the output of the test script. trs_file= # Where to save the metadata of the test run. expect_failure=no color_tests=no collect_skipped_logs=yes enable_hard_errors=yes while test $# -gt 0; do case $1 in --help) print_usage; exit $?;; --version) echo "test-driver (GNU Automake) $scriptversion"; exit $?;; --test-name) test_name=$2; shift;; --log-file) log_file=$2; shift;; --trs-file) trs_file=$2; shift;; --color-tests) color_tests=$2; shift;; --collect-skipped-logs) collect_skipped_logs=$2; shift;; --expect-failure) expect_failure=$2; shift;; --enable-hard-errors) enable_hard_errors=$2; shift;; --) shift; break;; -*) usage_error "invalid option: '$1'";; *) break;; esac shift done missing_opts= test x"$test_name" = x && missing_opts="$missing_opts --test-name" test x"$log_file" = x && missing_opts="$missing_opts --log-file" test x"$trs_file" = x && missing_opts="$missing_opts --trs-file" if test x"$missing_opts" != x; then usage_error "the following mandatory options are missing:$missing_opts" fi if test $# -eq 0; then usage_error "missing argument" fi if test $color_tests = yes; then # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'. red='' # Red. grn='' # Green. lgn='' # Light green. blu='' # Blue. mgn='' # Magenta. std='' # No color. else red= grn= lgn= blu= mgn= std= fi do_exit='rm -f $log_file $trs_file; (exit $st); exit $st' trap "st=129; $do_exit" 1 trap "st=130; $do_exit" 2 trap "st=141; $do_exit" 13 trap "st=143; $do_exit" 15 # Test script is run here. We create the file first, then append to it, # to ameliorate tests themselves also writing to the log file. Our tests # don't, but others can (automake bug#35762). : >"$log_file" "$@" >>"$log_file" 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=$collect_skipped_logs;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>"$log_file" # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: libX11-1.8.12/install-sh0000755014310600000120000003611514763154146010341 #!/bin/sh # install - install a program, script, or datafile scriptversion=2024-06-19.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 # Create dirs (including intermediate dirs) using mode 755. # This is like GNU 'install' as of coreutils 8.32 (2020). mkdir_umask=22 backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -p pass -p to $cpprog. -s $stripprog installed files. -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG By default, rm is invoked with -f; when overridden with RMPROG, it's up to you to specify -f if you want it. If -S is not specified, no backups are attempted. Report bugs to . GNU Automake home page: . General help using GNU software: ." while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -p) cpprog="$cpprog -p";; -s) stripcmd=$stripprog;; -S) backupsuffix="$2" shift;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? # Don't chown directories that already exist. if test $dstdir_status = 0; then chowncmd="" fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false # The $RANDOM variable is not portable (e.g., dash). Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap ' ret=$? rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null exit $ret ' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p'. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibility with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && { test -z "$stripcmd" || { # Create $dsttmp read-write so that cp doesn't create it read-only, # which would cause strip to fail. if test -z "$doit"; then : >"$dsttmp" # No need to fork-exec 'touch'. else $doit touch "$dsttmp" fi } } && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # If $backupsuffix is set, and the file being installed # already exists, attempt a backup. Don't worry if it fails, # e.g., if mv doesn't support -f. if test -n "$backupsuffix" && test -f "$dst"; then $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null fi # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: libX11-1.8.12/aclocal.m40000644014310600000120000041454714763154144010204 # generated automatically by aclocal 1.17 -*- Autoconf -*- # Copyright (C) 1996-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.72],, [m4_warning([this file was generated for autoconf 2.72. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.17' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.17], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.17])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE="gmake" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl m4_ifdef([_$0_ALREADY_INIT], [m4_fatal([$0 expanded multiple times ]m4_defn([_$0_ALREADY_INIT]))], [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi AC_SUBST([CTAGS]) if test -z "$ETAGS"; then ETAGS=etags fi AC_SUBST([ETAGS]) if test -z "$CSCOPE"; then CSCOPE=cscope fi AC_SUBST([CSCOPE]) AC_REQUIRE([_AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl AC_REQUIRE([_AM_PROG_RM_F]) AC_REQUIRE([_AM_PROG_XARGS_N]) dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2022-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_RM_F # --------------- # Check whether 'rm -f' without any arguments works. # https://bugs.gnu.org/10828 AC_DEFUN([_AM_PROG_RM_F], [am__rm_f_notfound= AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) AC_SUBST(am__rm_f_notfound) ]) # Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SLEEP_FRACTIONAL_SECONDS # ---------------------------- AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl AC_CACHE_CHECK([whether sleep supports fractional seconds], am_cv_sleep_fractional_seconds, [dnl AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes], [am_cv_sleep_fractional_seconds=no]) ])]) # _AM_FILESYSTEM_TIMESTAMP_RESOLUTION # ----------------------------------- # Determine the filesystem's resolution for file modification # timestamps. The coarsest we know of is FAT, with a resolution # of only two seconds, even with the most recent "exFAT" extensions. # The finest (e.g. ext4 with large inodes, XFS, ZFS) is one # nanosecond, matching clock_gettime. However, it is probably not # possible to delay execution of a shell script for less than one # millisecond, due to process creation overhead and scheduling # granularity, so we don't check for anything finer than that. (See below.) AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS]) AC_CACHE_CHECK([filesystem timestamp resolution], am_cv_filesystem_timestamp_resolution, [dnl # Default to the worst case. am_cv_filesystem_timestamp_resolution=2 # Only try to go finer than 1 sec if sleep can do it. # Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, # - 1 sec is not much of a win compared to 2 sec, and # - it takes 2 seconds to perform the test whether 1 sec works. # # Instead, just use the default 2s on platforms that have 1s resolution, # accept the extra 1s delay when using $sleep in the Automake tests, in # exchange for not incurring the 2s delay for running the test for all # packages. # am_try_resolutions= if test "$am_cv_sleep_fractional_seconds" = yes; then # Even a millisecond often causes a bunch of false positives, # so just try a hundredth of a second. The time saved between .001 and # .01 is not terribly consequential. am_try_resolutions="0.01 0.1 $am_try_resolutions" fi # In order to catch current-generation FAT out, we must *modify* files # that already exist; the *creation* timestamp is finer. Use names # that make ls -t sort them differently when they have equal # timestamps than when they have distinct timestamps, keeping # in mind that ls -t prints the *newest* file first. rm -f conftest.ts? : > conftest.ts1 : > conftest.ts2 : > conftest.ts3 # Make sure ls -t actually works. Do 'set' in a subshell so we don't # clobber the current shell's arguments. (Outer-level square brackets # are removed by m4; they're present so that m4 does not expand # ; be careful, easy to get confused.) if ( set X `[ls -t conftest.ts[12]]` && { test "$[]*" != "X conftest.ts1 conftest.ts2" || test "$[]*" != "X conftest.ts2 conftest.ts1"; } ); then :; else # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". _AS_ECHO_UNQUOTED( ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""], [AS_MESSAGE_LOG_FD]) AC_MSG_FAILURE([ls -t produces unexpected output. Make sure there is not a broken ls alias in your environment.]) fi for am_try_res in $am_try_resolutions; do # Any one fine-grained sleep might happen to cross the boundary # between two values of a coarser actual resolution, but if we do # two fine-grained sleeps in a row, at least one of them will fall # entirely within a coarse interval. echo alpha > conftest.ts1 sleep $am_try_res echo beta > conftest.ts2 sleep $am_try_res echo gamma > conftest.ts3 # We assume that 'ls -t' will make use of high-resolution # timestamps if the operating system supports them at all. if (set X `ls -t conftest.ts?` && test "$[]2" = conftest.ts3 && test "$[]3" = conftest.ts2 && test "$[]4" = conftest.ts1); then # # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, # because we don't need to test make. make_ok=true if test $am_try_res != 1; then # But if we've succeeded so far with a subsecond resolution, we # have one more thing to check: make. It can happen that # everything else supports the subsecond mtimes, but make doesn't; # notably on macOS, which ships make 3.81 from 2006 (the last one # released under GPLv2). https://bugs.gnu.org/68808 # # We test $MAKE if it is defined in the environment, else "make". # It might get overridden later, but our hope is that in practice # it does not matter: it is the system "make" which is (by far) # the most likely to be broken, whereas if the user overrides it, # probably they did so with a better, or at least not worse, make. # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html # # Create a Makefile (real tab character here): rm -f conftest.mk echo 'conftest.ts1: conftest.ts2' >conftest.mk echo ' touch conftest.ts2' >>conftest.mk # # Now, running # touch conftest.ts1; touch conftest.ts2; make # should touch ts1 because ts2 is newer. This could happen by luck, # but most often, it will fail if make's support is insufficient. So # test for several consecutive successes. # # (We reuse conftest.ts[12] because we still want to modify existing # files, not create new ones, per above.) n=0 make=${MAKE-make} until test $n -eq 3; do echo one > conftest.ts1 sleep $am_try_res echo two > conftest.ts2 # ts2 should now be newer than ts1 if $make -f conftest.mk | grep 'up to date' >/dev/null; then make_ok=false break # out of $n loop fi n=`expr $n + 1` done fi # if $make_ok; then # Everything we know to check worked out, so call this resolution good. am_cv_filesystem_timestamp_resolution=$am_try_res break # out of $am_try_res loop fi # Otherwise, we'll go on to check the next resolution. fi done rm -f conftest.ts? # (end _am_filesystem_timestamp_resolution) ])]) # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION]) # This check should not be cached, as it may vary across builds of # different projects. AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). am_build_env_is_sane=no am_has_slept=no rm -f conftest.file for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[]*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi test "$[]2" = conftest.file ); then am_build_env_is_sane=yes break fi # Just in case. sleep "$am_cv_filesystem_timestamp_resolution" am_has_slept=yes done AC_MSG_RESULT([$am_build_env_is_sane]) if test "$am_build_env_is_sane" = no; then AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl ( sleep "$am_cv_filesystem_timestamp_resolution" ) & am_sleep_pid=$! ]) AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SILENT_RULES # ---------------- # Enable less verbose build rules support. AC_DEFUN([_AM_SILENT_RULES], [AM_DEFAULT_VERBOSITY=1 AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls dnl to AM_SILENT_RULES to change the default value. AC_CONFIG_COMMANDS_PRE([dnl case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; esac if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi ])dnl ]) # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Set the default verbosity level to DEFAULT ("yes" being less verbose, "no" or # empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_REQUIRE([_AM_SILENT_RULES]) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])]) # Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test x$am_uid = xunknown; then AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work]) elif test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test x$gm_gid = xunknown; then AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work]) elif test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR # Copyright (C) 2022-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_XARGS_N # ---------------- # Check whether 'xargs -n' works. It should work everywhere, so the fallback # is not optimized at all as we never expect to use it. AC_DEFUN([_AM_PROG_XARGS_N], [AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])]) AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }' ])dnl AC_SUBST(am__xargs_n) ]) dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- dnl serial 11 (pkg-config-0.29) dnl dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR dnl xorg-macros.m4. Generated from xorg-macros.m4.in xorgversion.m4 by configure. dnl dnl Copyright (c) 2005, 2023, Oracle and/or its affiliates. dnl dnl Permission is hereby granted, free of charge, to any person obtaining a dnl copy of this software and associated documentation files (the "Software"), dnl to deal in the Software without restriction, including without limitation dnl the rights to use, copy, modify, merge, publish, distribute, sublicense, dnl and/or sell copies of the Software, and to permit persons to whom the dnl Software is furnished to do so, subject to the following conditions: dnl dnl The above copyright notice and this permission notice (including the next dnl paragraph) shall be included in all copies or substantial portions of the dnl Software. dnl dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER dnl DEALINGS IN THE SOFTWARE. # XORG_MACROS_VERSION(required-version) # ------------------------------------- # Minimum version: 1.1.0 # # If you're using a macro added in Version 1.1 or newer, include this in # your configure.ac with the minimum required version, such as: # XORG_MACROS_VERSION(1.1) # # To ensure that this macro is defined, also add: # m4_ifndef([XORG_MACROS_VERSION], # [m4_fatal([must install xorg-macros 1.1 or later before running autoconf/autogen])]) # # # See the "minimum version" comment for each macro you use to see what # version you require. m4_defun([XORG_MACROS_VERSION],[ m4_define([vers_have], [1.20.2]) m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.]))) m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.]))) m4_if(m4_cmp(maj_have, maj_needed), 0,, [m4_fatal([xorg-macros major version ]maj_needed[ is required but ]vers_have[ found])]) m4_if(m4_version_compare(vers_have, [$1]), -1, [m4_fatal([xorg-macros version $1 or higher is required but ]vers_have[ found])]) m4_undefine([vers_have]) m4_undefine([maj_have]) m4_undefine([maj_needed]) ]) # XORG_MACROS_VERSION # XORG_PROG_RAWCPP() # ------------------ # Minimum version: 1.0.0 # # Find cpp program and necessary flags for use in pre-processing text files # such as man pages and config files AC_DEFUN([XORG_PROG_RAWCPP],[ AC_REQUIRE([AC_PROG_CPP]) AC_PATH_TOOL(RAWCPP, [cpp], [${CPP}], [$PATH:/bin:/usr/bin:/usr/lib:/usr/libexec:/usr/ccs/lib:/usr/ccs/lbin:/lib]) # Check for flag to avoid builtin definitions - assumes unix is predefined, # which is not the best choice for supporting other OS'es, but covers most # of the ones we need for now. AC_MSG_CHECKING([if $RAWCPP requires -undef]) AC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp redefine unix ?]])]) if test `${RAWCPP} < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then AC_MSG_RESULT([no]) else if test `${RAWCPP} -undef < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then RAWCPPFLAGS=-undef AC_MSG_RESULT([yes]) # under Cygwin unix is still defined even with -undef elif test `${RAWCPP} -undef -ansi < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then RAWCPPFLAGS="-undef -ansi" AC_MSG_RESULT([yes, with -ansi]) else AC_MSG_ERROR([${RAWCPP} defines unix with or without -undef. I don't know what to do.]) fi fi rm -f conftest.$ac_ext AC_MSG_CHECKING([if $RAWCPP requires -traditional]) AC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp preserve "whitespace"?]])]) if test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve "'` -eq 1 ; then AC_MSG_RESULT([no]) else if test `${RAWCPP} -traditional < conftest.$ac_ext | grep -c 'preserve "'` -eq 1 ; then TRADITIONALCPPFLAGS="-traditional" RAWCPPFLAGS="${RAWCPPFLAGS} -traditional" AC_MSG_RESULT([yes]) else AC_MSG_ERROR([${RAWCPP} does not preserve whitespace with or without -traditional. I don't know what to do.]) fi fi rm -f conftest.$ac_ext AC_SUBST(RAWCPPFLAGS) AC_SUBST(TRADITIONALCPPFLAGS) ]) # XORG_PROG_RAWCPP # XORG_MANPAGE_SECTIONS() # ----------------------- # Minimum version: 1.0.0 # # Determine which sections man pages go in for the different man page types # on this OS - replaces *ManSuffix settings in old Imake *.cf per-os files. # Not sure if there's any better way than just hardcoding by OS name. # Override default settings by setting environment variables # Added MAN_SUBSTS in version 1.8 # Added AC_PROG_SED in version 1.8 AC_DEFUN([XORG_MANPAGE_SECTIONS],[ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_SED]) case $host_os in solaris*) # Solaris 2.0 - 11.3 use SysV man page section numbers, so we # check for a man page file found in later versions that use # traditional section numbers instead AC_CHECK_FILE([/usr/share/man/man7/attributes.7], [SYSV_MAN_SECTIONS=false], [SYSV_MAN_SECTIONS=true]) ;; *) SYSV_MAN_SECTIONS=false ;; esac if test x$APP_MAN_SUFFIX = x ; then APP_MAN_SUFFIX=1 fi if test x$APP_MAN_DIR = x ; then APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)' fi if test x$LIB_MAN_SUFFIX = x ; then LIB_MAN_SUFFIX=3 fi if test x$LIB_MAN_DIR = x ; then LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)' fi if test x$FILE_MAN_SUFFIX = x ; then case $SYSV_MAN_SECTIONS in true) FILE_MAN_SUFFIX=4 ;; *) FILE_MAN_SUFFIX=5 ;; esac fi if test x$FILE_MAN_DIR = x ; then FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)' fi if test x$MISC_MAN_SUFFIX = x ; then case $SYSV_MAN_SECTIONS in true) MISC_MAN_SUFFIX=5 ;; *) MISC_MAN_SUFFIX=7 ;; esac fi if test x$MISC_MAN_DIR = x ; then MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)' fi if test x$DRIVER_MAN_SUFFIX = x ; then case $SYSV_MAN_SECTIONS in true) DRIVER_MAN_SUFFIX=7 ;; *) DRIVER_MAN_SUFFIX=4 ;; esac fi if test x$DRIVER_MAN_DIR = x ; then DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)' fi if test x$ADMIN_MAN_SUFFIX = x ; then case $SYSV_MAN_SECTIONS in true) ADMIN_MAN_SUFFIX=1m ;; *) ADMIN_MAN_SUFFIX=8 ;; esac fi if test x$ADMIN_MAN_DIR = x ; then ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)' fi AC_SUBST([APP_MAN_SUFFIX]) AC_SUBST([LIB_MAN_SUFFIX]) AC_SUBST([FILE_MAN_SUFFIX]) AC_SUBST([MISC_MAN_SUFFIX]) AC_SUBST([DRIVER_MAN_SUFFIX]) AC_SUBST([ADMIN_MAN_SUFFIX]) AC_SUBST([APP_MAN_DIR]) AC_SUBST([LIB_MAN_DIR]) AC_SUBST([FILE_MAN_DIR]) AC_SUBST([MISC_MAN_DIR]) AC_SUBST([DRIVER_MAN_DIR]) AC_SUBST([ADMIN_MAN_DIR]) XORG_MAN_PAGE="X Version 11" AC_SUBST([XORG_MAN_PAGE]) MAN_SUBSTS="\ -e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ -e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ -e 's|__xservername__|Xorg|g' \ -e 's|__xconfigfile__|xorg.conf|g' \ -e 's|__projectroot__|\$(prefix)|g' \ -e 's|__apploaddir__|\$(appdefaultdir)|g' \ -e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \ -e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \ -e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \ -e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \ -e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \ -e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'" AC_SUBST([MAN_SUBSTS]) ]) # XORG_MANPAGE_SECTIONS # XORG_CHECK_SGML_DOCTOOLS([MIN-VERSION]) # ------------------------ # Minimum version: 1.7.0 # # Defines the variable XORG_SGML_PATH containing the location of X11/defs.ent # provided by xorg-sgml-doctools, if installed. AC_DEFUN([XORG_CHECK_SGML_DOCTOOLS],[ AC_MSG_CHECKING([for X.Org SGML entities m4_ifval([$1],[>= $1])]) XORG_SGML_PATH= PKG_CHECK_EXISTS([xorg-sgml-doctools m4_ifval([$1],[>= $1])], [XORG_SGML_PATH=`$PKG_CONFIG --variable=sgmlrootdir xorg-sgml-doctools`], [m4_ifval([$1],[:], [if test x"$cross_compiling" != x"yes" ; then AC_CHECK_FILE([$prefix/share/sgml/X11/defs.ent], [XORG_SGML_PATH=$prefix/share/sgml]) fi]) ]) # Define variables STYLESHEET_SRCDIR and XSL_STYLESHEET containing # the path and the name of the doc stylesheet if test "x$XORG_SGML_PATH" != "x" ; then AC_MSG_RESULT([$XORG_SGML_PATH]) STYLESHEET_SRCDIR=$XORG_SGML_PATH/X11 XSL_STYLESHEET=$STYLESHEET_SRCDIR/xorg.xsl else AC_MSG_RESULT([no]) fi AC_SUBST(XORG_SGML_PATH) AC_SUBST(STYLESHEET_SRCDIR) AC_SUBST(XSL_STYLESHEET) AM_CONDITIONAL([HAVE_STYLESHEETS], [test "x$XSL_STYLESHEET" != "x"]) ]) # XORG_CHECK_SGML_DOCTOOLS # XORG_CHECK_LINUXDOC # ------------------- # Minimum version: 1.0.0 # # Defines the variable MAKE_TEXT if the necessary tools and # files are found. $(MAKE_TEXT) blah.sgml will then produce blah.txt. # Whether or not the necessary tools and files are found can be checked # with the AM_CONDITIONAL "BUILD_LINUXDOC" AC_DEFUN([XORG_CHECK_LINUXDOC],[ AC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS]) AC_REQUIRE([XORG_WITH_PS2PDF]) AC_PATH_PROG(LINUXDOC, linuxdoc) AC_MSG_CHECKING([whether to build documentation]) if test x$XORG_SGML_PATH != x && test x$LINUXDOC != x ; then BUILDDOC=yes else BUILDDOC=no fi AM_CONDITIONAL(BUILD_LINUXDOC, [test x$BUILDDOC = xyes]) AC_MSG_RESULT([$BUILDDOC]) AC_MSG_CHECKING([whether to build pdf documentation]) if test x$have_ps2pdf != xno && test x$BUILD_PDFDOC != xno; then BUILDPDFDOC=yes else BUILDPDFDOC=no fi AM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes]) AC_MSG_RESULT([$BUILDPDFDOC]) MAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH GROFF_NO_SGR=y $LINUXDOC -B txt -f" MAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B latex --papersize=letter --output=ps" MAKE_PDF="$PS2PDF" MAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B html --split=0" AC_SUBST(MAKE_TEXT) AC_SUBST(MAKE_PS) AC_SUBST(MAKE_PDF) AC_SUBST(MAKE_HTML) ]) # XORG_CHECK_LINUXDOC # XORG_CHECK_DOCBOOK # ------------------- # Minimum version: 1.0.0 # # Checks for the ability to build output formats from SGML DocBook source. # For XXX in {TXT, PDF, PS, HTML}, the AM_CONDITIONAL "BUILD_XXXDOC" # indicates whether the necessary tools and files are found and, if set, # $(MAKE_XXX) blah.sgml will produce blah.xxx. AC_DEFUN([XORG_CHECK_DOCBOOK],[ AC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS]) BUILDTXTDOC=no BUILDPDFDOC=no BUILDPSDOC=no BUILDHTMLDOC=no AC_PATH_PROG(DOCBOOKPS, docbook2ps) AC_PATH_PROG(DOCBOOKPDF, docbook2pdf) AC_PATH_PROG(DOCBOOKHTML, docbook2html) AC_PATH_PROG(DOCBOOKTXT, docbook2txt) AC_MSG_CHECKING([whether to build text documentation]) if test x$XORG_SGML_PATH != x && test x$DOCBOOKTXT != x && test x$BUILD_TXTDOC != xno; then BUILDTXTDOC=yes fi AM_CONDITIONAL(BUILD_TXTDOC, [test x$BUILDTXTDOC = xyes]) AC_MSG_RESULT([$BUILDTXTDOC]) AC_MSG_CHECKING([whether to build PDF documentation]) if test x$XORG_SGML_PATH != x && test x$DOCBOOKPDF != x && test x$BUILD_PDFDOC != xno; then BUILDPDFDOC=yes fi AM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes]) AC_MSG_RESULT([$BUILDPDFDOC]) AC_MSG_CHECKING([whether to build PostScript documentation]) if test x$XORG_SGML_PATH != x && test x$DOCBOOKPS != x && test x$BUILD_PSDOC != xno; then BUILDPSDOC=yes fi AM_CONDITIONAL(BUILD_PSDOC, [test x$BUILDPSDOC = xyes]) AC_MSG_RESULT([$BUILDPSDOC]) AC_MSG_CHECKING([whether to build HTML documentation]) if test x$XORG_SGML_PATH != x && test x$DOCBOOKHTML != x && test x$BUILD_HTMLDOC != xno; then BUILDHTMLDOC=yes fi AM_CONDITIONAL(BUILD_HTMLDOC, [test x$BUILDHTMLDOC = xyes]) AC_MSG_RESULT([$BUILDHTMLDOC]) MAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKTXT" MAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKPS" MAKE_PDF="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKPDF" MAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKHTML" AC_SUBST(MAKE_TEXT) AC_SUBST(MAKE_PS) AC_SUBST(MAKE_PDF) AC_SUBST(MAKE_HTML) ]) # XORG_CHECK_DOCBOOK # XORG_WITH_XMLTO([MIN-VERSION], [DEFAULT]) # ---------------- # Minimum version: 1.5.0 # Minimum version for optional DEFAULT argument: 1.11.0 # # Documentation tools are not always available on all platforms and sometimes # not at the appropriate level. This macro enables a module to test for the # presence of the tool and obtain it's path in separate variables. Coupled with # the --with-xmlto option, it allows maximum flexibility in making decisions # as whether or not to use the xmlto package. When DEFAULT is not specified, # --with-xmlto assumes 'auto'. # # Interface to module: # HAVE_XMLTO: used in makefiles to conditionally generate documentation # XMLTO: returns the path of the xmlto program found # returns the path set by the user in the environment # --with-xmlto: 'yes' user instructs the module to use xmlto # 'no' user instructs the module not to use xmlto # # Added in version 1.10.0 # HAVE_XMLTO_TEXT: used in makefiles to conditionally generate text documentation # xmlto for text output requires either lynx, links, or w3m browsers # # If the user sets the value of XMLTO, AC_PATH_PROG skips testing the path. # AC_DEFUN([XORG_WITH_XMLTO],[ AC_ARG_VAR([XMLTO], [Path to xmlto command]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(xmlto, AS_HELP_STRING([--with-xmlto], [Use xmlto to regenerate documentation (default: ]_defopt[)]), [use_xmlto=$withval], [use_xmlto=]_defopt) m4_undefine([_defopt]) if test "x$use_xmlto" = x"auto"; then AC_PATH_PROG([XMLTO], [xmlto]) if test "x$XMLTO" = "x"; then AC_MSG_WARN([xmlto not found - documentation targets will be skipped]) have_xmlto=no else have_xmlto=yes fi elif test "x$use_xmlto" = x"yes" ; then AC_PATH_PROG([XMLTO], [xmlto]) if test "x$XMLTO" = "x"; then AC_MSG_ERROR([--with-xmlto=yes specified but xmlto not found in PATH]) fi have_xmlto=yes elif test "x$use_xmlto" = x"no" ; then if test "x$XMLTO" != "x"; then AC_MSG_WARN([ignoring XMLTO environment variable since --with-xmlto=no was specified]) fi have_xmlto=no else AC_MSG_ERROR([--with-xmlto expects 'yes' or 'no']) fi # Test for a minimum version of xmlto, if provided. m4_ifval([$1], [if test "$have_xmlto" = yes; then # scrape the xmlto version AC_MSG_CHECKING([the xmlto version]) xmlto_version=`$XMLTO --version 2>/dev/null | cut -d' ' -f3` AC_MSG_RESULT([$xmlto_version]) AS_VERSION_COMPARE([$xmlto_version], [$1], [if test "x$use_xmlto" = xauto; then AC_MSG_WARN([xmlto version $xmlto_version found, but $1 needed]) have_xmlto=no else AC_MSG_ERROR([xmlto version $xmlto_version found, but $1 needed]) fi]) fi]) # Test for the ability of xmlto to generate a text target # # NOTE: xmlto 0.0.27 or higher return a non-zero return code in the # following test for empty XML docbook files. # For compatibility reasons use the following empty XML docbook file and if # it fails try it again with a non-empty XML file. have_xmlto_text=no cat > conftest.xml << "EOF" EOF AS_IF([test "$have_xmlto" = yes], [AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1], [have_xmlto_text=yes], [# Try it again with a non-empty XML file. cat > conftest.xml << "EOF" EOF AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1], [have_xmlto_text=yes], [AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])])]) rm -f conftest.xml AM_CONDITIONAL([HAVE_XMLTO_TEXT], [test $have_xmlto_text = yes]) AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes]) ]) # XORG_WITH_XMLTO # XORG_WITH_XSLTPROC([MIN-VERSION], [DEFAULT]) # -------------------------------------------- # Minimum version: 1.12.0 # Minimum version for optional DEFAULT argument: 1.12.0 # # XSLT (Extensible Stylesheet Language Transformations) is a declarative, # XML-based language used for the transformation of XML documents. # The xsltproc command line tool is for applying XSLT stylesheets to XML documents. # It is used under the cover by xmlto to generate html files from DocBook/XML. # The XSLT processor is often used as a standalone tool for transformations. # It should not be assumed that this tool is used only to work with documnetation. # When DEFAULT is not specified, --with-xsltproc assumes 'auto'. # # Interface to module: # HAVE_XSLTPROC: used in makefiles to conditionally generate documentation # XSLTPROC: returns the path of the xsltproc program found # returns the path set by the user in the environment # --with-xsltproc: 'yes' user instructs the module to use xsltproc # 'no' user instructs the module not to use xsltproc # have_xsltproc: returns yes if xsltproc found in PATH or no # # If the user sets the value of XSLTPROC, AC_PATH_PROG skips testing the path. # AC_DEFUN([XORG_WITH_XSLTPROC],[ AC_ARG_VAR([XSLTPROC], [Path to xsltproc command]) # Preserves the interface, should it be implemented later m4_ifval([$1], [m4_warn([syntax], [Checking for xsltproc MIN-VERSION is not implemented])]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(xsltproc, AS_HELP_STRING([--with-xsltproc], [Use xsltproc for the transformation of XML documents (default: ]_defopt[)]), [use_xsltproc=$withval], [use_xsltproc=]_defopt) m4_undefine([_defopt]) if test "x$use_xsltproc" = x"auto"; then AC_PATH_PROG([XSLTPROC], [xsltproc]) if test "x$XSLTPROC" = "x"; then AC_MSG_WARN([xsltproc not found - cannot transform XML documents]) have_xsltproc=no else have_xsltproc=yes fi elif test "x$use_xsltproc" = x"yes" ; then AC_PATH_PROG([XSLTPROC], [xsltproc]) if test "x$XSLTPROC" = "x"; then AC_MSG_ERROR([--with-xsltproc=yes specified but xsltproc not found in PATH]) fi have_xsltproc=yes elif test "x$use_xsltproc" = x"no" ; then if test "x$XSLTPROC" != "x"; then AC_MSG_WARN([ignoring XSLTPROC environment variable since --with-xsltproc=no was specified]) fi have_xsltproc=no else AC_MSG_ERROR([--with-xsltproc expects 'yes' or 'no']) fi AM_CONDITIONAL([HAVE_XSLTPROC], [test "$have_xsltproc" = yes]) ]) # XORG_WITH_XSLTPROC # XORG_WITH_PERL([MIN-VERSION], [DEFAULT]) # ---------------------------------------- # Minimum version: 1.15.0 # # PERL (Practical Extraction and Report Language) is a language optimized for # scanning arbitrary text files, extracting information from those text files, # and printing reports based on that information. # # When DEFAULT is not specified, --with-perl assumes 'auto'. # # Interface to module: # HAVE_PERL: used in makefiles to conditionally scan text files # PERL: returns the path of the perl program found # returns the path set by the user in the environment # --with-perl: 'yes' user instructs the module to use perl # 'no' user instructs the module not to use perl # have_perl: returns yes if perl found in PATH or no # # If the user sets the value of PERL, AC_PATH_PROG skips testing the path. # AC_DEFUN([XORG_WITH_PERL],[ AC_ARG_VAR([PERL], [Path to perl command]) # Preserves the interface, should it be implemented later m4_ifval([$1], [m4_warn([syntax], [Checking for perl MIN-VERSION is not implemented])]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(perl, AS_HELP_STRING([--with-perl], [Use perl for extracting information from files (default: ]_defopt[)]), [use_perl=$withval], [use_perl=]_defopt) m4_undefine([_defopt]) if test "x$use_perl" = x"auto"; then AC_PATH_PROG([PERL], [perl]) if test "x$PERL" = "x"; then AC_MSG_WARN([perl not found - cannot extract information and report]) have_perl=no else have_perl=yes fi elif test "x$use_perl" = x"yes" ; then AC_PATH_PROG([PERL], [perl]) if test "x$PERL" = "x"; then AC_MSG_ERROR([--with-perl=yes specified but perl not found in PATH]) fi have_perl=yes elif test "x$use_perl" = x"no" ; then if test "x$PERL" != "x"; then AC_MSG_WARN([ignoring PERL environment variable since --with-perl=no was specified]) fi have_perl=no else AC_MSG_ERROR([--with-perl expects 'yes' or 'no']) fi AM_CONDITIONAL([HAVE_PERL], [test "$have_perl" = yes]) ]) # XORG_WITH_PERL # XORG_WITH_ASCIIDOC([MIN-VERSION], [DEFAULT]) # ---------------- # Minimum version: 1.5.0 # Minimum version for optional DEFAULT argument: 1.11.0 # # Documentation tools are not always available on all platforms and sometimes # not at the appropriate level. This macro enables a module to test for the # presence of the tool and obtain it's path in separate variables. Coupled with # the --with-asciidoc option, it allows maximum flexibility in making decisions # as whether or not to use the asciidoc package. When DEFAULT is not specified, # --with-asciidoc assumes 'auto'. # # Interface to module: # HAVE_ASCIIDOC: used in makefiles to conditionally generate documentation # ASCIIDOC: returns the path of the asciidoc program found # returns the path set by the user in the environment # --with-asciidoc: 'yes' user instructs the module to use asciidoc # 'no' user instructs the module not to use asciidoc # # If the user sets the value of ASCIIDOC, AC_PATH_PROG skips testing the path. # AC_DEFUN([XORG_WITH_ASCIIDOC],[ AC_ARG_VAR([ASCIIDOC], [Path to asciidoc command]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(asciidoc, AS_HELP_STRING([--with-asciidoc], [Use asciidoc to regenerate documentation (default: ]_defopt[)]), [use_asciidoc=$withval], [use_asciidoc=]_defopt) m4_undefine([_defopt]) if test "x$use_asciidoc" = x"auto"; then AC_PATH_PROG([ASCIIDOC], [asciidoc]) if test "x$ASCIIDOC" = "x"; then AC_MSG_WARN([asciidoc not found - documentation targets will be skipped]) have_asciidoc=no else have_asciidoc=yes fi elif test "x$use_asciidoc" = x"yes" ; then AC_PATH_PROG([ASCIIDOC], [asciidoc]) if test "x$ASCIIDOC" = "x"; then AC_MSG_ERROR([--with-asciidoc=yes specified but asciidoc not found in PATH]) fi have_asciidoc=yes elif test "x$use_asciidoc" = x"no" ; then if test "x$ASCIIDOC" != "x"; then AC_MSG_WARN([ignoring ASCIIDOC environment variable since --with-asciidoc=no was specified]) fi have_asciidoc=no else AC_MSG_ERROR([--with-asciidoc expects 'yes' or 'no']) fi m4_ifval([$1], [if test "$have_asciidoc" = yes; then # scrape the asciidoc version AC_MSG_CHECKING([the asciidoc version]) asciidoc_version=`$ASCIIDOC --version 2>/dev/null | cut -d' ' -f2` AC_MSG_RESULT([$asciidoc_version]) AS_VERSION_COMPARE([$asciidoc_version], [$1], [if test "x$use_asciidoc" = xauto; then AC_MSG_WARN([asciidoc version $asciidoc_version found, but $1 needed]) have_asciidoc=no else AC_MSG_ERROR([asciidoc version $asciidoc_version found, but $1 needed]) fi]) fi]) AM_CONDITIONAL([HAVE_ASCIIDOC], [test "$have_asciidoc" = yes]) ]) # XORG_WITH_ASCIIDOC # XORG_WITH_DOXYGEN([MIN-VERSION], [DEFAULT]) # ------------------------------------------- # Minimum version: 1.5.0 # Minimum version for optional DEFAULT argument: 1.11.0 # Minimum version for optional DOT checking: 1.18.0 # # Documentation tools are not always available on all platforms and sometimes # not at the appropriate level. This macro enables a module to test for the # presence of the tool and obtain it's path in separate variables. Coupled with # the --with-doxygen option, it allows maximum flexibility in making decisions # as whether or not to use the doxygen package. When DEFAULT is not specified, # --with-doxygen assumes 'auto'. # # Interface to module: # HAVE_DOXYGEN: used in makefiles to conditionally generate documentation # DOXYGEN: returns the path of the doxygen program found # returns the path set by the user in the environment # --with-doxygen: 'yes' user instructs the module to use doxygen # 'no' user instructs the module not to use doxygen # # If the user sets the value of DOXYGEN, AC_PATH_PROG skips testing the path. # AC_DEFUN([XORG_WITH_DOXYGEN],[ AC_ARG_VAR([DOXYGEN], [Path to doxygen command]) AC_ARG_VAR([DOT], [Path to the dot graphics utility]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(doxygen, AS_HELP_STRING([--with-doxygen], [Use doxygen to regenerate documentation (default: ]_defopt[)]), [use_doxygen=$withval], [use_doxygen=]_defopt) m4_undefine([_defopt]) if test "x$use_doxygen" = x"auto"; then AC_PATH_PROG([DOXYGEN], [doxygen]) if test "x$DOXYGEN" = "x"; then AC_MSG_WARN([doxygen not found - documentation targets will be skipped]) have_doxygen=no else have_doxygen=yes fi elif test "x$use_doxygen" = x"yes" ; then AC_PATH_PROG([DOXYGEN], [doxygen]) if test "x$DOXYGEN" = "x"; then AC_MSG_ERROR([--with-doxygen=yes specified but doxygen not found in PATH]) fi have_doxygen=yes elif test "x$use_doxygen" = x"no" ; then if test "x$DOXYGEN" != "x"; then AC_MSG_WARN([ignoring DOXYGEN environment variable since --with-doxygen=no was specified]) fi have_doxygen=no else AC_MSG_ERROR([--with-doxygen expects 'yes' or 'no']) fi m4_ifval([$1], [if test "$have_doxygen" = yes; then # scrape the doxygen version AC_MSG_CHECKING([the doxygen version]) doxygen_version=`$DOXYGEN --version 2>/dev/null` AC_MSG_RESULT([$doxygen_version]) AS_VERSION_COMPARE([$doxygen_version], [$1], [if test "x$use_doxygen" = xauto; then AC_MSG_WARN([doxygen version $doxygen_version found, but $1 needed]) have_doxygen=no else AC_MSG_ERROR([doxygen version $doxygen_version found, but $1 needed]) fi]) fi]) dnl Check for DOT if we have doxygen. The caller decides if it is mandatory dnl HAVE_DOT is a variable that can be used in your doxygen.in config file: dnl HAVE_DOT = @HAVE_DOT@ HAVE_DOT=no if test "x$have_doxygen" = "xyes"; then AC_PATH_PROG([DOT], [dot]) if test "x$DOT" != "x"; then HAVE_DOT=yes fi fi AC_SUBST([HAVE_DOT]) AM_CONDITIONAL([HAVE_DOT], [test "$HAVE_DOT" = "yes"]) AM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes]) ]) # XORG_WITH_DOXYGEN # XORG_WITH_GROFF([DEFAULT]) # ---------------- # Minimum version: 1.6.0 # Minimum version for optional DEFAULT argument: 1.11.0 # # Documentation tools are not always available on all platforms and sometimes # not at the appropriate level. This macro enables a module to test for the # presence of the tool and obtain it's path in separate variables. Coupled with # the --with-groff option, it allows maximum flexibility in making decisions # as whether or not to use the groff package. When DEFAULT is not specified, # --with-groff assumes 'auto'. # # Interface to module: # HAVE_GROFF: used in makefiles to conditionally generate documentation # HAVE_GROFF_MM: the memorandum macros (-mm) package # HAVE_GROFF_MS: the -ms macros package # GROFF: returns the path of the groff program found # returns the path set by the user in the environment # --with-groff: 'yes' user instructs the module to use groff # 'no' user instructs the module not to use groff # # Added in version 1.9.0: # HAVE_GROFF_HTML: groff has dependencies to output HTML format: # pnmcut pnmcrop pnmtopng pnmtops from the netpbm package. # psselect from the psutils package. # the ghostcript package. Refer to the grohtml man pages # # If the user sets the value of GROFF, AC_PATH_PROG skips testing the path. # # OS and distros often splits groff in a basic and full package, the former # having the groff program and the later having devices, fonts and macros # Checking for the groff executable is not enough. # # If macros are missing, we cannot assume that groff is useless, so we don't # unset HAVE_GROFF or GROFF env variables. # HAVE_GROFF_?? can never be true while HAVE_GROFF is false. # AC_DEFUN([XORG_WITH_GROFF],[ AC_ARG_VAR([GROFF], [Path to groff command]) m4_define([_defopt], m4_default([$1], [auto])) AC_ARG_WITH(groff, AS_HELP_STRING([--with-groff], [Use groff to regenerate documentation (default: ]_defopt[)]), [use_groff=$withval], [use_groff=]_defopt) m4_undefine([_defopt]) if test "x$use_groff" = x"auto"; then AC_PATH_PROG([GROFF], [groff]) if test "x$GROFF" = "x"; then AC_MSG_WARN([groff not found - documentation targets will be skipped]) have_groff=no else have_groff=yes fi elif test "x$use_groff" = x"yes" ; then AC_PATH_PROG([GROFF], [groff]) if test "x$GROFF" = "x"; then AC_MSG_ERROR([--with-groff=yes specified but groff not found in PATH]) fi have_groff=yes elif test "x$use_groff" = x"no" ; then if test "x$GROFF" != "x"; then AC_MSG_WARN([ignoring GROFF environment variable since --with-groff=no was specified]) fi have_groff=no else AC_MSG_ERROR([--with-groff expects 'yes' or 'no']) fi # We have groff, test for the presence of the macro packages if test "x$have_groff" = x"yes"; then AC_MSG_CHECKING([for ${GROFF} -ms macros]) if ${GROFF} -ms -I. /dev/null >/dev/null 2>&1 ; then groff_ms_works=yes else groff_ms_works=no fi AC_MSG_RESULT([$groff_ms_works]) AC_MSG_CHECKING([for ${GROFF} -mm macros]) if ${GROFF} -mm -I. /dev/null >/dev/null 2>&1 ; then groff_mm_works=yes else groff_mm_works=no fi AC_MSG_RESULT([$groff_mm_works]) fi # We have groff, test for HTML dependencies, one command per package if test "x$have_groff" = x"yes"; then AC_PATH_PROGS(GS_PATH, [gs gswin32c]) AC_PATH_PROG(PNMTOPNG_PATH, [pnmtopng]) AC_PATH_PROG(PSSELECT_PATH, [psselect]) if test "x$GS_PATH" != "x" -a "x$PNMTOPNG_PATH" != "x" -a "x$PSSELECT_PATH" != "x"; then have_groff_html=yes else have_groff_html=no AC_MSG_WARN([grohtml dependencies not found - HTML Documentation skipped. Refer to grohtml man pages]) fi fi # Set Automake conditionals for Makefiles AM_CONDITIONAL([HAVE_GROFF], [test "$have_groff" = yes]) AM_CONDITIONAL([HAVE_GROFF_MS], [test "$groff_ms_works" = yes]) AM_CONDITIONAL([HAVE_GROFF_MM], [test "$groff_mm_works" = yes]) AM_CONDITIONAL([HAVE_GROFF_HTML], [test "$have_groff_html" = yes]) ]) # XORG_WITH_GROFF # XORG_WITH_FOP([MIN-VERSION], [DEFAULT]) # --------------------------------------- # Minimum version: 1.6.0 # Minimum version for optional DEFAULT argument: 1.11.0 # Minimum version for optional MIN-VERSION argument: 1.15.0 # # Documentation tools are not always available on all platforms and sometimes # not at the appropriate level. This macro enables a module to test for the # presence of the tool and obtain it's path in separate variables. Coupled with # the --with-fop option, it allows maximum flexibility in making decisions # as whether or not to use the fop package. When DEFAULT is not specified, # --with-fop assumes 'auto'. # # Interface to module: # HAVE_FOP: used in makefiles to conditionally generate documentation # FOP: returns the path of the fop program found # returns the path set by the user in the environment # --with-fop: 'yes' user instructs the module to use fop # 'no' user instructs the module not to use fop # # If the user sets the value of FOP, AC_PATH_PROG skips testing the path. # AC_DEFUN([XORG_WITH_FOP],[ AC_ARG_VAR([FOP], [Path to fop command]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(fop, AS_HELP_STRING([--with-fop], [Use fop to regenerate documentation (default: ]_defopt[)]), [use_fop=$withval], [use_fop=]_defopt) m4_undefine([_defopt]) if test "x$use_fop" = x"auto"; then AC_PATH_PROG([FOP], [fop]) if test "x$FOP" = "x"; then AC_MSG_WARN([fop not found - documentation targets will be skipped]) have_fop=no else have_fop=yes fi elif test "x$use_fop" = x"yes" ; then AC_PATH_PROG([FOP], [fop]) if test "x$FOP" = "x"; then AC_MSG_ERROR([--with-fop=yes specified but fop not found in PATH]) fi have_fop=yes elif test "x$use_fop" = x"no" ; then if test "x$FOP" != "x"; then AC_MSG_WARN([ignoring FOP environment variable since --with-fop=no was specified]) fi have_fop=no else AC_MSG_ERROR([--with-fop expects 'yes' or 'no']) fi # Test for a minimum version of fop, if provided. m4_ifval([$1], [if test "$have_fop" = yes; then # scrape the fop version AC_MSG_CHECKING([for fop minimum version]) fop_version=`$FOP -version 2>/dev/null | cut -d' ' -f3` AC_MSG_RESULT([$fop_version]) AS_VERSION_COMPARE([$fop_version], [$1], [if test "x$use_fop" = xauto; then AC_MSG_WARN([fop version $fop_version found, but $1 needed]) have_fop=no else AC_MSG_ERROR([fop version $fop_version found, but $1 needed]) fi]) fi]) AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes]) ]) # XORG_WITH_FOP # XORG_WITH_M4([MIN-VERSION]) # --------------------------- # Minimum version: 1.19.0 # # This macro attempts to locate an m4 macro processor which supports # -I option and is only useful for modules relying on M4 in order to # expand macros in source code files. # # Interface to module: # M4: returns the path of the m4 program found # returns the path set by the user in the environment # AC_DEFUN([XORG_WITH_M4], [ AC_CACHE_CHECK([for m4 that supports -I option], [ac_cv_path_M4], [AC_PATH_PROGS_FEATURE_CHECK([M4], [m4 gm4], [[$ac_path_M4 -I. /dev/null > /dev/null 2>&1 && \ ac_cv_path_M4=$ac_path_M4 ac_path_M4_found=:]], [AC_MSG_ERROR([could not find m4 that supports -I option])], [$PATH:/usr/gnu/bin])]) AC_SUBST([M4], [$ac_cv_path_M4]) ]) # XORG_WITH_M4 # XORG_WITH_PS2PDF([DEFAULT]) # ---------------- # Minimum version: 1.6.0 # Minimum version for optional DEFAULT argument: 1.11.0 # # Documentation tools are not always available on all platforms and sometimes # not at the appropriate level. This macro enables a module to test for the # presence of the tool and obtain it's path in separate variables. Coupled with # the --with-ps2pdf option, it allows maximum flexibility in making decisions # as whether or not to use the ps2pdf package. When DEFAULT is not specified, # --with-ps2pdf assumes 'auto'. # # Interface to module: # HAVE_PS2PDF: used in makefiles to conditionally generate documentation # PS2PDF: returns the path of the ps2pdf program found # returns the path set by the user in the environment # --with-ps2pdf: 'yes' user instructs the module to use ps2pdf # 'no' user instructs the module not to use ps2pdf # # If the user sets the value of PS2PDF, AC_PATH_PROG skips testing the path. # AC_DEFUN([XORG_WITH_PS2PDF],[ AC_ARG_VAR([PS2PDF], [Path to ps2pdf command]) m4_define([_defopt], m4_default([$1], [auto])) AC_ARG_WITH(ps2pdf, AS_HELP_STRING([--with-ps2pdf], [Use ps2pdf to regenerate documentation (default: ]_defopt[)]), [use_ps2pdf=$withval], [use_ps2pdf=]_defopt) m4_undefine([_defopt]) if test "x$use_ps2pdf" = x"auto"; then AC_PATH_PROG([PS2PDF], [ps2pdf]) if test "x$PS2PDF" = "x"; then AC_MSG_WARN([ps2pdf not found - documentation targets will be skipped]) have_ps2pdf=no else have_ps2pdf=yes fi elif test "x$use_ps2pdf" = x"yes" ; then AC_PATH_PROG([PS2PDF], [ps2pdf]) if test "x$PS2PDF" = "x"; then AC_MSG_ERROR([--with-ps2pdf=yes specified but ps2pdf not found in PATH]) fi have_ps2pdf=yes elif test "x$use_ps2pdf" = x"no" ; then if test "x$PS2PDF" != "x"; then AC_MSG_WARN([ignoring PS2PDF environment variable since --with-ps2pdf=no was specified]) fi have_ps2pdf=no else AC_MSG_ERROR([--with-ps2pdf expects 'yes' or 'no']) fi AM_CONDITIONAL([HAVE_PS2PDF], [test "$have_ps2pdf" = yes]) ]) # XORG_WITH_PS2PDF # XORG_ENABLE_DOCS (enable_docs=yes) # ---------------- # Minimum version: 1.6.0 # # Documentation tools are not always available on all platforms and sometimes # not at the appropriate level. This macro enables a builder to skip all # documentation targets except traditional man pages. # Combined with the specific tool checking macros XORG_WITH_*, it provides # maximum flexibility in controlling documentation building. # Refer to: # XORG_WITH_XMLTO --with-xmlto # XORG_WITH_ASCIIDOC --with-asciidoc # XORG_WITH_DOXYGEN --with-doxygen # XORG_WITH_FOP --with-fop # XORG_WITH_GROFF --with-groff # XORG_WITH_PS2PDF --with-ps2pdf # # Interface to module: # ENABLE_DOCS: used in makefiles to conditionally generate documentation # --enable-docs: 'yes' user instructs the module to generate docs # 'no' user instructs the module not to generate docs # parm1: specify the default value, yes or no. # AC_DEFUN([XORG_ENABLE_DOCS],[ m4_define([docs_default], m4_default([$1], [yes])) AC_ARG_ENABLE(docs, AS_HELP_STRING([--enable-docs], [Enable building the documentation (default: ]docs_default[)]), [build_docs=$enableval], [build_docs=]docs_default) m4_undefine([docs_default]) AM_CONDITIONAL(ENABLE_DOCS, [test x$build_docs = xyes]) AC_MSG_CHECKING([whether to build documentation]) AC_MSG_RESULT([$build_docs]) ]) # XORG_ENABLE_DOCS # XORG_ENABLE_DEVEL_DOCS (enable_devel_docs=yes) # ---------------- # Minimum version: 1.6.0 # # This macro enables a builder to skip all developer documentation. # Combined with the specific tool checking macros XORG_WITH_*, it provides # maximum flexibility in controlling documentation building. # Refer to: # XORG_WITH_XMLTO --with-xmlto # XORG_WITH_ASCIIDOC --with-asciidoc # XORG_WITH_DOXYGEN --with-doxygen # XORG_WITH_FOP --with-fop # XORG_WITH_GROFF --with-groff # XORG_WITH_PS2PDF --with-ps2pdf # # Interface to module: # ENABLE_DEVEL_DOCS: used in makefiles to conditionally generate developer docs # --enable-devel-docs: 'yes' user instructs the module to generate developer docs # 'no' user instructs the module not to generate developer docs # parm1: specify the default value, yes or no. # AC_DEFUN([XORG_ENABLE_DEVEL_DOCS],[ m4_define([devel_default], m4_default([$1], [yes])) AC_ARG_ENABLE(devel-docs, AS_HELP_STRING([--enable-devel-docs], [Enable building the developer documentation (default: ]devel_default[)]), [build_devel_docs=$enableval], [build_devel_docs=]devel_default) m4_undefine([devel_default]) AM_CONDITIONAL(ENABLE_DEVEL_DOCS, [test x$build_devel_docs = xyes]) AC_MSG_CHECKING([whether to build developer documentation]) AC_MSG_RESULT([$build_devel_docs]) ]) # XORG_ENABLE_DEVEL_DOCS # XORG_ENABLE_SPECS (enable_specs=yes) # ---------------- # Minimum version: 1.6.0 # # This macro enables a builder to skip all functional specification targets. # Combined with the specific tool checking macros XORG_WITH_*, it provides # maximum flexibility in controlling documentation building. # Refer to: # XORG_WITH_XMLTO --with-xmlto # XORG_WITH_ASCIIDOC --with-asciidoc # XORG_WITH_DOXYGEN --with-doxygen # XORG_WITH_FOP --with-fop # XORG_WITH_GROFF --with-groff # XORG_WITH_PS2PDF --with-ps2pdf # # Interface to module: # ENABLE_SPECS: used in makefiles to conditionally generate specs # --enable-specs: 'yes' user instructs the module to generate specs # 'no' user instructs the module not to generate specs # parm1: specify the default value, yes or no. # AC_DEFUN([XORG_ENABLE_SPECS],[ m4_define([spec_default], m4_default([$1], [yes])) AC_ARG_ENABLE(specs, AS_HELP_STRING([--enable-specs], [Enable building the specs (default: ]spec_default[)]), [build_specs=$enableval], [build_specs=]spec_default) m4_undefine([spec_default]) AM_CONDITIONAL(ENABLE_SPECS, [test x$build_specs = xyes]) AC_MSG_CHECKING([whether to build functional specifications]) AC_MSG_RESULT([$build_specs]) ]) # XORG_ENABLE_SPECS # XORG_ENABLE_UNIT_TESTS (enable_unit_tests=auto) # ---------------------------------------------- # Minimum version: 1.13.0 # # This macro enables a builder to enable/disable unit testing # It makes no assumption about the test cases implementation # Test cases may or may not use Automake "Support for test suites" # They may or may not use the software utility library GLib # # When used in conjunction with XORG_WITH_GLIB, use both AM_CONDITIONAL # ENABLE_UNIT_TESTS and HAVE_GLIB. Not all unit tests may use glib. # The variable enable_unit_tests is used by other macros in this file. # # Interface to module: # ENABLE_UNIT_TESTS: used in makefiles to conditionally build tests # enable_unit_tests: used in configure.ac for additional configuration # --enable-unit-tests: 'yes' user instructs the module to build tests # 'no' user instructs the module not to build tests # parm1: specify the default value, yes or no. # AC_DEFUN([XORG_ENABLE_UNIT_TESTS],[ AC_BEFORE([$0], [XORG_WITH_GLIB]) AC_BEFORE([$0], [XORG_LD_WRAP]) AC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) m4_define([_defopt], m4_default([$1], [auto])) AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests], [Enable building unit test cases (default: ]_defopt[)]), [enable_unit_tests=$enableval], [enable_unit_tests=]_defopt) m4_undefine([_defopt]) AM_CONDITIONAL(ENABLE_UNIT_TESTS, [test "x$enable_unit_tests" != xno]) AC_MSG_CHECKING([whether to build unit test cases]) AC_MSG_RESULT([$enable_unit_tests]) ]) # XORG_ENABLE_UNIT_TESTS # XORG_ENABLE_INTEGRATION_TESTS (enable_unit_tests=auto) # ------------------------------------------------------ # Minimum version: 1.17.0 # # This macro enables a builder to enable/disable integration testing # It makes no assumption about the test cases' implementation # Test cases may or may not use Automake "Support for test suites" # # Please see XORG_ENABLE_UNIT_TESTS for unit test support. Unit test support # usually requires less dependencies and may be built and run under less # stringent environments than integration tests. # # Interface to module: # ENABLE_INTEGRATION_TESTS: used in makefiles to conditionally build tests # enable_integration_tests: used in configure.ac for additional configuration # --enable-integration-tests: 'yes' user instructs the module to build tests # 'no' user instructs the module not to build tests # parm1: specify the default value, yes or no. # AC_DEFUN([XORG_ENABLE_INTEGRATION_TESTS],[ AC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) m4_define([_defopt], m4_default([$1], [auto])) AC_ARG_ENABLE(integration-tests, AS_HELP_STRING([--enable-integration-tests], [Enable building integration test cases (default: ]_defopt[)]), [enable_integration_tests=$enableval], [enable_integration_tests=]_defopt) m4_undefine([_defopt]) AM_CONDITIONAL([ENABLE_INTEGRATION_TESTS], [test "x$enable_integration_tests" != xno]) AC_MSG_CHECKING([whether to build unit test cases]) AC_MSG_RESULT([$enable_integration_tests]) ]) # XORG_ENABLE_INTEGRATION_TESTS # XORG_WITH_GLIB([MIN-VERSION], [DEFAULT]) # ---------------------------------------- # Minimum version: 1.13.0 # # GLib is a library which provides advanced data structures and functions. # This macro enables a module to test for the presence of Glib. # # When used with ENABLE_UNIT_TESTS, it is assumed GLib is used for unit testing. # Otherwise the value of $enable_unit_tests is blank. # # Please see XORG_ENABLE_INTEGRATION_TESTS for integration test support. Unit # test support usually requires less dependencies and may be built and run under # less stringent environments than integration tests. # # Interface to module: # HAVE_GLIB: used in makefiles to conditionally build targets # with_glib: used in configure.ac to know if GLib has been found # --with-glib: 'yes' user instructs the module to use glib # 'no' user instructs the module not to use glib # AC_DEFUN([XORG_WITH_GLIB],[ AC_REQUIRE([PKG_PROG_PKG_CONFIG]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(glib, AS_HELP_STRING([--with-glib], [Use GLib library for unit testing (default: ]_defopt[)]), [with_glib=$withval], [with_glib=]_defopt) m4_undefine([_defopt]) have_glib=no # Do not probe GLib if user explicitly disabled unit testing if test "x$enable_unit_tests" != x"no"; then # Do not probe GLib if user explicitly disabled it if test "x$with_glib" != x"no"; then m4_ifval( [$1], [PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $1], [have_glib=yes], [have_glib=no])], [PKG_CHECK_MODULES([GLIB], [glib-2.0], [have_glib=yes], [have_glib=no])] ) fi fi # Not having GLib when unit testing has been explicitly requested is an error if test "x$enable_unit_tests" = x"yes"; then if test "x$have_glib" = x"no"; then AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found]) fi fi # Having unit testing disabled when GLib has been explicitly requested is an error if test "x$enable_unit_tests" = x"no"; then if test "x$with_glib" = x"yes"; then AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found]) fi fi # Not having GLib when it has been explicitly requested is an error if test "x$with_glib" = x"yes"; then if test "x$have_glib" = x"no"; then AC_MSG_ERROR([--with-glib=yes specified but glib-2.0 not found]) fi fi AM_CONDITIONAL([HAVE_GLIB], [test "$have_glib" = yes]) ]) # XORG_WITH_GLIB # XORG_LD_WRAP([required|optional]) # --------------------------------- # Minimum version: 1.13.0 # # Check if linker supports -wrap, passed via compiler flags # # When used with ENABLE_UNIT_TESTS, it is assumed -wrap is used for unit testing. # Otherwise the value of $enable_unit_tests is blank. # # Argument added in 1.16.0 - default is "required", to match existing behavior # of returning an error if enable_unit_tests is yes, and ld -wrap is not # available, an argument of "optional" allows use when some unit tests require # ld -wrap and others do not. # AC_DEFUN([XORG_LD_WRAP],[ XORG_CHECK_LINKER_FLAGS([-Wl,-wrap,exit],[have_ld_wrap=yes],[have_ld_wrap=no], [AC_LANG_PROGRAM([#include void __wrap_exit(int status) { return; }], [exit(0);])]) # Not having ld wrap when unit testing has been explicitly requested is an error if test "x$enable_unit_tests" = x"yes" -a "x$1" != "xoptional"; then if test "x$have_ld_wrap" = x"no"; then AC_MSG_ERROR([--enable-unit-tests=yes specified but ld -wrap support is not available]) fi fi AM_CONDITIONAL([HAVE_LD_WRAP], [test "$have_ld_wrap" = yes]) # ]) # XORG_LD_WRAP # XORG_CHECK_LINKER_FLAGS # ----------------------- # SYNOPSIS # # XORG_CHECK_LINKER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE], [PROGRAM-SOURCE]) # # DESCRIPTION # # Check whether the given linker FLAGS work with the current language's # linker, or whether they give an error. # # ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on # success/failure. # # PROGRAM-SOURCE is the program source to link with, if needed # # NOTE: Based on AX_CHECK_COMPILER_FLAGS. # # LICENSE # # Copyright (c) 2009 Mike Frysinger # Copyright (c) 2009 Steven G. Johnson # Copyright (c) 2009 Matteo Frigo # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well.# AC_DEFUN([XORG_CHECK_LINKER_FLAGS], [AC_MSG_CHECKING([whether the linker accepts $1]) dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname: AS_LITERAL_IF([$1], [AC_CACHE_VAL(AS_TR_SH(xorg_cv_linker_flags_[$1]), [ ax_save_FLAGS=$LDFLAGS LDFLAGS="$1" AC_LINK_IFELSE([m4_default([$4],[AC_LANG_PROGRAM()])], AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, AS_TR_SH(xorg_cv_linker_flags_[$1])=no) LDFLAGS=$ax_save_FLAGS])], [ax_save_FLAGS=$LDFLAGS LDFLAGS="$1" AC_LINK_IFELSE([AC_LANG_PROGRAM()], eval AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, eval AS_TR_SH(xorg_cv_linker_flags_[$1])=no) LDFLAGS=$ax_save_FLAGS]) eval xorg_check_linker_flags=$AS_TR_SH(xorg_cv_linker_flags_[$1]) AC_MSG_RESULT($xorg_check_linker_flags) if test "x$xorg_check_linker_flags" = xyes; then m4_default([$2], :) else m4_default([$3], :) fi ]) # XORG_CHECK_LINKER_FLAGS # XORG_MEMORY_CHECK_FLAGS # ----------------------- # Minimum version: 1.16.0 # # This macro attempts to find appropriate memory checking functionality # for various platforms which unit testing code may use to catch various # forms of memory allocation and access errors in testing. # # Interface to module: # XORG_MALLOC_DEBUG_ENV - environment variables to set to enable debugging # Usually added to TESTS_ENVIRONMENT in Makefile.am # # If the user sets the value of XORG_MALLOC_DEBUG_ENV, it is used verbatim. # AC_DEFUN([XORG_MEMORY_CHECK_FLAGS],[ AC_REQUIRE([AC_CANONICAL_HOST]) AC_ARG_VAR([XORG_MALLOC_DEBUG_ENV], [Environment variables to enable memory checking in tests]) # Check for different types of support on different platforms case $host_os in solaris*) AC_CHECK_LIB([umem], [umem_alloc], [malloc_debug_env='LD_PRELOAD=libumem.so UMEM_DEBUG=default']) ;; *-gnu*) # GNU libc - Value is used as a single byte bit pattern, # both directly and inverted, so should not be 0 or 255. malloc_debug_env='MALLOC_PERTURB_=15' ;; darwin*) malloc_debug_env='MallocPreScribble=1 MallocScribble=1 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib' ;; *bsd*) malloc_debug_env='MallocPreScribble=1 MallocScribble=1' ;; esac # User supplied flags override default flags if test "x$XORG_MALLOC_DEBUG_ENV" != "x"; then malloc_debug_env="$XORG_MALLOC_DEBUG_ENV" fi AC_SUBST([XORG_MALLOC_DEBUG_ENV],[$malloc_debug_env]) ]) # XORG_WITH_LINT # XORG_CHECK_MALLOC_ZERO # ---------------------- # Minimum version: 1.0.0 # # Defines {MALLOC,XMALLOC,XTMALLOC}_ZERO_CFLAGS appropriately if # malloc(0) returns NULL. Packages should add one of these cflags to # their AM_CFLAGS (or other appropriate *_CFLAGS) to use them. # # No longer actually tests since there is no guarantee applications will # run with the same malloc implementation we tested against, and the cost # of always ensuring the size passed to malloc is non-zero is minimal now. # Still allows builders to override when they have complete control over # which malloc implementation will be used. AC_DEFUN([XORG_CHECK_MALLOC_ZERO],[ AC_ARG_ENABLE(malloc0returnsnull, AS_HELP_STRING([--enable-malloc0returnsnull], [assume malloc(0) can return NULL (default: yes)]), [MALLOC_ZERO_RETURNS_NULL=$enableval], [MALLOC_ZERO_RETURNS_NULL=yes]) AC_MSG_CHECKING([whether to act as if malloc(0) can return NULL]) AC_MSG_RESULT([$MALLOC_ZERO_RETURNS_NULL]) if test "x$MALLOC_ZERO_RETURNS_NULL" = xyes; then MALLOC_ZERO_CFLAGS="-DMALLOC_0_RETURNS_NULL" XMALLOC_ZERO_CFLAGS=$MALLOC_ZERO_CFLAGS XTMALLOC_ZERO_CFLAGS="$MALLOC_ZERO_CFLAGS -DXTMALLOC_BC" else MALLOC_ZERO_CFLAGS="" XMALLOC_ZERO_CFLAGS="" XTMALLOC_ZERO_CFLAGS="" fi AC_SUBST([MALLOC_ZERO_CFLAGS]) AC_SUBST([XMALLOC_ZERO_CFLAGS]) AC_SUBST([XTMALLOC_ZERO_CFLAGS]) ]) # XORG_CHECK_MALLOC_ZERO # XORG_WITH_LINT() # ---------------- # Minimum version: 1.1.0 # # This macro enables the use of a tool that flags some suspicious and # non-portable constructs (likely to be bugs) in C language source code. # It will attempt to locate the tool and use appropriate options. # There are various lint type tools on different platforms. # # Interface to module: # LINT: returns the path to the tool found on the platform # or the value set to LINT on the configure cmd line # also an Automake conditional # LINT_FLAGS: an Automake variable with appropriate flags # # --with-lint: 'yes' user instructs the module to use lint # 'no' user instructs the module not to use lint (default) # # If the user sets the value of LINT, AC_PATH_PROG skips testing the path. # If the user sets the value of LINT_FLAGS, they are used verbatim. # AC_DEFUN([XORG_WITH_LINT],[ AC_ARG_VAR([LINT], [Path to a lint-style command]) AC_ARG_VAR([LINT_FLAGS], [Flags for the lint-style command]) AC_ARG_WITH(lint, [AS_HELP_STRING([--with-lint], [Use a lint-style source code checker (default: disabled)])], [use_lint=$withval], [use_lint=no]) # Obtain platform specific info like program name and options # The lint program on FreeBSD and NetBSD is different from the one on Solaris case $host_os in *linux* | *openbsd* | kfreebsd*-gnu | darwin* | cygwin*) lint_name=splint lint_options="-badflag" ;; *freebsd* | *netbsd*) lint_name=lint lint_options="-u -b" ;; *solaris*) lint_name=lint lint_options="-u -b -h -erroff=E_INDISTING_FROM_TRUNC2" ;; esac # Test for the presence of the program (either guessed by the code or spelled out by the user) if test "x$use_lint" = x"yes" ; then AC_PATH_PROG([LINT], [$lint_name]) if test "x$LINT" = "x"; then AC_MSG_ERROR([--with-lint=yes specified but lint-style tool not found in PATH]) fi elif test "x$use_lint" = x"no" ; then if test "x$LINT" != "x"; then AC_MSG_WARN([ignoring LINT environment variable since --with-lint=no was specified]) fi else AC_MSG_ERROR([--with-lint expects 'yes' or 'no'. Use LINT variable to specify path.]) fi # User supplied flags override default flags if test "x$LINT_FLAGS" != "x"; then lint_options=$LINT_FLAGS fi AC_SUBST([LINT_FLAGS],[$lint_options]) AM_CONDITIONAL(LINT, [test "x$LINT" != x]) ]) # XORG_WITH_LINT # XORG_LINT_LIBRARY(LIBNAME) # -------------------------- # Minimum version: 1.1.0 # # Sets up flags for building lint libraries for checking programs that call # functions in the library. # # Interface to module: # LINTLIB - Automake variable with the name of lint library file to make # MAKE_LINT_LIB - Automake conditional # # --enable-lint-library: - 'yes' user instructs the module to created a lint library # - 'no' user instructs the module not to create a lint library (default) AC_DEFUN([XORG_LINT_LIBRARY],[ AC_REQUIRE([XORG_WITH_LINT]) AC_ARG_ENABLE(lint-library, [AS_HELP_STRING([--enable-lint-library], [Create lint library (default: disabled)])], [make_lint_lib=$enableval], [make_lint_lib=no]) if test "x$make_lint_lib" = x"yes" ; then LINTLIB=llib-l$1.ln if test "x$LINT" = "x"; then AC_MSG_ERROR([Cannot make lint library without --with-lint]) fi elif test "x$make_lint_lib" != x"no" ; then AC_MSG_ERROR([--enable-lint-library expects 'yes' or 'no'.]) fi AC_SUBST(LINTLIB) AM_CONDITIONAL(MAKE_LINT_LIB, [test x$make_lint_lib != xno]) ]) # XORG_LINT_LIBRARY # XORG_COMPILER_BRAND # ------------------- # Minimum version: 1.14.0 # # Checks for various brands of compilers and sets flags as appropriate: # GNU gcc - relies on AC_PROG_CC (via AC_PROG_CC_C99) to set GCC to "yes" # GNU g++ - relies on AC_PROG_CXX to set GXX to "yes" # clang compiler - sets CLANGCC to "yes" # Intel compiler - sets INTELCC to "yes" # Sun/Oracle Solaris Studio cc - sets SUNCC to "yes" # AC_DEFUN([XORG_COMPILER_BRAND], [ AC_LANG_CASE( [C], [ dnl autoconf-2.70 folded AC_PROG_CC_C99 into AC_PROG_CC dnl and complains that AC_PROG_CC_C99 is obsolete m4_version_prereq([2.70], [AC_REQUIRE([AC_PROG_CC])], [AC_REQUIRE([AC_PROG_CC_C99])]) ], [C++], [ AC_REQUIRE([AC_PROG_CXX]) ] ) AC_CHECK_DECL([__clang__], [CLANGCC="yes"], [CLANGCC="no"]) AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"]) AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) ]) # XORG_COMPILER_BRAND # XORG_TESTSET_CFLAG(, , [, ...]) # --------------- # Minimum version: 1.16.0 # # Test if the compiler works when passed the given flag as a command line argument. # If it succeeds, the flag is appended to the given variable. If not, it tries the # next flag in the list until there are no more options. # # Note that this does not guarantee that the compiler supports the flag as some # compilers will simply ignore arguments that they do not understand, but we do # attempt to weed out false positives by using -Werror=unknown-warning-option and # -Werror=unused-command-line-argument # AC_DEFUN([XORG_TESTSET_CFLAG], [ m4_if([$#], 0, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) m4_if([$#], 1, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) AC_LANG_COMPILER_REQUIRE AC_LANG_CASE( [C], [ dnl autoconf-2.70 folded AC_PROG_CC_C99 into AC_PROG_CC dnl and complains that AC_PROG_CC_C99 is obsolete m4_version_prereq([2.70], [AC_REQUIRE([AC_PROG_CC])], [AC_REQUIRE([AC_PROG_CC_C99])]) define([PREFIX], [C]) define([CACHE_PREFIX], [cc]) define([COMPILER], [$CC]) ], [C++], [ define([PREFIX], [CXX]) define([CACHE_PREFIX], [cxx]) define([COMPILER], [$CXX]) ] ) [xorg_testset_save_]PREFIX[FLAGS]="$PREFIX[FLAGS]" if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "x" ; then PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unknown-warning-option], [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option], AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=yes], [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=no])) [xorg_testset_]CACHE_PREFIX[_unknown_warning_option]=$[xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option] PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" fi if test "x$[xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]" = "x" ; then if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "xyes" ; then PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" fi PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unused-command-line-argument], [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument], AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=yes], [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=no])) [xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]=$[xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument] PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" fi found="no" m4_foreach([flag], m4_cdr($@), [ if test $found = "no" ; then if test "x$xorg_testset_]CACHE_PREFIX[_unknown_warning_option" = "xyes" ; then PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" fi if test "x$xorg_testset_]CACHE_PREFIX[_unused_command_line_argument" = "xyes" ; then PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" fi PREFIX[FLAGS]="$PREFIX[FLAGS] ]flag[" dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname AC_MSG_CHECKING([if ]COMPILER[ supports ]flag[]) cacheid=AS_TR_SH([xorg_cv_]CACHE_PREFIX[_flag_]flag[]) AC_CACHE_VAL($cacheid, [AC_LINK_IFELSE([AC_LANG_PROGRAM([int i;])], [eval $cacheid=yes], [eval $cacheid=no])]) PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" eval supported=\$$cacheid AC_MSG_RESULT([$supported]) if test "$supported" = "yes" ; then $1="$$1 ]flag[" found="yes" fi fi ]) ]) # XORG_TESTSET_CFLAG # XORG_COMPILER_FLAGS # --------------- # Minimum version: 1.16.0 # # Defines BASE_CFLAGS or BASE_CXXFLAGS to contain a set of command line # arguments supported by the selected compiler which do NOT alter the generated # code. These arguments will cause the compiler to print various warnings # during compilation AND turn a conservative set of warnings into errors. # # The set of flags supported by BASE_CFLAGS and BASE_CXXFLAGS will grow in # future versions of util-macros as options are added to new compilers. # AC_DEFUN([XORG_COMPILER_FLAGS], [ AC_REQUIRE([XORG_COMPILER_BRAND]) AC_ARG_ENABLE(selective-werror, AS_HELP_STRING([--disable-selective-werror], [Turn off selective compiler errors. (default: enabled)]), [SELECTIVE_WERROR=$enableval], [SELECTIVE_WERROR=yes]) AC_LANG_CASE( [C], [ define([PREFIX], [C]) ], [C++], [ define([PREFIX], [CXX]) ] ) # -v is too short to test reliably with XORG_TESTSET_CFLAG if test "x$SUNCC" = "xyes"; then [BASE_]PREFIX[FLAGS]="-v" else [BASE_]PREFIX[FLAGS]="" fi # This chunk of warnings were those that existed in the legacy CWARNFLAGS XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wall]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-arith]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-declarations]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wformat=2], [-Wformat]) AC_LANG_CASE( [C], [ XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wstrict-prototypes]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-prototypes]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnested-externs]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wbad-function-cast]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition], [-fd]) ] ) # This chunk adds additional warnings that could catch undesired effects. XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wunused]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wuninitialized]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wshadow]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-noreturn]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-format-attribute]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op]) # These are currently disabled because they are noisy. They will be enabled # in the future once the codebase is sufficiently modernized to silence # them. For now, I don't want them to drown out the other warnings. # XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses]) # XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align]) # XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual]) # Turn some warnings into errors, so we don't accidentally get successful builds # when there are problems that should be fixed. if test "x$SELECTIVE_WERROR" = "xyes" ; then XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=implicit], [-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=nonnull]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=init-self]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=main]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=missing-braces]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=sequence-point]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=return-type], [-errwarn=E_FUNC_HAS_NO_RETURN_STMT]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=trigraphs]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=array-bounds]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=write-strings]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=address]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=int-to-pointer-cast], [-errwarn=E_BAD_PTR_INT_COMBINATION]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=pointer-to-int-cast]) # Also -errwarn=E_BAD_PTR_INT_COMBINATION else AC_MSG_WARN([You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wimplicit]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnonnull]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Winit-self]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmain]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-braces]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wsequence-point]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wreturn-type]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wtrigraphs]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Warray-bounds]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wwrite-strings]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Waddress]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wint-to-pointer-cast]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-to-int-cast]) fi AC_SUBST([BASE_]PREFIX[FLAGS]) ]) # XORG_COMPILER_FLAGS # XORG_CWARNFLAGS # --------------- # Minimum version: 1.2.0 # Deprecated since: 1.16.0 (Use XORG_COMPILER_FLAGS instead) # # Defines CWARNFLAGS to enable C compiler warnings. # # This function is deprecated because it defines -fno-strict-aliasing # which alters the code generated by the compiler. If -fno-strict-aliasing # is needed, then it should be added explicitly in the module when # it is updated to use BASE_CFLAGS. # AC_DEFUN([XORG_CWARNFLAGS], [ AC_REQUIRE([XORG_COMPILER_FLAGS]) AC_REQUIRE([XORG_COMPILER_BRAND]) AC_LANG_CASE( [C], [ CWARNFLAGS="$BASE_CFLAGS" if test "x$GCC" = xyes ; then CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing" fi AC_SUBST(CWARNFLAGS) ] ) ]) # XORG_CWARNFLAGS # XORG_STRICT_OPTION # ----------------------- # Minimum version: 1.3.0 # # Add configure option to enable strict compilation flags, such as treating # warnings as fatal errors. # If --enable-strict-compilation is passed to configure, adds strict flags to # $BASE_CFLAGS or $BASE_CXXFLAGS and the deprecated $CWARNFLAGS. # # Starting in 1.14.0 also exports $STRICT_CFLAGS for use in other tests or # when strict compilation is unconditionally desired. AC_DEFUN([XORG_STRICT_OPTION], [ AC_REQUIRE([XORG_CWARNFLAGS]) AC_REQUIRE([XORG_COMPILER_FLAGS]) AC_ARG_ENABLE(strict-compilation, AS_HELP_STRING([--enable-strict-compilation], [Enable all warnings from compiler and make them errors (default: disabled)]), [STRICT_COMPILE=$enableval], [STRICT_COMPILE=no]) AC_LANG_CASE( [C], [ define([PREFIX], [C]) ], [C++], [ define([PREFIX], [CXX]) ] ) [STRICT_]PREFIX[FLAGS]="" XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-pedantic]) XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror], [-errwarn]) # Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not # activate it with -Werror, so we add it here explicitly. XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror=attributes]) if test "x$STRICT_COMPILE" = "xyes"; then [BASE_]PREFIX[FLAGS]="$[BASE_]PREFIX[FLAGS] $[STRICT_]PREFIX[FLAGS]" AC_LANG_CASE([C], [CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"]) fi AC_SUBST([STRICT_]PREFIX[FLAGS]) AC_SUBST([BASE_]PREFIX[FLAGS]) AC_LANG_CASE([C], AC_SUBST([CWARNFLAGS])) ]) # XORG_STRICT_OPTION # XORG_DEFAULT_NOCODE_OPTIONS # --------------------------- # Minimum version: 1.20.0 # # Defines default options for X.Org modules which don't compile code, # such as fonts, bitmaps, cursors, and docs. # AC_DEFUN([XORG_DEFAULT_NOCODE_OPTIONS], [ AC_REQUIRE([AC_PROG_INSTALL]) XORG_RELEASE_VERSION XORG_CHANGELOG XORG_INSTALL XORG_MANPAGE_SECTIONS m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])]) ]) # XORG_DEFAULT_NOCODE_OPTIONS # XORG_DEFAULT_OPTIONS # -------------------- # Minimum version: 1.3.0 # # Defines default options for X.Org modules which compile code. # AC_DEFUN([XORG_DEFAULT_OPTIONS], [ AC_REQUIRE([AC_PROG_INSTALL]) XORG_COMPILER_FLAGS XORG_CWARNFLAGS XORG_STRICT_OPTION XORG_DEFAULT_NOCODE_OPTIONS ]) # XORG_DEFAULT_OPTIONS # XORG_INSTALL() # ---------------- # Minimum version: 1.4.0 # # Defines the variable INSTALL_CMD as the command to copy # INSTALL from $prefix/share/util-macros. # AC_DEFUN([XORG_INSTALL], [ AC_REQUIRE([PKG_PROG_PKG_CONFIG]) macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros` INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \ mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \ || (rm -f \$(top_srcdir)/.INSTALL.tmp; test -e \$(top_srcdir)/INSTALL || ( \ touch \$(top_srcdir)/INSTALL; \ echo 'failed to copy INSTALL from util-macros: installing empty INSTALL.' >&2))" AC_SUBST([INSTALL_CMD]) ]) # XORG_INSTALL dnl Copyright 2005 Red Hat, Inc dnl dnl Permission to use, copy, modify, distribute, and sell this software and its dnl documentation for any purpose is hereby granted without fee, provided that dnl the above copyright notice appear in all copies and that both that dnl copyright notice and this permission notice appear in supporting dnl documentation. dnl dnl The above copyright notice and this permission notice shall be included dnl in all copies or substantial portions of the Software. dnl dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. dnl IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR dnl OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, dnl ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR dnl OTHER DEALINGS IN THE SOFTWARE. dnl dnl Except as contained in this notice, the name of the copyright holders shall dnl not be used in advertising or otherwise to promote the sale, use or dnl other dealings in this Software without prior written authorization dnl from the copyright holders. dnl # XORG_RELEASE_VERSION # -------------------- # Defines PACKAGE_VERSION_{MAJOR,MINOR,PATCHLEVEL} for modules to use. AC_DEFUN([XORG_RELEASE_VERSION],[ AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR], [`echo $PACKAGE_VERSION | cut -d . -f 1`], [Major version of this package]) PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1` if test "x$PVM" = "x"; then PVM="0" fi AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR], [$PVM], [Minor version of this package]) PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` if test "x$PVP" = "x"; then PVP="0" fi AC_DEFINE_UNQUOTED([PACKAGE_VERSION_PATCHLEVEL], [$PVP], [Patch version of this package]) ]) # XORG_CHANGELOG() # ---------------- # Minimum version: 1.2.0 # # Defines the variable CHANGELOG_CMD as the command to generate # ChangeLog from git. # # AC_DEFUN([XORG_CHANGELOG], [ CHANGELOG_CMD="((GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp) 2>/dev/null && \ mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \ || (rm -f \$(top_srcdir)/.changelog.tmp; test -e \$(top_srcdir)/ChangeLog || ( \ touch \$(top_srcdir)/ChangeLog; \ echo 'git failed to create ChangeLog: installing empty ChangeLog.' >&2))" AC_SUBST([CHANGELOG_CMD]) ]) # XORG_CHANGELOG dnl dnl Copyright (c) 2005, 2025, Oracle and/or its affiliates. dnl dnl Permission is hereby granted, free of charge, to any person obtaining a dnl copy of this software and associated documentation files (the "Software"), dnl to deal in the Software without restriction, including without limitation dnl the rights to use, copy, modify, merge, publish, distribute, sublicense, dnl and/or sell copies of the Software, and to permit persons to whom the dnl Software is furnished to do so, subject to the following conditions: dnl dnl The above copyright notice and this permission notice (including the next dnl paragraph) shall be included in all copies or substantial portions of the dnl Software. dnl dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER dnl DEALINGS IN THE SOFTWARE. dnl # XTRANS_TCP_FLAGS() # ------------------ # Find needed libraries for TCP sockets, and check for IPv6 support AC_DEFUN([XTRANS_TCP_FLAGS],[ # SVR4 hides these in libraries other than libc AC_SEARCH_LIBS(socket, [socket]) AC_SEARCH_LIBS(gethostbyname, [nsl]) if test "$ac_cv_search_socket$ac_cv_search_gethostbyname" = "nono"; then AC_CHECK_LIB([ws2_32],[main]) fi # Needs to come after above checks for libsocket & libnsl for SVR4 systems AC_CHECK_FUNCS([getaddrinfo inet_ntop]) AC_ARG_ENABLE(ipv6, AS_HELP_STRING([--enable-ipv6],[Enable IPv6 support]), [IPV6CONN=$enableval], [IPV6CONN=$ac_cv_func_getaddrinfo]) AC_MSG_CHECKING([if IPv6 support should be built]) if test "$IPV6CONN" = "yes"; then AC_DEFINE(IPv6,1,[Support IPv6 for TCP connections]) fi AC_MSG_RESULT($IPV6CONN) # 4.3BSD-Reno added a new member to struct sockaddr_in AC_CHECK_MEMBER([struct sockaddr_in.sin_len], AC_DEFINE([BSD44SOCKETS],1, [Define to 1 if `struct sockaddr_in' has a `sin_len' member]), [], [ #include #include #include ]) # POSIX.1g changed the type of pointer passed to getsockname/getpeername/etc. # and added a type defined to be large enough to hold any sockaddr format. AC_CHECK_TYPES([socklen_t, struct sockaddr_storage], [], [], [ AC_INCLUDES_DEFAULT #include ]) # XPG4v2/UNIX95 added msg_control - check to see if we need to define # _XOPEN_SOURCE to get it (such as on Solaris) AC_CHECK_MEMBER([struct msghdr.msg_control], [], [], [ AC_INCLUDES_DEFAULT #include ]) # First try for Solaris in C99 compliant mode, which requires XPG6/UNIX03 if test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then unset ac_cv_member_struct_msghdr_msg_control AC_MSG_NOTICE([trying again with _XOPEN_SOURCE=600]) AC_CHECK_MEMBER([struct msghdr.msg_control], [AC_DEFINE([_XOPEN_SOURCE], [600], [Defined if needed to expose struct msghdr.msg_control]) ], [], [ #define _XOPEN_SOURCE 600 AC_INCLUDES_DEFAULT #include ]) fi # If that didn't work, fall back to XPG5/UNIX98 with C89 if test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then unset ac_cv_member_struct_msghdr_msg_control AC_MSG_NOTICE([trying again with _XOPEN_SOURCE=500]) AC_CHECK_MEMBER([struct msghdr.msg_control], [AC_DEFINE([_XOPEN_SOURCE], [500], [Defined if needed to expose struct msghdr.msg_control]) ], [], [ #define _XOPEN_SOURCE 500 AC_INCLUDES_DEFAULT #include ]) fi ]) # XTRANS_TCP_FLAGS # XTRANS_CONNECTION_FLAGS() # ------------------------- # Standard checks for which Xtrans transports to use by the Xorg packages # that use Xtrans functions AC_DEFUN([XTRANS_CONNECTION_FLAGS],[ AC_REQUIRE([AC_CANONICAL_HOST]) [case $host_os in mingw*) unixdef="no" ;; *) unixdef="yes" ;; esac] AC_ARG_ENABLE(unix-transport, AS_HELP_STRING([--enable-unix-transport],[Enable UNIX domain socket transport]), [UNIXCONN=$enableval], [UNIXCONN=$unixdef]) AC_MSG_CHECKING([if Xtrans should support UNIX socket connections]) if test "$UNIXCONN" = "yes"; then AC_DEFINE(UNIXCONN,1,[Support UNIX socket connections]) fi AC_MSG_RESULT($UNIXCONN) AC_ARG_ENABLE(tcp-transport, AS_HELP_STRING([--enable-tcp-transport],[Enable TCP socket transport]), [TCPCONN=$enableval], [TCPCONN=yes]) AC_MSG_CHECKING([if Xtrans should support TCP socket connections]) AC_MSG_RESULT($TCPCONN) if test "$TCPCONN" = "yes"; then AC_DEFINE(TCPCONN,1,[Support TCP socket connections]) XTRANS_TCP_FLAGS fi [case $host_os in solaris*) localdef="yes" ;; *) localdef="no" ;; esac] AC_ARG_ENABLE(local-transport, AS_HELP_STRING([--enable-local-transport],[Enable os-specific local transport]), [LOCALCONN=$enableval], [LOCALCONN=$localdef]) AC_MSG_CHECKING([if Xtrans should support os-specific local connections]) AC_MSG_RESULT($LOCALCONN) if test "$LOCALCONN" = "yes"; then AC_DEFINE(LOCALCONN,1,[Support os-specific local connections]) fi # Other functions Xtrans may need AC_CHECK_FUNCS([strcasecmp strlcpy]) ]) # XTRANS_CONNECTION_FLAGS # XTRANS_SECURE_RPC_FLAGS() # ------------------------- # Check for Secure RPC functions - must come after XTRANS_TCP_FLAGS # so that any necessary networking libraries are already found AC_DEFUN([XTRANS_SECURE_RPC_FLAGS], [AC_REQUIRE([XTRANS_TCP_FLAGS]) AC_ARG_ENABLE(secure-rpc, AS_HELP_STRING([--enable-secure-rpc],[Enable Secure RPC]), [SECURE_RPC=$enableval], [SECURE_RPC="try"]) if test "x$SECURE_RPC" = "xyes" -o "x$SECURE_RPC" = "xtry" ; then FOUND_SECURE_RPC="no" AC_CHECK_FUNCS([authdes_seccreate authdes_create], [FOUND_SECURE_RPC="yes"]) if test "x$FOUND_SECURE_RPC" = "xno" ; then if test "x$SECURE_RPC" = "xyes" ; then AC_MSG_ERROR([Secure RPC requested, but required functions not found]) fi SECURE_RPC="no" else dnl FreeBSD keeps getsecretkey in librpcsvc AC_SEARCH_LIBS(getsecretkey, [rpcsvc]) SECURE_RPC="yes" fi fi AC_MSG_CHECKING([if Secure RPC authentication ("SUN-DES-1") should be supported]) if test "x$SECURE_RPC" = "xyes" ; then AC_DEFINE(SECURE_RPC, 1, [Support Secure RPC ("SUN-DES-1") authentication for X11 clients]) fi AC_MSG_RESULT($SECURE_RPC) ]) # XTRANS_SECURE_RPC_FLAGS m4_include([m4/ax_define_dir.m4]) m4_include([m4/ax_gcc_builtin.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) libX11-1.8.12/configure.ac0000644014310600000120000003456014763154126010623 # Initialize Autoconf AC_PREREQ([2.70]) AC_INIT([libX11], [1.8.12], [https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues], [libX11]) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_HEADERS([src/config.h include/X11/XlibConf.h]) AC_CONFIG_MACRO_DIR([m4]) AC_CANONICAL_BUILD AC_CANONICAL_HOST # Set common system defines for POSIX extensions, such as _GNU_SOURCE # Must be called before any macros that run the compiler (like LT_INIT) # to avoid autoconf errors. AC_USE_SYSTEM_EXTENSIONS # Initialize Automake AM_INIT_AUTOMAKE([foreign dist-xz]) # Initialize libtool LT_INIT AC_SYS_LARGEFILE # Require xorg-macros minimum of 1.15 for fop minimum version m4_ifndef([XORG_MACROS_VERSION], [m4_fatal([must install xorg-macros 1.15 or later before running autoconf/autogen])]) XORG_MACROS_VERSION(1.15) XORG_DEFAULT_OPTIONS XORG_ENABLE_SPECS XORG_WITH_XMLTO(0.0.22) XORG_WITH_FOP([],[no]) XORG_WITH_XSLTPROC XORG_CHECK_SGML_DOCTOOLS(1.10) XORG_PROG_RAWCPP XORG_WITH_PERL # Required when PKG_CHECK_MODULES called within an if statement PKG_PROG_PKG_CONFIG if test x"$CC_FOR_BUILD" = x; then if test x"$cross_compiling" = xyes; then AC_CHECK_PROGS(CC_FOR_BUILD, gcc cc) else CC_FOR_BUILD="$CC" fi fi AC_SUBST([CC_FOR_BUILD]) if test x"$CPPFLAGS_FOR_BUILD" = x; then if test ! x"$cross_compiling" = xyes; then CPPFLAGS_FOR_BUILD=${CPPFLAGS} fi fi AC_SUBST(CPPFLAGS_FOR_BUILD) if test x"$CFLAGS_FOR_BUILD" = x; then if test ! x"$cross_compiling" = xyes; then CFLAGS_FOR_BUILD=${CFLAGS} fi fi AC_SUBST(CFLAGS_FOR_BUILD) if test x"$LDFLAGS_FOR_BUILD" = x; then if test ! x"$cross_compiling" = xyes; then LDFLAGS_FOR_BUILD=${LDFLAGS} fi fi AC_SUBST(LDFLAGS_FOR_BUILD) if test x"$EXEEXT_FOR_BUILD" = x; then if test x"$cross_compiling" = xno; then EXEEXT_FOR_BUILD=${EXEEXT} fi # If cross-compiling and not provided, assume EXEEXT_FOR_BUILD is empty fi AC_SUBST([EXEEXT_FOR_BUILD]) # Checks for pkg-config packages # Always required X11_REQUIRES='xproto >= 7.0.25 xextproto xtrans xcb >= 1.11.1' X11_EXTRA_DEPS="xcb >= 1.11.1" PKG_PROG_PKG_CONFIG() AC_SUBST(X11_EXTRA_DEPS) # Issue an error if xtrans.m4 was not found and XTRANS_CONNECTION_FLAGS macro # was not expanded, since libX11 with no transport types is rather useless. # # If you're seeing an error here, be sure you installed the lib/xtrans module # first and if it's not in the default location, that you set the ACLOCAL # environment variable to find it, such as: # ACLOCAL="aclocal -I ${PREFIX}/share/aclocal" m4_pattern_forbid([^XTRANS_CONNECTION_FLAGS$]) # Transport selection macro from xtrans.m4 XTRANS_CONNECTION_FLAGS # Check for dlopen AC_SEARCH_LIBS(dlopen,[dl svld]) if test "x$ac_cv_search_dlopen" != xno; then AC_DEFINE(HAVE_DLOPEN,1,[Use dlopen to load shared libraries]) AC_CHECK_HEADERS([dlfcn.h]) fi AC_MSG_CHECKING([if run-time linking is supported]) if test "x$ac_cv_header_dlfcn_h" = xyes; then HAVE_LOADABLE_MODULES=yes else HAVE_LOADABLE_MODULES=no fi AC_MSG_RESULT($HAVE_LOADABLE_MODULES) AC_MSG_CHECKING([if loadable i18n module support should be enabled]) AC_ARG_ENABLE(loadable-i18n, AS_HELP_STRING([--enable-loadable-i18n], [Controls loadable i18n module support]), [XLIB_LOADABLE_I18N=$enableval], [XLIB_LOADABLE_I18N="no"]) if test x$XLIB_LOADABLE_I18N = xyes; then if test x$HAVE_LOADABLE_MODULES = xno; then AC_MSG_ERROR([Loadable module support is required to enable loadable i18n module support]) fi AC_DEFINE(USE_DYNAMIC_LC,1, [Split some i18n functions into loadable modules]) AC_SUBST(I18N_MODULE_LIBS,'${top_builddir}/src/libX11.la') fi AC_MSG_RESULT($XLIB_LOADABLE_I18N) AM_CONDITIONAL(XLIB_LOADABLE_I18N, test x$XLIB_LOADABLE_I18N = xyes) AC_MSG_CHECKING([if loadable Xcursor library support should be enabled]) AC_ARG_ENABLE(loadable-xcursor, AS_HELP_STRING([--disable-loadable-xcursor], [Controls loadable xcursor library support]), [XLIB_LOADABLE_XCURSOR=$enableval], [XLIB_LOADABLE_XCURSOR=$HAVE_LOADABLE_MODULES]) if test x$XLIB_LOADABLE_XCURSOR = xyes; then AC_DEFINE(USE_DYNAMIC_XCURSOR,1, [Use the X cursor library to load cursors]) fi AC_MSG_RESULT($XLIB_LOADABLE_XCURSOR) AC_ARG_ENABLE(thread-safety-constructor, AS_HELP_STRING([--disable-thread-safety-constructor], [Controls mandatory thread safety support]), [USE_THREAD_SAFETY_CONSTRUCTOR=$enableval], [USE_THREAD_SAFETY_CONSTRUCTOR="yes"]) if test "x$USE_THREAD_SAFETY_CONSTRUCTOR" = "xyes"; then AC_DEFINE(USE_THREAD_SAFETY_CONSTRUCTOR,1,[Call XInitThreads() from the library constructor]) fi # Checks for header files. AC_CHECK_HEADERS([sys/filio.h sys/select.h sys/ioctl.h sys/socket.h]) # Checks for typedefs, structures, and compiler characteristics. AX_GCC_BUILTIN([__builtin_popcountl]) # Checks for library functions. AC_CHECK_FUNCS([strtol seteuid]) AC_REPLACE_FUNCS([reallocarray]) # Used in lcFile.c (see also --enable-xlocaledir settings below) XLOCALEDIR_IS_SAFE="no" AC_CHECK_DECL([issetugid]) AC_CHECK_FUNC([issetugid]) if test "$ac_cv_have_decl_issetugid" = yes && test "$ac_cv_func_issetugid" = yes; then XLOCALEDIR_IS_SAFE="yes" AC_DEFINE(HASSETUGID,1,[Has issetugid() function]) fi AC_CHECK_FUNC([getresuid], [XLOCALEDIR_IS_SAFE="yes"] AC_DEFINE(HASGETRESUID,1,[Has getresuid() & getresgid() functions])) # Used in Font.c AC_CHECK_FUNC([shmat], AC_DEFINE(HAS_SHM,1,[Has shm*() functions])) # Checks for system services # AC_PATH_XTRA # arch specific things WCHAR32="1" case $host_os in os2*) os2="true" ; WCHAR32="0" ;; *) ;; esac AC_SUBST(WCHAR32) AM_CONDITIONAL(OS2, test x$os2 = xtrue) AC_ARG_WITH(launchd, AS_HELP_STRING([--with-launchd], [Build with support for Apple's launchd (default: auto)]), [LAUNCHD=$withval], [LAUNCHD=auto]) if test "x$LAUNCHD" = xauto; then unset LAUNCHD AC_CHECK_PROG(LAUNCHD, [launchd], [yes], [no], [$PATH$PATH_SEPARATOR/sbin]) fi if test "x$LAUNCHD" = xyes ; then AC_DEFINE(HAVE_LAUNCHD, 1, [launchd support available]) AC_DEFINE(TRANS_REOPEN, 1, [launchd support available]) fi AC_ARG_ENABLE(xthreads, AS_HELP_STRING([--disable-xthreads], [Disable Xlib support for Multithreading]), [xthreads=$enableval],[xthreads=yes]) AC_CHECK_LIB(c, getpwuid_r, [mtsafeapi="yes"], [mtsafeapi="no"]) case x$xthreads in xyes) AC_DEFINE(XTHREADS,1,[Whether libX11 is compiled with thread support]) if test x$mtsafeapi = xyes then AC_DEFINE(XUSE_MTSAFE_API,1,[Whether libX11 needs to use MT safe API's]) fi ;; *) ;; esac # XXX incomplete, please fill this in if test x$xthreads = xyes ; then case $host_os in linux*|gnu*|k*bsd*-gnu) XTHREADLIB=-lpthread ;; netbsd*) XTHREAD_CFLAGS="-D_POSIX_THREAD_SAFE_FUNCTIONS" XTHREADLIB="-lpthread" ;; freebsd*) XTHREAD_CFLAGS="-D_THREAD_SAFE" XTHREADLIB="-pthread" ;; dragonfly*|openbsd*) XTHREADLIB="-pthread" ;; solaris*) XTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS" ;; esac fi AC_SUBST(XTHREADLIB) AC_SUBST(XTHREAD_CFLAGS) if test "x$USE_THREAD_SAFETY_CONSTRUCTOR" = "xyes"; then USE_THREAD_LIBS="$XTHREADLIB" else # This should be kept in sync with libxcb case $host_os in linux*|darwin*|solaris*|dragonfly*|freebsd*|netbsd*) ;; *) X11_REQUIRES="$X11_REQUIRES pthread-stubs" ;; esac fi AC_SUBST(USE_THREAD_LIBS) AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, 1, [poll() function is available])], ) # # Find keysymdef.h # AC_MSG_CHECKING([keysym definitions]) AC_ARG_WITH([keysymdefdir], [AS_HELP_STRING([--with-keysymdefdir=DIR], [The location of keysymdef.h (defaults to xproto include dir)])], [KEYSYMDEFDIR=$withval], [KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11]) if test ! -d "$KEYSYMDEFDIR"; then AC_MSG_ERROR([$KEYSYMDEFDIR doesn't exist or isn't a directory]) fi FILES="keysymdef.h XF86keysym.h Sunkeysym.h DECkeysym.h HPkeysym.h" for i in $FILES; do if test -f "$KEYSYMDEFDIR/$i"; then KEYSYMDEFS="$KEYSYMDEFS $KEYSYMDEFDIR/$i" elif test "x$i" = "xkeysymdef.h"; then AC_MSG_ERROR([Cannot find keysymdef.h]) fi done AC_MSG_RESULT([$KEYSYMDEFS]) AC_SUBST(KEYSYMDEFS) AC_ARG_ENABLE(xcms, AS_HELP_STRING([--disable-xcms], [Disable Xlib support for CMS *EXPERIMENTAL*]), [XCMS=$enableval],[XCMS=yes]) AM_CONDITIONAL(XCMS, [test x$XCMS = xyes ]) if test x"$XCMS" = "xyes"; then AC_DEFINE(XCMS,1,[Include support for XCMS]) fi AC_ARG_ENABLE(xlocale, AS_HELP_STRING([--disable-xlocale], [Disable Xlib locale implementation *EXPERIMENTAL*]), [XLOCALE=$enableval],[XLOCALE=yes]) AM_CONDITIONAL(XLOCALE, [ test x$XLOCALE = xyes ]) if test x"$XLOCALE" = "xyes"; then AC_DEFINE(XLOCALE,1,[support for X Locales]) fi # This disables XLOCALEDIR. Set it if you're using BuildLoadableXlibI18n, # don't have either issetugid() or getresuid(), and you need to protect # clients that are setgid or setuid to an id other than 0. AC_MSG_CHECKING([if XLOCALEDIR support should be enabled]) AC_ARG_ENABLE(xlocaledir, AS_HELP_STRING([--enable-xlocaledir], [Enable XLOCALEDIR environment variable support]), [ENABLE_XLOCALEDIR=$enableval],[ENABLE_XLOCALEDIR=$XLOCALEDIR_IS_SAFE]) if test "x$ENABLE_XLOCALEDIR" = "xno"; then AC_DEFINE(NO_XLOCALEDIR,1,[Disable XLOCALEDIR environment variable]) fi AC_MSG_RESULT($ENABLE_XLOCALEDIR) AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--disable-xf86bigfont], [Disable XF86BigFont extension support]), [XF86BIGFONT=$enableval],[XF86BIGFONT="yes"]) if test "x$XF86BIGFONT" = "xyes"; then PKG_CHECK_MODULES(BIGFONT, [xf86bigfontproto >= 1.2.0], AC_DEFINE(XF86BIGFONT,1,[Enable XF86BIGFONT extension]),XF86BIGFONT="no") fi AC_ARG_ENABLE(xkb, AS_HELP_STRING([--disable-xkb], [Disable XKB support *EXPERIMENTAL*]), [XKB=$enableval],[XKB=yes]) AM_CONDITIONAL(XKB, [ test x$XKB = xyes ]) if test x"$XKB" = "xyes"; then XKBPROTO_REQUIRES="kbproto" X11_REQUIRES="${X11_REQUIRES} kbproto inputproto" AC_DEFINE(XKB,1,[Use XKB]) else XKBPROTO_REQUIRES="" fi AC_SUBST(XKBPROTO_REQUIRES) AC_FUNC_MMAP() composecache_default=$ac_cv_func_mmap_fixed_mapped AC_CHECK_FUNC(nl_langinfo, , [composecache_default=no]) AC_ARG_ENABLE(composecache, AS_HELP_STRING([--disable-composecache], [Disable compose table cache support]), [COMPOSECACHE=$enableval],[COMPOSECACHE=$composecache_default]) if test x"$COMPOSECACHE" = "xyes"; then AC_DEFINE(COMPOSECACHE,1,[Include compose table cache support]) fi # Allow checking code with lint, sparse, etc. XORG_WITH_LINT XORG_LINT_LIBRARY([X11]) X11_DATADIR="${datadir}/X11" AX_DEFINE_DIR(X11_DATADIR, X11_DATADIR, [Location of libX11 data]) AC_SUBST(X11_DATADIR) X11_LIBDIR="${libdir}/X11" AX_DEFINE_DIR(X11_LIBDIR, X11_LIBDIR, [Location of libX11 library data]) AC_SUBST(X11_LIBDIR) PKG_CHECK_MODULES(X11, [$X11_REQUIRES]) X11_CFLAGS="$X11_CFLAGS $XTHREAD_CFLAGS" # # Yes, it would be nice to put the locale data in # /usr/share, but the locale stuff includes loadable # libraries which must be located in the same directory # as the other locale data, so for now, everything lives # in ${libdir} # X11_LOCALEDATADIR="${X11_DATADIR}/locale" AX_DEFINE_DIR(XLOCALEDATADIR, X11_LOCALEDATADIR, [Location of libX11 locale data]) AC_SUBST(X11_LOCALEDATADIR) AC_ARG_WITH(locale-lib-dir, AS_HELP_STRING([--with-locale-lib-dir=DIR], [Directory where locale libraries files are installed (default: $libdir/X11/locale)]), [ X11_LOCALELIBDIR="$withval" ], [ X11_LOCALELIBDIR="${X11_LIBDIR}/locale" ]) AX_DEFINE_DIR(XLOCALELIBDIR, X11_LOCALELIBDIR, [Location of libX11 locale libraries]) AC_SUBST(X11_LOCALELIBDIR) X11_LOCALEDIR="${X11_LOCALEDATADIR}" AX_DEFINE_DIR(XLOCALEDIR, X11_LOCALEDIR, [Location of libX11 locale data]) AC_SUBST(X11_LOCALEDIR) locales="\ am_ET.UTF-8 armscii-8 C cs_CZ.UTF-8 el_GR.UTF-8 en_US.UTF-8 \ fi_FI.UTF-8 georgian-academy georgian-ps ibm-cp1133 iscii-dev \ isiri-3342 iso8859-1 iso8859-10 iso8859-11 iso8859-13 iso8859-14 \ iso8859-15 iso8859-2 iso8859-3 iso8859-4 iso8859-5 iso8859-6 \ iso8859-7 iso8859-8 iso8859-9 iso8859-9e ja ja.JIS \ ja_JP.UTF-8 ja.SJIS km_KH.UTF-8 ko koi8-c koi8-r \ koi8-u ko_KR.UTF-8 microsoft-cp1251 microsoft-cp1255 \ microsoft-cp1256 mulelao-1 nokhchi-1 pt_BR.UTF-8 pt_PT.UTF-8 \ ru_RU.UTF-8 sr_RS.UTF-8 tatar-cyr th_TH th_TH.UTF-8 tscii-0 \ vi_VN.tcvn vi_VN.viscii zh_CN zh_CN.gb18030 \ zh_CN.gbk zh_CN.UTF-8 zh_HK.big5 zh_HK.big5hkscs zh_HK.UTF-8 \ zh_TW zh_TW.big5 zh_TW.UTF-8" AC_SUBST(locales) XKEYSYMDB="${X11_DATADIR}/XKeysymDB" AX_DEFINE_DIR(XKEYSYMDB, XKEYSYMDB, [Location of keysym database]) XERRORDB="${X11_DATADIR}/XErrorDB" AX_DEFINE_DIR(XERRORDB, XERRORDB, [Location of error message database]) XORG_CHECK_MALLOC_ZERO AC_CONFIG_FILES([Makefile include/Makefile man/Makefile man/xkb/Makefile src/Makefile src/util/Makefile src/xcms/Makefile src/xlibi18n/Makefile modules/Makefile modules/im/Makefile modules/im/ximcp/Makefile modules/lc/Makefile modules/lc/def/Makefile modules/lc/gen/Makefile modules/lc/Utf8/Makefile modules/om/Makefile modules/om/generic/Makefile src/xkb/Makefile nls/Makefile specs/Makefile specs/i18n/Makefile specs/i18n/compose/Makefile specs/i18n/framework/Makefile specs/i18n/localedb/Makefile specs/i18n/trans/Makefile specs/libX11/Makefile specs/XIM/Makefile specs/XKB/Makefile x11.pc x11-xcb.pc]) AC_OUTPUT echo "" echo "$PACKAGE_STRING will be built with the following settings:" echo " Loadable i18n module support: "$XLIB_LOADABLE_I18N echo " Loadable xcursor library support: "$XLIB_LOADABLE_XCURSOR echo " Threading support: "$xthreads echo " Use Threads safe API: "$mtsafeapi echo " Use thread safety constructor: "$USE_THREAD_SAFETY_CONSTRUCTOR echo " XCMS: "$XCMS echo " Internationalization support: "$XLOCALE echo " XF86BigFont support: "$XF86BIGFONT echo " XKB support: "$XKB echo " XLOCALEDIR environment variable support: "$ENABLE_XLOCALEDIR echo " Compose table cache enabled: "$COMPOSECACHE echo " Functional specs building enabled: "$build_specs echo "" libX11-1.8.12/include/0000755014310600000120000000000014763154164010032 5libX11-1.8.12/include/Makefile.am0000644014310600000120000000063514763154126012010 x11includedir=${includedir}/X11 x11include_HEADERS=\ X11/XKBlib.h \ X11/Xcms.h \ X11/Xlib.h \ X11/Xlibint.h \ X11/Xlocale.h \ X11/Xresource.h \ X11/Xutil.h \ X11/cursorfont.h \ X11/Xregion.h \ X11/ImUtil.h \ X11/Xlib-xcb.h x11extincludedir=${x11includedir}/extensions x11extinclude_HEADERS = \ X11/extensions/XKBgeom.h nodist_x11include_HEADERS=\ X11/XlibConf.h EXTRA_DIST = \ X11/XlibConf.h.in libX11-1.8.12/include/Makefile.in0000644014310600000120000005174614763154146012034 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = include ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(x11extinclude_HEADERS) \ $(x11include_HEADERS) $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(x11includedir)" \ "$(DESTDIR)$(x11extincludedir)" "$(DESTDIR)$(x11includedir)" HEADERS = $(nodist_x11include_HEADERS) $(x11extinclude_HEADERS) \ $(x11include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ x11includedir = ${includedir}/X11 x11include_HEADERS = \ X11/XKBlib.h \ X11/Xcms.h \ X11/Xlib.h \ X11/Xlibint.h \ X11/Xlocale.h \ X11/Xresource.h \ X11/Xutil.h \ X11/cursorfont.h \ X11/Xregion.h \ X11/ImUtil.h \ X11/Xlib-xcb.h x11extincludedir = ${x11includedir}/extensions x11extinclude_HEADERS = \ X11/extensions/XKBgeom.h nodist_x11include_HEADERS = \ X11/XlibConf.h EXTRA_DIST = \ X11/XlibConf.h.in all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign include/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-nodist_x11includeHEADERS: $(nodist_x11include_HEADERS) @$(NORMAL_INSTALL) @list='$(nodist_x11include_HEADERS)'; test -n "$(x11includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(x11includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(x11includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(x11includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(x11includedir)" || exit $$?; \ done uninstall-nodist_x11includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(nodist_x11include_HEADERS)'; test -n "$(x11includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(x11includedir)'; $(am__uninstall_files_from_dir) install-x11extincludeHEADERS: $(x11extinclude_HEADERS) @$(NORMAL_INSTALL) @list='$(x11extinclude_HEADERS)'; test -n "$(x11extincludedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(x11extincludedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(x11extincludedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(x11extincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(x11extincludedir)" || exit $$?; \ done uninstall-x11extincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(x11extinclude_HEADERS)'; test -n "$(x11extincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(x11extincludedir)'; $(am__uninstall_files_from_dir) install-x11includeHEADERS: $(x11include_HEADERS) @$(NORMAL_INSTALL) @list='$(x11include_HEADERS)'; test -n "$(x11includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(x11includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(x11includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(x11includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(x11includedir)" || exit $$?; \ done uninstall-x11includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(x11include_HEADERS)'; test -n "$(x11includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(x11includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(x11includedir)" "$(DESTDIR)$(x11extincludedir)" "$(DESTDIR)$(x11includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-nodist_x11includeHEADERS \ install-x11extincludeHEADERS install-x11includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-nodist_x11includeHEADERS \ uninstall-x11extincludeHEADERS uninstall-x11includeHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man \ install-nodist_x11includeHEADERS install-pdf install-pdf-am \ install-ps install-ps-am install-strip \ install-x11extincludeHEADERS install-x11includeHEADERS \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-nodist_x11includeHEADERS \ uninstall-x11extincludeHEADERS uninstall-x11includeHEADERS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/include/X11/0000755014310600000120000000000014763154164010403 5libX11-1.8.12/include/X11/ImUtil.h0000644014310600000120000000062514763154126011700 #ifndef _X11_IMUTIL_H_ #define _X11_IMUTIL_H_ extern int _XGetScanlinePad( Display *dpy, int depth); extern int _XGetBitsPerPixel( Display *dpy, int depth); extern int _XSetImage( XImage *srcimg, XImage *dstimg, int x, int y); extern int _XReverse_Bytes( unsigned char *bpt, int nb); extern void _XInitImageFuncPtrs( XImage *image); #endif /* _X11_IMUTIL_H_ */ libX11-1.8.12/include/X11/XlibConf.h.in0000644014310600000120000000271614763154126012611 /* * Copyright © 2005 Keith Packard * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of Keith Packard not be used in * advertising or publicity pertaining to distribution of the software without * specific, written prior permission. Keith Packard makes no * representations about the suitability of this software for any purpose. It * is provided "as is" without express or implied warranty. * * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ #ifndef _XLIBCONF_H_ #define _XLIBCONF_H_ /* * This header file exports defines necessary to correctly * use Xlibint.h both inside Xlib and by external libraries * such as extensions. */ /* Threading support? */ #undef XTHREADS /* Use multi-threaded libc functions? */ #undef XUSE_MTSAFE_API #endif /* _XLIBCONF_H_ */ libX11-1.8.12/include/X11/Xresource.h0000644014310600000120000002460414763154126012457 /*********************************************************** Copyright 1987, 1988, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ #ifndef _X11_XRESOURCE_H_ #define _X11_XRESOURCE_H_ #ifndef _XP_PRINT_SERVER_ #include #endif /**************************************************************** **************************************************************** *** *** *** *** *** X Resource Manager Intrinsics *** *** *** *** *** **************************************************************** ****************************************************************/ _XFUNCPROTOBEGIN /**************************************************************** * * Memory Management * ****************************************************************/ extern char *Xpermalloc( unsigned int /* size */ ); /**************************************************************** * * Quark Management * ****************************************************************/ typedef int XrmQuark, *XrmQuarkList; #define NULLQUARK ((XrmQuark) 0) typedef char *XrmString; #define NULLSTRING ((XrmString) 0) /* find quark for string, create new quark if none already exists */ extern XrmQuark XrmStringToQuark( _Xconst char* /* string */ ); extern XrmQuark XrmPermStringToQuark( _Xconst char* /* string */ ); /* find string for quark */ extern XrmString XrmQuarkToString( XrmQuark /* quark */ ); extern XrmQuark XrmUniqueQuark( void ); #define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0) /**************************************************************** * * Conversion of Strings to Lists * ****************************************************************/ typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList; extern void XrmStringToQuarkList( _Xconst char* /* string */, XrmQuarkList /* quarks_return */ ); extern void XrmStringToBindingQuarkList( _Xconst char* /* string */, XrmBindingList /* bindings_return */, XrmQuarkList /* quarks_return */ ); /**************************************************************** * * Name and Class lists. * ****************************************************************/ typedef XrmQuark XrmName; typedef XrmQuarkList XrmNameList; #define XrmNameToString(name) XrmQuarkToString(name) #define XrmStringToName(string) XrmStringToQuark(string) #define XrmStringToNameList(str, name) XrmStringToQuarkList(str, name) typedef XrmQuark XrmClass; typedef XrmQuarkList XrmClassList; #define XrmClassToString(c_class) XrmQuarkToString(c_class) #define XrmStringToClass(c_class) XrmStringToQuark(c_class) #define XrmStringToClassList(str,c_class) XrmStringToQuarkList(str, c_class) /**************************************************************** * * Resource Representation Types and Values * ****************************************************************/ typedef XrmQuark XrmRepresentation; #define XrmStringToRepresentation(string) XrmStringToQuark(string) #define XrmRepresentationToString(type) XrmQuarkToString(type) typedef struct { unsigned int size; XPointer addr; } XrmValue, *XrmValuePtr; /**************************************************************** * * Resource Manager Functions * ****************************************************************/ typedef struct _XrmHashBucketRec *XrmHashBucket; typedef XrmHashBucket *XrmHashTable; typedef XrmHashTable XrmSearchList[]; typedef struct _XrmHashBucketRec *XrmDatabase; extern void XrmDestroyDatabase( XrmDatabase /* database */ ); extern void XrmQPutResource( XrmDatabase* /* database */, XrmBindingList /* bindings */, XrmQuarkList /* quarks */, XrmRepresentation /* type */, XrmValue* /* value */ ); extern void XrmPutResource( XrmDatabase* /* database */, _Xconst char* /* specifier */, _Xconst char* /* type */, XrmValue* /* value */ ); extern void XrmQPutStringResource( XrmDatabase* /* database */, XrmBindingList /* bindings */, XrmQuarkList /* quarks */, _Xconst char* /* value */ ); extern void XrmPutStringResource( XrmDatabase* /* database */, _Xconst char* /* specifier */, _Xconst char* /* value */ ); extern void XrmPutLineResource( XrmDatabase* /* database */, _Xconst char* /* line */ ); extern Bool XrmQGetResource( XrmDatabase /* database */, XrmNameList /* quark_name */, XrmClassList /* quark_class */, XrmRepresentation* /* quark_type_return */, XrmValue* /* value_return */ ); extern Bool XrmGetResource( XrmDatabase /* database */, _Xconst char* /* str_name */, _Xconst char* /* str_class */, char** /* str_type_return */, XrmValue* /* value_return */ ); extern Bool XrmQGetSearchList( XrmDatabase /* database */, XrmNameList /* names */, XrmClassList /* classes */, XrmSearchList /* list_return */, int /* list_length */ ); extern Bool XrmQGetSearchResource( XrmSearchList /* list */, XrmName /* name */, XrmClass /* class */, XrmRepresentation* /* type_return */, XrmValue* /* value_return */ ); /**************************************************************** * * Resource Database Management * ****************************************************************/ #ifndef _XP_PRINT_SERVER_ extern void XrmSetDatabase( Display* /* display */, XrmDatabase /* database */ ); extern XrmDatabase XrmGetDatabase( Display* /* display */ ); #endif /* !_XP_PRINT_SERVER_ */ extern XrmDatabase XrmGetFileDatabase( _Xconst char* /* filename */ ); extern Status XrmCombineFileDatabase( _Xconst char* /* filename */, XrmDatabase* /* target */, Bool /* override */ ); extern XrmDatabase XrmGetStringDatabase( _Xconst char* /* data */ /* null terminated string */ ); extern void XrmPutFileDatabase( XrmDatabase /* database */, _Xconst char* /* filename */ ); extern void XrmMergeDatabases( XrmDatabase /* source_db */, XrmDatabase* /* target_db */ ); extern void XrmCombineDatabase( XrmDatabase /* source_db */, XrmDatabase* /* target_db */, Bool /* override */ ); #define XrmEnumAllLevels 0 #define XrmEnumOneLevel 1 extern Bool XrmEnumerateDatabase( XrmDatabase /* db */, XrmNameList /* name_prefix */, XrmClassList /* class_prefix */, int /* mode */, Bool (*)( XrmDatabase* /* db */, XrmBindingList /* bindings */, XrmQuarkList /* quarks */, XrmRepresentation* /* type */, XrmValue* /* value */, XPointer /* closure */ ) /* proc */, XPointer /* closure */ ); extern const char *XrmLocaleOfDatabase( XrmDatabase /* database */ ); /**************************************************************** * * Command line option mapping to resource entries * ****************************************************************/ typedef enum { XrmoptionNoArg, /* Value is specified in OptionDescRec.value */ XrmoptionIsArg, /* Value is the option string itself */ XrmoptionStickyArg, /* Value is characters immediately following option */ XrmoptionSepArg, /* Value is next argument in argv */ XrmoptionResArg, /* Resource and value in next argument in argv */ XrmoptionSkipArg, /* Ignore this option and the next argument in argv */ XrmoptionSkipLine, /* Ignore this option and the rest of argv */ XrmoptionSkipNArgs /* Ignore this option and the next OptionDescRes.value arguments in argv */ } XrmOptionKind; typedef struct { char *option; /* Option abbreviation in argv */ char *specifier; /* Resource specifier */ XrmOptionKind argKind; /* Which style of option it is */ XPointer value; /* Value to provide if XrmoptionNoArg */ } XrmOptionDescRec, *XrmOptionDescList; extern void XrmParseCommand( XrmDatabase* /* database */, XrmOptionDescList /* table */, int /* table_count */, _Xconst char* /* name */, int* /* argc_in_out */, char** /* argv_in_out */ ); _XFUNCPROTOEND #endif /* _X11_XRESOURCE_H_ */ /* DON'T ADD STUFF AFTER THIS #endif */ libX11-1.8.12/include/X11/Xlibint.h0000644014310600000120000011715314763154126012113 /* Copyright 1984, 1985, 1987, 1989, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifndef _X11_XLIBINT_H_ #define _X11_XLIBINT_H_ 1 /* * Xlibint.h - Header definition and support file for the internal * support routines used by the C subroutine interface * library (Xlib) to the X Window System. * * Warning, there be dragons here.... */ #include #include #include /* to declare xEvent */ #include /* for configured options like XTHREADS */ #ifdef XTHREADS #include #endif /* The Xlib structs are full of implicit padding to properly align members. We can't clean that up without breaking ABI, so tell clang not to bother complaining about it. */ #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wpadded" #endif #ifdef WIN32 #define _XFlush _XFlushIt #endif struct _XGC { XExtData *ext_data; /* hook for extension to hang data */ GContext gid; /* protocol ID for graphics context */ Bool rects; /* boolean: TRUE if clipmask is list of rectangles */ Bool dashes; /* boolean: TRUE if dash-list is really a list */ unsigned long dirty;/* cache dirty bits */ XGCValues values; /* shadow structure of values */ }; struct _XDisplay { XExtData *ext_data; /* hook for extension to hang data */ struct _XFreeFuncs *free_funcs; /* internal free functions */ int fd; /* Network socket. */ int conn_checker; /* ugly thing used by _XEventsQueued */ int proto_major_version;/* maj. version of server's X protocol */ int proto_minor_version;/* minor version of server's X protocol */ char *vendor; /* vendor of the server hardware */ XID resource_base; /* resource ID base */ XID resource_mask; /* resource ID mask bits */ XID resource_id; /* allocator current ID */ int resource_shift; /* allocator shift to correct bits */ XID (*resource_alloc)( /* allocator function */ struct _XDisplay* ); int byte_order; /* screen byte order, LSBFirst, MSBFirst */ int bitmap_unit; /* padding and data requirements */ int bitmap_pad; /* padding requirements on bitmaps */ int bitmap_bit_order; /* LeastSignificant or MostSignificant */ int nformats; /* number of pixmap formats in list */ ScreenFormat *pixmap_format; /* pixmap format list */ int vnumber; /* Xlib's X protocol version number. */ int release; /* release of the server */ struct _XSQEvent *head, *tail; /* Input event queue. */ int qlen; /* Length of input event queue */ unsigned long last_request_read; /* seq number of last event read */ unsigned long request; /* sequence number of last request. */ char *last_req; /* beginning of last request, or dummy */ char *buffer; /* Output buffer starting address. */ char *bufptr; /* Output buffer index pointer. */ char *bufmax; /* Output buffer maximum+1 address. */ unsigned max_request_size; /* maximum number 32 bit words in request*/ struct _XrmHashBucketRec *db; int (*synchandler)( /* Synchronization handler */ struct _XDisplay* ); char *display_name; /* "host:display" string used on this connect*/ int default_screen; /* default screen for operations */ int nscreens; /* number of screens on this server*/ Screen *screens; /* pointer to list of screens */ unsigned long motion_buffer; /* size of motion buffer */ volatile unsigned long flags; /* internal connection flags */ int min_keycode; /* minimum defined keycode */ int max_keycode; /* maximum defined keycode */ KeySym *keysyms; /* This server's keysyms */ XModifierKeymap *modifiermap; /* This server's modifier keymap */ int keysyms_per_keycode;/* number of rows */ char *xdefaults; /* contents of defaults from server */ char *scratch_buffer; /* place to hang scratch buffer */ unsigned long scratch_length; /* length of scratch buffer */ int ext_number; /* extension number on this display */ struct _XExten *ext_procs; /* extensions initialized on this display */ /* * the following can be fixed size, as the protocol defines how * much address space is available. * While this could be done using the extension vector, there * may be MANY events processed, so a search through the extension * list to find the right procedure for each event might be * expensive if many extensions are being used. */ Bool (*event_vec[128])( /* vector for wire to event */ Display * /* dpy */, XEvent * /* re */, xEvent * /* event */ ); Status (*wire_vec[128])( /* vector for event to wire */ Display * /* dpy */, XEvent * /* re */, xEvent * /* event */ ); KeySym lock_meaning; /* for XLookupString */ struct _XLockInfo *lock; /* multi-thread state, display lock */ struct _XInternalAsync *async_handlers; /* for internal async */ unsigned long bigreq_size; /* max size of big requests */ struct _XLockPtrs *lock_fns; /* pointers to threads functions */ void (*idlist_alloc)( /* XID list allocator function */ Display * /* dpy */, XID * /* ids */, int /* count */ ); /* things above this line should not move, for binary compatibility */ struct _XKeytrans *key_bindings; /* for XLookupString */ Font cursor_font; /* for XCreateFontCursor */ struct _XDisplayAtoms *atoms; /* for XInternAtom */ unsigned int mode_switch; /* keyboard group modifiers */ unsigned int num_lock; /* keyboard numlock modifiers */ struct _XContextDB *context_db; /* context database */ Bool (**error_vec)( /* vector for wire to error */ Display * /* display */, XErrorEvent * /* he */, xError * /* we */ ); /* * Xcms information */ struct { XPointer defaultCCCs; /* pointer to an array of default XcmsCCC */ XPointer clientCmaps; /* pointer to linked list of XcmsCmapRec */ XPointer perVisualIntensityMaps; /* linked list of XcmsIntensityMap */ } cms; struct _XIMFilter *im_filters; struct _XSQEvent *qfree; /* unallocated event queue elements */ unsigned long next_event_serial_num; /* inserted into next queue elt */ struct _XExten *flushes; /* Flush hooks */ struct _XConnectionInfo *im_fd_info; /* _XRegisterInternalConnection */ int im_fd_length; /* number of im_fd_info */ struct _XConnWatchInfo *conn_watchers; /* XAddConnectionWatch */ int watcher_count; /* number of conn_watchers */ XPointer filedes; /* struct pollfd cache for _XWaitForReadable */ int (*savedsynchandler)( /* user synchandler when Xlib usurps */ Display * /* dpy */ ); XID resource_max; /* allocator max ID */ int xcmisc_opcode; /* major opcode for XC-MISC */ struct _XkbInfoRec *xkb_info; /* XKB info */ struct _XtransConnInfo *trans_conn; /* transport connection object */ struct _X11XCBPrivate *xcb; /* XCB glue private data */ /* Generic event cookie handling */ unsigned int next_cookie; /* next event cookie */ /* vector for wire to generic event, index is (extension - 128) */ Bool (*generic_event_vec[128])( Display * /* dpy */, XGenericEventCookie * /* Xlib event */, xEvent * /* wire event */); /* vector for event copy, index is (extension - 128) */ Bool (*generic_event_copy_vec[128])( Display * /* dpy */, XGenericEventCookie * /* in */, XGenericEventCookie * /* out*/); void *cookiejar; /* cookie events returned but not claimed */ #ifndef LONG64 unsigned long last_request_read_upper32bit; unsigned long request_upper32bit; #endif struct _XErrorThreadInfo *error_threads; XIOErrorExitHandler exit_handler; void *exit_handler_data; CARD32 in_ifevent; #ifdef XTHREADS xthread_t ifevent_thread; #endif }; #define XAllocIDs(dpy,ids,n) (*(dpy)->idlist_alloc)(dpy,ids,n) /* * access "last_request_read" and "request" with 64bit * warning: the value argument of the SET-macros must not * have any side-effects because it may get called twice. */ #ifndef LONG64 /* accessors for 32-bit unsigned long */ #define X_DPY_GET_REQUEST(dpy) \ ( \ ((uint64_t)(((struct _XDisplay*)dpy)->request)) \ + (((uint64_t)(((struct _XDisplay*)dpy)->request_upper32bit)) << 32) \ ) #define X_DPY_SET_REQUEST(dpy, value) \ ( \ (((struct _XDisplay*)dpy)->request = \ (value) & 0xFFFFFFFFUL), \ (((struct _XDisplay*)dpy)->request_upper32bit = \ ((uint64_t)(value)) >> 32), \ (void)0 /* don't use the result */ \ ) #define X_DPY_GET_LAST_REQUEST_READ(dpy) \ ( \ ((uint64_t)(((struct _XDisplay*)dpy)->last_request_read)) \ + ( \ ((uint64_t)( \ ((struct _XDisplay*)dpy)->last_request_read_upper32bit \ )) << 32 \ ) \ ) #define X_DPY_SET_LAST_REQUEST_READ(dpy, value) \ ( \ (((struct _XDisplay*)dpy)->last_request_read = \ (value) & 0xFFFFFFFFUL), \ (((struct _XDisplay*)dpy)->last_request_read_upper32bit = \ ((uint64_t)(value)) >> 32), \ (void)0 /* don't use the result */ \ ) /* * widen a 32-bit sequence number to a 64 sequence number. * This macro makes the following assumptions: * - ulseq refers to a sequence that has already been sent * - ulseq means the most recent possible sequence number * with these lower 32 bits. * * The following optimization is used: * The comparison result is taken a 0 or 1 to avoid a branch. */ #define X_DPY_WIDEN_UNSIGNED_LONG_SEQ(dpy, ulseq) \ ( \ ((uint64_t)ulseq) \ + \ (( \ ((uint64_t)(((struct _XDisplay*)dpy)->request_upper32bit)) \ - (uint64_t)( \ (ulseq) > (((struct _XDisplay*)dpy)->request) \ ) \ ) << 32) \ ) #define X_DPY_REQUEST_INCREMENT(dpy) \ ( \ ((struct _XDisplay*)dpy)->request++, \ ( \ (((struct _XDisplay*)dpy)->request == 0) ? ( \ ((struct _XDisplay*)dpy)->request_upper32bit++ \ ) : 0 \ ), \ (void)0 /* don't use the result */ \ ) #define X_DPY_REQUEST_DECREMENT(dpy) \ ( \ ( \ (((struct _XDisplay*)dpy)->request == 0) ? (\ ((struct _XDisplay*)dpy)->request--, /* wrap */ \ ((struct _XDisplay*)dpy)->request_upper32bit-- \ ) : ( \ ((struct _XDisplay*)dpy)->request-- \ ) \ ), \ (void)0 /* don't use the result */ \ ) #else /* accessors for 64-bit unsigned long */ #define X_DPY_GET_REQUEST(dpy) \ (((struct _XDisplay*)dpy)->request) #define X_DPY_SET_REQUEST(dpy, value) \ ((struct _XDisplay*)dpy)->request = (value) #define X_DPY_GET_LAST_REQUEST_READ(dpy) \ (((struct _XDisplay*)dpy)->last_request_read) #define X_DPY_SET_LAST_REQUEST_READ(dpy, value) \ ((struct _XDisplay*)dpy)->last_request_read = (value) #define X_DPY_WIDEN_UNSIGNED_LONG_SEQ(dpy, ulseq) ulseq #define X_DPY_REQUEST_INCREMENT(dpy) ((struct _XDisplay*)dpy)->request++ #define X_DPY_REQUEST_DECREMENT(dpy) ((struct _XDisplay*)dpy)->request-- #endif #ifndef _XEVENT_ /* * _QEvent datatype for use in input queueing. */ typedef struct _XSQEvent { struct _XSQEvent *next; XEvent event; unsigned long qserial_num; /* so multi-threaded code can find new ones */ } _XQEvent; #endif #include #include #define _XBCOPYFUNC _Xbcopy #include #include /* Utek leaves kernel macros around in include files (bleah) */ #ifdef dirty #undef dirty #endif #include #include #include _XFUNCPROTOBEGIN /* * The following definitions can be used for locking requests in multi-threaded * address spaces. */ #ifdef XTHREADS /* Author: Stephen Gildea, MIT X Consortium * * declarations for C Threads locking */ typedef struct _LockInfoRec *LockInfoPtr; /* interfaces for locking.c */ struct _XLockPtrs { /* used by all, including extensions; do not move */ void (*lock_display)( Display *dpy #if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE) , char *file , int line #endif ); void (*unlock_display)( Display *dpy #if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE) , char *file , int line #endif ); }; #if defined(WIN32) && !defined(_XLIBINT_) #define _XCreateMutex_fn (*_XCreateMutex_fn_p) #define _XFreeMutex_fn (*_XFreeMutex_fn_p) #define _XLockMutex_fn (*_XLockMutex_fn_p) #define _XUnlockMutex_fn (*_XUnlockMutex_fn_p) #define _Xglobal_lock (*_Xglobal_lock_p) #endif /* in XlibInt.c */ extern void (*_XCreateMutex_fn)( LockInfoPtr /* lock */ ); extern void (*_XFreeMutex_fn)( LockInfoPtr /* lock */ ); extern void (*_XLockMutex_fn)( LockInfoPtr /* lock */ #if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE) , char * /* file */ , int /* line */ #endif ); extern void (*_XUnlockMutex_fn)( LockInfoPtr /* lock */ #if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE) , char * /* file */ , int /* line */ #endif ); extern LockInfoPtr _Xglobal_lock; #if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE) #define LockDisplay(d) if ((d)->lock_fns) (*(d)->lock_fns->lock_display)((d),__FILE__,__LINE__) #define UnlockDisplay(d) if ((d)->lock_fns) (*(d)->lock_fns->unlock_display)((d),__FILE__,__LINE__) #define _XLockMutex(lock) if (_XLockMutex_fn) (*_XLockMutex_fn)(lock,__FILE__,__LINE__) #define _XUnlockMutex(lock) if (_XUnlockMutex_fn) (*_XUnlockMutex_fn)(lock,__FILE__,__LINE__) #else /* used everywhere, so must be fast if not using threads */ #define LockDisplay(d) if ((d)->lock_fns) (*(d)->lock_fns->lock_display)(d) #define UnlockDisplay(d) if ((d)->lock_fns) (*(d)->lock_fns->unlock_display)(d) #define _XLockMutex(lock) if (_XLockMutex_fn) (*_XLockMutex_fn)(lock) #define _XUnlockMutex(lock) if (_XUnlockMutex_fn) (*_XUnlockMutex_fn)(lock) #endif #define _XCreateMutex(lock) if (_XCreateMutex_fn) (*_XCreateMutex_fn)(lock) #define _XFreeMutex(lock) if (_XFreeMutex_fn) (*_XFreeMutex_fn)(lock) #else /* XTHREADS */ #define LockDisplay(dis) #define _XLockMutex(lock) #define _XUnlockMutex(lock) #define UnlockDisplay(dis) #define _XCreateMutex(lock) #define _XFreeMutex(lock) #endif #define Xfree(ptr) free((ptr)) /* * Note that some machines do not return a valid pointer for malloc(0), in * which case we provide an alternate under the control of the * define MALLOC_0_RETURNS_NULL. This is necessary because some * Xlib code expects malloc(0) to return a valid pointer to storage. */ #if defined(MALLOC_0_RETURNS_NULL) || defined(__clang_analyzer__) # define Xmalloc(size) malloc((size_t)((size) == 0 ? 1 : (size))) # define Xrealloc(ptr, size) realloc((ptr), (size_t)((size) == 0 ? 1 : (size))) # define Xcalloc(nelem, elsize) calloc((size_t)((nelem) == 0 ? 1 : (nelem)), (size_t)(elsize)) #else # define Xmalloc(size) malloc((size_t)(size)) # define Xrealloc(ptr, size) realloc((ptr), (size_t)(size)) # define Xcalloc(nelem, elsize) calloc((size_t)(nelem), (size_t)(elsize)) #endif #include #define LOCKED 1 #define UNLOCKED 0 #ifndef BUFSIZE #define BUFSIZE 2048 /* X output buffer size. */ #endif #ifndef PTSPERBATCH #define PTSPERBATCH 1024 /* point batching */ #endif #ifndef WLNSPERBATCH #define WLNSPERBATCH 50 /* wide line batching */ #endif #ifndef ZLNSPERBATCH #define ZLNSPERBATCH 1024 /* thin line batching */ #endif #ifndef WRCTSPERBATCH #define WRCTSPERBATCH 10 /* wide line rectangle batching */ #endif #ifndef ZRCTSPERBATCH #define ZRCTSPERBATCH 256 /* thin line rectangle batching */ #endif #ifndef FRCTSPERBATCH #define FRCTSPERBATCH 256 /* filled rectangle batching */ #endif #ifndef FARCSPERBATCH #define FARCSPERBATCH 256 /* filled arc batching */ #endif #ifndef CURSORFONT #define CURSORFONT "cursor" /* standard cursor fonts */ #endif /* * Display flags */ #define XlibDisplayIOError (1L << 0) #define XlibDisplayClosing (1L << 1) #define XlibDisplayNoXkb (1L << 2) #define XlibDisplayPrivSync (1L << 3) #define XlibDisplayProcConni (1L << 4) /* in _XProcessInternalConnection */ #define XlibDisplayReadEvents (1L << 5) /* in _XReadEvents */ #define XlibDisplayReply (1L << 5) /* in _XReply */ #define XlibDisplayWriting (1L << 6) /* in _XFlushInt, _XSend */ #define XlibDisplayDfltRMDB (1L << 7) /* mark if RM db from XGetDefault */ /* * X Protocol packetizing macros. */ /* Leftover from CRAY support - was defined empty on all non-Cray systems */ #define WORD64ALIGN /** * Return a len-sized request buffer for the request type. This function may * flush the output queue. * * @param dpy The display connection * @param type The request type * @param len Length of the request in bytes * * @returns A pointer to the request buffer with a few default values * initialized. */ extern void *_XGetRequest(Display *dpy, CARD8 type, size_t len); /* GetReqSized is the same as GetReq but allows the caller to specify the * size in bytes. 'sz' must be a multiple of 4! */ #define GetReqSized(name, sz, req) \ req = (x##name##Req *) _XGetRequest(dpy, X_##name, sz) /* * GetReq - Get the next available X request packet in the buffer and * return it. * * "name" is the name of the request, e.g. CreatePixmap, OpenFont, etc. * "req" is the name of the request pointer. * */ #define GetReq(name, req) \ GetReqSized(name, SIZEOF(x##name##Req), req) /* GetReqExtra is the same as GetReq, but allocates "n" additional bytes after the request. "n" must be a multiple of 4! */ #define GetReqExtra(name, n, req) \ GetReqSized(name, SIZEOF(x##name##Req) + n, req) /* * GetResReq is for those requests that have a resource ID * (Window, Pixmap, GContext, etc.) as their single argument. * "rid" is the name of the resource. */ #define GetResReq(name, rid, req) \ req = (xResourceReq *) _XGetRequest(dpy, X_##name, SIZEOF(xResourceReq)); \ if (req) req->id = (rid) /* * GetEmptyReq is for those requests that have no arguments * at all. */ #define GetEmptyReq(name, req) \ req = (xReq *) _XGetRequest(dpy, X_##name, SIZEOF(xReq)) /* * MakeBigReq sets the CARD16 "req->length" to 0 and inserts a new CARD32 * length, after req->length, before the data in the request. The new length * includes the "n" extra 32-bit words. * * Do not use MakeBigReq if there is no data already in the request. * req->length must already be >= 2. */ #ifdef LONG64 #define MakeBigReq(req,n) \ { \ CARD64 _BRdat; \ CARD32 _BRlen = (CARD32) (req->length - 1); \ req->length = 0; \ _BRdat = ((CARD32 *)req)[_BRlen]; \ memmove(((char *)req) + 8, ((char *)req) + 4, (_BRlen - 1) << 2); \ ((CARD32 *)req)[1] = _BRlen + (CARD32) (n) + 2; \ Data32(dpy, &_BRdat, 4); \ } #else #define MakeBigReq(req,n) \ { \ CARD32 _BRdat; \ CARD32 _BRlen = req->length - 1; \ req->length = 0; \ _BRdat = ((CARD32 *)req)[_BRlen]; \ memmove(((char *)req) + 8, ((char *)req) + 4, (_BRlen - 1) << 2); \ ((CARD32 *)req)[1] = _BRlen + (CARD32) (n) + 2; \ Data32(dpy, &_BRdat, 4); \ } #endif /* * SetReqLen increases the count of 32-bit words in the request by "n", * or by "badlen" if "n" is too large. * * Do not use SetReqLen if "req" does not already have data after the * xReq header. req->length must already be >= 2. */ #ifndef __clang_analyzer__ #define SetReqLen(req,n,badlen) \ if ((req->length + n) > (unsigned)65535) { \ if (dpy->bigreq_size) { \ MakeBigReq(req,n) \ } else { \ n = badlen; \ req->length = (CARD16) (req->length + n); \ } \ } else \ req->length = (CARD16) (req->length + n) #else #define SetReqLen(req,n,badlen) \ req->length += n #endif #define SyncHandle() \ if (dpy->synchandler) (*dpy->synchandler)(dpy) extern void _XFlushGCCache(Display *dpy, GC gc); #define FlushGC(dpy, gc) \ if ((gc)->dirty) _XFlushGCCache((dpy), (gc)) /* * Data - Place data in the buffer and pad the end to provide * 32 bit word alignment. Transmit if the buffer fills. * * "dpy" is a pointer to a Display. * "data" is a pointer to a data buffer. * "len" is the length of the data buffer. */ #ifndef DataRoutineIsProcedure #define Data(dpy, data, len) do {\ if (dpy->bufptr + (len) <= dpy->bufmax) {\ memcpy(dpy->bufptr, data, (size_t)(len));\ dpy->bufptr += ((size_t)((len) + 3) & (size_t)~3);\ } else\ _XSend(dpy, (_Xconst char*)(data), (long)(len));\ } while (0) #endif /* DataRoutineIsProcedure */ /* Allocate bytes from the buffer. No padding is done, so if * the length is not a multiple of 4, the caller must be * careful to leave the buffer aligned after sending the * current request. * * "type" is the type of the pointer being assigned to. * "ptr" is the pointer being assigned to. * "n" is the number of bytes to allocate. * * Example: * xTextElt *elt; * BufAlloc (xTextElt *, elt, nbytes) */ #define BufAlloc(type, ptr, n) do { \ if (dpy->bufptr + (n) > dpy->bufmax) \ _XFlush (dpy); \ ptr = (type) dpy->bufptr; \ memset(ptr, '\0', (size_t)(n)); \ dpy->bufptr += (n); \ } while (0) #define Data16(dpy, data, len) Data((dpy), (_Xconst char *)(data), (len)) #define _XRead16Pad(dpy, data, len) _XReadPad((dpy), (char *)(data), (len)) #define _XRead16(dpy, data, len) _XRead((dpy), (char *)(data), (len)) #ifdef LONG64 #define Data32(dpy, data, len) _XData32(dpy, (_Xconst long *)(data), (unsigned)(len)) extern int _XData32( Display *dpy, _Xconst long *data, unsigned len ); extern void _XRead32( Display *dpy, long *data, long len ); #else #define Data32(dpy, data, len) Data((dpy), (_Xconst char *)(data), (long)(len)) #define _XRead32(dpy, data, len) _XRead((dpy), (char *)(data), (len)) #endif #define PackData16(dpy,data,len) Data16 (dpy, data, len) #define PackData32(dpy,data,len) Data32 (dpy, data, len) /* Xlib manual is bogus */ #define PackData(dpy,data,len) PackData16 (dpy, data, len) #define min(a,b) (((a) < (b)) ? (a) : (b)) #define max(a,b) (((a) > (b)) ? (a) : (b)) #define CI_NONEXISTCHAR(cs) (((cs)->width == 0) && \ (((cs)->rbearing|(cs)->lbearing| \ (cs)->ascent|(cs)->descent) == 0)) /* * CI_GET_CHAR_INFO_1D - return the charinfo struct for the indicated 8bit * character. If the character is in the column and exists, then return the * appropriate metrics (note that fonts with common per-character metrics will * return min_bounds). If none of these hold true, try again with the default * char. */ #define CI_GET_CHAR_INFO_1D(fs,col,def,cs) \ do { \ cs = def; \ if (col >= fs->min_char_or_byte2 && col <= fs->max_char_or_byte2) { \ if (fs->per_char == NULL) { \ cs = &fs->min_bounds; \ } else { \ cs = &fs->per_char[(col - fs->min_char_or_byte2)]; \ if (CI_NONEXISTCHAR(cs)) cs = def; \ } \ } \ } while (0) #define CI_GET_DEFAULT_INFO_1D(fs,cs) \ CI_GET_CHAR_INFO_1D (fs, fs->default_char, NULL, cs) /* * CI_GET_CHAR_INFO_2D - return the charinfo struct for the indicated row and * column. This is used for fonts that have more than row zero. */ #define CI_GET_CHAR_INFO_2D(fs,row,col,def,cs) \ do { \ cs = def; \ if (row >= fs->min_byte1 && row <= fs->max_byte1 && \ col >= fs->min_char_or_byte2 && col <= fs->max_char_or_byte2) { \ if (fs->per_char == NULL) { \ cs = &fs->min_bounds; \ } else { \ cs = &fs->per_char[((row - fs->min_byte1) * \ (fs->max_char_or_byte2 - \ fs->min_char_or_byte2 + 1)) + \ (col - fs->min_char_or_byte2)]; \ if (CI_NONEXISTCHAR(cs)) cs = def; \ } \ } \ } while (0) #define CI_GET_DEFAULT_INFO_2D(fs,cs) \ do { \ unsigned int r = (fs->default_char >> 8); \ unsigned int c = (fs->default_char & 0xff); \ CI_GET_CHAR_INFO_2D (fs, r, c, NULL, cs); \ } while (0) /* srcvar must be a variable for large architecture version */ #define OneDataCard32(dpy,dstaddr,srcvar) \ do { *(CARD32 *)(dstaddr) = (srcvar); } while (0) typedef struct _XInternalAsync { struct _XInternalAsync *next; /* * handler arguments: * rep is the generic reply that caused this handler * to be invoked. It must also be passed to _XGetAsyncReply. * buf and len are opaque values that must be passed to * _XGetAsyncReply or _XGetAsyncData. * data is the closure stored in this struct. * The handler returns True iff it handled this reply. */ Bool (*handler)( Display* /* dpy */, xReply* /* rep */, char* /* buf */, int /* len */, XPointer /* data */ ); XPointer data; } _XAsyncHandler; /* * This struct is part of the ABI and is defined by value * in user-code. This means that we cannot make * the sequence-numbers 64bit. */ typedef struct _XAsyncEState { unsigned long min_sequence_number; unsigned long max_sequence_number; unsigned char error_code; unsigned char major_opcode; unsigned short minor_opcode; unsigned char last_error_received; int error_count; } _XAsyncErrorState; extern void _XDeqAsyncHandler(Display *dpy, _XAsyncHandler *handler); #define DeqAsyncHandler(dpy,handler) do { \ if (dpy->async_handlers == (handler)) \ dpy->async_handlers = (handler)->next; \ else \ _XDeqAsyncHandler(dpy, handler); \ } while (0) typedef void (*FreeFuncType) ( Display* /* display */ ); typedef int (*FreeModmapType) ( XModifierKeymap* /* modmap */ ); /* * This structure is private to the library. */ typedef struct _XFreeFuncs { FreeFuncType atoms; /* _XFreeAtomTable */ FreeModmapType modifiermap; /* XFreeModifiermap */ FreeFuncType key_bindings; /* _XFreeKeyBindings */ FreeFuncType context_db; /* _XFreeContextDB */ FreeFuncType defaultCCCs; /* _XcmsFreeDefaultCCCs */ FreeFuncType clientCmaps; /* _XcmsFreeClientCmaps */ FreeFuncType intensityMaps; /* _XcmsFreeIntensityMaps */ FreeFuncType im_filters; /* _XFreeIMFilters */ FreeFuncType xkb; /* _XkbFreeInfo */ } _XFreeFuncRec; /* types for InitExt.c */ typedef int (*CreateGCType) ( Display* /* display */, GC /* gc */, XExtCodes* /* codes */ ); typedef int (*CopyGCType)( Display* /* display */, GC /* gc */, XExtCodes* /* codes */ ); typedef int (*FlushGCType) ( Display* /* display */, GC /* gc */, XExtCodes* /* codes */ ); typedef int (*FreeGCType) ( Display* /* display */, GC /* gc */, XExtCodes* /* codes */ ); typedef int (*CreateFontType) ( Display* /* display */, XFontStruct* /* fs */, XExtCodes* /* codes */ ); typedef int (*FreeFontType) ( Display* /* display */, XFontStruct* /* fs */, XExtCodes* /* codes */ ); typedef int (*CloseDisplayType) ( Display* /* display */, XExtCodes* /* codes */ ); typedef int (*ErrorType) ( Display* /* display */, xError* /* err */, XExtCodes* /* codes */, int* /* ret_code */ ); typedef char* (*ErrorStringType) ( Display* /* display */, int /* code */, XExtCodes* /* codes */, char* /* buffer */, int /* nbytes */ ); typedef void (*PrintErrorType)( Display* /* display */, XErrorEvent* /* ev */, void* /* fp */ ); typedef void (*BeforeFlushType)( Display* /* display */, XExtCodes* /* codes */, _Xconst char* /* data */, long /* len */ ); /* * This structure is private to the library. */ typedef struct _XExten { /* private to extension mechanism */ struct _XExten *next; /* next in list */ XExtCodes codes; /* public information, all extension told */ CreateGCType create_GC; /* routine to call when GC created */ CopyGCType copy_GC; /* routine to call when GC copied */ FlushGCType flush_GC; /* routine to call when GC flushed */ FreeGCType free_GC; /* routine to call when GC freed */ CreateFontType create_Font; /* routine to call when Font created */ FreeFontType free_Font; /* routine to call when Font freed */ CloseDisplayType close_display; /* routine to call when connection closed */ ErrorType error; /* who to call when an error occurs */ ErrorStringType error_string; /* routine to supply error string */ char *name; /* name of this extension */ PrintErrorType error_values; /* routine to supply error values */ BeforeFlushType before_flush; /* routine to call when sending data */ struct _XExten *next_flush; /* next in list of those with flushes */ } _XExtension; /* extension hooks */ #ifdef DataRoutineIsProcedure extern void Data(Display *dpy, char *data, long len); #endif extern int _XError( Display* /* dpy */, xError* /* rep */ ); extern int _XIOError( Display* /* dpy */ ); extern int (*_XIOErrorFunction)( Display* /* dpy */ ); extern int (*_XErrorFunction)( Display* /* dpy */, XErrorEvent* /* error_event */ ); extern void _XEatData( Display* /* dpy */, unsigned long /* n */ ) _X_COLD; extern void _XEatDataWords( Display* /* dpy */, unsigned long /* n */ ) _X_COLD; #if defined(__SUNPRO_C) /* Studio compiler alternative to "cold" attribute */ # pragma rarely_called(_XEatData, _XEatDataWords) #endif extern char *_XAllocScratch( Display* /* dpy */, unsigned long /* nbytes */ ); extern char *_XAllocTemp( Display* /* dpy */, unsigned long /* nbytes */ ); extern void _XFreeTemp( Display* /* dpy */, char* /* buf */, unsigned long /* nbytes */ ); extern Visual *_XVIDtoVisual( Display* /* dpy */, VisualID /* id */ ); extern unsigned long _XSetLastRequestRead( Display* /* dpy */, xGenericReply* /* rep */ ); extern int _XGetHostname( char* /* buf */, int /* maxlen */ ); extern Screen *_XScreenOfWindow( Display* /* dpy */, Window /* w */ ); extern Bool _XAsyncErrorHandler( Display* /* dpy */, xReply* /* rep */, char* /* buf */, int /* len */, XPointer /* data */ ); extern char *_XGetAsyncReply( Display* /* dpy */, char* /* replbuf */, xReply* /* rep */, char* /* buf */, int /* len */, int /* extra */, Bool /* discard */ ); extern void _XGetAsyncData( Display* /* dpy */, char * /* data */, char * /* buf */, int /* len */, int /* skip */, int /* datalen */, int /* discardtotal */ ); extern void _XFlush( Display* /* dpy */ ); extern int _XEventsQueued( Display* /* dpy */, int /* mode */ ); extern void _XReadEvents( Display* /* dpy */ ); extern int _XRead( Display* /* dpy */, char* /* data */, long /* size */ ); extern void _XReadPad( Display* /* dpy */, char* /* data */, long /* size */ ); extern void _XSend( Display* /* dpy */, _Xconst char* /* data */, long /* size */ ); extern Status _XReply( Display* /* dpy */, xReply* /* rep */, int /* extra */, Bool /* discard */ ); extern void _XEnq( Display* /* dpy */, xEvent* /* event */ ); extern void _XDeq( Display* /* dpy */, _XQEvent* /* prev */, _XQEvent* /* qelt */ ); extern Bool _XUnknownWireEvent( Display* /* dpy */, XEvent* /* re */, xEvent* /* event */ ); extern Bool _XUnknownWireEventCookie( Display* /* dpy */, XGenericEventCookie* /* re */, xEvent* /* event */ ); extern Bool _XUnknownCopyEventCookie( Display* /* dpy */, XGenericEventCookie* /* in */, XGenericEventCookie* /* out */ ); extern Status _XUnknownNativeEvent( Display* /* dpy */, XEvent* /* re */, xEvent* /* event */ ); extern Bool _XWireToEvent(Display *dpy, XEvent *re, xEvent *event); extern Bool _XDefaultWireError(Display *display, XErrorEvent *he, xError *we); extern Bool _XPollfdCacheInit(Display *dpy); extern void _XPollfdCacheAdd(Display *dpy, int fd); extern void _XPollfdCacheDel(Display *dpy, int fd); extern XID _XAllocID(Display *dpy); extern void _XAllocIDs(Display *dpy, XID *ids, int count); extern int _XFreeExtData( XExtData* /* extension */ ); extern int (*XESetCreateGC( Display* /* display */, int /* extension */, int (*) ( Display* /* display */, GC /* gc */, XExtCodes* /* codes */ ) /* proc */ ))( Display*, GC, XExtCodes* ); extern int (*XESetCopyGC( Display* /* display */, int /* extension */, int (*) ( Display* /* display */, GC /* gc */, XExtCodes* /* codes */ ) /* proc */ ))( Display*, GC, XExtCodes* ); extern int (*XESetFlushGC( Display* /* display */, int /* extension */, int (*) ( Display* /* display */, GC /* gc */, XExtCodes* /* codes */ ) /* proc */ ))( Display*, GC, XExtCodes* ); extern int (*XESetFreeGC( Display* /* display */, int /* extension */, int (*) ( Display* /* display */, GC /* gc */, XExtCodes* /* codes */ ) /* proc */ ))( Display*, GC, XExtCodes* ); extern int (*XESetCreateFont( Display* /* display */, int /* extension */, int (*) ( Display* /* display */, XFontStruct* /* fs */, XExtCodes* /* codes */ ) /* proc */ ))( Display*, XFontStruct*, XExtCodes* ); extern int (*XESetFreeFont( Display* /* display */, int /* extension */, int (*) ( Display* /* display */, XFontStruct* /* fs */, XExtCodes* /* codes */ ) /* proc */ ))( Display*, XFontStruct*, XExtCodes* ); extern int (*XESetCloseDisplay( Display* /* display */, int /* extension */, int (*) ( Display* /* display */, XExtCodes* /* codes */ ) /* proc */ ))( Display*, XExtCodes* ); extern int (*XESetError( Display* /* display */, int /* extension */, int (*) ( Display* /* display */, xError* /* err */, XExtCodes* /* codes */, int* /* ret_code */ ) /* proc */ ))( Display*, xError*, XExtCodes*, int* ); extern char* (*XESetErrorString( Display* /* display */, int /* extension */, char* (*) ( Display* /* display */, int /* code */, XExtCodes* /* codes */, char* /* buffer */, int /* nbytes */ ) /* proc */ ))( Display*, int, XExtCodes*, char*, int ); extern void (*XESetPrintErrorValues ( Display* /* display */, int /* extension */, void (*)( Display* /* display */, XErrorEvent* /* ev */, void* /* fp */ ) /* proc */ ))( Display*, XErrorEvent*, void* ); extern Bool (*XESetWireToEvent( Display* /* display */, int /* event_number */, Bool (*) ( Display* /* display */, XEvent* /* re */, xEvent* /* event */ ) /* proc */ ))( Display*, XEvent*, xEvent* ); extern Bool (*XESetWireToEventCookie( Display* /* display */, int /* extension */, Bool (*) ( Display* /* display */, XGenericEventCookie* /* re */, xEvent* /* event */ ) /* proc */ ))( Display*, XGenericEventCookie*, xEvent* ); extern Bool (*XESetCopyEventCookie( Display* /* display */, int /* extension */, Bool (*) ( Display* /* display */, XGenericEventCookie* /* in */, XGenericEventCookie* /* out */ ) /* proc */ ))( Display*, XGenericEventCookie*, XGenericEventCookie* ); extern Status (*XESetEventToWire( Display* /* display */, int /* event_number */, Status (*) ( Display* /* display */, XEvent* /* re */, xEvent* /* event */ ) /* proc */ ))( Display*, XEvent*, xEvent* ); extern Bool (*XESetWireToError( Display* /* display */, int /* error_number */, Bool (*) ( Display* /* display */, XErrorEvent* /* he */, xError* /* we */ ) /* proc */ ))( Display*, XErrorEvent*, xError* ); extern void (*XESetBeforeFlush( Display* /* display */, int /* error_number */, void (*) ( Display* /* display */, XExtCodes* /* codes */, _Xconst char* /* data */, long /* len */ ) /* proc */ ))( Display*, XExtCodes*, _Xconst char*, long ); /* internal connections for IMs */ typedef void (*_XInternalConnectionProc)( Display* /* dpy */, int /* fd */, XPointer /* call_data */ ); extern Status _XRegisterInternalConnection( Display* /* dpy */, int /* fd */, _XInternalConnectionProc /* callback */, XPointer /* call_data */ ); extern void _XUnregisterInternalConnection( Display* /* dpy */, int /* fd */ ); extern void _XProcessInternalConnection( Display* /* dpy */, struct _XConnectionInfo* /* conn_info */ ); /* Display structure has pointers to these */ struct _XConnectionInfo { /* info from _XRegisterInternalConnection */ int fd; _XInternalConnectionProc read_callback; XPointer call_data; XPointer *watch_data; /* set/used by XConnectionWatchProc */ struct _XConnectionInfo *next; }; struct _XConnWatchInfo { /* info from XAddConnectionWatch */ XConnectionWatchProc fn; XPointer client_data; struct _XConnWatchInfo *next; }; extern int _XTextHeight( XFontStruct* /* font_struct */, _Xconst char* /* string */, int /* count */ ); extern int _XTextHeight16( XFontStruct* /* font_struct */, _Xconst XChar2b* /* string */, int /* count */ ); #if defined(WIN32) extern int _XOpenFile( _Xconst char* /* path */, int /* flags */ ); extern int _XOpenFileMode( _Xconst char* /* path */, int /* flags */, mode_t /* mode */ ); extern void* _XFopenFile( _Xconst char* /* path */, _Xconst char* /* mode */ ); extern int _XAccessFile( _Xconst char* /* path */ ); #else #define _XOpenFile(path,flags) open(path,flags) #define _XOpenFileMode(path,flags,mode) open(path,flags,mode) #define _XFopenFile(path,mode) fopen(path,mode) #endif /* EvToWire.c */ extern Status _XEventToWire(Display *dpy, XEvent *re, xEvent *event); extern int _XF86LoadQueryLocaleFont( Display* /* dpy */, _Xconst char* /* name*/, XFontStruct** /* xfp*/, Font* /* fidp */ ); extern void _XProcessWindowAttributes ( Display *dpy, xChangeWindowAttributesReq *req, unsigned long valuemask, XSetWindowAttributes *attributes); extern int _XDefaultError( Display *dpy, XErrorEvent *event); extern int _XDefaultIOError( Display *dpy); extern void _XDefaultIOErrorExit( Display *dpy, void *user_data); extern void _XSetClipRectangles ( Display *dpy, GC gc, int clip_x_origin, int clip_y_origin, XRectangle *rectangles, int n, int ordering); Status _XGetWindowAttributes( Display *dpy, Window w, XWindowAttributes *attr); int _XPutBackEvent ( Display *dpy, XEvent *event); extern Bool _XIsEventCookie( Display *dpy, XEvent *ev); extern void _XFreeEventCookies( Display *dpy); extern void _XStoreEventCookie( Display *dpy, XEvent *ev); extern Bool _XFetchEventCookie( Display *dpy, XGenericEventCookie *ev); extern Bool _XCopyEventCookie( Display *dpy, XGenericEventCookie *in, XGenericEventCookie *out); /* lcFile.c */ extern void xlocaledir( char *buf, int buf_len ); #ifdef __clang__ #pragma clang diagnostic pop #endif _XFUNCPROTOEND #endif /* _X11_XLIBINT_H_ */ libX11-1.8.12/include/X11/Xlib.h0000644014310600000120000030273114763154126011376 /* Copyright 1985, 1986, 1987, 1991, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ /* * Xlib.h - Header definition and support file for the C subroutine * interface library (Xlib) to the X Window System Protocol (V11). * Structures and symbols starting with "_" are private to the library. */ #ifndef _X11_XLIB_H_ #define _X11_XLIB_H_ #define XlibSpecificationRelease 6 #include #if defined(__SCO__) || defined(__UNIXWARE__) #include #endif #include /* applications should not depend on these two headers being included! */ #include #include #ifndef X_WCHAR #include #else /* replace this with #include or typedef appropriate for your system */ typedef unsigned long wchar_t; #endif extern int _Xmblen( char *str, int len ); /* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in November 2000. Its presence is indicated through the following macro. */ #define X_HAVE_UTF8_STRING 1 /* The Xlib structs are full of implicit padding to properly align members. We can't clean that up without breaking ABI, so tell clang not to bother complaining about it. */ #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wpadded" #endif typedef char *XPointer; #define Bool int #define Status int #define True 1 #define False 0 #define QueuedAlready 0 #define QueuedAfterReading 1 #define QueuedAfterFlush 2 #define ConnectionNumber(dpy) (((_XPrivDisplay)(dpy))->fd) #define RootWindow(dpy, scr) (ScreenOfDisplay(dpy,scr)->root) #define DefaultScreen(dpy) (((_XPrivDisplay)(dpy))->default_screen) #define DefaultRootWindow(dpy) (ScreenOfDisplay(dpy,DefaultScreen(dpy))->root) #define DefaultVisual(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_visual) #define DefaultGC(dpy, scr) (ScreenOfDisplay(dpy,scr)->default_gc) #define BlackPixel(dpy, scr) (ScreenOfDisplay(dpy,scr)->black_pixel) #define WhitePixel(dpy, scr) (ScreenOfDisplay(dpy,scr)->white_pixel) #define AllPlanes ((unsigned long)~0L) #define QLength(dpy) (((_XPrivDisplay)(dpy))->qlen) #define DisplayWidth(dpy, scr) (ScreenOfDisplay(dpy,scr)->width) #define DisplayHeight(dpy, scr) (ScreenOfDisplay(dpy,scr)->height) #define DisplayWidthMM(dpy, scr)(ScreenOfDisplay(dpy,scr)->mwidth) #define DisplayHeightMM(dpy, scr)(ScreenOfDisplay(dpy,scr)->mheight) #define DisplayPlanes(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_depth) #define DisplayCells(dpy, scr) (DefaultVisual(dpy,scr)->map_entries) #define ScreenCount(dpy) (((_XPrivDisplay)(dpy))->nscreens) #define ServerVendor(dpy) (((_XPrivDisplay)(dpy))->vendor) #define ProtocolVersion(dpy) (((_XPrivDisplay)(dpy))->proto_major_version) #define ProtocolRevision(dpy) (((_XPrivDisplay)(dpy))->proto_minor_version) #define VendorRelease(dpy) (((_XPrivDisplay)(dpy))->release) #define DisplayString(dpy) (((_XPrivDisplay)(dpy))->display_name) #define DefaultDepth(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_depth) #define DefaultColormap(dpy, scr)(ScreenOfDisplay(dpy,scr)->cmap) #define BitmapUnit(dpy) (((_XPrivDisplay)(dpy))->bitmap_unit) #define BitmapBitOrder(dpy) (((_XPrivDisplay)(dpy))->bitmap_bit_order) #define BitmapPad(dpy) (((_XPrivDisplay)(dpy))->bitmap_pad) #define ImageByteOrder(dpy) (((_XPrivDisplay)(dpy))->byte_order) #define NextRequest(dpy) (((_XPrivDisplay)(dpy))->request + 1) #define LastKnownRequestProcessed(dpy) (((_XPrivDisplay)(dpy))->last_request_read) /* macros for screen oriented applications (toolkit) */ #define ScreenOfDisplay(dpy, scr)(&((_XPrivDisplay)(dpy))->screens[scr]) #define DefaultScreenOfDisplay(dpy) ScreenOfDisplay(dpy,DefaultScreen(dpy)) #define DisplayOfScreen(s) ((s)->display) #define RootWindowOfScreen(s) ((s)->root) #define BlackPixelOfScreen(s) ((s)->black_pixel) #define WhitePixelOfScreen(s) ((s)->white_pixel) #define DefaultColormapOfScreen(s)((s)->cmap) #define DefaultDepthOfScreen(s) ((s)->root_depth) #define DefaultGCOfScreen(s) ((s)->default_gc) #define DefaultVisualOfScreen(s)((s)->root_visual) #define WidthOfScreen(s) ((s)->width) #define HeightOfScreen(s) ((s)->height) #define WidthMMOfScreen(s) ((s)->mwidth) #define HeightMMOfScreen(s) ((s)->mheight) #define PlanesOfScreen(s) ((s)->root_depth) #define CellsOfScreen(s) (DefaultVisualOfScreen((s))->map_entries) #define MinCmapsOfScreen(s) ((s)->min_maps) #define MaxCmapsOfScreen(s) ((s)->max_maps) #define DoesSaveUnders(s) ((s)->save_unders) #define DoesBackingStore(s) ((s)->backing_store) #define EventMaskOfScreen(s) ((s)->root_input_mask) /* * Extensions need a way to hang private data on some structures. */ typedef struct _XExtData { int number; /* number returned by XRegisterExtension */ struct _XExtData *next; /* next item on list of data for structure */ int (*free_private)( /* called to free private storage */ struct _XExtData *extension ); XPointer private_data; /* data private to this extension. */ } XExtData; /* * This file contains structures used by the extension mechanism. */ typedef struct { /* public to extension, cannot be changed */ int extension; /* extension number */ int major_opcode; /* major op-code assigned by server */ int first_event; /* first event number for the extension */ int first_error; /* first error number for the extension */ } XExtCodes; /* * Data structure for retrieving info about pixmap formats. */ typedef struct { int depth; int bits_per_pixel; int scanline_pad; } XPixmapFormatValues; /* * Data structure for setting graphics context. */ typedef struct { int function; /* logical operation */ unsigned long plane_mask;/* plane mask */ unsigned long foreground;/* foreground pixel */ unsigned long background;/* background pixel */ int line_width; /* line width */ int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */ int cap_style; /* CapNotLast, CapButt, CapRound, CapProjecting */ int join_style; /* JoinMiter, JoinRound, JoinBevel */ int fill_style; /* FillSolid, FillTiled, FillStippled, FillOpaqueStippled */ int fill_rule; /* EvenOddRule, WindingRule */ int arc_mode; /* ArcChord, ArcPieSlice */ Pixmap tile; /* tile pixmap for tiling operations */ Pixmap stipple; /* stipple 1 plane pixmap for stippling */ int ts_x_origin; /* offset for tile or stipple operations */ int ts_y_origin; Font font; /* default text font for text operations */ int subwindow_mode; /* ClipByChildren, IncludeInferiors */ Bool graphics_exposures;/* boolean, should exposures be generated */ int clip_x_origin; /* origin for clipping */ int clip_y_origin; Pixmap clip_mask; /* bitmap clipping; other calls for rects */ int dash_offset; /* patterned/dashed line information */ char dashes; } XGCValues; /* * Graphics context. The contents of this structure are implementation * dependent. A GC should be treated as opaque by application code. */ typedef struct _XGC #ifdef XLIB_ILLEGAL_ACCESS { XExtData *ext_data; /* hook for extension to hang data */ GContext gid; /* protocol ID for graphics context */ /* there is more to this structure, but it is private to Xlib */ } #endif *GC; /* * Visual structure; contains information about colormapping possible. */ typedef struct { XExtData *ext_data; /* hook for extension to hang data */ VisualID visualid; /* visual id of this visual */ #if defined(__cplusplus) || defined(c_plusplus) int c_class; /* C++ class of screen (monochrome, etc.) */ #else int class; /* class of screen (monochrome, etc.) */ #endif unsigned long red_mask, green_mask, blue_mask; /* mask values */ int bits_per_rgb; /* log base 2 of distinct color values */ int map_entries; /* color map entries */ } Visual; /* * Depth structure; contains information for each possible depth. */ typedef struct { int depth; /* this depth (Z) of the depth */ int nvisuals; /* number of Visual types at this depth */ Visual *visuals; /* list of visuals possible at this depth */ } Depth; /* * Information about the screen. The contents of this structure are * implementation dependent. A Screen should be treated as opaque * by application code. */ struct _XDisplay; /* Forward declare before use for C++ */ typedef struct { XExtData *ext_data; /* hook for extension to hang data */ struct _XDisplay *display;/* back pointer to display structure */ Window root; /* Root window id. */ int width, height; /* width and height of screen */ int mwidth, mheight; /* width and height of in millimeters */ int ndepths; /* number of depths possible */ Depth *depths; /* list of allowable depths on the screen */ int root_depth; /* bits per pixel */ Visual *root_visual; /* root visual */ GC default_gc; /* GC for the root root visual */ Colormap cmap; /* default color map */ unsigned long white_pixel; unsigned long black_pixel; /* White and Black pixel values */ int max_maps, min_maps; /* max and min color maps */ int backing_store; /* Never, WhenMapped, Always */ Bool save_unders; long root_input_mask; /* initial root input mask */ } Screen; /* * Format structure; describes ZFormat data the screen will understand. */ typedef struct { XExtData *ext_data; /* hook for extension to hang data */ int depth; /* depth of this image format */ int bits_per_pixel; /* bits/pixel at this depth */ int scanline_pad; /* scanline must padded to this multiple */ } ScreenFormat; /* * Data structure for setting window attributes. */ typedef struct { Pixmap background_pixmap; /* background or None or ParentRelative */ unsigned long background_pixel; /* background pixel */ Pixmap border_pixmap; /* border of the window */ unsigned long border_pixel; /* border pixel value */ int bit_gravity; /* one of bit gravity values */ int win_gravity; /* one of the window gravity values */ int backing_store; /* NotUseful, WhenMapped, Always */ unsigned long backing_planes;/* planes to be preserved if possible */ unsigned long backing_pixel;/* value to use in restoring planes */ Bool save_under; /* should bits under be saved? (popups) */ long event_mask; /* set of events that should be saved */ long do_not_propagate_mask; /* set of events that should not propagate */ Bool override_redirect; /* boolean value for override-redirect */ Colormap colormap; /* color map to be associated with window */ Cursor cursor; /* cursor to be displayed (or None) */ } XSetWindowAttributes; typedef struct { int x, y; /* location of window */ int width, height; /* width and height of window */ int border_width; /* border width of window */ int depth; /* depth of window */ Visual *visual; /* the associated visual structure */ Window root; /* root of screen containing window */ #if defined(__cplusplus) || defined(c_plusplus) int c_class; /* C++ InputOutput, InputOnly*/ #else int class; /* InputOutput, InputOnly*/ #endif int bit_gravity; /* one of bit gravity values */ int win_gravity; /* one of the window gravity values */ int backing_store; /* NotUseful, WhenMapped, Always */ unsigned long backing_planes;/* planes to be preserved if possible */ unsigned long backing_pixel;/* value to be used when restoring planes */ Bool save_under; /* boolean, should bits under be saved? */ Colormap colormap; /* color map to be associated with window */ Bool map_installed; /* boolean, is color map currently installed*/ int map_state; /* IsUnmapped, IsUnviewable, IsViewable */ long all_event_masks; /* set of events all people have interest in*/ long your_event_mask; /* my event mask */ long do_not_propagate_mask; /* set of events that should not propagate */ Bool override_redirect; /* boolean value for override-redirect */ Screen *screen; /* back pointer to correct screen */ } XWindowAttributes; /* * Data structure for host setting; getting routines. * */ typedef struct { int family; /* for example FamilyInternet */ int length; /* length of address, in bytes */ char *address; /* pointer to where to find the bytes */ } XHostAddress; /* * Data structure for ServerFamilyInterpreted addresses in host routines */ typedef struct { int typelength; /* length of type string, in bytes */ int valuelength; /* length of value string, in bytes */ char *type; /* pointer to where to find the type string */ char *value; /* pointer to where to find the address */ } XServerInterpretedAddress; /* * Data structure for "image" data, used by image manipulation routines. */ typedef struct _XImage { int width, height; /* size of image */ int xoffset; /* number of pixels offset in X direction */ int format; /* XYBitmap, XYPixmap, ZPixmap */ char *data; /* pointer to image data */ int byte_order; /* data byte order, LSBFirst, MSBFirst */ int bitmap_unit; /* quant. of scanline 8, 16, 32 */ int bitmap_bit_order; /* LSBFirst, MSBFirst */ int bitmap_pad; /* 8, 16, 32 either XY or ZPixmap */ int depth; /* depth of image */ int bytes_per_line; /* accelerator to next line */ int bits_per_pixel; /* bits per pixel (ZPixmap) */ unsigned long red_mask; /* bits in z arrangement */ unsigned long green_mask; unsigned long blue_mask; XPointer obdata; /* hook for the object routines to hang on */ struct funcs { /* image manipulation routines */ struct _XImage *(*create_image)( struct _XDisplay* /* display */, Visual* /* visual */, unsigned int /* depth */, int /* format */, int /* offset */, char* /* data */, unsigned int /* width */, unsigned int /* height */, int /* bitmap_pad */, int /* bytes_per_line */); int (*destroy_image) (struct _XImage *); unsigned long (*get_pixel) (struct _XImage *, int, int); int (*put_pixel) (struct _XImage *, int, int, unsigned long); struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int); int (*add_pixel) (struct _XImage *, long); } f; } XImage; /* * Data structure for XReconfigureWindow */ typedef struct { int x, y; int width, height; int border_width; Window sibling; int stack_mode; } XWindowChanges; /* * Data structure used by color operations */ typedef struct { unsigned long pixel; unsigned short red, green, blue; char flags; /* do_red, do_green, do_blue */ char pad; } XColor; /* * Data structures for graphics operations. On most machines, these are * congruent with the wire protocol structures, so reformatting the data * can be avoided on these architectures. */ typedef struct { short x1, y1, x2, y2; } XSegment; typedef struct { short x, y; } XPoint; typedef struct { short x, y; unsigned short width, height; } XRectangle; typedef struct { short x, y; unsigned short width, height; short angle1, angle2; } XArc; /* Data structure for XChangeKeyboardControl */ typedef struct { int key_click_percent; int bell_percent; int bell_pitch; int bell_duration; int led; int led_mode; int key; int auto_repeat_mode; /* On, Off, Default */ } XKeyboardControl; /* Data structure for XGetKeyboardControl */ typedef struct { int key_click_percent; int bell_percent; unsigned int bell_pitch, bell_duration; unsigned long led_mask; int global_auto_repeat; char auto_repeats[32]; } XKeyboardState; /* Data structure for XGetMotionEvents. */ typedef struct { Time time; short x, y; } XTimeCoord; /* Data structure for X{Set,Get}ModifierMapping */ typedef struct { int max_keypermod; /* The server's max # of keys per modifier */ KeyCode *modifiermap; /* An 8 by max_keypermod array of modifiers */ } XModifierKeymap; /* * Display datatype maintaining display specific data. * The contents of this structure are implementation dependent. * A Display should be treated as opaque by application code. */ #ifndef XLIB_ILLEGAL_ACCESS typedef struct _XDisplay Display; #endif struct _XPrivate; /* Forward declare before use for C++ */ struct _XrmHashBucketRec; typedef struct #ifdef XLIB_ILLEGAL_ACCESS _XDisplay #endif { XExtData *ext_data; /* hook for extension to hang data */ struct _XPrivate *private1; int fd; /* Network socket. */ int private2; int proto_major_version;/* major version of server's X protocol */ int proto_minor_version;/* minor version of servers X protocol */ char *vendor; /* vendor of the server hardware */ XID private3; XID private4; XID private5; int private6; XID (*resource_alloc)( /* allocator function */ struct _XDisplay* ); int byte_order; /* screen byte order, LSBFirst, MSBFirst */ int bitmap_unit; /* padding and data requirements */ int bitmap_pad; /* padding requirements on bitmaps */ int bitmap_bit_order; /* LeastSignificant or MostSignificant */ int nformats; /* number of pixmap formats in list */ ScreenFormat *pixmap_format; /* pixmap format list */ int private8; int release; /* release of the server */ struct _XPrivate *private9, *private10; int qlen; /* Length of input event queue */ unsigned long last_request_read; /* seq number of last event read */ unsigned long request; /* sequence number of last request. */ XPointer private11; XPointer private12; XPointer private13; XPointer private14; unsigned max_request_size; /* maximum number 32 bit words in request*/ struct _XrmHashBucketRec *db; int (*private15)( struct _XDisplay* ); char *display_name; /* "host:display" string used on this connect*/ int default_screen; /* default screen for operations */ int nscreens; /* number of screens on this server*/ Screen *screens; /* pointer to list of screens */ unsigned long motion_buffer; /* size of motion buffer */ unsigned long private16; int min_keycode; /* minimum defined keycode */ int max_keycode; /* maximum defined keycode */ XPointer private17; XPointer private18; int private19; char *xdefaults; /* contents of defaults from server */ /* there is more to this structure, but it is private to Xlib */ } #ifdef XLIB_ILLEGAL_ACCESS Display, #endif *_XPrivDisplay; #undef _XEVENT_ #ifndef _XEVENT_ /* * Definitions of specific events. */ typedef struct { int type; /* of event */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; /* "event" window it is reported relative to */ Window root; /* root window that the event occurred on */ Window subwindow; /* child window */ Time time; /* milliseconds */ int x, y; /* pointer x, y coordinates in event window */ int x_root, y_root; /* coordinates relative to root */ unsigned int state; /* key or button mask */ unsigned int keycode; /* detail */ Bool same_screen; /* same screen flag */ } XKeyEvent; typedef XKeyEvent XKeyPressedEvent; typedef XKeyEvent XKeyReleasedEvent; typedef struct { int type; /* of event */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; /* "event" window it is reported relative to */ Window root; /* root window that the event occurred on */ Window subwindow; /* child window */ Time time; /* milliseconds */ int x, y; /* pointer x, y coordinates in event window */ int x_root, y_root; /* coordinates relative to root */ unsigned int state; /* key or button mask */ unsigned int button; /* detail */ Bool same_screen; /* same screen flag */ } XButtonEvent; typedef XButtonEvent XButtonPressedEvent; typedef XButtonEvent XButtonReleasedEvent; typedef struct { int type; /* of event */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; /* "event" window reported relative to */ Window root; /* root window that the event occurred on */ Window subwindow; /* child window */ Time time; /* milliseconds */ int x, y; /* pointer x, y coordinates in event window */ int x_root, y_root; /* coordinates relative to root */ unsigned int state; /* key or button mask */ char is_hint; /* detail */ Bool same_screen; /* same screen flag */ } XMotionEvent; typedef XMotionEvent XPointerMovedEvent; typedef struct { int type; /* of event */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; /* "event" window reported relative to */ Window root; /* root window that the event occurred on */ Window subwindow; /* child window */ Time time; /* milliseconds */ int x, y; /* pointer x, y coordinates in event window */ int x_root, y_root; /* coordinates relative to root */ int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */ int detail; /* * NotifyAncestor, NotifyVirtual, NotifyInferior, * NotifyNonlinear,NotifyNonlinearVirtual */ Bool same_screen; /* same screen flag */ Bool focus; /* boolean focus */ unsigned int state; /* key or button mask */ } XCrossingEvent; typedef XCrossingEvent XEnterWindowEvent; typedef XCrossingEvent XLeaveWindowEvent; typedef struct { int type; /* FocusIn or FocusOut */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; /* window of event */ int mode; /* NotifyNormal, NotifyWhileGrabbed, NotifyGrab, NotifyUngrab */ int detail; /* * NotifyAncestor, NotifyVirtual, NotifyInferior, * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer, * NotifyPointerRoot, NotifyDetailNone */ } XFocusChangeEvent; typedef XFocusChangeEvent XFocusInEvent; typedef XFocusChangeEvent XFocusOutEvent; /* generated on EnterWindow and FocusIn when KeyMapState selected */ typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; char key_vector[32]; } XKeymapEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; int x, y; int width, height; int count; /* if non-zero, at least this many more */ } XExposeEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Drawable drawable; int x, y; int width, height; int count; /* if non-zero, at least this many more */ int major_code; /* core is CopyArea or CopyPlane */ int minor_code; /* not defined in the core */ } XGraphicsExposeEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Drawable drawable; int major_code; /* core is CopyArea or CopyPlane */ int minor_code; /* not defined in the core */ } XNoExposeEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; int state; /* Visibility state */ } XVisibilityEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window parent; /* parent of the window */ Window window; /* window id of window created */ int x, y; /* window location */ int width, height; /* size of window */ int border_width; /* border width */ Bool override_redirect; /* creation should be overridden */ } XCreateWindowEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; } XDestroyWindowEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; Bool from_configure; } XUnmapEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; Bool override_redirect; /* boolean, is override set... */ } XMapEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window parent; Window window; } XMapRequestEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; Window parent; int x, y; Bool override_redirect; } XReparentEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; int x, y; int width, height; int border_width; Window above; Bool override_redirect; } XConfigureEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; int x, y; } XGravityEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; int width, height; } XResizeRequestEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window parent; Window window; int x, y; int width, height; int border_width; Window above; int detail; /* Above, Below, TopIf, BottomIf, Opposite */ unsigned long value_mask; } XConfigureRequestEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; int place; /* PlaceOnTop, PlaceOnBottom */ } XCirculateEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window parent; Window window; int place; /* PlaceOnTop, PlaceOnBottom */ } XCirculateRequestEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; Atom atom; Time time; int state; /* NewValue, Deleted */ } XPropertyEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; Atom selection; Time time; } XSelectionClearEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window owner; Window requestor; Atom selection; Atom target; Atom property; Time time; } XSelectionRequestEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window requestor; Atom selection; Atom target; Atom property; /* ATOM or None */ Time time; } XSelectionEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; Colormap colormap; /* COLORMAP or None */ #if defined(__cplusplus) || defined(c_plusplus) Bool c_new; /* C++ */ #else Bool new; #endif int state; /* ColormapInstalled, ColormapUninstalled */ } XColormapEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; Atom message_type; int format; union { char b[20]; short s[10]; long l[5]; } data; } XClientMessageEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; /* unused */ int request; /* one of MappingModifier, MappingKeyboard, MappingPointer */ int first_keycode; /* first keycode */ int count; /* defines range of change w. first_keycode*/ } XMappingEvent; typedef struct { int type; Display *display; /* Display the event was read from */ XID resourceid; /* resource id */ unsigned long serial; /* serial number of failed request */ unsigned char error_code; /* error code of failed request */ unsigned char request_code; /* Major op-code of failed request */ unsigned char minor_code; /* Minor op-code of failed request */ } XErrorEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display;/* Display the event was read from */ Window window; /* window on which event was requested in event mask */ } XAnyEvent; /*************************************************************** * * GenericEvent. This event is the standard event for all newer extensions. */ typedef struct { int type; /* of event. Always GenericEvent */ unsigned long serial; /* # of last request processed */ Bool send_event; /* true if from SendEvent request */ Display *display; /* Display the event was read from */ int extension; /* major opcode of extension that caused the event */ int evtype; /* actual event type. */ } XGenericEvent; typedef struct { int type; /* of event. Always GenericEvent */ unsigned long serial; /* # of last request processed */ Bool send_event; /* true if from SendEvent request */ Display *display; /* Display the event was read from */ int extension; /* major opcode of extension that caused the event */ int evtype; /* actual event type. */ unsigned int cookie; void *data; } XGenericEventCookie; /* * this union is defined so Xlib can always use the same sized * event structure internally, to avoid memory fragmentation. */ typedef union _XEvent { int type; /* must not be changed; first element */ XAnyEvent xany; XKeyEvent xkey; XButtonEvent xbutton; XMotionEvent xmotion; XCrossingEvent xcrossing; XFocusChangeEvent xfocus; XExposeEvent xexpose; XGraphicsExposeEvent xgraphicsexpose; XNoExposeEvent xnoexpose; XVisibilityEvent xvisibility; XCreateWindowEvent xcreatewindow; XDestroyWindowEvent xdestroywindow; XUnmapEvent xunmap; XMapEvent xmap; XMapRequestEvent xmaprequest; XReparentEvent xreparent; XConfigureEvent xconfigure; XGravityEvent xgravity; XResizeRequestEvent xresizerequest; XConfigureRequestEvent xconfigurerequest; XCirculateEvent xcirculate; XCirculateRequestEvent xcirculaterequest; XPropertyEvent xproperty; XSelectionClearEvent xselectionclear; XSelectionRequestEvent xselectionrequest; XSelectionEvent xselection; XColormapEvent xcolormap; XClientMessageEvent xclient; XMappingEvent xmapping; XErrorEvent xerror; XKeymapEvent xkeymap; XGenericEvent xgeneric; XGenericEventCookie xcookie; long pad[24]; } XEvent; #endif #define XAllocID(dpy) ((*((_XPrivDisplay)(dpy))->resource_alloc)((dpy))) /* * per character font metric information. */ typedef struct { short lbearing; /* origin to left edge of raster */ short rbearing; /* origin to right edge of raster */ short width; /* advance to next char's origin */ short ascent; /* baseline to top edge of raster */ short descent; /* baseline to bottom edge of raster */ unsigned short attributes; /* per char flags (not predefined) */ } XCharStruct; /* * To allow arbitrary information with fonts, there are additional properties * returned. */ typedef struct { Atom name; unsigned long card32; } XFontProp; typedef struct { XExtData *ext_data; /* hook for extension to hang data */ Font fid; /* Font id for this font */ unsigned direction; /* hint about direction the font is painted */ unsigned min_char_or_byte2;/* first character */ unsigned max_char_or_byte2;/* last character */ unsigned min_byte1; /* first row that exists */ unsigned max_byte1; /* last row that exists */ Bool all_chars_exist;/* flag if all characters have non-zero size*/ unsigned default_char; /* char to print for undefined character */ int n_properties; /* how many properties there are */ XFontProp *properties; /* pointer to array of additional properties*/ XCharStruct min_bounds; /* minimum bounds over all existing char*/ XCharStruct max_bounds; /* maximum bounds over all existing char*/ XCharStruct *per_char; /* first_char to last_char information */ int ascent; /* log. extent above baseline for spacing */ int descent; /* log. descent below baseline for spacing */ } XFontStruct; /* * PolyText routines take these as arguments. */ typedef struct { char *chars; /* pointer to string */ int nchars; /* number of characters */ int delta; /* delta between strings */ Font font; /* font to print it in, None don't change */ } XTextItem; typedef struct { /* normal 16 bit characters are two bytes */ unsigned char byte1; unsigned char byte2; } XChar2b; typedef struct { XChar2b *chars; /* two byte characters */ int nchars; /* number of characters */ int delta; /* delta between strings */ Font font; /* font to print it in, None don't change */ } XTextItem16; typedef union { Display *display; GC gc; Visual *visual; Screen *screen; ScreenFormat *pixmap_format; XFontStruct *font; } XEDataObject; typedef struct { XRectangle max_ink_extent; XRectangle max_logical_extent; } XFontSetExtents; /* unused: typedef void (*XOMProc)(); */ typedef struct _XOM *XOM; typedef struct _XOC *XOC, *XFontSet; typedef struct { char *chars; int nchars; int delta; XFontSet font_set; } XmbTextItem; typedef struct { wchar_t *chars; int nchars; int delta; XFontSet font_set; } XwcTextItem; #define XNRequiredCharSet "requiredCharSet" #define XNQueryOrientation "queryOrientation" #define XNBaseFontName "baseFontName" #define XNOMAutomatic "omAutomatic" #define XNMissingCharSet "missingCharSet" #define XNDefaultString "defaultString" #define XNOrientation "orientation" #define XNDirectionalDependentDrawing "directionalDependentDrawing" #define XNContextualDrawing "contextualDrawing" #define XNFontInfo "fontInfo" typedef struct { int charset_count; char **charset_list; } XOMCharSetList; typedef enum { XOMOrientation_LTR_TTB, XOMOrientation_RTL_TTB, XOMOrientation_TTB_LTR, XOMOrientation_TTB_RTL, XOMOrientation_Context } XOrientation; typedef struct { int num_orientation; XOrientation *orientation; /* Input Text description */ } XOMOrientation; typedef struct { int num_font; XFontStruct **font_struct_list; char **font_name_list; } XOMFontInfo; typedef struct _XIM *XIM; typedef struct _XIC *XIC; typedef void (*XIMProc)( XIM, XPointer, XPointer ); typedef Bool (*XICProc)( XIC, XPointer, XPointer ); typedef void (*XIDProc)( Display*, XPointer, XPointer ); typedef unsigned long XIMStyle; typedef struct { unsigned short count_styles; XIMStyle *supported_styles; } XIMStyles; #define XIMPreeditArea 0x0001L #define XIMPreeditCallbacks 0x0002L #define XIMPreeditPosition 0x0004L #define XIMPreeditNothing 0x0008L #define XIMPreeditNone 0x0010L #define XIMStatusArea 0x0100L #define XIMStatusCallbacks 0x0200L #define XIMStatusNothing 0x0400L #define XIMStatusNone 0x0800L #define XNVaNestedList "XNVaNestedList" #define XNQueryInputStyle "queryInputStyle" #define XNClientWindow "clientWindow" #define XNInputStyle "inputStyle" #define XNFocusWindow "focusWindow" #define XNResourceName "resourceName" #define XNResourceClass "resourceClass" #define XNGeometryCallback "geometryCallback" #define XNDestroyCallback "destroyCallback" #define XNFilterEvents "filterEvents" #define XNPreeditStartCallback "preeditStartCallback" #define XNPreeditDoneCallback "preeditDoneCallback" #define XNPreeditDrawCallback "preeditDrawCallback" #define XNPreeditCaretCallback "preeditCaretCallback" #define XNPreeditStateNotifyCallback "preeditStateNotifyCallback" #define XNPreeditAttributes "preeditAttributes" #define XNStatusStartCallback "statusStartCallback" #define XNStatusDoneCallback "statusDoneCallback" #define XNStatusDrawCallback "statusDrawCallback" #define XNStatusAttributes "statusAttributes" #define XNArea "area" #define XNAreaNeeded "areaNeeded" #define XNSpotLocation "spotLocation" #define XNColormap "colorMap" #define XNStdColormap "stdColorMap" #define XNForeground "foreground" #define XNBackground "background" #define XNBackgroundPixmap "backgroundPixmap" #define XNFontSet "fontSet" #define XNLineSpace "lineSpace" #define XNCursor "cursor" #define XNQueryIMValuesList "queryIMValuesList" #define XNQueryICValuesList "queryICValuesList" #define XNVisiblePosition "visiblePosition" #define XNR6PreeditCallback "r6PreeditCallback" #define XNStringConversionCallback "stringConversionCallback" #define XNStringConversion "stringConversion" #define XNResetState "resetState" #define XNHotKey "hotKey" #define XNHotKeyState "hotKeyState" #define XNPreeditState "preeditState" #define XNSeparatorofNestedList "separatorofNestedList" #define XBufferOverflow -1 #define XLookupNone 1 #define XLookupChars 2 #define XLookupKeySym 3 #define XLookupBoth 4 typedef void *XVaNestedList; typedef struct { XPointer client_data; XIMProc callback; } XIMCallback; typedef struct { XPointer client_data; XICProc callback; } XICCallback; typedef unsigned long XIMFeedback; #define XIMReverse 1L #define XIMUnderline (1L<<1) #define XIMHighlight (1L<<2) #define XIMPrimary (1L<<5) #define XIMSecondary (1L<<6) #define XIMTertiary (1L<<7) #define XIMVisibleToForward (1L<<8) #define XIMVisibleToBackword (1L<<9) #define XIMVisibleToCenter (1L<<10) typedef struct _XIMText { unsigned short length; XIMFeedback *feedback; Bool encoding_is_wchar; union { char *multi_byte; wchar_t *wide_char; } string; } XIMText; typedef unsigned long XIMPreeditState; #define XIMPreeditUnKnown 0L #define XIMPreeditEnable 1L #define XIMPreeditDisable (1L<<1) typedef struct _XIMPreeditStateNotifyCallbackStruct { XIMPreeditState state; } XIMPreeditStateNotifyCallbackStruct; typedef unsigned long XIMResetState; #define XIMInitialState 1L #define XIMPreserveState (1L<<1) typedef unsigned long XIMStringConversionFeedback; #define XIMStringConversionLeftEdge (0x00000001) #define XIMStringConversionRightEdge (0x00000002) #define XIMStringConversionTopEdge (0x00000004) #define XIMStringConversionBottomEdge (0x00000008) #define XIMStringConversionConcealed (0x00000010) #define XIMStringConversionWrapped (0x00000020) typedef struct _XIMStringConversionText { unsigned short length; XIMStringConversionFeedback *feedback; Bool encoding_is_wchar; union { char *mbs; wchar_t *wcs; } string; } XIMStringConversionText; typedef unsigned short XIMStringConversionPosition; typedef unsigned short XIMStringConversionType; #define XIMStringConversionBuffer (0x0001) #define XIMStringConversionLine (0x0002) #define XIMStringConversionWord (0x0003) #define XIMStringConversionChar (0x0004) typedef unsigned short XIMStringConversionOperation; #define XIMStringConversionSubstitution (0x0001) #define XIMStringConversionRetrieval (0x0002) typedef enum { XIMForwardChar, XIMBackwardChar, XIMForwardWord, XIMBackwardWord, XIMCaretUp, XIMCaretDown, XIMNextLine, XIMPreviousLine, XIMLineStart, XIMLineEnd, XIMAbsolutePosition, XIMDontChange } XIMCaretDirection; typedef struct _XIMStringConversionCallbackStruct { XIMStringConversionPosition position; XIMCaretDirection direction; XIMStringConversionOperation operation; unsigned short factor; XIMStringConversionText *text; } XIMStringConversionCallbackStruct; typedef struct _XIMPreeditDrawCallbackStruct { int caret; /* Cursor offset within pre-edit string */ int chg_first; /* Starting change position */ int chg_length; /* Length of the change in character count */ XIMText *text; } XIMPreeditDrawCallbackStruct; typedef enum { XIMIsInvisible, /* Disable caret feedback */ XIMIsPrimary, /* UI defined caret feedback */ XIMIsSecondary /* UI defined caret feedback */ } XIMCaretStyle; typedef struct _XIMPreeditCaretCallbackStruct { int position; /* Caret offset within pre-edit string */ XIMCaretDirection direction; /* Caret moves direction */ XIMCaretStyle style; /* Feedback of the caret */ } XIMPreeditCaretCallbackStruct; typedef enum { XIMTextType, XIMBitmapType } XIMStatusDataType; typedef struct _XIMStatusDrawCallbackStruct { XIMStatusDataType type; union { XIMText *text; Pixmap bitmap; } data; } XIMStatusDrawCallbackStruct; typedef struct _XIMHotKeyTrigger { KeySym keysym; int modifier; int modifier_mask; } XIMHotKeyTrigger; typedef struct _XIMHotKeyTriggers { int num_hot_key; XIMHotKeyTrigger *key; } XIMHotKeyTriggers; typedef unsigned long XIMHotKeyState; #define XIMHotKeyStateON (0x0001L) #define XIMHotKeyStateOFF (0x0002L) typedef struct { unsigned short count_values; char **supported_values; } XIMValuesList; _XFUNCPROTOBEGIN #if defined(WIN32) && !defined(_XLIBINT_) #define _Xdebug (*_Xdebug_p) #endif extern int _Xdebug; extern XFontStruct *XLoadQueryFont( Display* /* display */, _Xconst char* /* name */ ); extern XFontStruct *XQueryFont( Display* /* display */, XID /* font_ID */ ); extern XTimeCoord *XGetMotionEvents( Display* /* display */, Window /* w */, Time /* start */, Time /* stop */, int* /* nevents_return */ ); extern XModifierKeymap *XDeleteModifiermapEntry( XModifierKeymap* /* modmap */, #if NeedWidePrototypes unsigned int /* keycode_entry */, #else KeyCode /* keycode_entry */, #endif int /* modifier */ ); extern XModifierKeymap *XGetModifierMapping( Display* /* display */ ); extern XModifierKeymap *XInsertModifiermapEntry( XModifierKeymap* /* modmap */, #if NeedWidePrototypes unsigned int /* keycode_entry */, #else KeyCode /* keycode_entry */, #endif int /* modifier */ ); extern XModifierKeymap *XNewModifiermap( int /* max_keys_per_mod */ ); extern XImage *XCreateImage( Display* /* display */, Visual* /* visual */, unsigned int /* depth */, int /* format */, int /* offset */, char* /* data */, unsigned int /* width */, unsigned int /* height */, int /* bitmap_pad */, int /* bytes_per_line */ ); extern Status XInitImage( XImage* /* image */ ); extern XImage *XGetImage( Display* /* display */, Drawable /* d */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */, unsigned long /* plane_mask */, int /* format */ ); extern XImage *XGetSubImage( Display* /* display */, Drawable /* d */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */, unsigned long /* plane_mask */, int /* format */, XImage* /* dest_image */, int /* dest_x */, int /* dest_y */ ); /* * X function declarations. */ extern Display *XOpenDisplay( _Xconst char* /* display_name */ ); extern void XrmInitialize( void ); extern char *XFetchBytes( Display* /* display */, int* /* nbytes_return */ ); extern char *XFetchBuffer( Display* /* display */, int* /* nbytes_return */, int /* buffer */ ); extern char *XGetAtomName( Display* /* display */, Atom /* atom */ ); extern Status XGetAtomNames( Display* /* dpy */, Atom* /* atoms */, int /* count */, char** /* names_return */ ); extern char *XGetDefault( Display* /* display */, _Xconst char* /* program */, _Xconst char* /* option */ ); extern char *XDisplayName( _Xconst char* /* string */ ); extern char *XKeysymToString( KeySym /* keysym */ ); extern int (*XSynchronize( Display* /* display */, Bool /* onoff */ ))( Display* /* display */ ); extern int (*XSetAfterFunction( Display* /* display */, int (*) ( Display* /* display */ ) /* procedure */ ))( Display* /* display */ ); extern Atom XInternAtom( Display* /* display */, _Xconst char* /* atom_name */, Bool /* only_if_exists */ ); extern Status XInternAtoms( Display* /* dpy */, char** /* names */, int /* count */, Bool /* onlyIfExists */, Atom* /* atoms_return */ ); extern Colormap XCopyColormapAndFree( Display* /* display */, Colormap /* colormap */ ); extern Colormap XCreateColormap( Display* /* display */, Window /* w */, Visual* /* visual */, int /* alloc */ ); extern Cursor XCreatePixmapCursor( Display* /* display */, Pixmap /* source */, Pixmap /* mask */, XColor* /* foreground_color */, XColor* /* background_color */, unsigned int /* x */, unsigned int /* y */ ); extern Cursor XCreateGlyphCursor( Display* /* display */, Font /* source_font */, Font /* mask_font */, unsigned int /* source_char */, unsigned int /* mask_char */, XColor _Xconst * /* foreground_color */, XColor _Xconst * /* background_color */ ); extern Cursor XCreateFontCursor( Display* /* display */, unsigned int /* shape */ ); extern Font XLoadFont( Display* /* display */, _Xconst char* /* name */ ); extern GC XCreateGC( Display* /* display */, Drawable /* d */, unsigned long /* valuemask */, XGCValues* /* values */ ); extern GContext XGContextFromGC( GC /* gc */ ); extern void XFlushGC( Display* /* display */, GC /* gc */ ); extern Pixmap XCreatePixmap( Display* /* display */, Drawable /* d */, unsigned int /* width */, unsigned int /* height */, unsigned int /* depth */ ); extern Pixmap XCreateBitmapFromData( Display* /* display */, Drawable /* d */, _Xconst char* /* data */, unsigned int /* width */, unsigned int /* height */ ); extern Pixmap XCreatePixmapFromBitmapData( Display* /* display */, Drawable /* d */, char* /* data */, unsigned int /* width */, unsigned int /* height */, unsigned long /* fg */, unsigned long /* bg */, unsigned int /* depth */ ); extern Window XCreateSimpleWindow( Display* /* display */, Window /* parent */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */, unsigned int /* border_width */, unsigned long /* border */, unsigned long /* background */ ); extern Window XGetSelectionOwner( Display* /* display */, Atom /* selection */ ); extern Window XCreateWindow( Display* /* display */, Window /* parent */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */, unsigned int /* border_width */, int /* depth */, unsigned int /* class */, Visual* /* visual */, unsigned long /* valuemask */, XSetWindowAttributes* /* attributes */ ); extern Colormap *XListInstalledColormaps( Display* /* display */, Window /* w */, int* /* num_return */ ); extern char **XListFonts( Display* /* display */, _Xconst char* /* pattern */, int /* maxnames */, int* /* actual_count_return */ ); extern char **XListFontsWithInfo( Display* /* display */, _Xconst char* /* pattern */, int /* maxnames */, int* /* count_return */, XFontStruct** /* info_return */ ); extern char **XGetFontPath( Display* /* display */, int* /* npaths_return */ ); extern char **XListExtensions( Display* /* display */, int* /* nextensions_return */ ); extern Atom *XListProperties( Display* /* display */, Window /* w */, int* /* num_prop_return */ ); extern XHostAddress *XListHosts( Display* /* display */, int* /* nhosts_return */, Bool* /* state_return */ ); _X_DEPRECATED extern KeySym XKeycodeToKeysym( Display* /* display */, #if NeedWidePrototypes unsigned int /* keycode */, #else KeyCode /* keycode */, #endif int /* index */ ); extern KeySym XLookupKeysym( XKeyEvent* /* key_event */, int /* index */ ); extern KeySym *XGetKeyboardMapping( Display* /* display */, #if NeedWidePrototypes unsigned int /* first_keycode */, #else KeyCode /* first_keycode */, #endif int /* keycode_count */, int* /* keysyms_per_keycode_return */ ); extern KeySym XStringToKeysym( _Xconst char* /* string */ ); extern long XMaxRequestSize( Display* /* display */ ); extern long XExtendedMaxRequestSize( Display* /* display */ ); extern char *XResourceManagerString( Display* /* display */ ); extern char *XScreenResourceString( Screen* /* screen */ ); extern unsigned long XDisplayMotionBufferSize( Display* /* display */ ); extern VisualID XVisualIDFromVisual( Visual* /* visual */ ); /* multithread routines */ extern Status XInitThreads( void ); extern Status XFreeThreads( void ); extern void XLockDisplay( Display* /* display */ ); extern void XUnlockDisplay( Display* /* display */ ); /* routines for dealing with extensions */ extern XExtCodes *XInitExtension( Display* /* display */, _Xconst char* /* name */ ); extern XExtCodes *XAddExtension( Display* /* display */ ); extern XExtData *XFindOnExtensionList( XExtData** /* structure */, int /* number */ ); extern XExtData **XEHeadOfExtensionList( XEDataObject /* object */ ); /* these are routines for which there are also macros */ extern Window XRootWindow( Display* /* display */, int /* screen_number */ ); extern Window XDefaultRootWindow( Display* /* display */ ); extern Window XRootWindowOfScreen( Screen* /* screen */ ); extern Visual *XDefaultVisual( Display* /* display */, int /* screen_number */ ); extern Visual *XDefaultVisualOfScreen( Screen* /* screen */ ); extern GC XDefaultGC( Display* /* display */, int /* screen_number */ ); extern GC XDefaultGCOfScreen( Screen* /* screen */ ); extern unsigned long XBlackPixel( Display* /* display */, int /* screen_number */ ); extern unsigned long XWhitePixel( Display* /* display */, int /* screen_number */ ); extern unsigned long XAllPlanes( void ); extern unsigned long XBlackPixelOfScreen( Screen* /* screen */ ); extern unsigned long XWhitePixelOfScreen( Screen* /* screen */ ); extern unsigned long XNextRequest( Display* /* display */ ); extern unsigned long XLastKnownRequestProcessed( Display* /* display */ ); extern char *XServerVendor( Display* /* display */ ); extern char *XDisplayString( Display* /* display */ ); extern Colormap XDefaultColormap( Display* /* display */, int /* screen_number */ ); extern Colormap XDefaultColormapOfScreen( Screen* /* screen */ ); extern Display *XDisplayOfScreen( Screen* /* screen */ ); extern Screen *XScreenOfDisplay( Display* /* display */, int /* screen_number */ ); extern Screen *XDefaultScreenOfDisplay( Display* /* display */ ); extern long XEventMaskOfScreen( Screen* /* screen */ ); extern int XScreenNumberOfScreen( Screen* /* screen */ ); typedef int (*XErrorHandler) ( /* WARNING, this type not in Xlib spec */ Display* /* display */, XErrorEvent* /* error_event */ ); extern XErrorHandler XSetErrorHandler ( XErrorHandler /* handler */ ); typedef int (*XIOErrorHandler) ( /* WARNING, this type not in Xlib spec */ Display* /* display */ ); extern XIOErrorHandler XSetIOErrorHandler ( XIOErrorHandler /* handler */ ); typedef void (*XIOErrorExitHandler) ( /* WARNING, this type not in Xlib spec */ Display*, /* display */ void* /* user_data */ ); extern void XSetIOErrorExitHandler ( Display*, /* display */ XIOErrorExitHandler, /* handler */ void* /* user_data */ ); extern XPixmapFormatValues *XListPixmapFormats( Display* /* display */, int* /* count_return */ ); extern int *XListDepths( Display* /* display */, int /* screen_number */, int* /* count_return */ ); /* ICCCM routines for things that don't require special include files; */ /* other declarations are given in Xutil.h */ extern Status XReconfigureWMWindow( Display* /* display */, Window /* w */, int /* screen_number */, unsigned int /* mask */, XWindowChanges* /* changes */ ); extern Status XGetWMProtocols( Display* /* display */, Window /* w */, Atom** /* protocols_return */, int* /* count_return */ ); extern Status XSetWMProtocols( Display* /* display */, Window /* w */, Atom* /* protocols */, int /* count */ ); extern Status XIconifyWindow( Display* /* display */, Window /* w */, int /* screen_number */ ); extern Status XWithdrawWindow( Display* /* display */, Window /* w */, int /* screen_number */ ); extern Status XGetCommand( Display* /* display */, Window /* w */, char*** /* argv_return */, int* /* argc_return */ ); extern Status XGetWMColormapWindows( Display* /* display */, Window /* w */, Window** /* windows_return */, int* /* count_return */ ); extern Status XSetWMColormapWindows( Display* /* display */, Window /* w */, Window* /* colormap_windows */, int /* count */ ); extern void XFreeStringList( char** /* list */ ); extern int XSetTransientForHint( Display* /* display */, Window /* w */, Window /* prop_window */ ); /* The following are given in alphabetical order */ extern int XActivateScreenSaver( Display* /* display */ ); extern int XAddHost( Display* /* display */, XHostAddress* /* host */ ); extern int XAddHosts( Display* /* display */, XHostAddress* /* hosts */, int /* num_hosts */ ); extern int XAddToExtensionList( struct _XExtData** /* structure */, XExtData* /* ext_data */ ); extern int XAddToSaveSet( Display* /* display */, Window /* w */ ); extern Status XAllocColor( Display* /* display */, Colormap /* colormap */, XColor* /* screen_in_out */ ); extern Status XAllocColorCells( Display* /* display */, Colormap /* colormap */, Bool /* contig */, unsigned long* /* plane_masks_return */, unsigned int /* nplanes */, unsigned long* /* pixels_return */, unsigned int /* npixels */ ); extern Status XAllocColorPlanes( Display* /* display */, Colormap /* colormap */, Bool /* contig */, unsigned long* /* pixels_return */, int /* ncolors */, int /* nreds */, int /* ngreens */, int /* nblues */, unsigned long* /* rmask_return */, unsigned long* /* gmask_return */, unsigned long* /* bmask_return */ ); extern Status XAllocNamedColor( Display* /* display */, Colormap /* colormap */, _Xconst char* /* color_name */, XColor* /* screen_def_return */, XColor* /* exact_def_return */ ); extern int XAllowEvents( Display* /* display */, int /* event_mode */, Time /* time */ ); extern int XAutoRepeatOff( Display* /* display */ ); extern int XAutoRepeatOn( Display* /* display */ ); extern int XBell( Display* /* display */, int /* percent */ ); extern int XBitmapBitOrder( Display* /* display */ ); extern int XBitmapPad( Display* /* display */ ); extern int XBitmapUnit( Display* /* display */ ); extern int XCellsOfScreen( Screen* /* screen */ ); extern int XChangeActivePointerGrab( Display* /* display */, unsigned int /* event_mask */, Cursor /* cursor */, Time /* time */ ); extern int XChangeGC( Display* /* display */, GC /* gc */, unsigned long /* valuemask */, XGCValues* /* values */ ); extern int XChangeKeyboardControl( Display* /* display */, unsigned long /* value_mask */, XKeyboardControl* /* values */ ); extern int XChangeKeyboardMapping( Display* /* display */, int /* first_keycode */, int /* keysyms_per_keycode */, KeySym* /* keysyms */, int /* num_codes */ ); extern int XChangePointerControl( Display* /* display */, Bool /* do_accel */, Bool /* do_threshold */, int /* accel_numerator */, int /* accel_denominator */, int /* threshold */ ); extern int XChangeProperty( Display* /* display */, Window /* w */, Atom /* property */, Atom /* type */, int /* format */, int /* mode */, _Xconst unsigned char* /* data */, int /* nelements */ ); extern int XChangeSaveSet( Display* /* display */, Window /* w */, int /* change_mode */ ); extern int XChangeWindowAttributes( Display* /* display */, Window /* w */, unsigned long /* valuemask */, XSetWindowAttributes* /* attributes */ ); extern Bool XCheckIfEvent( Display* /* display */, XEvent* /* event_return */, Bool (*) ( Display* /* display */, XEvent* /* event */, XPointer /* arg */ ) /* predicate */, XPointer /* arg */ ); extern Bool XCheckMaskEvent( Display* /* display */, long /* event_mask */, XEvent* /* event_return */ ); extern Bool XCheckTypedEvent( Display* /* display */, int /* event_type */, XEvent* /* event_return */ ); extern Bool XCheckTypedWindowEvent( Display* /* display */, Window /* w */, int /* event_type */, XEvent* /* event_return */ ); extern Bool XCheckWindowEvent( Display* /* display */, Window /* w */, long /* event_mask */, XEvent* /* event_return */ ); extern int XCirculateSubwindows( Display* /* display */, Window /* w */, int /* direction */ ); extern int XCirculateSubwindowsDown( Display* /* display */, Window /* w */ ); extern int XCirculateSubwindowsUp( Display* /* display */, Window /* w */ ); extern int XClearArea( Display* /* display */, Window /* w */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */, Bool /* exposures */ ); extern int XClearWindow( Display* /* display */, Window /* w */ ); extern int XCloseDisplay( Display* /* display */ ); extern int XConfigureWindow( Display* /* display */, Window /* w */, unsigned int /* value_mask */, XWindowChanges* /* values */ ); extern int XConnectionNumber( Display* /* display */ ); extern int XConvertSelection( Display* /* display */, Atom /* selection */, Atom /* target */, Atom /* property */, Window /* requestor */, Time /* time */ ); extern int XCopyArea( Display* /* display */, Drawable /* src */, Drawable /* dest */, GC /* gc */, int /* src_x */, int /* src_y */, unsigned int /* width */, unsigned int /* height */, int /* dest_x */, int /* dest_y */ ); extern int XCopyGC( Display* /* display */, GC /* src */, unsigned long /* valuemask */, GC /* dest */ ); extern int XCopyPlane( Display* /* display */, Drawable /* src */, Drawable /* dest */, GC /* gc */, int /* src_x */, int /* src_y */, unsigned int /* width */, unsigned int /* height */, int /* dest_x */, int /* dest_y */, unsigned long /* plane */ ); extern int XDefaultDepth( Display* /* display */, int /* screen_number */ ); extern int XDefaultDepthOfScreen( Screen* /* screen */ ); extern int XDefaultScreen( Display* /* display */ ); extern int XDefineCursor( Display* /* display */, Window /* w */, Cursor /* cursor */ ); extern int XDeleteProperty( Display* /* display */, Window /* w */, Atom /* property */ ); extern int XDestroyWindow( Display* /* display */, Window /* w */ ); extern int XDestroySubwindows( Display* /* display */, Window /* w */ ); extern int XDoesBackingStore( Screen* /* screen */ ); extern Bool XDoesSaveUnders( Screen* /* screen */ ); extern int XDisableAccessControl( Display* /* display */ ); extern int XDisplayCells( Display* /* display */, int /* screen_number */ ); extern int XDisplayHeight( Display* /* display */, int /* screen_number */ ); extern int XDisplayHeightMM( Display* /* display */, int /* screen_number */ ); extern int XDisplayKeycodes( Display* /* display */, int* /* min_keycodes_return */, int* /* max_keycodes_return */ ); extern int XDisplayPlanes( Display* /* display */, int /* screen_number */ ); extern int XDisplayWidth( Display* /* display */, int /* screen_number */ ); extern int XDisplayWidthMM( Display* /* display */, int /* screen_number */ ); extern int XDrawArc( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */, int /* angle1 */, int /* angle2 */ ); extern int XDrawArcs( Display* /* display */, Drawable /* d */, GC /* gc */, XArc* /* arcs */, int /* narcs */ ); extern int XDrawImageString( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, _Xconst char* /* string */, int /* length */ ); extern int XDrawImageString16( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, _Xconst XChar2b* /* string */, int /* length */ ); extern int XDrawLine( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x1 */, int /* y1 */, int /* x2 */, int /* y2 */ ); extern int XDrawLines( Display* /* display */, Drawable /* d */, GC /* gc */, XPoint* /* points */, int /* npoints */, int /* mode */ ); extern int XDrawPoint( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */ ); extern int XDrawPoints( Display* /* display */, Drawable /* d */, GC /* gc */, XPoint* /* points */, int /* npoints */, int /* mode */ ); extern int XDrawRectangle( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */ ); extern int XDrawRectangles( Display* /* display */, Drawable /* d */, GC /* gc */, XRectangle* /* rectangles */, int /* nrectangles */ ); extern int XDrawSegments( Display* /* display */, Drawable /* d */, GC /* gc */, XSegment* /* segments */, int /* nsegments */ ); extern int XDrawString( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, _Xconst char* /* string */, int /* length */ ); extern int XDrawString16( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, _Xconst XChar2b* /* string */, int /* length */ ); extern int XDrawText( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, XTextItem* /* items */, int /* nitems */ ); extern int XDrawText16( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, XTextItem16* /* items */, int /* nitems */ ); extern int XEnableAccessControl( Display* /* display */ ); extern int XEventsQueued( Display* /* display */, int /* mode */ ); extern Status XFetchName( Display* /* display */, Window /* w */, char** /* window_name_return */ ); extern int XFillArc( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */, int /* angle1 */, int /* angle2 */ ); extern int XFillArcs( Display* /* display */, Drawable /* d */, GC /* gc */, XArc* /* arcs */, int /* narcs */ ); extern int XFillPolygon( Display* /* display */, Drawable /* d */, GC /* gc */, XPoint* /* points */, int /* npoints */, int /* shape */, int /* mode */ ); extern int XFillRectangle( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */ ); extern int XFillRectangles( Display* /* display */, Drawable /* d */, GC /* gc */, XRectangle* /* rectangles */, int /* nrectangles */ ); extern int XFlush( Display* /* display */ ); extern int XForceScreenSaver( Display* /* display */, int /* mode */ ); extern int XFree( void* /* data */ ); extern int XFreeColormap( Display* /* display */, Colormap /* colormap */ ); extern int XFreeColors( Display* /* display */, Colormap /* colormap */, unsigned long* /* pixels */, int /* npixels */, unsigned long /* planes */ ); extern int XFreeCursor( Display* /* display */, Cursor /* cursor */ ); extern int XFreeExtensionList( char** /* list */ ); extern int XFreeFont( Display* /* display */, XFontStruct* /* font_struct */ ); extern int XFreeFontInfo( char** /* names */, XFontStruct* /* free_info */, int /* actual_count */ ); extern int XFreeFontNames( char** /* list */ ); extern int XFreeFontPath( char** /* list */ ); extern int XFreeGC( Display* /* display */, GC /* gc */ ); extern int XFreeModifiermap( XModifierKeymap* /* modmap */ ); extern int XFreePixmap( Display* /* display */, Pixmap /* pixmap */ ); extern int XGeometry( Display* /* display */, int /* screen */, _Xconst char* /* position */, _Xconst char* /* default_position */, unsigned int /* bwidth */, unsigned int /* fwidth */, unsigned int /* fheight */, int /* xadder */, int /* yadder */, int* /* x_return */, int* /* y_return */, int* /* width_return */, int* /* height_return */ ); extern int XGetErrorDatabaseText( Display* /* display */, _Xconst char* /* name */, _Xconst char* /* message */, _Xconst char* /* default_string */, char* /* buffer_return */, int /* length */ ); extern int XGetErrorText( Display* /* display */, int /* code */, char* /* buffer_return */, int /* length */ ); extern Bool XGetFontProperty( XFontStruct* /* font_struct */, Atom /* atom */, unsigned long* /* value_return */ ); extern Status XGetGCValues( Display* /* display */, GC /* gc */, unsigned long /* valuemask */, XGCValues* /* values_return */ ); extern Status XGetGeometry( Display* /* display */, Drawable /* d */, Window* /* root_return */, int* /* x_return */, int* /* y_return */, unsigned int* /* width_return */, unsigned int* /* height_return */, unsigned int* /* border_width_return */, unsigned int* /* depth_return */ ); extern Status XGetIconName( Display* /* display */, Window /* w */, char** /* icon_name_return */ ); extern int XGetInputFocus( Display* /* display */, Window* /* focus_return */, int* /* revert_to_return */ ); extern int XGetKeyboardControl( Display* /* display */, XKeyboardState* /* values_return */ ); extern int XGetPointerControl( Display* /* display */, int* /* accel_numerator_return */, int* /* accel_denominator_return */, int* /* threshold_return */ ); extern int XGetPointerMapping( Display* /* display */, unsigned char* /* map_return */, int /* nmap */ ); extern int XGetScreenSaver( Display* /* display */, int* /* timeout_return */, int* /* interval_return */, int* /* prefer_blanking_return */, int* /* allow_exposures_return */ ); extern Status XGetTransientForHint( Display* /* display */, Window /* w */, Window* /* prop_window_return */ ); extern int XGetWindowProperty( Display* /* display */, Window /* w */, Atom /* property */, long /* long_offset */, long /* long_length */, Bool /* delete */, Atom /* req_type */, Atom* /* actual_type_return */, int* /* actual_format_return */, unsigned long* /* nitems_return */, unsigned long* /* bytes_after_return */, unsigned char** /* prop_return */ ); extern Status XGetWindowAttributes( Display* /* display */, Window /* w */, XWindowAttributes* /* window_attributes_return */ ); extern int XGrabButton( Display* /* display */, unsigned int /* button */, unsigned int /* modifiers */, Window /* grab_window */, Bool /* owner_events */, unsigned int /* event_mask */, int /* pointer_mode */, int /* keyboard_mode */, Window /* confine_to */, Cursor /* cursor */ ); extern int XGrabKey( Display* /* display */, int /* keycode */, unsigned int /* modifiers */, Window /* grab_window */, Bool /* owner_events */, int /* pointer_mode */, int /* keyboard_mode */ ); extern int XGrabKeyboard( Display* /* display */, Window /* grab_window */, Bool /* owner_events */, int /* pointer_mode */, int /* keyboard_mode */, Time /* time */ ); extern int XGrabPointer( Display* /* display */, Window /* grab_window */, Bool /* owner_events */, unsigned int /* event_mask */, int /* pointer_mode */, int /* keyboard_mode */, Window /* confine_to */, Cursor /* cursor */, Time /* time */ ); extern int XGrabServer( Display* /* display */ ); extern int XHeightMMOfScreen( Screen* /* screen */ ); extern int XHeightOfScreen( Screen* /* screen */ ); extern int XIfEvent( Display* /* display */, XEvent* /* event_return */, Bool (*) ( Display* /* display */, XEvent* /* event */, XPointer /* arg */ ) /* predicate */, XPointer /* arg */ ); extern int XImageByteOrder( Display* /* display */ ); extern int XInstallColormap( Display* /* display */, Colormap /* colormap */ ); extern KeyCode XKeysymToKeycode( Display* /* display */, KeySym /* keysym */ ); extern int XKillClient( Display* /* display */, XID /* resource */ ); extern Status XLookupColor( Display* /* display */, Colormap /* colormap */, _Xconst char* /* color_name */, XColor* /* exact_def_return */, XColor* /* screen_def_return */ ); extern int XLowerWindow( Display* /* display */, Window /* w */ ); extern int XMapRaised( Display* /* display */, Window /* w */ ); extern int XMapSubwindows( Display* /* display */, Window /* w */ ); extern int XMapWindow( Display* /* display */, Window /* w */ ); extern int XMaskEvent( Display* /* display */, long /* event_mask */, XEvent* /* event_return */ ); extern int XMaxCmapsOfScreen( Screen* /* screen */ ); extern int XMinCmapsOfScreen( Screen* /* screen */ ); extern int XMoveResizeWindow( Display* /* display */, Window /* w */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */ ); extern int XMoveWindow( Display* /* display */, Window /* w */, int /* x */, int /* y */ ); extern int XNextEvent( Display* /* display */, XEvent* /* event_return */ ); extern int XNoOp( Display* /* display */ ); extern Status XParseColor( Display* /* display */, Colormap /* colormap */, _Xconst char* /* spec */, XColor* /* exact_def_return */ ); extern int XParseGeometry( _Xconst char* /* parsestring */, int* /* x_return */, int* /* y_return */, unsigned int* /* width_return */, unsigned int* /* height_return */ ); extern int XPeekEvent( Display* /* display */, XEvent* /* event_return */ ); extern int XPeekIfEvent( Display* /* display */, XEvent* /* event_return */, Bool (*) ( Display* /* display */, XEvent* /* event */, XPointer /* arg */ ) /* predicate */, XPointer /* arg */ ); extern int XPending( Display* /* display */ ); extern int XPlanesOfScreen( Screen* /* screen */ ); extern int XProtocolRevision( Display* /* display */ ); extern int XProtocolVersion( Display* /* display */ ); extern int XPutBackEvent( Display* /* display */, XEvent* /* event */ ); extern int XPutImage( Display* /* display */, Drawable /* d */, GC /* gc */, XImage* /* image */, int /* src_x */, int /* src_y */, int /* dest_x */, int /* dest_y */, unsigned int /* width */, unsigned int /* height */ ); extern int XQLength( Display* /* display */ ); extern Status XQueryBestCursor( Display* /* display */, Drawable /* d */, unsigned int /* width */, unsigned int /* height */, unsigned int* /* width_return */, unsigned int* /* height_return */ ); extern Status XQueryBestSize( Display* /* display */, int /* class */, Drawable /* which_screen */, unsigned int /* width */, unsigned int /* height */, unsigned int* /* width_return */, unsigned int* /* height_return */ ); extern Status XQueryBestStipple( Display* /* display */, Drawable /* which_screen */, unsigned int /* width */, unsigned int /* height */, unsigned int* /* width_return */, unsigned int* /* height_return */ ); extern Status XQueryBestTile( Display* /* display */, Drawable /* which_screen */, unsigned int /* width */, unsigned int /* height */, unsigned int* /* width_return */, unsigned int* /* height_return */ ); extern int XQueryColor( Display* /* display */, Colormap /* colormap */, XColor* /* def_in_out */ ); extern int XQueryColors( Display* /* display */, Colormap /* colormap */, XColor* /* defs_in_out */, int /* ncolors */ ); extern Bool XQueryExtension( Display* /* display */, _Xconst char* /* name */, int* /* major_opcode_return */, int* /* first_event_return */, int* /* first_error_return */ ); extern int XQueryKeymap( Display* /* display */, char [32] /* keys_return */ ); extern Bool XQueryPointer( Display* /* display */, Window /* w */, Window* /* root_return */, Window* /* child_return */, int* /* root_x_return */, int* /* root_y_return */, int* /* win_x_return */, int* /* win_y_return */, unsigned int* /* mask_return */ ); extern int XQueryTextExtents( Display* /* display */, XID /* font_ID */, _Xconst char* /* string */, int /* nchars */, int* /* direction_return */, int* /* font_ascent_return */, int* /* font_descent_return */, XCharStruct* /* overall_return */ ); extern int XQueryTextExtents16( Display* /* display */, XID /* font_ID */, _Xconst XChar2b* /* string */, int /* nchars */, int* /* direction_return */, int* /* font_ascent_return */, int* /* font_descent_return */, XCharStruct* /* overall_return */ ); extern Status XQueryTree( Display* /* display */, Window /* w */, Window* /* root_return */, Window* /* parent_return */, Window** /* children_return */, unsigned int* /* nchildren_return */ ); extern int XRaiseWindow( Display* /* display */, Window /* w */ ); extern int XReadBitmapFile( Display* /* display */, Drawable /* d */, _Xconst char* /* filename */, unsigned int* /* width_return */, unsigned int* /* height_return */, Pixmap* /* bitmap_return */, int* /* x_hot_return */, int* /* y_hot_return */ ); extern int XReadBitmapFileData( _Xconst char* /* filename */, unsigned int* /* width_return */, unsigned int* /* height_return */, unsigned char** /* data_return */, int* /* x_hot_return */, int* /* y_hot_return */ ); extern int XRebindKeysym( Display* /* display */, KeySym /* keysym */, KeySym* /* list */, int /* mod_count */, _Xconst unsigned char* /* string */, int /* bytes_string */ ); extern int XRecolorCursor( Display* /* display */, Cursor /* cursor */, XColor* /* foreground_color */, XColor* /* background_color */ ); extern int XRefreshKeyboardMapping( XMappingEvent* /* event_map */ ); extern int XRemoveFromSaveSet( Display* /* display */, Window /* w */ ); extern int XRemoveHost( Display* /* display */, XHostAddress* /* host */ ); extern int XRemoveHosts( Display* /* display */, XHostAddress* /* hosts */, int /* num_hosts */ ); extern int XReparentWindow( Display* /* display */, Window /* w */, Window /* parent */, int /* x */, int /* y */ ); extern int XResetScreenSaver( Display* /* display */ ); extern int XResizeWindow( Display* /* display */, Window /* w */, unsigned int /* width */, unsigned int /* height */ ); extern int XRestackWindows( Display* /* display */, Window* /* windows */, int /* nwindows */ ); extern int XRotateBuffers( Display* /* display */, int /* rotate */ ); extern int XRotateWindowProperties( Display* /* display */, Window /* w */, Atom* /* properties */, int /* num_prop */, int /* npositions */ ); extern int XScreenCount( Display* /* display */ ); extern int XSelectInput( Display* /* display */, Window /* w */, long /* event_mask */ ); extern Status XSendEvent( Display* /* display */, Window /* w */, Bool /* propagate */, long /* event_mask */, XEvent* /* event_send */ ); extern int XSetAccessControl( Display* /* display */, int /* mode */ ); extern int XSetArcMode( Display* /* display */, GC /* gc */, int /* arc_mode */ ); extern int XSetBackground( Display* /* display */, GC /* gc */, unsigned long /* background */ ); extern int XSetClipMask( Display* /* display */, GC /* gc */, Pixmap /* pixmap */ ); extern int XSetClipOrigin( Display* /* display */, GC /* gc */, int /* clip_x_origin */, int /* clip_y_origin */ ); extern int XSetClipRectangles( Display* /* display */, GC /* gc */, int /* clip_x_origin */, int /* clip_y_origin */, XRectangle* /* rectangles */, int /* n */, int /* ordering */ ); extern int XSetCloseDownMode( Display* /* display */, int /* close_mode */ ); extern int XSetCommand( Display* /* display */, Window /* w */, char** /* argv */, int /* argc */ ); extern int XSetDashes( Display* /* display */, GC /* gc */, int /* dash_offset */, _Xconst char* /* dash_list */, int /* n */ ); extern int XSetFillRule( Display* /* display */, GC /* gc */, int /* fill_rule */ ); extern int XSetFillStyle( Display* /* display */, GC /* gc */, int /* fill_style */ ); extern int XSetFont( Display* /* display */, GC /* gc */, Font /* font */ ); extern int XSetFontPath( Display* /* display */, char** /* directories */, int /* ndirs */ ); extern int XSetForeground( Display* /* display */, GC /* gc */, unsigned long /* foreground */ ); extern int XSetFunction( Display* /* display */, GC /* gc */, int /* function */ ); extern int XSetGraphicsExposures( Display* /* display */, GC /* gc */, Bool /* graphics_exposures */ ); extern int XSetIconName( Display* /* display */, Window /* w */, _Xconst char* /* icon_name */ ); extern int XSetInputFocus( Display* /* display */, Window /* focus */, int /* revert_to */, Time /* time */ ); extern int XSetLineAttributes( Display* /* display */, GC /* gc */, unsigned int /* line_width */, int /* line_style */, int /* cap_style */, int /* join_style */ ); extern int XSetModifierMapping( Display* /* display */, XModifierKeymap* /* modmap */ ); extern int XSetPlaneMask( Display* /* display */, GC /* gc */, unsigned long /* plane_mask */ ); extern int XSetPointerMapping( Display* /* display */, _Xconst unsigned char* /* map */, int /* nmap */ ); extern int XSetScreenSaver( Display* /* display */, int /* timeout */, int /* interval */, int /* prefer_blanking */, int /* allow_exposures */ ); extern int XSetSelectionOwner( Display* /* display */, Atom /* selection */, Window /* owner */, Time /* time */ ); extern int XSetState( Display* /* display */, GC /* gc */, unsigned long /* foreground */, unsigned long /* background */, int /* function */, unsigned long /* plane_mask */ ); extern int XSetStipple( Display* /* display */, GC /* gc */, Pixmap /* stipple */ ); extern int XSetSubwindowMode( Display* /* display */, GC /* gc */, int /* subwindow_mode */ ); extern int XSetTSOrigin( Display* /* display */, GC /* gc */, int /* ts_x_origin */, int /* ts_y_origin */ ); extern int XSetTile( Display* /* display */, GC /* gc */, Pixmap /* tile */ ); extern int XSetWindowBackground( Display* /* display */, Window /* w */, unsigned long /* background_pixel */ ); extern int XSetWindowBackgroundPixmap( Display* /* display */, Window /* w */, Pixmap /* background_pixmap */ ); extern int XSetWindowBorder( Display* /* display */, Window /* w */, unsigned long /* border_pixel */ ); extern int XSetWindowBorderPixmap( Display* /* display */, Window /* w */, Pixmap /* border_pixmap */ ); extern int XSetWindowBorderWidth( Display* /* display */, Window /* w */, unsigned int /* width */ ); extern int XSetWindowColormap( Display* /* display */, Window /* w */, Colormap /* colormap */ ); extern int XStoreBuffer( Display* /* display */, _Xconst char* /* bytes */, int /* nbytes */, int /* buffer */ ); extern int XStoreBytes( Display* /* display */, _Xconst char* /* bytes */, int /* nbytes */ ); extern int XStoreColor( Display* /* display */, Colormap /* colormap */, XColor* /* color */ ); extern int XStoreColors( Display* /* display */, Colormap /* colormap */, XColor* /* color */, int /* ncolors */ ); extern int XStoreName( Display* /* display */, Window /* w */, _Xconst char* /* window_name */ ); extern int XStoreNamedColor( Display* /* display */, Colormap /* colormap */, _Xconst char* /* color */, unsigned long /* pixel */, int /* flags */ ); extern int XSync( Display* /* display */, Bool /* discard */ ); extern int XTextExtents( XFontStruct* /* font_struct */, _Xconst char* /* string */, int /* nchars */, int* /* direction_return */, int* /* font_ascent_return */, int* /* font_descent_return */, XCharStruct* /* overall_return */ ); extern int XTextExtents16( XFontStruct* /* font_struct */, _Xconst XChar2b* /* string */, int /* nchars */, int* /* direction_return */, int* /* font_ascent_return */, int* /* font_descent_return */, XCharStruct* /* overall_return */ ); extern int XTextWidth( XFontStruct* /* font_struct */, _Xconst char* /* string */, int /* count */ ); extern int XTextWidth16( XFontStruct* /* font_struct */, _Xconst XChar2b* /* string */, int /* count */ ); extern Bool XTranslateCoordinates( Display* /* display */, Window /* src_w */, Window /* dest_w */, int /* src_x */, int /* src_y */, int* /* dest_x_return */, int* /* dest_y_return */, Window* /* child_return */ ); extern int XUndefineCursor( Display* /* display */, Window /* w */ ); extern int XUngrabButton( Display* /* display */, unsigned int /* button */, unsigned int /* modifiers */, Window /* grab_window */ ); extern int XUngrabKey( Display* /* display */, int /* keycode */, unsigned int /* modifiers */, Window /* grab_window */ ); extern int XUngrabKeyboard( Display* /* display */, Time /* time */ ); extern int XUngrabPointer( Display* /* display */, Time /* time */ ); extern int XUngrabServer( Display* /* display */ ); extern int XUninstallColormap( Display* /* display */, Colormap /* colormap */ ); extern int XUnloadFont( Display* /* display */, Font /* font */ ); extern int XUnmapSubwindows( Display* /* display */, Window /* w */ ); extern int XUnmapWindow( Display* /* display */, Window /* w */ ); extern int XVendorRelease( Display* /* display */ ); extern int XWarpPointer( Display* /* display */, Window /* src_w */, Window /* dest_w */, int /* src_x */, int /* src_y */, unsigned int /* src_width */, unsigned int /* src_height */, int /* dest_x */, int /* dest_y */ ); extern int XWidthMMOfScreen( Screen* /* screen */ ); extern int XWidthOfScreen( Screen* /* screen */ ); extern int XWindowEvent( Display* /* display */, Window /* w */, long /* event_mask */, XEvent* /* event_return */ ); extern int XWriteBitmapFile( Display* /* display */, _Xconst char* /* filename */, Pixmap /* bitmap */, unsigned int /* width */, unsigned int /* height */, int /* x_hot */, int /* y_hot */ ); extern Bool XSupportsLocale (void); extern char *XSetLocaleModifiers( const char* /* modifier_list */ ); extern XOM XOpenOM( Display* /* display */, struct _XrmHashBucketRec* /* rdb */, _Xconst char* /* res_name */, _Xconst char* /* res_class */ ); extern Status XCloseOM( XOM /* om */ ); extern char *XSetOMValues( XOM /* om */, ... ) _X_SENTINEL(0); extern char *XGetOMValues( XOM /* om */, ... ) _X_SENTINEL(0); extern Display *XDisplayOfOM( XOM /* om */ ); extern char *XLocaleOfOM( XOM /* om */ ); extern XOC XCreateOC( XOM /* om */, ... ) _X_SENTINEL(0); extern void XDestroyOC( XOC /* oc */ ); extern XOM XOMOfOC( XOC /* oc */ ); extern char *XSetOCValues( XOC /* oc */, ... ) _X_SENTINEL(0); extern char *XGetOCValues( XOC /* oc */, ... ) _X_SENTINEL(0); extern XFontSet XCreateFontSet( Display* /* display */, _Xconst char* /* base_font_name_list */, char*** /* missing_charset_list */, int* /* missing_charset_count */, char** /* def_string */ ); extern void XFreeFontSet( Display* /* display */, XFontSet /* font_set */ ); extern int XFontsOfFontSet( XFontSet /* font_set */, XFontStruct*** /* font_struct_list */, char*** /* font_name_list */ ); extern char *XBaseFontNameListOfFontSet( XFontSet /* font_set */ ); extern char *XLocaleOfFontSet( XFontSet /* font_set */ ); extern Bool XContextDependentDrawing( XFontSet /* font_set */ ); extern Bool XDirectionalDependentDrawing( XFontSet /* font_set */ ); extern Bool XContextualDrawing( XFontSet /* font_set */ ); extern XFontSetExtents *XExtentsOfFontSet( XFontSet /* font_set */ ); extern int XmbTextEscapement( XFontSet /* font_set */, _Xconst char* /* text */, int /* bytes_text */ ); extern int XwcTextEscapement( XFontSet /* font_set */, _Xconst wchar_t* /* text */, int /* num_wchars */ ); extern int Xutf8TextEscapement( XFontSet /* font_set */, _Xconst char* /* text */, int /* bytes_text */ ); extern int XmbTextExtents( XFontSet /* font_set */, _Xconst char* /* text */, int /* bytes_text */, XRectangle* /* overall_ink_return */, XRectangle* /* overall_logical_return */ ); extern int XwcTextExtents( XFontSet /* font_set */, _Xconst wchar_t* /* text */, int /* num_wchars */, XRectangle* /* overall_ink_return */, XRectangle* /* overall_logical_return */ ); extern int Xutf8TextExtents( XFontSet /* font_set */, _Xconst char* /* text */, int /* bytes_text */, XRectangle* /* overall_ink_return */, XRectangle* /* overall_logical_return */ ); extern Status XmbTextPerCharExtents( XFontSet /* font_set */, _Xconst char* /* text */, int /* bytes_text */, XRectangle* /* ink_extents_buffer */, XRectangle* /* logical_extents_buffer */, int /* buffer_size */, int* /* num_chars */, XRectangle* /* overall_ink_return */, XRectangle* /* overall_logical_return */ ); extern Status XwcTextPerCharExtents( XFontSet /* font_set */, _Xconst wchar_t* /* text */, int /* num_wchars */, XRectangle* /* ink_extents_buffer */, XRectangle* /* logical_extents_buffer */, int /* buffer_size */, int* /* num_chars */, XRectangle* /* overall_ink_return */, XRectangle* /* overall_logical_return */ ); extern Status Xutf8TextPerCharExtents( XFontSet /* font_set */, _Xconst char* /* text */, int /* bytes_text */, XRectangle* /* ink_extents_buffer */, XRectangle* /* logical_extents_buffer */, int /* buffer_size */, int* /* num_chars */, XRectangle* /* overall_ink_return */, XRectangle* /* overall_logical_return */ ); extern void XmbDrawText( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, XmbTextItem* /* text_items */, int /* nitems */ ); extern void XwcDrawText( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, XwcTextItem* /* text_items */, int /* nitems */ ); extern void Xutf8DrawText( Display* /* display */, Drawable /* d */, GC /* gc */, int /* x */, int /* y */, XmbTextItem* /* text_items */, int /* nitems */ ); extern void XmbDrawString( Display* /* display */, Drawable /* d */, XFontSet /* font_set */, GC /* gc */, int /* x */, int /* y */, _Xconst char* /* text */, int /* bytes_text */ ); extern void XwcDrawString( Display* /* display */, Drawable /* d */, XFontSet /* font_set */, GC /* gc */, int /* x */, int /* y */, _Xconst wchar_t* /* text */, int /* num_wchars */ ); extern void Xutf8DrawString( Display* /* display */, Drawable /* d */, XFontSet /* font_set */, GC /* gc */, int /* x */, int /* y */, _Xconst char* /* text */, int /* bytes_text */ ); extern void XmbDrawImageString( Display* /* display */, Drawable /* d */, XFontSet /* font_set */, GC /* gc */, int /* x */, int /* y */, _Xconst char* /* text */, int /* bytes_text */ ); extern void XwcDrawImageString( Display* /* display */, Drawable /* d */, XFontSet /* font_set */, GC /* gc */, int /* x */, int /* y */, _Xconst wchar_t* /* text */, int /* num_wchars */ ); extern void Xutf8DrawImageString( Display* /* display */, Drawable /* d */, XFontSet /* font_set */, GC /* gc */, int /* x */, int /* y */, _Xconst char* /* text */, int /* bytes_text */ ); extern XIM XOpenIM( Display* /* dpy */, struct _XrmHashBucketRec* /* rdb */, char* /* res_name */, char* /* res_class */ ); extern Status XCloseIM( XIM /* im */ ); extern char *XGetIMValues( XIM /* im */, ... ) _X_SENTINEL(0); extern char *XSetIMValues( XIM /* im */, ... ) _X_SENTINEL(0); extern Display *XDisplayOfIM( XIM /* im */ ); extern char *XLocaleOfIM( XIM /* im*/ ); extern XIC XCreateIC( XIM /* im */, ... ) _X_SENTINEL(0); extern void XDestroyIC( XIC /* ic */ ); extern void XSetICFocus( XIC /* ic */ ); extern void XUnsetICFocus( XIC /* ic */ ); extern wchar_t *XwcResetIC( XIC /* ic */ ); extern char *XmbResetIC( XIC /* ic */ ); extern char *Xutf8ResetIC( XIC /* ic */ ); extern char *XSetICValues( XIC /* ic */, ... ) _X_SENTINEL(0); extern char *XGetICValues( XIC /* ic */, ... ) _X_SENTINEL(0); extern XIM XIMOfIC( XIC /* ic */ ); extern Bool XFilterEvent( XEvent* /* event */, Window /* window */ ); extern int XmbLookupString( XIC /* ic */, XKeyPressedEvent* /* event */, char* /* buffer_return */, int /* bytes_buffer */, KeySym* /* keysym_return */, Status* /* status_return */ ); extern int XwcLookupString( XIC /* ic */, XKeyPressedEvent* /* event */, wchar_t* /* buffer_return */, int /* wchars_buffer */, KeySym* /* keysym_return */, Status* /* status_return */ ); extern int Xutf8LookupString( XIC /* ic */, XKeyPressedEvent* /* event */, char* /* buffer_return */, int /* bytes_buffer */, KeySym* /* keysym_return */, Status* /* status_return */ ); extern XVaNestedList XVaCreateNestedList( int /*unused*/, ... ) _X_SENTINEL(0); /* internal connections for IMs */ extern Bool XRegisterIMInstantiateCallback( Display* /* dpy */, struct _XrmHashBucketRec* /* rdb */, char* /* res_name */, char* /* res_class */, XIDProc /* callback */, XPointer /* client_data */ ); extern Bool XUnregisterIMInstantiateCallback( Display* /* dpy */, struct _XrmHashBucketRec* /* rdb */, char* /* res_name */, char* /* res_class */, XIDProc /* callback */, XPointer /* client_data */ ); typedef void (*XConnectionWatchProc)( Display* /* dpy */, XPointer /* client_data */, int /* fd */, Bool /* opening */, /* open or close flag */ XPointer* /* watch_data */ /* open sets, close uses */ ); extern Status XInternalConnectionNumbers( Display* /* dpy */, int** /* fd_return */, int* /* count_return */ ); extern void XProcessInternalConnection( Display* /* dpy */, int /* fd */ ); extern Status XAddConnectionWatch( Display* /* dpy */, XConnectionWatchProc /* callback */, XPointer /* client_data */ ); extern void XRemoveConnectionWatch( Display* /* dpy */, XConnectionWatchProc /* callback */, XPointer /* client_data */ ); extern void XSetAuthorization( char * /* name */, int /* namelen */, char * /* data */, int /* datalen */ ); extern int _Xmbtowc( wchar_t * /* wstr */, char * /* str */, int /* len */ ); extern int _Xwctomb( char * /* str */, wchar_t /* wc */ ); extern Bool XGetEventData( Display* /* dpy */, XGenericEventCookie* /* cookie*/ ); extern void XFreeEventData( Display* /* dpy */, XGenericEventCookie* /* cookie*/ ); #ifdef __clang__ #pragma clang diagnostic pop #endif _XFUNCPROTOEND #endif /* _X11_XLIB_H_ */ libX11-1.8.12/include/X11/Xlocale.h0000644014310600000120000000242114763154126012060 /* Copyright 1991, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifndef _X11_XLOCALE_H_ #define _X11_XLOCALE_H_ #include #include #include #endif /* _X11_XLOCALE_H_ */ libX11-1.8.12/include/X11/extensions/0000755014310600000120000000000014763154164012602 5libX11-1.8.12/include/X11/extensions/XKBgeom.h0000644014310600000120000003267614763154126014203 /************************************************************ Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Silicon Graphics not be used in advertising or publicity pertaining to distribution of the software without specific prior written permission. Silicon Graphics makes no representation about the suitability of this software for any purpose. It is provided "as is" without any express or implied warranty. SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ********************************************************/ #ifndef _XKBGEOM_H_ #define _XKBGEOM_H_ #include typedef struct _XkbProperty { char *name; char *value; } XkbPropertyRec,*XkbPropertyPtr; typedef struct _XkbColor { unsigned int pixel; char * spec; } XkbColorRec,*XkbColorPtr; typedef struct _XkbPoint { short x; short y; } XkbPointRec, *XkbPointPtr; typedef struct _XkbBounds { short x1,y1; short x2,y2; } XkbBoundsRec, *XkbBoundsPtr; #define XkbBoundsWidth(b) (((b)->x2)-((b)->x1)) #define XkbBoundsHeight(b) (((b)->y2)-((b)->y1)) /* * In the following structs, this pattern is used for dynamically sized arrays: * foo is an array for which sz_foo entries are allocated & num_foo are used */ typedef struct _XkbOutline { unsigned short num_points; unsigned short sz_points; unsigned short corner_radius; XkbPointPtr points; } XkbOutlineRec, *XkbOutlinePtr; typedef struct _XkbShape { Atom name; unsigned short num_outlines; unsigned short sz_outlines; XkbOutlinePtr outlines; XkbOutlinePtr approx; XkbOutlinePtr primary; XkbBoundsRec bounds; } XkbShapeRec, *XkbShapePtr; #define XkbOutlineIndex(s,o) ((int)((o)-&(s)->outlines[0])) typedef struct _XkbShapeDoodad { Atom name; unsigned char type; unsigned char priority; short top; short left; short angle; unsigned short color_ndx; unsigned short shape_ndx; } XkbShapeDoodadRec, *XkbShapeDoodadPtr; #define XkbShapeDoodadColor(g,d) (&(g)->colors[(d)->color_ndx]) #define XkbShapeDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx]) #define XkbSetShapeDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0]) #define XkbSetShapeDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0]) typedef struct _XkbTextDoodad { Atom name; unsigned char type; unsigned char priority; short top; short left; short angle; short width; short height; unsigned short color_ndx; char * text; char * font; } XkbTextDoodadRec, *XkbTextDoodadPtr; #define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx]) #define XkbSetTextDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0]) typedef struct _XkbIndicatorDoodad { Atom name; unsigned char type; unsigned char priority; short top; short left; short angle; unsigned short shape_ndx; unsigned short on_color_ndx; unsigned short off_color_ndx; } XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr; #define XkbIndicatorDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx]) #define XkbIndicatorDoodadOnColor(g,d) (&(g)->colors[(d)->on_color_ndx]) #define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx]) #define XkbSetIndicatorDoodadOnColor(g,d,c) \ ((d)->on_color_ndx= (c)-&(g)->colors[0]) #define XkbSetIndicatorDoodadOffColor(g,d,c) \ ((d)->off_color_ndx= (c)-&(g)->colors[0]) #define XkbSetIndicatorDoodadShape(g,d,s) \ ((d)->shape_ndx= (s)-&(g)->shapes[0]) typedef struct _XkbLogoDoodad { Atom name; unsigned char type; unsigned char priority; short top; short left; short angle; unsigned short color_ndx; unsigned short shape_ndx; char * logo_name; } XkbLogoDoodadRec, *XkbLogoDoodadPtr; #define XkbLogoDoodadColor(g,d) (&(g)->colors[(d)->color_ndx]) #define XkbLogoDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx]) #define XkbSetLogoDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0]) #define XkbSetLogoDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0]) typedef struct _XkbAnyDoodad { Atom name; unsigned char type; unsigned char priority; short top; short left; short angle; } XkbAnyDoodadRec, *XkbAnyDoodadPtr; typedef union _XkbDoodad { XkbAnyDoodadRec any; XkbShapeDoodadRec shape; XkbTextDoodadRec text; XkbIndicatorDoodadRec indicator; XkbLogoDoodadRec logo; } XkbDoodadRec, *XkbDoodadPtr; #define XkbUnknownDoodad 0 #define XkbOutlineDoodad 1 #define XkbSolidDoodad 2 #define XkbTextDoodad 3 #define XkbIndicatorDoodad 4 #define XkbLogoDoodad 5 typedef struct _XkbKey { XkbKeyNameRec name; short gap; unsigned char shape_ndx; unsigned char color_ndx; } XkbKeyRec, *XkbKeyPtr; #define XkbKeyShape(g,k) (&(g)->shapes[(k)->shape_ndx]) #define XkbKeyColor(g,k) (&(g)->colors[(k)->color_ndx]) #define XkbSetKeyShape(g,k,s) ((k)->shape_ndx= (s)-&(g)->shapes[0]) #define XkbSetKeyColor(g,k,c) ((k)->color_ndx= (c)-&(g)->colors[0]) typedef struct _XkbRow { short top; short left; unsigned short num_keys; unsigned short sz_keys; int vertical; XkbKeyPtr keys; XkbBoundsRec bounds; } XkbRowRec, *XkbRowPtr; typedef struct _XkbSection { Atom name; unsigned char priority; short top; short left; unsigned short width; unsigned short height; short angle; unsigned short num_rows; unsigned short num_doodads; unsigned short num_overlays; unsigned short sz_rows; unsigned short sz_doodads; unsigned short sz_overlays; XkbRowPtr rows; XkbDoodadPtr doodads; XkbBoundsRec bounds; struct _XkbOverlay *overlays; } XkbSectionRec, *XkbSectionPtr; typedef struct _XkbOverlayKey { XkbKeyNameRec over; XkbKeyNameRec under; } XkbOverlayKeyRec,*XkbOverlayKeyPtr; typedef struct _XkbOverlayRow { unsigned short row_under; unsigned short num_keys; unsigned short sz_keys; XkbOverlayKeyPtr keys; } XkbOverlayRowRec,*XkbOverlayRowPtr; typedef struct _XkbOverlay { Atom name; XkbSectionPtr section_under; unsigned short num_rows; unsigned short sz_rows; XkbOverlayRowPtr rows; XkbBoundsPtr bounds; } XkbOverlayRec,*XkbOverlayPtr; typedef struct _XkbGeometry { Atom name; unsigned short width_mm; unsigned short height_mm; char * label_font; XkbColorPtr label_color; XkbColorPtr base_color; unsigned short sz_properties; unsigned short sz_colors; unsigned short sz_shapes; unsigned short sz_sections; unsigned short sz_doodads; unsigned short sz_key_aliases; unsigned short num_properties; unsigned short num_colors; unsigned short num_shapes; unsigned short num_sections; unsigned short num_doodads; unsigned short num_key_aliases; XkbPropertyPtr properties; XkbColorPtr colors; XkbShapePtr shapes; XkbSectionPtr sections; XkbDoodadPtr doodads; XkbKeyAliasPtr key_aliases; } XkbGeometryRec; #define XkbGeomColorIndex(g,c) ((int)((c)-&(g)->colors[0])) #define XkbGeomPropertiesMask (1<<0) #define XkbGeomColorsMask (1<<1) #define XkbGeomShapesMask (1<<2) #define XkbGeomSectionsMask (1<<3) #define XkbGeomDoodadsMask (1<<4) #define XkbGeomKeyAliasesMask (1<<5) #define XkbGeomAllMask (0x3f) typedef struct _XkbGeometrySizes { unsigned int which; unsigned short num_properties; unsigned short num_colors; unsigned short num_shapes; unsigned short num_sections; unsigned short num_doodads; unsigned short num_key_aliases; } XkbGeometrySizesRec,*XkbGeometrySizesPtr; _XFUNCPROTOBEGIN extern XkbPropertyPtr XkbAddGeomProperty( XkbGeometryPtr /* geom */, _Xconst char * /* name */, _Xconst char * /* value */ ); extern XkbKeyAliasPtr XkbAddGeomKeyAlias( XkbGeometryPtr /* geom */, _Xconst char * /* alias */, _Xconst char * /* real */ ); extern XkbColorPtr XkbAddGeomColor( XkbGeometryPtr /* geom */, _Xconst char * /* spec */, unsigned int /* pixel */ ); extern XkbOutlinePtr XkbAddGeomOutline( XkbShapePtr /* shape */, int /* sz_points */ ); extern XkbShapePtr XkbAddGeomShape( XkbGeometryPtr /* geom */, Atom /* name */, int /* sz_outlines */ ); extern XkbKeyPtr XkbAddGeomKey( XkbRowPtr /* row */ ); extern XkbRowPtr XkbAddGeomRow( XkbSectionPtr /* section */, int /* sz_keys */ ); extern XkbSectionPtr XkbAddGeomSection( XkbGeometryPtr /* geom */, Atom /* name */, int /* sz_rows */, int /* sz_doodads */, int /* sz_overlays */ ); extern XkbOverlayPtr XkbAddGeomOverlay( XkbSectionPtr /* section */, Atom /* name */, int /* sz_rows */ ); extern XkbOverlayRowPtr XkbAddGeomOverlayRow( XkbOverlayPtr /* overlay */, int /* row_under */, int /* sz_keys */ ); extern XkbOverlayKeyPtr XkbAddGeomOverlayKey( XkbOverlayPtr /* overlay */, XkbOverlayRowPtr /* row */, _Xconst char * /* over */, _Xconst char * /* under */ ); extern XkbDoodadPtr XkbAddGeomDoodad( XkbGeometryPtr /* geom */, XkbSectionPtr /* section */, Atom /* name */ ); extern void XkbFreeGeomKeyAliases( XkbGeometryPtr /* geom */, int /* first */, int /* count */, Bool /* freeAll */ ); extern void XkbFreeGeomColors( XkbGeometryPtr /* geom */, int /* first */, int /* count */, Bool /* freeAll */ ); extern void XkbFreeGeomDoodads( XkbDoodadPtr /* doodads */, int /* nDoodads */, Bool /* freeAll */ ); extern void XkbFreeGeomProperties( XkbGeometryPtr /* geom */, int /* first */, int /* count */, Bool /* freeAll */ ); extern void XkbFreeGeomOverlayKeys( XkbOverlayRowPtr /* row */, int /* first */, int /* count */, Bool /* freeAll */ ); extern void XkbFreeGeomOverlayRows( XkbOverlayPtr /* overlay */, int /* first */, int /* count */, Bool /* freeAll */ ); extern void XkbFreeGeomOverlays( XkbSectionPtr /* section */, int /* first */, int /* count */, Bool /* freeAll */ ); extern void XkbFreeGeomKeys( XkbRowPtr /* row */, int /* first */, int /* count */, Bool /* freeAll */ ); extern void XkbFreeGeomRows( XkbSectionPtr /* section */, int /* first */, int /* count */, Bool /* freeAll */ ); extern void XkbFreeGeomSections( XkbGeometryPtr /* geom */, int /* first */, int /* count */, Bool /* freeAll */ ); extern void XkbFreeGeomPoints( XkbOutlinePtr /* outline */, int /* first */, int /* count */, Bool /* freeAll */ ); extern void XkbFreeGeomOutlines( XkbShapePtr /* shape */, int /* first */, int /* count */, Bool /* freeAll */ ); extern void XkbFreeGeomShapes( XkbGeometryPtr /* geom */, int /* first */, int /* count */, Bool /* freeAll */ ); extern void XkbFreeGeometry( XkbGeometryPtr /* geom */, unsigned int /* which */, Bool /* freeMap */ ); extern Status XkbAllocGeomProps( XkbGeometryPtr /* geom */, int /* nProps */ ); extern Status XkbAllocGeomKeyAliases( XkbGeometryPtr /* geom */, int /* nAliases */ ); extern Status XkbAllocGeomColors( XkbGeometryPtr /* geom */, int /* nColors */ ); extern Status XkbAllocGeomShapes( XkbGeometryPtr /* geom */, int /* nShapes */ ); extern Status XkbAllocGeomSections( XkbGeometryPtr /* geom */, int /* nSections */ ); extern Status XkbAllocGeomOverlays( XkbSectionPtr /* section */, int /* num_needed */ ); extern Status XkbAllocGeomOverlayRows( XkbOverlayPtr /* overlay */, int /* num_needed */ ); extern Status XkbAllocGeomOverlayKeys( XkbOverlayRowPtr /* row */, int /* num_needed */ ); extern Status XkbAllocGeomDoodads( XkbGeometryPtr /* geom */, int /* nDoodads */ ); extern Status XkbAllocGeomSectionDoodads( XkbSectionPtr /* section */, int /* nDoodads */ ); extern Status XkbAllocGeomOutlines( XkbShapePtr /* shape */, int /* nOL */ ); extern Status XkbAllocGeomRows( XkbSectionPtr /* section */, int /* nRows */ ); extern Status XkbAllocGeomPoints( XkbOutlinePtr /* ol */, int /* nPts */ ); extern Status XkbAllocGeomKeys( XkbRowPtr /* row */, int /* nKeys */ ); extern Status XkbAllocGeometry( XkbDescPtr /* xkb */, XkbGeometrySizesPtr /* sizes */ ); extern Status XkbSetGeometry( Display * /* dpy */, unsigned /* deviceSpec */, XkbGeometryPtr /* geom */ ); extern Bool XkbComputeShapeTop( XkbShapePtr /* shape */, XkbBoundsPtr /* bounds */ ); extern Bool XkbComputeShapeBounds( XkbShapePtr /* shape */ ); extern Bool XkbComputeRowBounds( XkbGeometryPtr /* geom */, XkbSectionPtr /* section */, XkbRowPtr /* row */ ); extern Bool XkbComputeSectionBounds( XkbGeometryPtr /* geom */, XkbSectionPtr /* section */ ); extern char * XkbFindOverlayForKey( XkbGeometryPtr /* geom */, XkbSectionPtr /* wanted */, _Xconst char * /* under */ ); extern Status XkbGetGeometry( Display * /* dpy */, XkbDescPtr /* xkb */ ); extern Status XkbGetNamedGeometry( Display * /* dpy */, XkbDescPtr /* xkb */, Atom /* name */ ); _XFUNCPROTOEND #endif /* _XKBSTR_H_ */ libX11-1.8.12/include/X11/cursorfont.h0000644014310600000120000000605614763154126012705 /* Copyright 1987, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifndef _X11_CURSORFONT_H_ #define _X11_CURSORFONT_H_ #define XC_num_glyphs 154 #define XC_X_cursor 0 #define XC_arrow 2 #define XC_based_arrow_down 4 #define XC_based_arrow_up 6 #define XC_boat 8 #define XC_bogosity 10 #define XC_bottom_left_corner 12 #define XC_bottom_right_corner 14 #define XC_bottom_side 16 #define XC_bottom_tee 18 #define XC_box_spiral 20 #define XC_center_ptr 22 #define XC_circle 24 #define XC_clock 26 #define XC_coffee_mug 28 #define XC_cross 30 #define XC_cross_reverse 32 #define XC_crosshair 34 #define XC_diamond_cross 36 #define XC_dot 38 #define XC_dotbox 40 #define XC_double_arrow 42 #define XC_draft_large 44 #define XC_draft_small 46 #define XC_draped_box 48 #define XC_exchange 50 #define XC_fleur 52 #define XC_gobbler 54 #define XC_gumby 56 #define XC_hand1 58 #define XC_hand2 60 #define XC_heart 62 #define XC_icon 64 #define XC_iron_cross 66 #define XC_left_ptr 68 #define XC_left_side 70 #define XC_left_tee 72 #define XC_leftbutton 74 #define XC_ll_angle 76 #define XC_lr_angle 78 #define XC_man 80 #define XC_middlebutton 82 #define XC_mouse 84 #define XC_pencil 86 #define XC_pirate 88 #define XC_plus 90 #define XC_question_arrow 92 #define XC_right_ptr 94 #define XC_right_side 96 #define XC_right_tee 98 #define XC_rightbutton 100 #define XC_rtl_logo 102 #define XC_sailboat 104 #define XC_sb_down_arrow 106 #define XC_sb_h_double_arrow 108 #define XC_sb_left_arrow 110 #define XC_sb_right_arrow 112 #define XC_sb_up_arrow 114 #define XC_sb_v_double_arrow 116 #define XC_shuttle 118 #define XC_sizing 120 #define XC_spider 122 #define XC_spraycan 124 #define XC_star 126 #define XC_target 128 #define XC_tcross 130 #define XC_top_left_arrow 132 #define XC_top_left_corner 134 #define XC_top_right_corner 136 #define XC_top_side 138 #define XC_top_tee 140 #define XC_trek 142 #define XC_ul_angle 144 #define XC_umbrella 146 #define XC_ur_angle 148 #define XC_watch 150 #define XC_xterm 152 #endif /* _X11_CURSORFONT_H_ */ libX11-1.8.12/include/X11/Xlib-xcb.h0000644014310600000120000000077214763154126012150 /* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett * This file is licensed under the MIT license. See the file COPYING. */ #ifndef _X11_XLIB_XCB_H_ #define _X11_XLIB_XCB_H_ #include #include #include _XFUNCPROTOBEGIN xcb_connection_t *XGetXCBConnection(Display *dpy); enum XEventQueueOwner { XlibOwnsEventQueue = 0, XCBOwnsEventQueue }; void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner); _XFUNCPROTOEND #endif /* _X11_XLIB_XCB_H_ */ libX11-1.8.12/include/X11/Xutil.h0000644014310600000120000005155314763154126011610 /*********************************************************** Copyright 1987, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ #ifndef _X11_XUTIL_H_ #define _X11_XUTIL_H_ /* You must include before including this file */ #include #include /* The Xlib structs are full of implicit padding to properly align members. We can't clean that up without breaking ABI, so tell clang not to bother complaining about it. */ #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wpadded" #endif /* * Bitmask returned by XParseGeometry(). Each bit tells if the corresponding * value (x, y, width, height) was found in the parsed string. */ #define NoValue 0x0000 #define XValue 0x0001 #define YValue 0x0002 #define WidthValue 0x0004 #define HeightValue 0x0008 #define AllValues 0x000F #define XNegative 0x0010 #define YNegative 0x0020 /* * new version containing base_width, base_height, and win_gravity fields; * used with WM_NORMAL_HINTS. */ typedef struct { long flags; /* marks which fields in this structure are defined */ int x, y; /* obsolete for new window mgrs, but clients */ int width, height; /* should set so old wm's don't mess up */ int min_width, min_height; int max_width, max_height; int width_inc, height_inc; struct { int x; /* numerator */ int y; /* denominator */ } min_aspect, max_aspect; int base_width, base_height; /* added by ICCCM version 1 */ int win_gravity; /* added by ICCCM version 1 */ } XSizeHints; /* * The next block of definitions are for window manager properties that * clients and applications use for communication. */ /* flags argument in size hints */ #define USPosition (1L << 0) /* user specified x, y */ #define USSize (1L << 1) /* user specified width, height */ #define PPosition (1L << 2) /* program specified position */ #define PSize (1L << 3) /* program specified size */ #define PMinSize (1L << 4) /* program specified minimum size */ #define PMaxSize (1L << 5) /* program specified maximum size */ #define PResizeInc (1L << 6) /* program specified resize increments */ #define PAspect (1L << 7) /* program specified min and max aspect ratios */ #define PBaseSize (1L << 8) /* program specified base for incrementing */ #define PWinGravity (1L << 9) /* program specified window gravity */ /* obsolete */ #define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect) typedef struct { long flags; /* marks which fields in this structure are defined */ Bool input; /* does this application rely on the window manager to get keyboard input? */ int initial_state; /* see below */ Pixmap icon_pixmap; /* pixmap to be used as icon */ Window icon_window; /* window to be used as icon */ int icon_x, icon_y; /* initial position of icon */ Pixmap icon_mask; /* icon mask bitmap */ XID window_group; /* id of related window group */ /* this structure may be extended in the future */ } XWMHints; /* definition for flags of XWMHints */ #define InputHint (1L << 0) #define StateHint (1L << 1) #define IconPixmapHint (1L << 2) #define IconWindowHint (1L << 3) #define IconPositionHint (1L << 4) #define IconMaskHint (1L << 5) #define WindowGroupHint (1L << 6) #define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint| \ IconPositionHint|IconMaskHint|WindowGroupHint) #define XUrgencyHint (1L << 8) /* definitions for initial window state */ #define WithdrawnState 0 /* for windows that are not mapped */ #define NormalState 1 /* most applications want to start this way */ #define IconicState 3 /* application wants to start as an icon */ /* * Obsolete states no longer defined by ICCCM */ #define DontCareState 0 /* don't know or care */ #define ZoomState 2 /* application wants to start zoomed */ #define InactiveState 4 /* application believes it is seldom used; */ /* some wm's may put it on inactive menu */ /* * new structure for manipulating TEXT properties; used with WM_NAME, * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND. */ typedef struct { unsigned char *value; /* same as Property routines */ Atom encoding; /* prop type */ int format; /* prop data format: 8, 16, or 32 */ unsigned long nitems; /* number of data items in value */ } XTextProperty; #define XNoMemory -1 #define XLocaleNotSupported -2 #define XConverterNotFound -3 typedef enum { XStringStyle, /* STRING */ XCompoundTextStyle, /* COMPOUND_TEXT */ XTextStyle, /* text in owner's encoding (current locale)*/ XStdICCTextStyle, /* STRING, else COMPOUND_TEXT */ /* The following is an XFree86 extension, introduced in November 2000 */ XUTF8StringStyle /* UTF8_STRING */ } XICCEncodingStyle; typedef struct { int min_width, min_height; int max_width, max_height; int width_inc, height_inc; } XIconSize; typedef struct { char *res_name; char *res_class; } XClassHint; #ifdef XUTIL_DEFINE_FUNCTIONS extern int XDestroyImage( XImage *ximage); extern unsigned long XGetPixel( XImage *ximage, int x, int y); extern int XPutPixel( XImage *ximage, int x, int y, unsigned long pixel); extern XImage *XSubImage( XImage *ximage, int x, int y, unsigned int width, unsigned int height); extern int XAddPixel( XImage *ximage, long value); #else /* * These macros are used to give some sugar to the image routines so that * naive people are more comfortable with them. */ #define XDestroyImage(ximage) \ ((*((ximage)->f.destroy_image))((ximage))) #define XGetPixel(ximage, x, y) \ ((*((ximage)->f.get_pixel))((ximage), (x), (y))) #define XPutPixel(ximage, x, y, pixel) \ ((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel))) #define XSubImage(ximage, x, y, width, height) \ ((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height))) #define XAddPixel(ximage, value) \ ((*((ximage)->f.add_pixel))((ximage), (value))) #endif /* * Compose sequence status structure, used in calling XLookupString. */ typedef struct _XComposeStatus { XPointer compose_ptr; /* state table pointer */ int chars_matched; /* match state */ } XComposeStatus; /* * Keysym macros, used on Keysyms to test for classes of symbols */ #define IsKeypadKey(keysym) \ (((KeySym)(keysym) >= XK_KP_Space) && ((KeySym)(keysym) <= XK_KP_Equal)) #define IsPrivateKeypadKey(keysym) \ (((KeySym)(keysym) >= 0x11000000) && ((KeySym)(keysym) <= 0x1100FFFF)) #define IsCursorKey(keysym) \ (((KeySym)(keysym) >= XK_Home) && ((KeySym)(keysym) < XK_Select)) #define IsPFKey(keysym) \ (((KeySym)(keysym) >= XK_KP_F1) && ((KeySym)(keysym) <= XK_KP_F4)) #define IsFunctionKey(keysym) \ (((KeySym)(keysym) >= XK_F1) && ((KeySym)(keysym) <= XK_F35)) #define IsMiscFunctionKey(keysym) \ (((KeySym)(keysym) >= XK_Select) && ((KeySym)(keysym) <= XK_Break)) #ifdef XK_XKB_KEYS #define IsModifierKey(keysym) \ ((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \ || (((KeySym)(keysym) >= XK_ISO_Lock) && \ ((KeySym)(keysym) <= XK_ISO_Level5_Lock)) \ || ((KeySym)(keysym) == XK_Mode_switch) \ || ((KeySym)(keysym) == XK_Num_Lock)) #else #define IsModifierKey(keysym) \ ((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \ || ((KeySym)(keysym) == XK_Mode_switch) \ || ((KeySym)(keysym) == XK_Num_Lock)) #endif /* * opaque reference to Region data type */ typedef struct _XRegion *Region; /* Return values from XRectInRegion() */ #define RectangleOut 0 #define RectangleIn 1 #define RectanglePart 2 /* * Information used by the visual utility routines to find desired visual * type from the many visuals a display may support. */ typedef struct { Visual *visual; VisualID visualid; int screen; int depth; #if defined(__cplusplus) || defined(c_plusplus) int c_class; /* C++ */ #else int class; #endif unsigned long red_mask; unsigned long green_mask; unsigned long blue_mask; int colormap_size; int bits_per_rgb; } XVisualInfo; #define VisualNoMask 0x0 #define VisualIDMask 0x1 #define VisualScreenMask 0x2 #define VisualDepthMask 0x4 #define VisualClassMask 0x8 #define VisualRedMaskMask 0x10 #define VisualGreenMaskMask 0x20 #define VisualBlueMaskMask 0x40 #define VisualColormapSizeMask 0x80 #define VisualBitsPerRGBMask 0x100 #define VisualAllMask 0x1FF /* * This defines a window manager property that clients may use to * share standard color maps of type RGB_COLOR_MAP: */ typedef struct { Colormap colormap; unsigned long red_max; unsigned long red_mult; unsigned long green_max; unsigned long green_mult; unsigned long blue_max; unsigned long blue_mult; unsigned long base_pixel; VisualID visualid; /* added by ICCCM version 1 */ XID killid; /* added by ICCCM version 1 */ } XStandardColormap; #define ReleaseByFreeingColormap ((XID) 1L) /* for killid field above */ /* * return codes for XReadBitmapFile and XWriteBitmapFile */ #define BitmapSuccess 0 #define BitmapOpenFailed 1 #define BitmapFileInvalid 2 #define BitmapNoMemory 3 /**************************************************************** * * Context Management * ****************************************************************/ /* Associative lookup table return codes */ #define XCSUCCESS 0 /* No error. */ #define XCNOMEM 1 /* Out of memory */ #define XCNOENT 2 /* No entry in table */ typedef int XContext; #define XUniqueContext() ((XContext) XrmUniqueQuark()) #define XStringToContext(string) ((XContext) XrmStringToQuark(string)) _XFUNCPROTOBEGIN /* The following declarations are alphabetized. */ extern XClassHint *XAllocClassHint ( void ); extern XIconSize *XAllocIconSize ( void ); extern XSizeHints *XAllocSizeHints ( void ); extern XStandardColormap *XAllocStandardColormap ( void ); extern XWMHints *XAllocWMHints ( void ); extern int XClipBox( Region /* r */, XRectangle* /* rect_return */ ); extern Region XCreateRegion( void ); extern const char *XDefaultString (void); extern int XDeleteContext( Display* /* display */, XID /* rid */, XContext /* context */ ); extern int XDestroyRegion( Region /* r */ ); extern Bool XEmptyRegion( Region /* r */ ); extern Bool XEqualRegion( Region /* r1 */, Region /* r2 */ ); extern int XFindContext( Display* /* display */, XID /* rid */, XContext /* context */, XPointer* /* data_return */ ); extern Status XGetClassHint( Display* /* display */, Window /* w */, XClassHint* /* class_hints_return */ ); extern Status XGetIconSizes( Display* /* display */, Window /* w */, XIconSize** /* size_list_return */, int* /* count_return */ ); extern Status XGetNormalHints( Display* /* display */, Window /* w */, XSizeHints* /* hints_return */ ); extern Status XGetRGBColormaps( Display* /* display */, Window /* w */, XStandardColormap** /* stdcmap_return */, int* /* count_return */, Atom /* property */ ); extern Status XGetSizeHints( Display* /* display */, Window /* w */, XSizeHints* /* hints_return */, Atom /* property */ ); extern Status XGetStandardColormap( Display* /* display */, Window /* w */, XStandardColormap* /* colormap_return */, Atom /* property */ ); extern Status XGetTextProperty( Display* /* display */, Window /* window */, XTextProperty* /* text_prop_return */, Atom /* property */ ); extern XVisualInfo *XGetVisualInfo( Display* /* display */, long /* vinfo_mask */, XVisualInfo* /* vinfo_template */, int* /* nitems_return */ ); extern Status XGetWMClientMachine( Display* /* display */, Window /* w */, XTextProperty* /* text_prop_return */ ); extern XWMHints *XGetWMHints( Display* /* display */, Window /* w */ ); extern Status XGetWMIconName( Display* /* display */, Window /* w */, XTextProperty* /* text_prop_return */ ); extern Status XGetWMName( Display* /* display */, Window /* w */, XTextProperty* /* text_prop_return */ ); extern Status XGetWMNormalHints( Display* /* display */, Window /* w */, XSizeHints* /* hints_return */, long* /* supplied_return */ ); extern Status XGetWMSizeHints( Display* /* display */, Window /* w */, XSizeHints* /* hints_return */, long* /* supplied_return */, Atom /* property */ ); extern Status XGetZoomHints( Display* /* display */, Window /* w */, XSizeHints* /* zhints_return */ ); extern int XIntersectRegion( Region /* sra */, Region /* srb */, Region /* dr_return */ ); extern void XConvertCase( KeySym /* sym */, KeySym* /* lower */, KeySym* /* upper */ ); extern int XLookupString( XKeyEvent* /* event_struct */, char* /* buffer_return */, int /* bytes_buffer */, KeySym* /* keysym_return */, XComposeStatus* /* status_in_out */ ); extern Status XMatchVisualInfo( Display* /* display */, int /* screen */, int /* depth */, int /* class */, XVisualInfo* /* vinfo_return */ ); extern int XOffsetRegion( Region /* r */, int /* dx */, int /* dy */ ); extern Bool XPointInRegion( Region /* r */, int /* x */, int /* y */ ); extern Region XPolygonRegion( XPoint* /* points */, int /* n */, int /* fill_rule */ ); extern int XRectInRegion( Region /* r */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */ ); extern int XSaveContext( Display* /* display */, XID /* rid */, XContext /* context */, _Xconst char* /* data */ ); extern int XSetClassHint( Display* /* display */, Window /* w */, XClassHint* /* class_hints */ ); extern int XSetIconSizes( Display* /* display */, Window /* w */, XIconSize* /* size_list */, int /* count */ ); extern int XSetNormalHints( Display* /* display */, Window /* w */, XSizeHints* /* hints */ ); extern void XSetRGBColormaps( Display* /* display */, Window /* w */, XStandardColormap* /* stdcmaps */, int /* count */, Atom /* property */ ); extern int XSetSizeHints( Display* /* display */, Window /* w */, XSizeHints* /* hints */, Atom /* property */ ); extern int XSetStandardProperties( Display* /* display */, Window /* w */, _Xconst char* /* window_name */, _Xconst char* /* icon_name */, Pixmap /* icon_pixmap */, char** /* argv */, int /* argc */, XSizeHints* /* hints */ ); extern void XSetTextProperty( Display* /* display */, Window /* w */, XTextProperty* /* text_prop */, Atom /* property */ ); extern void XSetWMClientMachine( Display* /* display */, Window /* w */, XTextProperty* /* text_prop */ ); extern int XSetWMHints( Display* /* display */, Window /* w */, XWMHints* /* wm_hints */ ); extern void XSetWMIconName( Display* /* display */, Window /* w */, XTextProperty* /* text_prop */ ); extern void XSetWMName( Display* /* display */, Window /* w */, XTextProperty* /* text_prop */ ); extern void XSetWMNormalHints( Display* /* display */, Window /* w */, XSizeHints* /* hints */ ); extern void XSetWMProperties( Display* /* display */, Window /* w */, XTextProperty* /* window_name */, XTextProperty* /* icon_name */, char** /* argv */, int /* argc */, XSizeHints* /* normal_hints */, XWMHints* /* wm_hints */, XClassHint* /* class_hints */ ); extern void XmbSetWMProperties( Display* /* display */, Window /* w */, _Xconst char* /* window_name */, _Xconst char* /* icon_name */, char** /* argv */, int /* argc */, XSizeHints* /* normal_hints */, XWMHints* /* wm_hints */, XClassHint* /* class_hints */ ); extern void Xutf8SetWMProperties( Display* /* display */, Window /* w */, _Xconst char* /* window_name */, _Xconst char* /* icon_name */, char** /* argv */, int /* argc */, XSizeHints* /* normal_hints */, XWMHints* /* wm_hints */, XClassHint* /* class_hints */ ); extern void XSetWMSizeHints( Display* /* display */, Window /* w */, XSizeHints* /* hints */, Atom /* property */ ); extern int XSetRegion( Display* /* display */, GC /* gc */, Region /* r */ ); extern void XSetStandardColormap( Display* /* display */, Window /* w */, XStandardColormap* /* colormap */, Atom /* property */ ); extern int XSetZoomHints( Display* /* display */, Window /* w */, XSizeHints* /* zhints */ ); extern int XShrinkRegion( Region /* r */, int /* dx */, int /* dy */ ); extern Status XStringListToTextProperty( char** /* list */, int /* count */, XTextProperty* /* text_prop_return */ ); extern int XSubtractRegion( Region /* sra */, Region /* srb */, Region /* dr_return */ ); extern int XmbTextListToTextProperty( Display* display, char** list, int count, XICCEncodingStyle style, XTextProperty* text_prop_return ); extern int XwcTextListToTextProperty( Display* display, wchar_t** list, int count, XICCEncodingStyle style, XTextProperty* text_prop_return ); extern int Xutf8TextListToTextProperty( Display* display, char** list, int count, XICCEncodingStyle style, XTextProperty* text_prop_return ); extern void XwcFreeStringList( wchar_t** list ); extern Status XTextPropertyToStringList( XTextProperty* /* text_prop */, char*** /* list_return */, int* /* count_return */ ); extern int XmbTextPropertyToTextList( Display* display, const XTextProperty* text_prop, char*** list_return, int* count_return ); extern int XwcTextPropertyToTextList( Display* display, const XTextProperty* text_prop, wchar_t*** list_return, int* count_return ); extern int Xutf8TextPropertyToTextList( Display* display, const XTextProperty* text_prop, char*** list_return, int* count_return ); extern int XUnionRectWithRegion( XRectangle* /* rectangle */, Region /* src_region */, Region /* dest_region_return */ ); extern int XUnionRegion( Region /* sra */, Region /* srb */, Region /* dr_return */ ); extern int XWMGeometry( Display* /* display */, int /* screen_number */, _Xconst char* /* user_geometry */, _Xconst char* /* default_geometry */, unsigned int /* border_width */, XSizeHints* /* hints */, int* /* x_return */, int* /* y_return */, int* /* width_return */, int* /* height_return */, int* /* gravity_return */ ); extern int XXorRegion( Region /* sra */, Region /* srb */, Region /* dr_return */ ); #ifdef __clang__ #pragma clang diagnostic pop #endif _XFUNCPROTOEND #endif /* _X11_XUTIL_H_ */ libX11-1.8.12/include/X11/Xregion.h0000644014310600000120000001347514763154126012117 /************************************************************************ Copyright 1987, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ************************************************************************/ #ifndef _X11_XREGION_H_ #define _X11_XREGION_H_ typedef struct { short x1, x2, y1, y2; } Box, BOX, BoxRec, *BoxPtr; typedef struct { short x, y, width, height; }RECTANGLE, RectangleRec, *RectanglePtr; #define TRUE 1 #define FALSE 0 #define MAXSHORT 32767 #define MINSHORT -MAXSHORT #ifndef MAX #define MAX(a,b) (((a) > (b)) ? (a) : (b)) #endif #ifndef MIN #define MIN(a,b) (((a) < (b)) ? (a) : (b)) #endif /* * clip region */ typedef struct _XRegion { long size; long numRects; BOX *rects; BOX extents; } REGION; /* Xutil.h contains the declaration: * typedef struct _XRegion *Region; */ /* 1 if two BOXs overlap. * 0 if two BOXs do not overlap. * Remember, x2 and y2 are not in the region */ #define EXTENTCHECK(r1, r2) \ ((r1)->x2 > (r2)->x1 && \ (r1)->x1 < (r2)->x2 && \ (r1)->y2 > (r2)->y1 && \ (r1)->y1 < (r2)->y2) /* * update region extents */ #define EXTENTS(r,idRect){\ if((r)->x1 < (idRect)->extents.x1)\ (idRect)->extents.x1 = (r)->x1;\ if((r)->y1 < (idRect)->extents.y1)\ (idRect)->extents.y1 = (r)->y1;\ if((r)->x2 > (idRect)->extents.x2)\ (idRect)->extents.x2 = (r)->x2;\ if((r)->y2 > (idRect)->extents.y2)\ (idRect)->extents.y2 = (r)->y2;\ } /* * Check to see if there is enough memory in the present region. */ #define MEMCHECK(reg, rect, firstrect){\ if ((reg)->numRects >= ((reg)->size - 1)){\ BoxPtr tmpRect = Xrealloc ((firstrect), \ (2 * (sizeof(BOX)) * ((reg)->size))); \ if (tmpRect == NULL) \ return(0);\ (firstrect) = tmpRect; \ (reg)->size *= 2;\ (rect) = &(firstrect)[(reg)->numRects];\ }\ } /* this routine checks to see if the previous rectangle is the same * or subsumes the new rectangle to add. */ #define CHECK_PREVIOUS(Reg, R, Rx1, Ry1, Rx2, Ry2)\ (!(((Reg)->numRects > 0)&&\ ((R-1)->y1 == (Ry1)) &&\ ((R-1)->y2 == (Ry2)) &&\ ((R-1)->x1 <= (Rx1)) &&\ ((R-1)->x2 >= (Rx2)))) /* add a rectangle to the given Region */ #define ADDRECT(reg, r, rx1, ry1, rx2, ry2){\ if (((rx1) < (rx2)) && ((ry1) < (ry2)) &&\ CHECK_PREVIOUS((reg), (r), (rx1), (ry1), (rx2), (ry2))){\ (r)->x1 = (rx1);\ (r)->y1 = (ry1);\ (r)->x2 = (rx2);\ (r)->y2 = (ry2);\ EXTENTS((r), (reg));\ (reg)->numRects++;\ (r)++;\ }\ } /* add a rectangle to the given Region */ #define ADDRECTNOX(reg, r, rx1, ry1, rx2, ry2){\ if ((rx1 < rx2) && (ry1 < ry2) &&\ CHECK_PREVIOUS((reg), (r), (rx1), (ry1), (rx2), (ry2))){\ (r)->x1 = (rx1);\ (r)->y1 = (ry1);\ (r)->x2 = (rx2);\ (r)->y2 = (ry2);\ (reg)->numRects++;\ (r)++;\ }\ } #define EMPTY_REGION(pReg) pReg->numRects = 0 #define REGION_NOT_EMPTY(pReg) pReg->numRects #define INBOX(r, x, y) \ ( ( ((r).x2 > x)) && \ ( ((r).x1 <= x)) && \ ( ((r).y2 > y)) && \ ( ((r).y1 <= y)) ) /* * number of points to buffer before sending them off * to scanlines() : Must be an even number */ #define NUMPTSTOBUFFER 200 /* * used to allocate buffers for points and link * the buffers together */ typedef struct _POINTBLOCK { XPoint pts[NUMPTSTOBUFFER]; struct _POINTBLOCK *next; } POINTBLOCK; #endif /* _X11_XREGION_H_ */ libX11-1.8.12/include/X11/Xcms.h0000644014310600000120000005154214763154126011413 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * DESCRIPTION * Public include file for X Color Management System */ #ifndef _X11_XCMS_H_ #define _X11_XCMS_H_ #include /* The Xcms structs are full of implicit padding to properly align members. We can't clean that up without breaking ABI, so tell clang not to bother complaining about it. */ #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wpadded" #endif /* * XCMS Status Values */ #define XcmsFailure 0 #define XcmsSuccess 1 #define XcmsSuccessWithCompression 2 /* * Color Space Format ID's * Color Space ID's are of XcmsColorFormat type. * * bit 31 * 0 == Device-Independent * 1 == Device-Dependent * * bit 30: * 0 == Registered with X Consortium * 1 == Unregistered */ #define XcmsUndefinedFormat (XcmsColorFormat)0x00000000 #define XcmsCIEXYZFormat (XcmsColorFormat)0x00000001 #define XcmsCIEuvYFormat (XcmsColorFormat)0x00000002 #define XcmsCIExyYFormat (XcmsColorFormat)0x00000003 #define XcmsCIELabFormat (XcmsColorFormat)0x00000004 #define XcmsCIELuvFormat (XcmsColorFormat)0x00000005 #define XcmsTekHVCFormat (XcmsColorFormat)0x00000006 #define XcmsRGBFormat (XcmsColorFormat)0x80000000 #define XcmsRGBiFormat (XcmsColorFormat)0x80000001 /* * State of XcmsPerScrnInfo */ #define XcmsInitNone 0x00 /* no initialization attempted */ #define XcmsInitSuccess 0x01 /* initialization successful */ #define XcmsInitFailure 0xff /* failure, use defaults */ #define DisplayOfCCC(ccc) ((ccc)->dpy) #define ScreenNumberOfCCC(ccc) ((ccc)->screenNumber) #define VisualOfCCC(ccc) ((ccc)->visual) #define ClientWhitePointOfCCC(ccc) (&(ccc)->clientWhitePt) #define ScreenWhitePointOfCCC(ccc) (&(ccc)->pPerScrnInfo->screenWhitePt) #define FunctionSetOfCCC(ccc) ((ccc)->pPerScrnInfo->functionSet) typedef unsigned long XcmsColorFormat; /* Color Space Format ID */ typedef double XcmsFloat; /* * Device RGB */ typedef struct { unsigned short red; /* scaled from 0x0000 to 0xffff */ unsigned short green; /* scaled from 0x0000 to 0xffff */ unsigned short blue; /* scaled from 0x0000 to 0xffff */ } XcmsRGB; /* * RGB Intensity */ typedef struct { XcmsFloat red; /* 0.0 - 1.0 */ XcmsFloat green; /* 0.0 - 1.0 */ XcmsFloat blue; /* 0.0 - 1.0 */ } XcmsRGBi; /* * CIE XYZ */ typedef struct { XcmsFloat X; XcmsFloat Y; XcmsFloat Z; } XcmsCIEXYZ; /* * CIE u'v'Y */ typedef struct { XcmsFloat u_prime; /* 0.0 - 1.0 */ XcmsFloat v_prime; /* 0.0 - 1.0 */ XcmsFloat Y; /* 0.0 - 1.0 */ } XcmsCIEuvY; /* * CIE xyY */ typedef struct { XcmsFloat x; /* 0.0 - 1.0 */ XcmsFloat y; /* 0.0 - 1.0 */ XcmsFloat Y; /* 0.0 - 1.0 */ } XcmsCIExyY; /* * CIE L*a*b* */ typedef struct { XcmsFloat L_star; /* 0.0 - 100.0 */ XcmsFloat a_star; XcmsFloat b_star; } XcmsCIELab; /* * CIE L*u*v* */ typedef struct { XcmsFloat L_star; /* 0.0 - 100.0 */ XcmsFloat u_star; XcmsFloat v_star; } XcmsCIELuv; /* * TekHVC */ typedef struct { XcmsFloat H; /* 0.0 - 360.0 */ XcmsFloat V; /* 0.0 - 100.0 */ XcmsFloat C; /* 0.0 - 100.0 */ } XcmsTekHVC; /* * PAD */ typedef struct { XcmsFloat pad0; XcmsFloat pad1; XcmsFloat pad2; XcmsFloat pad3; } XcmsPad; /* * XCMS Color Structure */ typedef struct { union { XcmsRGB RGB; XcmsRGBi RGBi; XcmsCIEXYZ CIEXYZ; XcmsCIEuvY CIEuvY; XcmsCIExyY CIExyY; XcmsCIELab CIELab; XcmsCIELuv CIELuv; XcmsTekHVC TekHVC; XcmsPad Pad; } spec; /* the color specification */ unsigned long pixel; /* pixel value (as needed) */ XcmsColorFormat format; /* the specification format */ } XcmsColor; /* * XCMS Per Screen related data */ typedef struct _XcmsPerScrnInfo { XcmsColor screenWhitePt; /* Screen White point */ XPointer functionSet; /* pointer to Screen Color Characterization */ /* Function Set structure */ XPointer screenData; /* pointer to corresponding Screen Color*/ /* Characterization Data */ unsigned char state; /* XcmsInitNone, XcmsInitSuccess, XcmsInitFailure */ char pad[3]; } XcmsPerScrnInfo; typedef struct _XcmsCCC *XcmsCCC; typedef Status (*XcmsCompressionProc)( /* Gamut Compression Proc */ XcmsCCC /* ccc */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, unsigned int /* index */, Bool* /* compression_flags_return */ ); typedef Status (*XcmsWhiteAdjustProc)( /* White Point Adjust Proc */ XcmsCCC /* ccc */, XcmsColor* /* initial_white_point*/, XcmsColor* /* target_white_point*/, XcmsColorFormat /* target_format */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, Bool* /* compression_flags_return */ ); /* * XCMS Color Conversion Context */ typedef struct _XcmsCCC { Display *dpy; /* X Display */ int screenNumber; /* X screen number */ Visual *visual; /* X Visual */ XcmsColor clientWhitePt; /* Client White Point */ XcmsCompressionProc gamutCompProc; /* Gamut Compression Function */ XPointer gamutCompClientData; /* Gamut Comp Func Client Data */ XcmsWhiteAdjustProc whitePtAdjProc; /* White Point Adjustment Function */ XPointer whitePtAdjClientData; /* White Pt Adj Func Client Data */ XcmsPerScrnInfo *pPerScrnInfo; /* pointer to per screen information */ /* associated with the above display */ /* screenNumber */ } XcmsCCCRec; typedef Status (*XcmsScreenInitProc)( /* Screen Initialization Proc */ Display* /* dpy */, int /* screen_number */, XcmsPerScrnInfo* /* screen_info */ ); typedef void (*XcmsScreenFreeProc)( XPointer /* screenData */ ); /* * Function List Pointer -- pointer to an array of function pointers. * The end of list is indicated by a NULL pointer. */ /* * XXX: The use of the XcmsConversionProc type is broken. The * device-independent colour conversion code uses it as: typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, XcmsColor *, unsigned int); * while the device-dependent code uses it as: typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, unsigned int, Bool *); * Until this is reworked, it's probably best to leave it unprotoized. * The code works regardless. */ typedef Status (*XcmsDDConversionProc)( /* using device-dependent version */ XcmsCCC /* ccc */, XcmsColor* /* pcolors_in_out */, unsigned int /* ncolors */, Bool* /* pCompressed */ ); typedef Status (*XcmsDIConversionProc)( /* using device-independent version */ XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* pcolors_in_out */, unsigned int /* ncolors */ ); typedef XcmsDIConversionProc XcmsConversionProc; typedef XcmsConversionProc *XcmsFuncListPtr; typedef int (*XcmsParseStringProc)( /* Color String Parsing Proc */ char* /* color_string */, XcmsColor* /* color_return */ ); /* * Color Space -- per Color Space related data (Device-Independent * or Device-Dependent) */ typedef struct _XcmsColorSpace { const char *prefix; /* Prefix of string format. */ XcmsColorFormat id; /* Format ID number. */ XcmsParseStringProc parseString; /* String format parsing function */ XcmsFuncListPtr to_CIEXYZ; /* Pointer to an array of function */ /* pointers such that when the */ /* functions are executed in sequence */ /* will convert a XcmsColor structure */ /* from this color space to CIEXYZ */ /* space. */ XcmsFuncListPtr from_CIEXYZ;/* Pointer to an array of function */ /* pointers such that when the */ /* functions are executed in sequence */ /* will convert a XcmsColor structure */ /* from CIEXYZ space to this color */ /* space. */ int inverse_flag; /* If 1, indicates that for 0 <= i < n */ /* where n is the number of function */ /* pointers in the lists to_CIEXYZ */ /* and from_CIEXYZ; for each function */ /* to_CIEXYZ[i] its inverse function */ /* is from_CIEXYZ[n - i]. */ } XcmsColorSpace; /* * Screen Color Characterization Function Set -- per device class * color space conversion functions. */ typedef struct _XcmsFunctionSet { XcmsColorSpace **DDColorSpaces; /* Pointer to an array of pointers to */ /* Device-DEPENDENT color spaces */ /* understood by this SCCFuncSet. */ XcmsScreenInitProc screenInitProc; /* Screen initialization function that */ /* reads Screen Color Characterization*/ /* Data off properties on the screen's*/ /* root window. */ XcmsScreenFreeProc screenFreeProc; /* Function that frees the SCCData */ /* structures. */ } XcmsFunctionSet; _XFUNCPROTOBEGIN extern Status XcmsAddColorSpace ( XcmsColorSpace* /* pColorSpace */ ); extern Status XcmsAddFunctionSet ( XcmsFunctionSet* /* functionSet */ ); extern Status XcmsAllocColor ( Display* /* dpy */, Colormap /* colormap */, XcmsColor* /* color_in_out */, XcmsColorFormat /* result_format */ ); extern Status XcmsAllocNamedColor ( Display* /* dpy */, Colormap /* colormap */, _Xconst char* /* color_string */, XcmsColor* /* color_scrn_return */, XcmsColor* /* color_exact_return */, XcmsColorFormat /* result_format */ ); extern XcmsCCC XcmsCCCOfColormap ( Display* /* dpy */, Colormap /* colormap */ ); extern Status XcmsCIELabClipab( XcmsCCC /* ccc */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, unsigned int /* index */, Bool* /* compression_flags_return */ ); extern Status XcmsCIELabClipL( XcmsCCC /* ccc */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, unsigned int /* index */, Bool* /* compression_flags_return */ ); extern Status XcmsCIELabClipLab( XcmsCCC /* ccc */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, unsigned int /* index */, Bool* /* compression_flags_return */ ); extern Status XcmsCIELabQueryMaxC ( XcmsCCC /* ccc */, XcmsFloat /* hue_angle */, XcmsFloat /* L_star */, XcmsColor* /* color_return */ ); extern Status XcmsCIELabQueryMaxL ( XcmsCCC /* ccc */, XcmsFloat /* hue_angle */, XcmsFloat /* chroma */, XcmsColor* /* color_return */ ); extern Status XcmsCIELabQueryMaxLC ( XcmsCCC /* ccc */, XcmsFloat /* hue_angle */, XcmsColor* /* color_return */ ); extern Status XcmsCIELabQueryMinL ( XcmsCCC /* ccc */, XcmsFloat /* hue_angle */, XcmsFloat /* chroma */, XcmsColor* /* color_return */ ); extern Status XcmsCIELabToCIEXYZ ( XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* colors */, unsigned int /* ncolors */ ); extern Status XcmsCIELabWhiteShiftColors( XcmsCCC /* ccc */, XcmsColor* /* initial_white_point*/, XcmsColor* /* target_white_point*/, XcmsColorFormat /* target_format */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, Bool* /* compression_flags_return */ ); extern Status XcmsCIELuvClipL( XcmsCCC /* ccc */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, unsigned int /* index */, Bool* /* compression_flags_return */ ); extern Status XcmsCIELuvClipLuv( XcmsCCC /* ccc */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, unsigned int /* index */, Bool* /* compression_flags_return */ ); extern Status XcmsCIELuvClipuv( XcmsCCC /* ccc */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, unsigned int /* index */, Bool* /* compression_flags_return */ ); extern Status XcmsCIELuvQueryMaxC ( XcmsCCC /* ccc */, XcmsFloat /* hue_angle */, XcmsFloat /* L_star */, XcmsColor* /* color_return */ ); extern Status XcmsCIELuvQueryMaxL ( XcmsCCC /* ccc */, XcmsFloat /* hue_angle */, XcmsFloat /* chroma */, XcmsColor* /* color_return */ ); extern Status XcmsCIELuvQueryMaxLC ( XcmsCCC /* ccc */, XcmsFloat /* hue_angle */, XcmsColor* /* color_return */ ); extern Status XcmsCIELuvQueryMinL ( XcmsCCC /* ccc */, XcmsFloat /* hue_angle */, XcmsFloat /* chroma */, XcmsColor* /* color_return */ ); extern Status XcmsCIELuvToCIEuvY ( XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* colors */, unsigned int /* ncolors */ ); extern Status XcmsCIELuvWhiteShiftColors( XcmsCCC /* ccc */, XcmsColor* /* initial_white_point*/, XcmsColor* /* target_white_point*/, XcmsColorFormat /* target_format */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, Bool* /* compression_flags_return */ ); extern Status XcmsCIEXYZToCIELab ( XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* colors */, unsigned int /* ncolors */ ); extern Status XcmsCIEXYZToCIEuvY ( XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* colors */, unsigned int /* ncolors */ ); extern Status XcmsCIEXYZToCIExyY ( XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* colors */, unsigned int /* ncolors */ ); extern Status XcmsCIEXYZToRGBi ( XcmsCCC /* ccc */, XcmsColor* /* colors */, unsigned int /* ncolors */, Bool* /* compression_flags_return */ ); extern Status XcmsCIEuvYToCIELuv ( XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* colors */, unsigned int /* ncolors */ ); extern Status XcmsCIEuvYToCIEXYZ ( XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* colors */, unsigned int /* ncolors */ ); extern Status XcmsCIEuvYToTekHVC ( XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* colors */, unsigned int /* ncolors */ ); extern Status XcmsCIExyYToCIEXYZ ( XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* colors */, unsigned int /* ncolors */ ); extern XcmsColor *XcmsClientWhitePointOfCCC ( XcmsCCC /* ccc */ ); extern Status XcmsConvertColors ( XcmsCCC /* ccc */, XcmsColor* /* colorArry_in_out */, unsigned int /* nColors */, XcmsColorFormat /* targetFormat */, Bool* /* compArry_return */ ); extern XcmsCCC XcmsCreateCCC ( Display* /* dpy */, int /* screenNumber */, Visual* /* visual */, XcmsColor* /* clientWhitePt */, XcmsCompressionProc /* gamutCompProc */, XPointer /* gamutCompClientData */, XcmsWhiteAdjustProc /* whitePtAdjProc */, XPointer /* whitePtAdjClientData */ ); extern XcmsCCC XcmsDefaultCCC ( Display* /* dpy */, int /* screenNumber */ ); extern Display *XcmsDisplayOfCCC ( XcmsCCC /* ccc */ ); extern XcmsColorFormat XcmsFormatOfPrefix ( char* /* prefix */ ); extern void XcmsFreeCCC ( XcmsCCC /* ccc */ ); extern Status XcmsLookupColor ( Display* /* dpy */, Colormap /* colormap */, _Xconst char* /* color_string */, XcmsColor* /* pColor_exact_in_out */, XcmsColor* /* pColor_scrn_in_out */, XcmsColorFormat /* result_format */ ); extern char *XcmsPrefixOfFormat ( XcmsColorFormat /* id */ ); extern Status XcmsQueryBlack ( XcmsCCC /* ccc */, XcmsColorFormat /* target_format */, XcmsColor* /* color_return */ ); extern Status XcmsQueryBlue ( XcmsCCC /* ccc */, XcmsColorFormat /* target_format */, XcmsColor* /* color_return */ ); extern Status XcmsQueryColor ( Display* /* dpy */, Colormap /* colormap */, XcmsColor* /* pColor_in_out */, XcmsColorFormat /* result_format */ ); extern Status XcmsQueryColors ( Display* /* dpy */, Colormap /* colormap */, XcmsColor* /* colorArry_in_out */, unsigned int /* nColors */, XcmsColorFormat /* result_format */ ); extern Status XcmsQueryGreen ( XcmsCCC /* ccc */, XcmsColorFormat /* target_format */, XcmsColor* /* color_return */ ); extern Status XcmsQueryRed ( XcmsCCC /* ccc */, XcmsColorFormat /* target_format */, XcmsColor* /* color_return */ ); extern Status XcmsQueryWhite ( XcmsCCC /* ccc */, XcmsColorFormat /* target_format */, XcmsColor* /* color_return */ ); extern Status XcmsRGBiToCIEXYZ ( XcmsCCC /* ccc */, XcmsColor* /* colors */, unsigned int /* ncolors */, Bool* /* compression_flags_return */ ); extern Status XcmsRGBiToRGB ( XcmsCCC /* ccc */, XcmsColor* /* colors */, unsigned int /* ncolors */, Bool* /* compression_flags_return */ ); extern Status XcmsRGBToRGBi ( XcmsCCC /* ccc */, XcmsColor* /* colors */, unsigned int /* ncolors */, Bool* /* compression_flags_return */ ); extern int XcmsScreenNumberOfCCC ( XcmsCCC /* ccc */ ); extern XcmsColor *XcmsScreenWhitePointOfCCC ( XcmsCCC /* ccc */ ); extern XcmsCCC XcmsSetCCCOfColormap( Display* /* dpy */, Colormap /* colormap */, XcmsCCC /* ccc */ ); extern XcmsCompressionProc XcmsSetCompressionProc ( XcmsCCC /* ccc */, XcmsCompressionProc /* compression_proc */, XPointer /* client_data */ ); extern XcmsWhiteAdjustProc XcmsSetWhiteAdjustProc ( XcmsCCC /* ccc */, XcmsWhiteAdjustProc /* white_adjust_proc */, XPointer /* client_data */ ); extern Status XcmsSetWhitePoint ( XcmsCCC /* ccc */, XcmsColor* /* color */ ); extern Status XcmsStoreColor ( Display* /* dpy */, Colormap /* colormap */, XcmsColor* /* pColor_in */ ); extern Status XcmsStoreColors ( Display* /* dpy */, Colormap /* colormap */, XcmsColor* /* colorArry_in */, unsigned int /* nColors */, Bool* /* compArry_return */ ); extern Status XcmsTekHVCClipC( XcmsCCC /* ccc */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, unsigned int /* index */, Bool* /* compression_flags_return */ ); extern Status XcmsTekHVCClipV( XcmsCCC /* ccc */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, unsigned int /* index */, Bool* /* compression_flags_return */ ); extern Status XcmsTekHVCClipVC( XcmsCCC /* ccc */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, unsigned int /* index */, Bool* /* compression_flags_return */ ); extern Status XcmsTekHVCQueryMaxC ( XcmsCCC /* ccc */, XcmsFloat /* hue */, XcmsFloat /* value */, XcmsColor* /* color_return */ ); extern Status XcmsTekHVCQueryMaxV ( XcmsCCC /* ccc */, XcmsFloat /* hue */, XcmsFloat /* chroma */, XcmsColor* /* color_return */ ); extern Status XcmsTekHVCQueryMaxVC ( XcmsCCC /* ccc */, XcmsFloat /* hue */, XcmsColor* /* color_return */ ); extern Status XcmsTekHVCQueryMaxVSamples ( XcmsCCC /* ccc */, XcmsFloat /* hue */, XcmsColor* /* colors_return */, unsigned int /* nsamples */ ); extern Status XcmsTekHVCQueryMinV ( XcmsCCC /* ccc */, XcmsFloat /* hue */, XcmsFloat /* chroma */, XcmsColor* /* color_return */ ); extern Status XcmsTekHVCToCIEuvY ( XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* colors */, unsigned int /* ncolors */ ); extern Status XcmsTekHVCWhiteShiftColors( XcmsCCC /* ccc */, XcmsColor* /* initial_white_point*/, XcmsColor* /* target_white_point*/, XcmsColorFormat /* target_format */, XcmsColor* /* colors_in_out */, unsigned int /* ncolors */, Bool* /* compression_flags_return */ ); extern Visual *XcmsVisualOfCCC ( XcmsCCC /* ccc */ ); #ifdef __clang__ #pragma clang diagnostic pop #endif _XFUNCPROTOEND #endif /* _X11_XCMS_H_ */ libX11-1.8.12/include/X11/XKBlib.h0000644014310600000120000007442214763154126011616 /************************************************************ Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Silicon Graphics not be used in advertising or publicity pertaining to distribution of the software without specific prior written permission. Silicon Graphics makes no representation about the suitability of this software for any purpose. It is provided "as is" without any express or implied warranty. SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ********************************************************/ #ifndef _X11_XKBLIB_H_ #define _X11_XKBLIB_H_ #include #include typedef struct _XkbAnyEvent { int type; /* XkbAnyEvent */ unsigned long serial; /* # of last req processed by server */ Bool send_event; /* is this from a SendEvent request? */ Display * display; /* Display the event was read from */ Time time; /* milliseconds */ int xkb_type; /* XKB event minor code */ unsigned int device; /* device ID */ } XkbAnyEvent; typedef struct _XkbNewKeyboardNotify { int type; /* XkbAnyEvent */ unsigned long serial; /* of last req processed by server */ Bool send_event; /* is this from a SendEvent request? */ Display * display; /* Display the event was read from */ Time time; /* milliseconds */ int xkb_type; /* XkbNewKeyboardNotify */ int device; /* device ID */ int old_device; /* device ID of previous keyboard */ int min_key_code; /* minimum key code */ int max_key_code; /* maximum key code */ int old_min_key_code;/* min key code of previous kbd */ int old_max_key_code;/* max key code of previous kbd */ unsigned int changed; /* changed aspects of the keyboard */ char req_major; /* major and minor opcode of req */ char req_minor; /* that caused change, if applicable */ } XkbNewKeyboardNotifyEvent; typedef struct _XkbMapNotifyEvent { int type; /* XkbAnyEvent */ unsigned long serial; /* of last req processed by server */ Bool send_event; /* is this from a SendEvent request */ Display * display; /* Display the event was read from */ Time time; /* milliseconds */ int xkb_type; /* XkbMapNotify */ int device; /* device ID */ unsigned int changed; /* fields which have been changed */ unsigned int flags; /* reserved */ int first_type; /* first changed key type */ int num_types; /* number of changed key types */ KeyCode min_key_code; KeyCode max_key_code; KeyCode first_key_sym; KeyCode first_key_act; KeyCode first_key_behavior; KeyCode first_key_explicit; KeyCode first_modmap_key; KeyCode first_vmodmap_key; int num_key_syms; int num_key_acts; int num_key_behaviors; int num_key_explicit; int num_modmap_keys; int num_vmodmap_keys; unsigned int vmods; /* mask of changed virtual mods */ } XkbMapNotifyEvent; typedef struct _XkbStateNotifyEvent { int type; /* XkbAnyEvent */ unsigned long serial; /* # of last req processed by server */ Bool send_event; /* is this from a SendEvent request? */ Display * display; /* Display the event was read from */ Time time; /* milliseconds */ int xkb_type; /* XkbStateNotify */ int device; /* device ID */ unsigned int changed; /* mask of changed state components */ int group; /* keyboard group */ int base_group; /* base keyboard group */ int latched_group; /* latched keyboard group */ int locked_group; /* locked keyboard group */ unsigned int mods; /* modifier state */ unsigned int base_mods; /* base modifier state */ unsigned int latched_mods; /* latched modifiers */ unsigned int locked_mods; /* locked modifiers */ int compat_state; /* compatibility state */ unsigned char grab_mods; /* mods used for grabs */ unsigned char compat_grab_mods;/* grab mods for non-XKB clients */ unsigned char lookup_mods; /* mods sent to clients */ unsigned char compat_lookup_mods; /* mods sent to non-XKB clients */ int ptr_buttons; /* pointer button state */ KeyCode keycode; /* keycode that caused the change */ char event_type; /* KeyPress or KeyRelease */ char req_major; /* Major opcode of request */ char req_minor; /* Minor opcode of request */ } XkbStateNotifyEvent; typedef struct _XkbControlsNotify { int type; /* XkbAnyEvent */ unsigned long serial; /* of last req processed by server */ Bool send_event; /* is this from a SendEvent request? */ Display * display; /* Display the event was read from */ Time time; /* milliseconds */ int xkb_type; /* XkbControlsNotify */ int device; /* device ID */ unsigned int changed_ctrls; /* controls with changed sub-values */ unsigned int enabled_ctrls; /* controls currently enabled */ unsigned int enabled_ctrl_changes;/* controls just {en,dis}abled */ int num_groups; /* total groups on keyboard */ KeyCode keycode; /* key that caused change or 0 */ char event_type; /* type of event that caused change */ char req_major; /* if keycode==0, major and minor */ char req_minor; /* opcode of req that caused change */ } XkbControlsNotifyEvent; typedef struct _XkbIndicatorNotify { int type; /* XkbAnyEvent */ unsigned long serial; /* of last req processed by server */ Bool send_event; /* is this from a SendEvent request? */ Display * display; /* Display the event was read from */ Time time; /* milliseconds */ int xkb_type; /* XkbIndicatorNotify */ int device; /* device ID */ unsigned int changed; /* indicators with new state or map */ unsigned int state; /* current state of all indicators */ } XkbIndicatorNotifyEvent; typedef struct _XkbNamesNotify { int type; /* XkbAnyEvent */ unsigned long serial; /* of last req processed by server */ Bool send_event; /* is this from a SendEvent request? */ Display * display; /* Display the event was read from */ Time time; /* milliseconds */ int xkb_type; /* XkbNamesNotify */ int device; /* device ID */ unsigned int changed; /* names that have changed */ int first_type; /* first key type with new name */ int num_types; /* number of key types with new names */ int first_lvl; /* first key type new new level names */ int num_lvls; /* # of key types w/new level names */ int num_aliases; /* total number of key aliases*/ int num_radio_groups;/* total number of radio groups */ unsigned int changed_vmods; /* virtual modifiers with new names */ unsigned int changed_groups; /* groups with new names */ unsigned int changed_indicators;/* indicators with new names */ int first_key; /* first key with new name */ int num_keys; /* number of keys with new names */ } XkbNamesNotifyEvent; typedef struct _XkbCompatMapNotify { int type; /* XkbAnyEvent */ unsigned long serial; /* of last req processed by server */ Bool send_event; /* is this from a SendEvent request? */ Display * display; /* Display the event was read from */ Time time; /* milliseconds */ int xkb_type; /* XkbCompatMapNotify */ int device; /* device ID */ unsigned int changed_groups; /* groups with new compat maps */ int first_si; /* first new symbol interp */ int num_si; /* number of new symbol interps */ int num_total_si; /* total # of symbol interps */ } XkbCompatMapNotifyEvent; typedef struct _XkbBellNotify { int type; /* XkbAnyEvent */ unsigned long serial; /* of last req processed by server */ Bool send_event; /* is this from a SendEvent request? */ Display * display; /* Display the event was read from */ Time time; /* milliseconds */ int xkb_type; /* XkbBellNotify */ int device; /* device ID */ int percent; /* requested volume as a % of maximum */ int pitch; /* requested pitch in Hz */ int duration; /* requested duration in useconds */ int bell_class; /* (input extension) feedback class */ int bell_id; /* (input extension) ID of feedback */ Atom name; /* "name" of requested bell */ Window window; /* window associated with event */ Bool event_only; /* "event only" requested */ } XkbBellNotifyEvent; typedef struct _XkbActionMessage { int type; /* XkbAnyEvent */ unsigned long serial; /* of last req processed by server */ Bool send_event; /* is this from a SendEvent request? */ Display * display; /* Display the event was read from */ Time time; /* milliseconds */ int xkb_type; /* XkbActionMessage */ int device; /* device ID */ KeyCode keycode; /* key that generated the event */ Bool press; /* true if act caused by key press */ Bool key_event_follows;/* true if key event also generated */ int group; /* effective group */ unsigned int mods; /* effective mods */ char message[XkbActionMessageLength+1]; /* message -- leave space for NUL */ } XkbActionMessageEvent; typedef struct _XkbAccessXNotify { int type; /* XkbAnyEvent */ unsigned long serial; /* of last req processed by server */ Bool send_event; /* is this from a SendEvent request? */ Display * display; /* Display the event was read from */ Time time; /* milliseconds */ int xkb_type; /* XkbAccessXNotify */ int device; /* device ID */ int detail; /* XkbAXN_* */ int keycode; /* key of event */ int sk_delay; /* current slow keys delay */ int debounce_delay; /* current debounce delay */ } XkbAccessXNotifyEvent; typedef struct _XkbExtensionDeviceNotify { int type; /* XkbAnyEvent */ unsigned long serial; /* of last req processed by server */ Bool send_event; /* is this from a SendEvent request? */ Display * display; /* Display the event was read from */ Time time; /* milliseconds */ int xkb_type; /* XkbExtensionDeviceNotify */ int device; /* device ID */ unsigned int reason; /* reason for the event */ unsigned int supported; /* mask of supported features */ unsigned int unsupported; /* mask of unsupported features */ /* that some app tried to use */ int first_btn; /* first button that changed */ int num_btns; /* range of buttons changed */ unsigned int leds_defined; /* indicators with names or maps */ unsigned int led_state; /* current state of the indicators */ int led_class; /* feedback class for led changes */ int led_id; /* feedback id for led changes */ } XkbExtensionDeviceNotifyEvent; typedef union _XkbEvent { int type; XkbAnyEvent any; XkbNewKeyboardNotifyEvent new_kbd; XkbMapNotifyEvent map; XkbStateNotifyEvent state; XkbControlsNotifyEvent ctrls; XkbIndicatorNotifyEvent indicators; XkbNamesNotifyEvent names; XkbCompatMapNotifyEvent compat; XkbBellNotifyEvent bell; XkbActionMessageEvent message; XkbAccessXNotifyEvent accessx; XkbExtensionDeviceNotifyEvent device; XEvent core; } XkbEvent; typedef struct _XkbKbdDpyState XkbKbdDpyStateRec,*XkbKbdDpyStatePtr; /* XkbOpenDisplay error codes */ #define XkbOD_Success 0 #define XkbOD_BadLibraryVersion 1 #define XkbOD_ConnectionRefused 2 #define XkbOD_NonXkbServer 3 #define XkbOD_BadServerVersion 4 /* Values for XlibFlags */ #define XkbLC_ForceLatin1Lookup (1<<0) #define XkbLC_ConsumeLookupMods (1<<1) #define XkbLC_AlwaysConsumeShiftAndLock (1<<2) #define XkbLC_IgnoreNewKeyboards (1<<3) #define XkbLC_ControlFallback (1<<4) #define XkbLC_ConsumeKeysOnComposeFail (1<<29) #define XkbLC_ComposeLED (1<<30) #define XkbLC_BeepOnComposeFail (1<<31) #define XkbLC_AllComposeControls (0xc0000000) #define XkbLC_AllControls (0xc000001f) _XFUNCPROTOBEGIN extern Bool XkbIgnoreExtension( Bool /* ignore */ ); extern Display *XkbOpenDisplay( _Xconst char * /* name */, int * /* ev_rtrn */, int * /* err_rtrn */, int * /* major_rtrn */, int * /* minor_rtrn */, int * /* reason */ ); extern Bool XkbQueryExtension( Display * /* dpy */, int * /* opcodeReturn */, int * /* eventBaseReturn */, int * /* errorBaseReturn */, int * /* majorRtrn */, int * /* minorRtrn */ ); extern Bool XkbUseExtension( Display * /* dpy */, int * /* major_rtrn */, int * /* minor_rtrn */ ); extern Bool XkbLibraryVersion( int * /* libMajorRtrn */, int * /* libMinorRtrn */ ); extern unsigned int XkbSetXlibControls( Display* /* dpy */, unsigned int /* affect */, unsigned int /* values */ ); extern unsigned int XkbGetXlibControls( Display* /* dpy */ ); extern unsigned int XkbXlibControlsImplemented(void); typedef Atom (*XkbInternAtomFunc)( Display * /* dpy */, _Xconst char * /* name */, Bool /* only_if_exists */ ); typedef char * (*XkbGetAtomNameFunc)( Display * /* dpy */, Atom /* atom */ ); extern void XkbSetAtomFuncs( XkbInternAtomFunc /* getAtom */, XkbGetAtomNameFunc /* getName */ ); extern KeySym XkbKeycodeToKeysym( Display * /* dpy */, #if NeedWidePrototypes unsigned int /* kc */, #else KeyCode /* kc */, #endif int /* group */, int /* level */ ); extern unsigned int XkbKeysymToModifiers( Display * /* dpy */, KeySym /* ks */ ); extern Bool XkbLookupKeySym( Display * /* dpy */, KeyCode /* keycode */, unsigned int /* modifiers */, unsigned int * /* modifiers_return */, KeySym * /* keysym_return */ ); extern int XkbLookupKeyBinding( Display * /* dpy */, KeySym /* sym_rtrn */, unsigned int /* mods */, char * /* buffer */, int /* nbytes */, int * /* extra_rtrn */ ); extern Bool XkbTranslateKeyCode( XkbDescPtr /* xkb */, KeyCode /* keycode */, unsigned int /* modifiers */, unsigned int * /* modifiers_return */, KeySym * /* keysym_return */ ); extern int XkbTranslateKeySym( Display * /* dpy */, KeySym * /* sym_return */, unsigned int /* modifiers */, char * /* buffer */, int /* nbytes */, int * /* extra_rtrn */ ); extern Bool XkbSetAutoRepeatRate( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int /* delay */, unsigned int /* interval */ ); extern Bool XkbGetAutoRepeatRate( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int * /* delayRtrn */, unsigned int * /* intervalRtrn */ ); extern Bool XkbChangeEnabledControls( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int /* affect */, unsigned int /* values */ ); extern Bool XkbDeviceBell( Display * /* dpy */, Window /* win */, int /* deviceSpec */, int /* bellClass */, int /* bellID */, int /* percent */, Atom /* name */ ); extern Bool XkbForceDeviceBell( Display * /* dpy */, int /* deviceSpec */, int /* bellClass */, int /* bellID */, int /* percent */ ); extern Bool XkbDeviceBellEvent( Display * /* dpy */, Window /* win */, int /* deviceSpec */, int /* bellClass */, int /* bellID */, int /* percent */, Atom /* name */ ); extern Bool XkbBell( Display * /* dpy */, Window /* win */, int /* percent */, Atom /* name */ ); extern Bool XkbForceBell( Display * /* dpy */, int /* percent */ ); extern Bool XkbBellEvent( Display * /* dpy */, Window /* win */, int /* percent */, Atom /* name */ ); extern Bool XkbSelectEvents( Display * /* dpy */, unsigned int /* deviceID */, unsigned int /* affect */, unsigned int /* values */ ); extern Bool XkbSelectEventDetails( Display * /* dpy */, unsigned int /* deviceID */, unsigned int /* eventType */, unsigned long /* affect */, unsigned long /* details */ ); extern void XkbNoteMapChanges( XkbMapChangesPtr /* old */, XkbMapNotifyEvent * /* new */, unsigned int /* wanted */ ); extern void XkbNoteNameChanges( XkbNameChangesPtr /* old */, XkbNamesNotifyEvent * /* new */, unsigned int /* wanted */ ); extern Status XkbGetIndicatorState( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int * /* pStateRtrn */ ); extern Status XkbGetDeviceIndicatorState( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int /* ledClass */, unsigned int /* ledID */, unsigned int * /* pStateRtrn */ ); extern Status XkbGetIndicatorMap( Display * /* dpy */, unsigned long /* which */, XkbDescPtr /* desc */ ); extern Bool XkbSetIndicatorMap( Display * /* dpy */, unsigned long /* which */, XkbDescPtr /* desc */ ); #define XkbNoteIndicatorMapChanges(o,n,w) \ ((o)->map_changes|=((n)->map_changes&(w))) #define XkbNoteIndicatorStateChanges(o,n,w)\ ((o)->state_changes|=((n)->state_changes&(w))) #define XkbGetIndicatorMapChanges(d,x,c) \ (XkbGetIndicatorMap((d),(c)->map_changes,x)) #define XkbChangeIndicatorMaps(d,x,c) \ (XkbSetIndicatorMap((d),(c)->map_changes,x)) extern Bool XkbGetNamedIndicator( Display * /* dpy */, Atom /* name */, int * /* pNdxRtrn */, Bool * /* pStateRtrn */, XkbIndicatorMapPtr /* pMapRtrn */, Bool * /* pRealRtrn */ ); extern Bool XkbGetNamedDeviceIndicator( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int /* ledClass */, unsigned int /* ledID */, Atom /* name */, int * /* pNdxRtrn */, Bool * /* pStateRtrn */, XkbIndicatorMapPtr /* pMapRtrn */, Bool * /* pRealRtrn */ ); extern Bool XkbSetNamedIndicator( Display * /* dpy */, Atom /* name */, Bool /* changeState */, Bool /* state */, Bool /* createNewMap */, XkbIndicatorMapPtr /* pMap */ ); extern Bool XkbSetNamedDeviceIndicator( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int /* ledClass */, unsigned int /* ledID */, Atom /* name */, Bool /* changeState */, Bool /* state */, Bool /* createNewMap */, XkbIndicatorMapPtr /* pMap */ ); extern Bool XkbLockModifiers( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int /* affect */, unsigned int /* values */ ); extern Bool XkbLatchModifiers( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int /* affect */, unsigned int /* values */ ); extern Bool XkbLockGroup( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int /* group */ ); extern Bool XkbLatchGroup( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int /* group */ ); extern Bool XkbSetServerInternalMods( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int /* affectReal */, unsigned int /* realValues */, unsigned int /* affectVirtual */, unsigned int /* virtualValues */ ); extern Bool XkbSetIgnoreLockMods( Display * /* dpy */, unsigned int /* deviceSpec */, unsigned int /* affectReal */, unsigned int /* realValues */, unsigned int /* affectVirtual */, unsigned int /* virtualValues */ ); extern Bool XkbVirtualModsToReal( XkbDescPtr /* xkb */, unsigned int /* virtual_mask */, unsigned int * /* mask_rtrn */ ); extern Bool XkbComputeEffectiveMap( XkbDescPtr /* xkb */, XkbKeyTypePtr /* type */, unsigned char * /* map_rtrn */ ); extern Status XkbInitCanonicalKeyTypes( XkbDescPtr /* xkb */, unsigned int /* which */, int /* keypadVMod */ ); extern XkbDescPtr XkbAllocKeyboard( void ); extern void XkbFreeKeyboard( XkbDescPtr /* xkb */, unsigned int /* which */, Bool /* freeDesc */ ); extern Status XkbAllocClientMap( XkbDescPtr /* xkb */, unsigned int /* which */, unsigned int /* nTypes */ ); extern Status XkbAllocServerMap( XkbDescPtr /* xkb */, unsigned int /* which */, unsigned int /* nActions */ ); extern void XkbFreeClientMap( XkbDescPtr /* xkb */, unsigned int /* what */, Bool /* freeMap */ ); extern void XkbFreeServerMap( XkbDescPtr /* xkb */, unsigned int /* what */, Bool /* freeMap */ ); extern XkbKeyTypePtr XkbAddKeyType( XkbDescPtr /* xkb */, Atom /* name */, int /* map_count */, Bool /* want_preserve */, int /* num_lvls */ ); extern Status XkbAllocIndicatorMaps( XkbDescPtr /* xkb */ ); extern void XkbFreeIndicatorMaps( XkbDescPtr /* xkb */ ); extern XkbDescPtr XkbGetMap( Display * /* dpy */, unsigned int /* which */, unsigned int /* deviceSpec */ ); extern Status XkbGetUpdatedMap( Display * /* dpy */, unsigned int /* which */, XkbDescPtr /* desc */ ); extern Status XkbGetMapChanges( Display * /* dpy */, XkbDescPtr /* xkb */, XkbMapChangesPtr /* changes */ ); extern Status XkbRefreshKeyboardMapping( XkbMapNotifyEvent * /* event */ ); extern Status XkbGetKeyTypes( Display * /* dpy */, unsigned int /* first */, unsigned int /* num */, XkbDescPtr /* xkb */ ); extern Status XkbGetKeySyms( Display * /* dpy */, unsigned int /* first */, unsigned int /* num */, XkbDescPtr /* xkb */ ); extern Status XkbGetKeyActions( Display * /* dpy */, unsigned int /* first */, unsigned int /* num */, XkbDescPtr /* xkb */ ); extern Status XkbGetKeyBehaviors( Display * /* dpy */, unsigned int /* firstKey */, unsigned int /* nKeys */, XkbDescPtr /* desc */ ); extern Status XkbGetVirtualMods( Display * /* dpy */, unsigned int /* which */, XkbDescPtr /* desc */ ); extern Status XkbGetKeyExplicitComponents( Display * /* dpy */, unsigned int /* firstKey */, unsigned int /* nKeys */, XkbDescPtr /* desc */ ); extern Status XkbGetKeyModifierMap( Display * /* dpy */, unsigned int /* firstKey */, unsigned int /* nKeys */, XkbDescPtr /* desc */ ); extern Status XkbGetKeyVirtualModMap( Display * /* dpy */, unsigned int /* first */, unsigned int /* num */, XkbDescPtr /* xkb */ ); extern Status XkbAllocControls( XkbDescPtr /* xkb */, unsigned int /* which*/ ); extern void XkbFreeControls( XkbDescPtr /* xkb */, unsigned int /* which */, Bool /* freeMap */ ); extern Status XkbGetControls( Display * /* dpy */, unsigned long /* which */, XkbDescPtr /* desc */ ); extern Bool XkbSetControls( Display * /* dpy */, unsigned long /* which */, XkbDescPtr /* desc */ ); extern void XkbNoteControlsChanges( XkbControlsChangesPtr /* old */, XkbControlsNotifyEvent * /* new */, unsigned int /* wanted */ ); #define XkbGetControlsChanges(d,x,c) XkbGetControls(d,(c)->changed_ctrls,x) #define XkbChangeControls(d,x,c) XkbSetControls(d,(c)->changed_ctrls,x) extern Status XkbAllocCompatMap( XkbDescPtr /* xkb */, unsigned int /* which */, unsigned int /* nInterpret */ ); extern void XkbFreeCompatMap( XkbDescPtr /* xkb */, unsigned int /* which */, Bool /* freeMap */ ); extern Status XkbGetCompatMap( Display * /* dpy */, unsigned int /* which */, XkbDescPtr /* xkb */ ); extern Bool XkbSetCompatMap( Display * /* dpy */, unsigned int /* which */, XkbDescPtr /* xkb */, Bool /* updateActions */ ); extern XkbSymInterpretPtr XkbAddSymInterpret( XkbDescPtr /* xkb */, XkbSymInterpretPtr /* si */, Bool /* updateMap */, XkbChangesPtr /* changes */ ); extern Status XkbAllocNames( XkbDescPtr /* xkb */, unsigned int /* which */, int /* nTotalRG */, int /* nTotalAliases */ ); extern Status XkbGetNames( Display * /* dpy */, unsigned int /* which */, XkbDescPtr /* desc */ ); extern Bool XkbSetNames( Display * /* dpy */, unsigned int /* which */, unsigned int /* firstType */, unsigned int /* nTypes */, XkbDescPtr /* desc */ ); extern Bool XkbChangeNames( Display * /* dpy */, XkbDescPtr /* xkb */, XkbNameChangesPtr /* changes */ ); extern void XkbFreeNames( XkbDescPtr /* xkb */, unsigned int /* which */, Bool /* freeMap */ ); extern Status XkbGetState( Display * /* dpy */, unsigned int /* deviceSpec */, XkbStatePtr /* rtrnState */ ); extern Bool XkbSetMap( Display * /* dpy */, unsigned int /* which */, XkbDescPtr /* desc */ ); extern Bool XkbChangeMap( Display* /* dpy */, XkbDescPtr /* desc */, XkbMapChangesPtr /* changes */ ); extern Bool XkbSetDetectableAutoRepeat( Display * /* dpy */, Bool /* detectable */, Bool * /* supported */ ); extern Bool XkbGetDetectableAutoRepeat( Display * /* dpy */, Bool * /* supported */ ); extern Bool XkbSetAutoResetControls( Display * /* dpy */, unsigned int /* changes */, unsigned int * /* auto_ctrls */, unsigned int * /* auto_values */ ); extern Bool XkbGetAutoResetControls( Display * /* dpy */, unsigned int * /* auto_ctrls */, unsigned int * /* auto_ctrl_values */ ); extern Bool XkbSetPerClientControls( Display * /* dpy */, unsigned int /* change */, unsigned int * /* values */ ); extern Bool XkbGetPerClientControls( Display * /* dpy */, unsigned int * /* ctrls */ ); extern Status XkbCopyKeyType( XkbKeyTypePtr /* from */, XkbKeyTypePtr /* into */ ); extern Status XkbCopyKeyTypes( XkbKeyTypePtr /* from */, XkbKeyTypePtr /* into */, int /* num_types */ ); extern Status XkbResizeKeyType( XkbDescPtr /* xkb */, int /* type_ndx */, int /* map_count */, Bool /* want_preserve */, int /* new_num_lvls */ ); extern KeySym *XkbResizeKeySyms( XkbDescPtr /* desc */, int /* forKey */, int /* symsNeeded */ ); extern XkbAction *XkbResizeKeyActions( XkbDescPtr /* desc */, int /* forKey */, int /* actsNeeded */ ); extern Status XkbChangeTypesOfKey( XkbDescPtr /* xkb */, int /* key */, int /* num_groups */, unsigned int /* groups */, int * /* newTypes */, XkbMapChangesPtr /* pChanges */ ); extern Status XkbChangeKeycodeRange( XkbDescPtr /* xkb */, int /* minKC */, int /* maxKC */, XkbChangesPtr /* changes */ ); /***====================================================================***/ extern XkbComponentListPtr XkbListComponents( Display * /* dpy */, unsigned int /* deviceSpec */, XkbComponentNamesPtr /* ptrns */, int * /* max_inout */ ); extern void XkbFreeComponentList( XkbComponentListPtr /* list */ ); extern XkbDescPtr XkbGetKeyboard( Display * /* dpy */, unsigned int /* which */, unsigned int /* deviceSpec */ ); extern XkbDescPtr XkbGetKeyboardByName( Display * /* dpy */, unsigned int /* deviceSpec */, XkbComponentNamesPtr /* names */, unsigned int /* want */, unsigned int /* need */, Bool /* load */ ); /***====================================================================***/ extern int XkbKeyTypesForCoreSymbols( /* returns # of groups */ XkbDescPtr /* xkb */, /* keyboard device */ int /* map_width */, /* width of core KeySym array */ KeySym * /* core_syms */, /* always mapWidth symbols */ unsigned int /* protected */, /* explicit key types */ int * /* types_inout */, /* always four type indices */ KeySym * /* xkb_syms_rtrn */ /* must have enough space */ ); extern Bool XkbApplyCompatMapToKey( /* False only on error */ XkbDescPtr /* xkb */, /* keymap to be edited */ KeyCode /* key */, /* key to be updated */ XkbChangesPtr /* changes */ /* resulting changes to map */ ); extern Bool XkbUpdateMapFromCore( /* False only on error */ XkbDescPtr /* xkb */, /* XKB keyboard to be edited */ KeyCode /* first_key */, /* first changed key */ int /* num_keys */, /* number of changed keys */ int /* map_width */, /* width of core keymap */ KeySym * /* core_keysyms */, /* symbols from core keymap */ XkbChangesPtr /* changes */ /* resulting changes */ ); /***====================================================================***/ extern XkbDeviceLedInfoPtr XkbAddDeviceLedInfo( XkbDeviceInfoPtr /* devi */, unsigned int /* ledClass */, unsigned int /* ledId */ ); extern Status XkbResizeDeviceButtonActions( XkbDeviceInfoPtr /* devi */, unsigned int /* newTotal */ ); extern XkbDeviceInfoPtr XkbAllocDeviceInfo( unsigned int /* deviceSpec */, unsigned int /* nButtons */, unsigned int /* szLeds */ ); extern void XkbFreeDeviceInfo( XkbDeviceInfoPtr /* devi */, unsigned int /* which */, Bool /* freeDevI */ ); extern void XkbNoteDeviceChanges( XkbDeviceChangesPtr /* old */, XkbExtensionDeviceNotifyEvent * /* new */, unsigned int /* wanted */ ); extern XkbDeviceInfoPtr XkbGetDeviceInfo( Display * /* dpy */, unsigned int /* which */, unsigned int /* deviceSpec */, unsigned int /* ledClass */, unsigned int /* ledID */ ); extern Status XkbGetDeviceInfoChanges( Display * /* dpy */, XkbDeviceInfoPtr /* devi */, XkbDeviceChangesPtr /* changes */ ); extern Status XkbGetDeviceButtonActions( Display * /* dpy */, XkbDeviceInfoPtr /* devi */, Bool /* all */, unsigned int /* first */, unsigned int /* nBtns */ ); extern Status XkbGetDeviceLedInfo( Display * /* dpy */, XkbDeviceInfoPtr /* devi */, unsigned int /* ledClass (class, XIDflt, XIAll) */, unsigned int /* ledId (id, XIDflt, XIAll) */, unsigned int /* which (XkbXI_Indicator{Names,Map}Mask */ ); extern Bool XkbSetDeviceInfo( Display * /* dpy */, unsigned int /* which */, XkbDeviceInfoPtr /* devi */ ); extern Bool XkbChangeDeviceInfo( Display* /* dpy */, XkbDeviceInfoPtr /* desc */, XkbDeviceChangesPtr /* changes */ ); extern Bool XkbSetDeviceLedInfo( Display * /* dpy */, XkbDeviceInfoPtr /* devi */, unsigned int /* ledClass */, unsigned int /* ledID */, unsigned int /* which */ ); extern Bool XkbSetDeviceButtonActions( Display * /* dpy */, XkbDeviceInfoPtr /* devi */, unsigned int /* first */, unsigned int /* nBtns */ ); /***====================================================================***/ extern char XkbToControl( char /* c */ ); /***====================================================================***/ extern Bool XkbSetDebuggingFlags( Display * /* dpy */, unsigned int /* mask */, unsigned int /* flags */, char * /* msg */, unsigned int /* ctrls_mask */, unsigned int /* ctrls */, unsigned int * /* rtrn_flags */, unsigned int * /* rtrn_ctrls */ ); extern Bool XkbApplyVirtualModChanges( XkbDescPtr /* xkb */, unsigned int /* changed */, XkbChangesPtr /* changes */ ); extern Bool XkbUpdateActionVirtualMods( XkbDescPtr /* xkb */, XkbAction * /* act */, unsigned int /* changed */ ); extern void XkbUpdateKeyTypeVirtualMods( XkbDescPtr /* xkb */, XkbKeyTypePtr /* type */, unsigned int /* changed */, XkbChangesPtr /* changes */ ); _XFUNCPROTOEND #endif /* _X11_XKBLIB_H_ */ libX11-1.8.12/specs/0000755014310600000120000000000014763154172007523 5libX11-1.8.12/specs/XIM/0000755014310600000120000000000014763154172010160 5libX11-1.8.12/specs/XIM/sampleprotocolflow2.svg0000644014310600000120000011135314763154126014641 image/svg+xml Key event Key event Xib API IM library XNextEvent XFilterEvent XNextEvent XFilterEvent XNextEvent XFilterEvent(returns False) XmbLookupString XSetICFocus XIM_FORWARD_EVENT XIM_FORWARD_EVENTor XIM_COMMIT(synchronous) XIM_FORWARD_EVENT XIM_SYNC XIM_SYNC_REPLY XIM_SET_IC_FOCUS ispend because another sync cycle is startedby XIM_COMMIT XIM_SET_IC_FOCUS XIM_SYNC_REPLY asa reply of the XIM_FORWARD_EVENT XIM_SET_IC_FOCUS XIM_FORWARD_EVENT IM Server synchronousrequest Pending processed(The focusedIC is changed) processed processed processed XSetICFocus Pending untilsync cycle is done Button press causesfocus change Key event XNextEvent XFilterEvent Application movesthe focus Pending libX11-1.8.12/specs/XIM/staticflowsampleseq.svg0000644014310600000120000003423614763154126014722 image/svg+xml IM Library IM Server Keys in the on-key-list XIM_EXT_SET_EVENT_MASK intercept-event-mask is set XIM_EXT_SET_EVENT_MASK select-event-mask is set XIM_FORWARD_EVENT the specified eventsare being filtered Keys in the off-key-list the specified eventsare being processed Keys in the on-key-list the specified eventsare being processed Keys in the off-key-list the specified eventsare being discarded libX11-1.8.12/specs/XIM/eventflow.svg0000644014310600000120000002521614763154126012637 image/svg+xml X Server Backend Method(Core) Frontend Method(Extension) IM Server Library Application libX11-1.8.12/specs/XIM/Makefile.in0000644014310600000120000006226314763154147012160 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = specs/XIM ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = xim.xml dynamicflowsampleseq.svg \ dynamicflow.svg eventflow.svg sampleprotocolflow1.svg \ sampleprotocolflow2.svg staticflowsampleseq.svg staticflow.svg am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_SPECS_TRUE@docbook = xim.xml # Included chapters, appendix, images @ENABLE_SPECS_TRUE@chapters = \ @ENABLE_SPECS_TRUE@ dynamicflowsampleseq.svg \ @ENABLE_SPECS_TRUE@ dynamicflow.svg \ @ENABLE_SPECS_TRUE@ eventflow.svg \ @ENABLE_SPECS_TRUE@ sampleprotocolflow1.svg \ @ENABLE_SPECS_TRUE@ sampleprotocolflow2.svg \ @ENABLE_SPECS_TRUE@ staticflowsampleseq.svg \ @ENABLE_SPECS_TRUE@ staticflow.svg # The location where the DocBook/XML files and their generated formats are installed @ENABLE_SPECS_TRUE@shelfdir = $(docdir)/XIM # DocBook/XML generated output formats to be installed @ENABLE_SPECS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_SPECS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_SPECS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/XIM/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/XIM/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_shelfDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-shelfDATA install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-dist_shelfDATA uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/specs/XIM/xim.xml0000644014310600000120000035012714763154126011426 %defs; ]>
The Input Method Protocol X Consortium Standard X Version 11, Release &fullrelvers; Version 1.0 MasahikoNarita FUJITSU Limited. HidekiHiura SunSoft, Inc. 19931994 FUJITSU LIMITED Oracle and/or its affiliates This specifies a protocol between IM library and IM (Input Method) Server for internationalized text input, which is independent from any specific language, any specific input method and the transport layer used in communication between the IM library and the IM Server, and uses a client-server model. This protocol allows user to use his/her favorite method for all applications within the stand-along distributed environment. Permission to use, copy and distribute this documentation for any purpose and without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. Fujitsu and Sun Microsystems make no representation about the suitability for any purpose of the information in this document. This documentation is provided as is without express implied warranty. Copyright © 1993, 1994 X Consortium Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. X Window System is a trademark of The Open Group. Introduction Scope The internationalization in the X Window System Version 11, Release 5 (X11R5) provides a common API which application developers can use to create portable internationalized programs and to adapt them to the requirements of different native languages, local customs, and character string encodings (this is called "localization"). As one of its internationalization mechanisms X11R5 has defined a functional interface for internationalized text input, called XIM (X Input Method). When a client-server model is used with an IM (Input Method) implementation, a protocol must be established between the client and the server. However, the protocol used to interface Input Method Servers (IM Servers) with the Input Method libraries (IM libraries) to which applications are linked was not addressed in X11R5. This led application developers to depend on vendor-specific input methods, decreased the user's choice of available input methods, and made it more difficult for developers to create portable applications. This paper describes the Input Method Protocol developed for X11R6 to resolve the above problems and to address the requirements of existing and future input methods. The Input Method Protocol is independent from the transport layer used in communication between the IM library and the IM Server. Thus, the input method protocol can be built on any inter-process communication mechanism, such as TCP/IP or the X protocol. In addition, the protocol provides for future extensions such as differing input model types. Background Text input is much more simple for some languages than others. English, for instance, uses an alphabet of a manageable size, and input consists of pressing the corresponding key on a keyboard, perhaps in combination with a shift key for capital letters or special characters. Some languages have larger alphabets, or modifiers such as accents, which require the addition of special key combinations in order to enter text. These input methods may require "dead-keys" or "compose-keys" which, when followed by different combinations of key strokes, generate different characters. Text input for ideographic languages is much less simple. In these languages, characters represent actual objects rather than phonetic sounds used in pronouncing a word, and the number of characters in these languages may continue to grow. In Japanese, for instance, most text input methods involve entering characters in a phonetic alphabet, after which the input method searches a dictionary for possible ideographic equivalents (of which there may be many). The input method then presents the candidate characters for the user to choose from. In Japanese, either Kana (phonetic symbols) or Roman letters are typed and then a region is selected for conversion to Kanji. Several Kanji characters may have the same phonetic representation. If that is the case with the string entered, a menu of characters is presented and the user must choose the appropriate one. If no choice is necessary or a preference has been established, the input method does the substitution directly. These complicated input methods must present state information (Status Area), text entry and edit space (Preedit Area), and menu/choice presentations (Auxiliary Area). Much of the protocol between the IM library and the IM Server involves managing these IM areas. Because of the size and complexity of these input methods, and because of how widely they vary from one language or locale to another, they are usually implemented as separate processes which can serve many client processes on the same computer or network. Input Method Styles X11 internationalization support includes the following four types of input method: - on-the-spot: The client application is directed by the IM Server to display all pre-edit data at the site of text insertion. The client registers callbacks invoked by the input method during pre-editing. - off-the-spot: The client application provides display windows for the pre-edit data to the input method which displays into them directly. - over-the-spot: The input method displays pre-edit data in a window which it brings up directly over the text insertion position. - root-window: The input method displays all pre-edit data in a separate area of the screen in a window specific to the input method. Client applications must choose from the available input methods supported by the IM Server and provide the display areas and callbacks required by the input method. Architecture Implementation Model Within the X Window System environment, the following two typical architectural models can be used as an input method's implementation model. - Client/Server model: A separate process, the IM Server, processes input and handles preediting, converting, and committing. The IM library within the application, acting as client to the IM Server, simply receives the committed string from the IM Server. - Library model: All input is handled by the IM library within the application. The event process is closed within the IM library and a separate IM Server process may not be required. Most languages which need complex preediting, such as Asian languages, are implemented using the Client/Server IM model. Other languages which need only dead key or compose key processing, such as European languages, are implemented using the Library model. In this paper, we discuss mainly the Client/Server IM model and the protocol used in communication between the IM library (client) and the IM Server. Structure of IM When the client connects or disconnects to the IM Server, an open or close operation occurs between the client and the IM Server. The IM can be specified at the time of XOpenIM() by setting the locale of the client and a locale modifier. Since the IM remembers the locale at the time of creation XOpenIM() can be called multiple times (with the setting for the locale and the locale modifier changed) to support multiple languages. In addition, the supported IM type can be obtained using XGetIMValues(). The client usually holds multiple input (text) fields. Xlib provides a value type called the "Input Context" (IC) to manage each individual input field. An IC can be created by specifying XIM using XCreateIC(), and it can be destroyed using XDestroyIC(). The IC can specify the type of IM which is supported by XIM for each input field, so each input field can handle a different type of IM. Most importantly information such as the committed string sent from the IM Server to the client, is exchanged based on each IC. Since each IC corresponds to an input field, the focused input field should be announced to the IM Server using XSetICFocus(). (XUnsetICFocus() can also be used to change the focus.) Event Handling Model Existing input methods support either the FrontEnd method, the BackEnd method, or both. This protocol specifically supports the BackEnd method as the default method, but also supports the FrontEnd method as an optional IM Server extension. The difference between the FrontEnd and BackEnd methods is in how events are delivered to the IM Server. (Fig. 1) BackEnd Method In the BackEnd method, client window input events are always delivered to the IM library, which then passes them to the IM Server. Events are handled serially in the order delivered, and therefore there is no synchronization problem between the IM library and the IM Server. Using this method, the IM library forwards all KeyPress and KeyRelease events to the IM Server (as required by the Event Flow Control model described in ) and synchronizes with the IM Server (as described in ). FrontEnd Method In the FrontEnd method, client window input events are delivered by the X server directly to both the IM Server and the IM library. Therefore this method provides much better interactive performance while preediting (particularly in cases such as when the IM Server is running locally on the user's workstation and the client application is running on another workstation over a relatively slow network). However, the FrontEnd model may have synchronization problems between the key events handled in the IM Server and other events handled in the client, and these problems could possibly cause the loss or duplication of key events. For this reason, the BackEnd method is the core method supported, and the FrontEnd method is made available as an extension for performance purposes. (Refer to for more information.) The flow of events Event Flow Control This protocol supports two event flow models for communication between the IM library and the IM Server (Static and Dynamic). Static Event Flow requires that input events always be sent to the IM Server from the client. Dynamic Event Flow, however, requires only that those input events which need to be processed (converted) be sent to the IM Server from the client. For instance, in the case of inputing a combination of ASCII characters and Chinese characters, ASCII characters do not need to be processed in the IM Server, so their key events do not have to be sent to the IM Server. On the other hand, key events necessary for composing Chinese characters must be sent to the IM Server. Thus, by adopting the Dynamic Event Flow, the number of requests among the X Server, the client, and the IM Server is significantly reduced, and the number of context switches is also reduced, resulting in improved performance. The IM Server can send XIM_REGISTER_TRIGGERKEYS message in order to switch the event flow in the Dynamic Event Flow. The protocol for this process is described in . Default Preconnection Convention IM Servers are strongly encouraged to register their symbolic names as the ATOM names into the IM Server directory property, XIM_SERVERS, on the root window of the screen_number 0. This property can contain a list of ATOMs, and the each ATOM represents each possible IM Server. IM Server names are restricted to POSIX Portable Filename Character Set. To discover if the IM Server is active, see if there is an owner for the selection with that atom name. To learn the address of that IM Server, convert the selection target TRANSPORT, which will return a string form of the transport address(es). To learn the supported locales of that IM Server, convert the selection target LOCALES, which will return a set of names of the supported locales in the syntax X/Open defines. The basic semantics to determine the IM Server if there are multiple ATOMs are found in XIM_SERVERS property, is first fit if the IM Server name is not given as a X modifier's category im. The address information retrievable from the TRANSPORT target is a transport-specific name. The preregistered formats for transport-specific names are listed in . Additional transport-specific names may be registered with X Consortium. For environments that lack X connections, or for IM Servers which do not use the X Window System, the preconnection convention with IM Server may be given outside the X Window system (e.g. using a Name Service). Protocol The protocol described below uses the bi-directional synchronous/asynchronous request/reply/error model and is specified using the same conventions outlined in Section 2 of the core X Window System protocol [1]: Basic Requests Packet Format This section describes the requests that may be exchanged between the client and the IM Server. The basic request packet header format is as follows. major-opcode: CARD8 minor-opcode: CARD8 length: CARD16 The MAJOR-OPCODE specifies which core request or extension package this packet represents. If the MAJOR-OPCODE corresponds to a core request, the MINOR-OPCODE contains 8 bits of request-specific data. (If the MINOR-OPCODE is not used, it is 0.) Otherwise, the MAJOR-OPCODE and the MINOR-OPCODE are specified by XIM_QUERY_EXTENSION message. (Refer to 4.7. Query the supported extension protocol list.) The LENGTH field specifies the number of 4 bytes elements following the header. If no additional data is followed by the header, the LENGTH field will be 0. Data Types The following data types are used in the core X IM Server protocol: BITMASK16 CARD16 BITMASK32 CARD32 PADDING FORMAT Where N is some expression, and Pad(N) is the number of bytes needed to round N up to a Pad(N) = (4 - (N mod 4)) mod 4 LPCE 1 A character from the4 X Portable Character Set in Latin Portable Character Encoding STRING 2 n length of string in bytes n LISTofLPCE string p unused, p=Pad(2+n) STR 1 n length of name in bytes n STRING8 name XIMATTR 2 CARD16 attribute ID (*1) 2 CARD16 type of the value (*2) 2 n length of im-attribute n STRING8 im-attribute p unused, p = Pad(2+n) The im-attribute argument specifies XIM values such as XNQueryInputStyle. XICATTR 2 CARD16 attribute ID (*1) 2 CARD16 type of the value (*2) 2 n length of ic-attribute n STRING8 ic-attribute p unused, p = Pad(2+n) (*1) XIMATTR and XICATTR are used during the setup stage and XIMATTRIBUTE and XICATTRIBUTE are used after each attribute ID has been recognized by the IM Server and the IM library. (*2) The value types are defined as follows: values data format #0 Separator of NestedList -----(*3) #1 byte data CARD8 #2 word data CARD16 #3 long data CARD32 #4 char data STRING8 #5 Window CARD32 #10 XIMStyles 2 n number of XIMStyle list 2 unused n CARD32 XIMStyle list #11 XRectangle 2 INT16 X 2 INT16 Y 2 CARD16 width 2 CARD16 height #12 XPoint 2 INT16 X 2 INT16 Y #13 XFontSet 2 n length of Base font name n STRING8 Base font name list p unused, p = Pad(2+n) #15 XIMHotKeyTriggers 4 n number of XIMTRIGGERKEY list (*4) n XIMTRIGGERKEY XIMHotkeyTrigger list n XIMHOTKEYSTATE HotKey processing state #17 XIMStringConversion XIMSTRCONVTEXT #18 XIMPreeditState XIMPREEDITSTATE #19 XIMResetState XIMRESETSTATE #x7fff NestedList ----- (*3) The IC value for the separator of NestedList is defined as follows, #define XNSeparatorofNestedList "separatorofNestedList" , which is registered in X Consortium and cannot be used for any other purpose. (*4) LISTofFOO A Type name of the form LISTof FOO means a counted list of elements of type FOO. The size of the length field may vary (it is not necessarily the same size as a FOO), and in some cases, it may be implicit. XIMTRIGGERKEY 4 CARD32 keysym 4 CARD32 modifier 4 CARD32 modifier mask ENCODINGINFO 2 n length of encoding info n STRING8 encoding info p unused, p=Pad(2+n) EXT 1 CARD8 extension major-opcode 1 CARD8 extension minor-opcode 2 n length of extension name n STRING8 extension name p unused, p = Pad(n) XIMATTRIBUTE 2 CARD16 attribute ID 2 n value length n value p unused, p = Pad(n) XICATTRIBUTE 2 CARD16 attribute ID 2 n value length n value p unused, p = Pad(n) XIMSTRCONVTEXT 2 CARD16 XIMStringConversionFeedback #x0000001 XIMStringConversionLeftEdge #x0000002 XIMStringConversionRightEdge #x0000004 XIMStringConversionTopEdge #x0000008 XIMStringConversionBottomEdge #x0000010 XIMStringConversionConvealed #x0000020 XIMStringConversionWrapped 2 n byte length of the retrieved string n STRING8 retrieved string p unused, p = Pad(n) 2 m byte length of feedback array 2 unused m LISTofXIMSTRCONVFEEDBACK feedback array(*1) (*1) This field is reserved for future use. XIMFEEDBACK 4 CARD32 XIMFeedback #x000001 XIMReverse #x000002 XIMUnderline #x000004 XIMHighlight #x000008 XIMPrimary #x000010 XIMSecondary #x000020 XIMTertiary #x000040 XIMVisibleToForward #x000080 XIMVisibleToBackward #x000100 XIMVisibleCenter XIMHOTKEYSTATE 4 CARD32 XIMHotKeyState #x0000001 XIMHotKeyStateON #x0000002 XIMHotKeyStateOFF XIMPREEDITSTATE 4 CARD32 XIMPreeditState #x0000001 XIMPreeditEnable #x0000002 XIMPreeditDisable XIMRESETSTATE 4 CARD32 XIMResetState #x0000001 XIMInitialState #x0000002 XIMPreserveState Error Notification Both the IM Server and the IM library return XIM_ERROR messages instead of the corresponding reply messages if any errors occur during data processing. At most one error is generated per request. If more than one error condition is encountered in processing a request, the choice of which error is returned is implementation-dependent. XIM_ERROR (IM Server <--> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 2 BITMASK16 flag (*1) #0000 Both Input-Method-ID and Input-Context-ID are invalid #0001 Input-Method-ID is valid #0002 Input-Context-ID is valid 2 CARD16 Error Code #1 BadAlloc #2 BadStyle #3 BadClientWindow #4 BadFocusWindow #5 BadArea #6 BadSpotLocation #7 BadColormap #8 BadAtom #9 BadPixel #10 BadPixmap #11 BadName #12 BadCursor #13 BadProtocol #14 BadForeground #15 BadBackground #16 LocaleNotSupported #999 BadSomething (*2) 2 n byte length of error detail. 2 CARD16 type of error detail (*3) n STRING8 error detail (*4) p unused, p = Pad(n) (*1) Before an IM is created, both Input-Method-ID and Input-Context-ID are invalid. Before an IC is created, only Input-Method-ID is valid. After that, both of Input-Method-ID and Input-Context-ID are valid. (*2) Unspecific error, for example "language engine died" (*3) This field is reserved for future use. (*4) Vendor defined detail error message Connection Establishment XIM_CONNECT message requests to establish a connection over a mutually-understood virtual stream. XIM_CONNECT (IM library -> IM Server) 1 byte order #x42 MSB first #x6c LSB first 1 unused 2 CARD16 client-major-protocol-version (*1) 2 CARD16 client-minor-protocol-version (*1) 2 CARD16 number of client-auth-protocol-names n LISTofSTRING client-auth-protocol-names (*1) Specify the version of IM Protocol that the client supports. A client must send XIM_CONNECT message as the first message on the connection. The list specifies the names of authentication protocols the sending IM Server is willing to perform. (If the client need not authenticate, the list may be omitted.) XIM_AUTH_REQUIRED message is used to send the authentication protocol name and protocol-specific data. XIM_AUTH_REQUIRED (IM library <--> IM Server) 1 CARD8 auth-protocol-index 3 unused 2 n length of authentication data 2 unused n <varies> data p unused, p = Pad(n) The auth-protocol is specified by an index into the list of names given in the XIM_CONNECT or XIM_AUTH_SETUP message. Any protocol-specific data that might be required is also sent. The IM library sends XIM_AUTH_REPLY message as the reply to XIM_AUTH_REQUIRED message, if the IM Server is authenticated. XIM_AUTH_REPLY (IM library -> IM Server) 2 n length of authentication data 2 unused 2 n length of authentication data 2 unused n <varies> data p unused, p = Pad(n) The auth data is specific to the authentication protocol in use. XIM_AUTH_NEXT message requests to send more auth data. XIM_AUTH_NEXT (IM library <--> IM Server) 2 n length of authentication data 2 unused n <varies> data p unused, p = Pad(n) The auth data is specific to the authentication protocol in use. The IM Server sends XIM_AUTH_SETUP message to authenticate the client. XIM_AUTH_SETUP (IM Server -> IM library) 2 CARD16 number of client-auth-protocol-names 2 unused n LISTofSTRING server-auth-protocol-names The list specifies the names of authentication protocols the client is willing to perform. XIM_AUTH_NG message requests to give up the connection. XIM_AUTH_NG (IM library <--> IM Server) The IM Server sends XIM_CONNECT_REPLY message as the reply to XIM_CONNECT or XIM_AUTH_REQUIRED message. XIM_CONNECT_REPLY (IM Server -> IM library) 2 CARD16 server-major-protocol-version (*1) 2 CARD16 server-minor-protocol-version (*1) (*1) Specify the version of IM Protocol that the IM Server supports. This document specifies major version one, minor version zero. Here are the state diagrams for the client and the IM Server. State transitions for the client init_status: Use authorization function -> client_ask Not use authorization function -> client_no_check start: Send XIM_CONNECT If client_ask -> client_wait1 If client_no_check, client-auth-protocol-names may be omitted -> client_wait2 client_wait1: Receive XIM_AUTH_REQUIRED -> client_check Receive <other> -> client_NG client_check: If no more auth needed, send XIM_AUTH_REPLY -> client_wait2 If good auth data, send XIM_AUTH_NEXT -> client_wait1 If bad auth data, send XIM_AUTH_NG -> give up on this protocol client_wait2: Receive XIM_CONNECT_REPLY -> connect Receive XIM_AUTH_SETUP -> client_more Receive XIM_AUTH_NEXT -> client_more Receive XIM_AUTH_NG -> give up on this protocol Receive <other> -> client_NG client_more: Send XIM_AUTH_REQUIRED -> client_wait2 client_NG: Send XIM_AUTH_NG -> give up on this protocol State transitions for the IM Server init_status: Use authorization function -> server_ask Not use authorization function -> server_no_check start: Receive XIM_CONNECT -> start2 Receive <other> -> server_NG start2: If client_ask, send XIM_AUTH_REQUIRED -> server_wait1 If client_no_check and server_ask, send XIM_AUTH_SETUP -> server_wait2 If client_no_check and server_no_check, send XIM_CONNECT_REPLY -> connect server_wait1: Receive XIM_AUTH_REPLY -> server2 Receive XIM_AUTH_NEXT -> server_more Receive <other> -> server_NG server_more Send XIM_AUTH_REQUIRED -> server_wait1 server2 If server_ask, send XIM_AUTH_SETUP -> server_wait2 If server_no_check, send XIM_CONNECT_REPLY -> connect server_wait2 Receive XIM_AUTH_REQUIRED -> server_check Receive <other> -> server_NG server_check If no more auth data, send XIM_CONNECT_REPLY -> connect If bad auth data, send XIM_AUTH_NG -> give up on this protocol If good auth data, send XIM_AUTH_NEXT -> server_wait2 server_NG Send XIM_AUTH_NG -> give up on this protocol XIM_DISCONNECT message requests to shutdown the connection over a mutually-understood virtual stream. XIM_DISCONNECT (IM library -> IM Server) XIM_DISCONNECT is a synchronous request. The IM library should wait until it receives either an XIM_DISCONNECT_REPLY packet or an XIM_ERROR packet. XIM_DISCONNECT_REPLY (IM Server -> IM library) XIM_OPEN requests to establish a logical connection between the IM library and the IM Server. XIM_OPEN (IM library -> IM Server) n STR locale name p unused, p = Pad(n) XIM_OPEN is a synchronous request. The IM library should wait until receiving either an XIM_OPEN_REPLY packet or an XIM_ERROR packet. XIM_OPEN_REPLY (IM Server -> IM library) 2 CARD16 input-method-ID 2 n byte length of IM attributes supported n LISTofXIMATTR IM attributes supported 2 m byte length of IC attributes supported 2 CARD16 unused m LISTofXICATTR IC attributes supported XIM_OPEN_REPLY message returns all supported IM and IC attributes in LISTofXIMATTR and LISTofXICATTR. These IM and IC attribute IDs are used to reduce the amount of data which must be transferred via the network. In addition, this indicates to the IM library what kinds of IM/IC attributes can be used in this session, and what types of data will be exchanged. This allows the IM Server provider and application writer to support IM system enhancements with new IM/IC attributes, without modifying Xlib. The IC value for the separator of NestedList must be included in the LISTofXICATTR. XIM_CLOSE message requests to shutdown the logical connection between the IM library and the IM Server. XIM_CLOSE (IM library -> IM Server) 2 CARD16 input-method-ID 2 unused XIM_CLOSE is a synchronous request. The IM library should wait until receiving either an XIM_CLOSE_REPLY packet or an XIM_ERROR packet. XIM_CLOSE_REPLY (IM Server -> IM library) 2 CARD16 input-method-ID 2 unused Event Flow Control An IM Server must send XIM_SET_EVENT_MASK message to the IM library in order for events to be forwarded to the IM Server, since the IM library initially doesn't forward any events to the IM Server. In the protocol, the IM Server will specify masks of X events to be forwarded and which need to be synchronized by the IM library. XIM_SET_EVENT_MASK (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 4 EVENTMASK forward-event-mask (*1) 4 EVENTMASK synchronous-event-mask (*2) (*1) Specify all the events to be forwarded to the IM Server by the IM library. (*2) Specify the events to be forwarded with synchronous flag on by the IM library. XIM_SET_EVENT_MASK is an asynchronous request. The event masks are valid immediately after they are set until changed by another XIM_SET_EVENT_MASK message. If input-context-ID is set to zero, the default value of the input-method-ID will be changed to the event masks specified in the request. That value will be used for the IC's which have no individual values. Using the Dynamic Event Flow model, an IM Server sends XIM_REGISTER_TRIGGERKEYS message to the IM library before sending XIM_OPEN_REPLY message. Or the IM library may suppose that the IM Server uses the Static Event Flow model. XIM_REGISTER_TRIGGERKEYS (IM Server -> IM library) 2 CARD16 input-method-ID 2 unused 4 n byte length of on-keys n LISTofXIMTRIGGERKEY on-keys list 4 m byte length of off-keys m LISTofXIMTRIGGERKEY off-keys list XIM_REGISTER_TRIGGERKEYS is an asynchronous request. The IM Server notifys the IM library of on-keys and off-keys lists with this message. The IM library notifys the IM Server with XIM_TRIGGER_NOTIFY message that a key event matching either on-keys or off-keys has been occurred. XIM_TRIGGER_NOTIFY (IM library -> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 4 CARD32 flag #0 on-keys list #1 off-keys list 4 CARD32 index of keys list 4 EVENTMASK client-select-event-mask (*1) (*1) Specify the events currently selected by the IM library with XSelectInput. XIM_TRIGGER_NOTIFY is a synchronous request. The IM library should wait until receiving either an XIM_TRIGGER_NOTIFY_REPLY packet or an XIM_ERROR packet. XIM_TRIGGER_NOTIFY_REPLY (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID Encoding Negotiation XIM_ENCODING_NEGOTIATION message requests to decide which encoding to be sent across the wire. When the negotiation fails, the fallback default encoding is Portable Character Encoding. XIM_ENCODING_NEGOTIATION (IM library -> IM Server).sp 6p 2 CARD16 input-method-ID 2 n byte length of encodings listed by name n LISTofSTR list of encodings supported in the IM library. p unused, p = Pad(n) 2 m byte length of encodings listed by detailed data 2 unused m LISTofENCODINGINFO list of encodings supported in the IM library The IM Server must choose one encoding from the list sent by the IM library. If index of the encoding determined is -1 to indicate that the negotiation is failed, the fallback default encoding is used. The message must be issued after sending XIM_OPEN message via XOpenIM(). The name of encoding may be registered with X Consortium. XIM_ENCODING_NEGOTIATION is a synchronous request. The IM library should wait until receiving either an XIM_ENCODING_NEGOTIATION_REPLY packet or an XIM_ERROR packet. XIM_ENCODING_NEGOTIATION_REPLY (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 category of the encoding determined. #0 name #1 detailed data 2 INT16 index of the encoding determined. 2 unused Query the supported extension protocol list XIM_QUERY_EXTENSION message requests to query the IM extensions supported by the IM Server to which the client is being connected. XIM_QUERY_EXTENSION (IM library -> IM Server) 2 CARD16 input-method-ID 2 n byte length of extensions supported by the IM library n LISTofSTR extensions supported by the IM library p unused, p = Pad(n) An example of a supported extension is FrontEnd. The message must be issued after sending XIM_OPEN message via XOpenIM(). If n is 0, the IM library queries the IM Server for all extensions. If n is not 0, the IM library queries whether the IM Server supports the contents specified in the list. If a client uses an extension request without previously having issued a XIM_QUERY_EXTENSION message for that extension, the IM Server responds with a BadProtocol error. If the IM Server encounters a request with an unknown MAJOR-OPCODE or MINOR-OPCODE, it responds with a BadProtocol error. XIM_QUERY_EXTENSION is a synchronous request. The IM library should wait until receiving either an XIM_QUERY_EXTENSION_REPLY packet or an XIM_ERROR packet. XIM_QUERY_EXTENSION_REPLY (IM Server -> IM library) 2 CARD16 input-method-ID 2 n byte length of extensions supported by both the IM library and the IM Server n LISTofEXT list of extensions supported by both the IM library and the IM Server XIM_QUERY_EXTENSION_REPLY message returns the list of extensions supported by both the IM library and the IM Server. If the list passed in XIM_QUERY_EXTENSION message is NULL, the IM Server returns the full list of extensions supported by the IM Server. If the list is not NULL, the IM Server returns the extensions in the list that are supported by the IM Server. A zero-length string is not a valid extension name. The IM library should disregard any zero-length strings that are returned in the extension list. The IM library does not use the requests which are not supported by the IM Server. Setting IM Values XIM_SET_IM_VALUES requests to set attributes to the IM. XIM_SET_IM_VALUES (IM library -> IM Server) 2 CARD16 input-method-ID 2 n byte length of im-attribute n LISTofXIMATTRIBUTE im-attributes The im-attributes in XIM_SET_IM_VALUES message are specified as a LISTofXIMATTRIBUTE, specifying the attributes to be set. Attributes other than the ones returned by XIM_OPEN_REPLY message should not be specified. XIM_SET_IM_VALUES is a synchronous request. The IM library should wait until receiving either an XIM_SET_IM_VALUES_REPLY packet or an XIM_ERROR packet, because it must receive the error attribute if XIM_ERROR message is returned. XIM_SET_IM_VALUES_REPLY (IM Server -> IM library) 2 CARD16 input-method-ID 2 unused XIM_SET_IM_VALUES_REPLY message returns the input-method-ID to distinguish replies from multiple IMs. Getting IM Values XIM_GET_IM_VALUES requests to query IM values supported by the IM Server currently being connected. XIM_GET_IM_VALUES (IM library -> IM Server) 2 CARD16 input-method-ID 2 n byte length of im-attribute-id n LISTofCARD16 im-attribute-id p unused, p=Pad(n) XIM_GET_IM_VALUES is a synchronous request. The IM library should wait until it receives either an XIM_GET_IM_VALUES_REPLY packet or an XIM_ERROR packet. XIM_GET_IM_VALUES_REPLY (IM Server -> IM library) 2 CARD16 input-method-ID 2 n byte length of im-attributes returned n LISTofXIMATTRIBUTE im-attributes returned The IM Server returns IM values with XIM_GET_IM_VALUES_REPLY message. The order of the returned im-attribute values corresponds directly to that of the list passed with the XIM_GET_IM_VALUES message. Creating an IC XIM_CREATE_IC message requests to create an IC. XIM_CREATE_IC (IM library -> IM Server) 2 CARD16 input-method-ID 2 n byte length of ic-attributes n LISTofXICATTRIBUTE ic-attributes The input-context-id is specified by the IM Server to identify the client (IC). (It is not specified by the client in XIM_CREATE_IC message.), and it should not be set to zero. XIM_CREATE_IC is a synchronous request which returns the input-context-ID. The IM library should wait until it receives either an XIM_CREATE_IC_REPLY packet or an XIM_ERROR packet. XIM_CREATE_IC_REPLY (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID Destroying the IC XIM_DESTROY_IC message requests to destroy the IC. XIM_DESTROY_IC (IM library -> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID XIM_DESTROY_IC is a synchronous request. The IM library should not free its resources until it receives an XIM_DESTROY_IC_REPLY message because XIM_DESTROY_IC message may result in Callback packets such as XIM_PREEDIT_DRAW and XIM_PREEDIT_DONE. XIM_DESTROY_IC_REPLY (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID Setting IC Values XIM_SET_IC_VALUES messages requests to set attributes to the IC. XIM_SET_IC_VALUES (IM library -> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 2 n byte length of ic-attributes 2 unused n LISTofXICATTRIBUTE ic-attributes The ic-attributes in XIM_SET_IC_VALUES message are specified as a LISTofXICATTRIBUTE, specifying the attributes to be set. Attributes other than the ones returned by XIM_OPEN_REPLY message should not be specified. XIM_SET_IC_VALUES is a synchronous request. The IM library should wait until receiving either an XIM_SET_IC_VALUES_REPLY packet or an XIM_ERROR packet, because it must receive the error attribute if XIM_ERROR message is returned. XIM_SET_IC_VALUES_REPLY (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID Getting IC Values XIM_GET_IC_VALUES message requests to query IC values supported by the IM Server currently being connected. XIM_GET_IC_VALUES (IM library -> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 2 n byte length of ic-attribute-id n LISTofCARD16 ic-attribute-id p unused, p=Pad(2+n) In LISTofCARD16, the appearance of the ic-attribute-id for the separator of NestedList shows the end of the heading nested list. XIM_GET_IC_VALUES is a synchronous request and returns each attribute with its values to show the correspondence. The IM library should wait until receiving either an XIM_GET_IC_VALUES_REPLY packet or an XIM_ERROR packet. XIM_GET_IC_VALUES_REPLY (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 2 n byte length of ic-attribute 2 unused n LISTofXICATTRIBUTE ic-attribute Setting IC Focus XIM_SET_IC_FOCUS message requests to set the focus to the IC. XIM_SET_IC_FOCUS (IM library -> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID XIM_SET_IC_FOCUS is an asynchronous request. Unsetting IC Focus XIM_UNSET_IC_FOCUS message requests to unset the focus to the focused IC. XIM_UNSET_IC_FOCUS (IM library -> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID XIM_UNSET_IC_FOCUS is an asynchronous request. Filtering Events Event filtering is mainly provided for BackEnd method to allow input method to capture X events transparently to clients. X Events are forwarded by XIM_FORWARD_EVENT message. This message can be operated both synchronously and asynchronously. If the requester sets the synchronous flag, the receiver must send XIM_SYNC_REPLY message back to the requester when all the data processing is done. Protocol flow of BackEnd model With BackEnd method, the protocol flow can be classified into two methods in terms of synchronization, depending on the synchronous-eventmask of XIM_SET_EVENT_MASK message. One can be called on-demand-synchronous method and another can be called as full-synchronous method. In on-demand-synchronous method, the IM library always receives XIM_FORWARD_EVENT or XIM_COMMIT message as a synchronous request. Also, the IM Server needs to synchronously process the correspondent reply from the IM library and the following XIM_FORWARD_EVENT message sent from the IM library when any of the event causes the IM Server to send XIM_FORWARD_EVENT or XIM_COMMIT message to the IM library, so that the input service is consistent. If the IM library gets the control back from the application after receiving the synchronous request, the IM library replies for the synchronous request before processing any of the events. In this time, the IM Server blocks XIM_FORWARD_EVENT message which is sent by the IM library, and handles it after receiving the reply. However, the IM Server handles the other protocols at any time. In full-synchronous method, the IM library always sends XIM_FORWARD_EVENT message to the IM Server as a synchronous request. Therefore, the reply to it from the IM Server will be put between the XIM_FORWARD_EVENT message and its XIM_SYNC_REPLY message. In case of sending XIM_FORWARD_EVENT or XIM_COMMIT message, the IM Server should set the synchronous flag off. Because the synchronization can be done by the following XIM_SYNC_REPLY message. Following chart shows one of the simplest protocol flow which only deals with keyevents for preediting operation. Sample Protocol Flow Following chart shows one of the complex protocol flow, which deals with multiple focus windows and button press event as well as keyevent, and the focus is moved by the application triggered by both of keyevent and button press event. Sample Protocol Flow 2 XIM_FORWARD_EVENT (IM library <--> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 2 BITMASK16 flag #0001 synchronous #0002 request filtering (*1) #0004 request lookupstring (*2) 2 CARD16 serial number XEVENT X event (*1) Indicate the receiver should filter events and possible preedit may be invoked. (*2) Indicate the receiver should only do lookup string. The IM Server is expected to just do a conversion of the key event to the best candidate. This bit may affect the state of the preedit state (e.g. compose of dead key sequences). XEVENT format is same as the X Protocol event format(xEvent). As the value of xEvent's sequenceNumber is the bottom of 16 bit of XEvent's xany.serial, the top of 16 bit is sent by serial number(INT16). XIM_FORWARD_EVENT message is used for forwarding the events from the IM library to the IM Server in order for IM to be able to filter the event. On the other hand, this message is also used for forwarding the events from the IM Server to the IM library if the event forwarded from the IM library is not filtered. The IM Server, which receives XIM_FORWARD_EVENT message without synchronous bit, should set synchronous bit. If both "request event filtering" and "request lookupstring" flag are set, then both filtering and lookup should be done for the same event. Synchronizing with the IM Server XIM_SYNC message requests to synchronize the IM library and the IM Server. XIM_SYNC (IM library <--> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID This synchronization can be started either on the IM library side or on the IM Server side. The side which receives XIM_SYNC message should process all XIM requests before replying. The input-context-ID is necessary to distinguish the IC with which the IM library and the IM Server are synchronized. XIM_SYNC_REPLY (IM Server <--> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID The side which receives XIM_FORWARD_EVENT, XIM_COMMIT or any other message with synchronous bit, should process all XIM request before replying, and send XIM_SYNC_REPLY message as the reply to the previous message. Sending a committed string When the IM Server commits a string, the IM Server sends either the committed string or list of KeySym, or both, by XIM_COMMIT message. XIM_COMMIT (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 2 BITMASK16 flag #0001 synchronous #0002 XLookupChars #0004 XLookupKeySym #0006 XLookupBoth = XLookupChars | XLookupKeySym If flag is XLookupKeySym, the arguments continue as follows: 2 unused 4 KEYSYM KeySym If flag is XLookupChars, the arguments continue as follows 2 m byte length of committed string m LISTofBYTE committed string p unused, p = Pad(m) If flag is XLookupBoth, the arguments continue as follows 2 unused 4 KEYSYM KeySym 2 n byte length of committed string n LISTofBYTE committed string p unused, p = Pad(2+n) The IM Server which receives XIM_COMMIT message without synchronous bit should set synchronous bit. Reset IC XIM_RESET_IC message requests to reset the status of IC in the IM Server. XIM_RESET_IC (IM library -> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID XIM_RESET_IC is a synchronous request. The IM library should wait until receiving either an XIM_RESET_IC_REPLY packet or an XIM_ERROR packet. XIM_RESET_IC_REPLY (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 2 n byte length of preedit string n LISTofBYTE preedit string p unused, p = Pad(2+n) XIM_RESET_IC_REPLY message returns the input-context-ID to distinguish replies from multiple ICs. Callbacks If XIMStyle has XIMPreeditArea or XIMStatusArea set, XIMGeometryCallback may be used, and if XIMPreeditCallback and/or XIMStatusCallback are set, corresponding callbacks may be used. Any callback request may be sent from an IM Server to an IM client asynchronously in response to any request previously sent by the IM client to the IM Server. When an IM Server needs to send a callback request synchronously with the request previously sent by an IM client, the IM Server sends it before replying to the previous request. Negotiating geometry The IM Server sends XIM_GEOMETRY message to start geometry negotiation, if XIMStyle has XIMPreeditArea or XIMStatusArea set. XIM_GEOMETRY (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID There is always a single Focus Window, even if some input fields have only one IC. Converting a string XIM_STR_CONVERSION (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 2 CARD16 XIMStringConversionPosition 2 unused 4 CARD32 XIMCaretDirection #0 XIMForwardChar #1 XIMBackwardChar #2 XIMForwardWord #3 XIMBackwardWord #4 XIMCaretUp #5 XIMCaretDown #6 XIMNextLine #7 XIMCPreviousLine #8 XIMLineStart #9 XIMLineEnd #10 XIMAbsolutePosition #11 XIMDontChange 2 CARD16 factor 2 CARD16 XIMStringConversionOperation #0001 XIMStringConversionSubstitution #0002 XIMStringConversionRetrieval 2 INT16 byte length to multiply the XIMStringConversionType XIM_STR_CONVERSION message may be used to start the string conversion from the IM Server. XIM_STR_CONVERSION_REPLY (IM library -> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 4 CARD32 XIMStringConversionFeedback XIMSTRCONVTEXT XIMStringConversionText XIM_STR_CONVERSION_REPLY message returns the string to be converted and the feedback information array. Preedit Callbacks The IM Server sends XIM_PREEDIT_START message to call the XIMPreeditStartCallback function. XIM_PREEDIT_START (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID The reply to this message must be sent synchronously. The reply forwards the return value from the callback function to the IM Server. XIM_PREEDIT_START_REPLY (IM library -> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 4 INT32 return value XIM_PREEDIT_START_REPLY message returns the input-context-ID to distinguish replies from multiple IC's. The return value contains the return value of the function XIMPreeditStartCallback. The IM Server sends XIM_PREEDIT_DRAW message to call the XIMPreeditDrawCallback function. XIM_PREEDIT_DRAW (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 4 INT32 caret 4 INT32 chg_first 4 INT32 chg_length 4 BITMASK32 status #x0000001 no string #x0000002 no feedback 2 n length of preedit string n STRING8 preedit string p unused, p = Pad(2+n) 2 m byte length of feedback array 2 unused m LISTofXIMFEEDBACK feedback array The fields "caret", "chg_first" and "chg_length" correspond to the fields of XIMPreeditDrawCallbackStruct. When the "no string" bit of the status field is set, the text field of XIMPreeditDrawCallbackStruct is NULL. When the "no feedback" bit of the status field is set, the text feedback field of XIMPreeditDrawCallbackStruct is NULL. When the above bits are not set, "preedit string" contains the preedit string to be displayed, and the feedback array contains feedback information. The IM Server sends XIM_PREEDIT_CARET message to call the PreeditCaretCallback function. XIM_PREEDIT_CARET (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 4 INT32 position 4 CARD32 direction #0 XIMForwardChar #1 XIMBackwardChar #2 XIMForwardWord #3 XIMBackwardWord #4 XIMCaretUp #5 XIMCaretDown #6 XIMNextLine #7 XIMCPreviousLine #8 XIMLineStart #9 XIMLineEnd #10 XIMAbsolutePosition #11 XIMDontChange 4 CARD32 style #0 XIMInvisible #1 XIMCPrimary #2 XIMSecondary Each entry corresponds to a field of XIMPreeditCaretCallbackStruct. Since this callback sets the caret position, its reply must be sent synchronously. XIM_PREEDIT_CARET_REPLY (IM library -> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 4 CARD32 position The position is the value returned by the callback function after it has been called. The IM Server sends XIM_PREEDIT_DONE message to call the XIMPreeditDoneCallback function. XIM_PREEDIT_DONE (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID Preedit state notify XIM_PREEDITSTATE (IM Server -> IM Library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 4 BITMASK32 XIMPreeditState #x0000000 XIMPreeditUnknown #x0000001 XIMPreeditEnable #x0000002 XIMPreeditDisable XIM_PREEDITSTATE message is used to call the XIMPreeditStateNotifyCallback function. Status Callbacks The IM Server sends XIM_STATUS_START message to call the XIMStatusStartCallback function. XIM_STATUS_START (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID The IM Server sends XIM_STATUS_DRAW message to call the XIMStatusDrawCallback function. XIM_STATUS_DRAW (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 4 CARD32 type #0 XIMTextType #1 XIMBitmapType If type is XIMTextType, the arguments continue as follows. 4 BITMASK32 status #x0000001 no string #x0000002 no feedback 2 n length of status string n STRING8 status string p unused, p = Pad(2+n) 2 m byte length of feedback array 2 unused m LISTofXIMFEEDBACK feedback array If type is XIMBitmapType, the arguments continue as follows. 4 PIXMAP pixmap data The field "type" corresponds to the field in XIMStatusDrawCallbackStruct. The IM Server sends XIM_STATUS_DONE message to call the XIMStatusDoneCallback function. XIM_STATUS_DONE (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID Acknowledgements This document represents the culmination of several years of debate and experiments done under the auspices of the MIT X Consortium i18n working group. Although this was a group effort, the author remains responsible for any errors or omissions. We would like to thank to all members of this group. And we would like to make special thanks to the following people (in alphabetical order) for their participation in the IM Protocol design, Hector Chan, Takashi Fujiwara, Yoshio Horiuchi, Makoto Inada, Hiromu Inukai, Mickael Kung, Seiji Kuwari, Franky Ling, Hiroyuki Machida, Hiroyuki Miyamoto, Frank Rojas, Bob Scheifler, Makiko Shimamura, Shoji Sugiyama, Hidetoshi Tajima, Masaki Takeuchi, Makoto Wakamatsu, Masaki Wakao, Nobuyuki Tanaka, Shigeru Yamada, Katsuhisa Yano, Jinsoo Yoon. References X Window System Protocol Version 11 Robert W.Scheifler Xlib - C Language X Interface" Robert W.Scheifler Common Extensions Extension opcodes and packet names (e.g. XIM_EXT_SET_EVENT_MASK ) for additional extensions may be registered with X Consortium. The following is a commonly well-known extended packet. (1) Extension to manipulate the event handling\fP XIM_EXT_SET_EVENT_MASK message specifies the set of event masks that the IM library should manipulate. XIM_EXT_SET_EVENT_MASK (IM Server -> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 4 EVENTMASK filter-event-mask (*1) 4 EVENTMASK intercept-event-mask (*2) 4 EVENTMASK select-event-mask (*3) 4 EVENTMASK forward-event-mask (*4) 4 EVENTMASK synchronous-event-mask (*5) (*1) Specify the events to be neglected by the IM library via XFilterEvent. (*2) Specify the events to be deselected by the IM library with XSelectInput. (*3) Specify the events to be selected by the IM library with XSelectInput. (*4) Specify all the events to be forwarded to the IM Server by the IM library. (*5) Specify the events to be forwarded with synchronous flag on by the IM library. The IM library must reply XIM_SYNC_REPLY message to the IM Server. This request is valid after the ic is created. (2) Extension for improvement of performance. The following requests may be used for improvement of performance. XIM_EXT_FORWARD_KEYEVENT message may be used instead of XIM_FORWARD_EVENT message. XIM_EXT_FORWARD_KEYEVENT (IM Server <--> IM library) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 2 BITMASK16 flag #0001 synchronous 2 CARD16 sequence number 1 BYTE xEvent.u.u.type 1 BYTE keycode 2 CARD16 state 4 CARD32 time 4 CARD32 window XIM_EXT_MOVE message may be used to change the spot location instead of XIM_SET_IC_VALUES message. It is effective only if the client specified XIMPreeditPosition. XIM_EXT_MOVE (IM library -> IM Server) 2 CARD16 input-method-ID 2 CARD16 input-context-ID 2 INT16 X 2 INT16 Y XIM_EXT_MOVE message is a asynchronous request. Transport List The list of transport specific IM Server address format registered The following format represents the ATOM contained in XIM_SERVERS property and the string returned from the request converting selection target LOCALES and TRANSPORT. "{category=[value,...]}..." The following categories are currently registered. server;: IM Server name (used for XIM_SERVERS) locale;: XPG4 locale name (LOCALES) transport;: transport-specific name (TRANSPORT) The preregistered formats for transport-specific names are as follows: TCP/IP Names The following syntax should be used for system internal domain names: <local name> ::= "local/"<hostname>":"<pathname> Where <pathname> is a path name of socket address. IM Server's name should be set to <pathname> to run multiple IM Server at the same time The following syntax should be used for Internet domain names: <TCP name> ::= "tcp/"<hostname>":"<ipportnumber> where <hostname> is either symbolic (such as expo.lcs.mit.edu) or numeric decimal (such as 18.30.0.212). The <ipportnumber> is the port on which the IM Server is listening for connections. For example: tcp/expo.lcs.mit.edu:8012 tcp/18.30.0.212:7890 DECnet Names The following syntax should be used for DECnet names: <DECnet name> ::= "decnet/"<nodename>"::IMSERVER$"<objname> where <nodename> is either symbolic (such as SRVNOD) or the numeric decimal form of the DECnet address (such as 44.70). The <objname> is normal, case-insensitive DECnet object name. For example: DECNET/SRVNOD::IMSERVER$DEFAULT decnet/44.70::IMSERVER$other X Names The following syntax should be used for X names: <X name> ::= "X/" If a given category has multiple values, the value is evaluated in order of setting. Protocol Number Major Protocol number XIM_CONNECT #001 XIM_CONNECT_REPLY #002 XIM_DISCONNECT #003 XIM_DISCONNECT_REPLY #004 XIM_AUTH_REQUIRED #010 XIM_AUTH_REPLY #011 XIM_AUTH_NEXT #012 XIM_AUTH_SETUP #013 XIM_AUTH_NG #014 XIM_ERROR #020 XIM_OPEN #030 XIM_OPEN_REPLY #031 XIM_CLOSE #032 XIM_CLOSE_REPLY #033 XIM_REGISTER_TRIGGERKEYS #034 XIM_TRIGGER_NOTIFY #035 XIM_TRIGGER_NOTIFY_REPLY #036 XIM_SET_EVENT_MASK #037 XIM_ENCODING_NEGOTIATION #038 XIM_ENCODING_NEGOTIATION_REPLY #039 XIM_QUERY_EXTENSION #040 XIM_QUERY_EXTENSION_REPLY #041 XIM_SET_IM_VALUES #042 XIM_SET_IM_VALUES_REPLY #043 XIM_GET_IM_VALUES #044 XIM_GET_IM_VALUES_REPLY #045 XIM_CREATE_IC #050 XIM_CREATE_IC_REPLY #051 XIM_DESTROY_IC #052 XIM_DESTROY_IC_REPLY #053 XIM_SET_IC_VALUES #054 XIM_SET_IC_VALUES_REPLY #055 XIM_GET_IC_VALUES #056 XIM_GET_IC_VALUES_REPLY #057 XIM_SET_IC_FOCUS #058 XIM_UNSET_IC_FOCUS #059 XIM_FORWARD_EVENT #060 XIM_SYNC #061 XIM_SYNC_REPLY #062 XIM_COMMIT #063 XIM_RESET_IC #064 XIM_RESET_IC_REPLY #065 XIM_GEOMETRY #070 XIM_STR_CONVERSION #071 XIM_STR_CONVERSION_REPLY #072 XIM_PREEDIT_START #073 XIM_PREEDIT_START_REPLY #074 XIM_PREEDIT_DRAW #075 XIM_PREEDIT_CARET #076 XIM_PREEDIT_CARET_REPLY #077 XIM_PREEDIT_DONE #078 XIM_STATUS_START #079 XIM_STATUS_DRAW #080 XIM_STATUS_DONE #081 XIM_PREEDITSTATE #082 (*) The IM Server's extension protocol number should be more than #128. Implementation Tips (1) FrontEnd Method FrontEnd method is recognized as a performance acceleration by the trade off of the variety of the reliability. In order to use the FrontEnd method, the IM library must query the IM Server to see if the FrontEnd extension is available. The query is made by using the XIM_QUERY_EXTENSION message. The IM Server may send XIM_EXT_SET_EVENT_MASK message with intercept-event-mask, forward-event-mask, and synchronous-event-mask values set after replying XIM_QUERY_EXTENSION_REPLY message. FrontEnd method can be implemented in a couple of ways depending on how the IM Server utilize XIM_EXT_SET_EVENT_MASK message. One approach is to update both of the input mask and the filter-event-mask depending on the preeidting state. The sample protocol sequence using the static event flow is as follows: The flow of events To pursuit a maximum performance regardless of the preediting mode, the IM Server may use the dynamic event flow with the following sample protocol sequence. The flow of events This method can reduce the XIM protocol traffic dramatically by updating intercept-event-mask and select-event-mask accordingly. The tradeoff of this performance improvement is that the key events may be lost or disordered in some particular situation, such as when the user types the keyboard in following sequence really fast: <preediting on key>"some strings"<preediting off key>"another string" Since this method requires the input mask updates to the both the IM Server and Xlib when turning on and off the preediting, and there is a time lag till the requests take effect when two client issues the input mask updates simultaneously. Another approach of the FrontEnd method is to update the filter-event-mask depending on the preediting state and not to update the input mask. The IM Server must register both of the preediting on key list and off key list by XIM_REGISTER_TRIGGERKEYS message. In this method, Both the IM Server and the IM client select the same events on the same client's window, so that the events are delivered to both of the IM Server and the client. The preediting on and off states are expressed by whether the key events are filtered or not. The sample protocol sequence are as follows: <<Using static event flow>> The flow of events <<Using the dynamic event flow>> The flow of events This method does not have the problem of the time lag when going across the preediting on and off mode, however, the amount of the performance acceleration is not as good as the method described above. In general, the FrontEnd method requires some synchronization to some of the X protocols, such as the ChangeWindowAttribute protocol for the event mask change or the GrabKey protocol, since it relies on the X's principal event dispatching mechanism. Any X protocol bindings do not consider the synchronization might cause some mis-synchronization between the IM clients and the IM Server. (2) Transport Layer The Xlib XIM implementation is layered into three functions, a protocol layer, an interface layer and a transport layer. The purpose of this layering is to make the protocol independent of transport implementation. Each function of these layers are: The protocol layer implements overall function of XIM and calls the interface layer functions when it needs to communicate to IM Server. The interface layer separates the implementation of the transport layer from the protocol layer, in other words, it provides implementation independent hook for the transport layer functions. The transport layer handles actual data communication with IM Server. It is done by a set of several functions named transporters. The interface layer and the transport layer make various communication channels usable such as X Protocol, TCP/IP, DECnet or STREAM. The following is a sample implementation for the transporter using the X connection. Refer to "xtrans" for the transporter using Socket Transport. At the beginning of the X Transport connection for the XIM transport mechanism, two different windows must be created either in an Xlib XIM or in an IM Server, with which the Xlib and the IM Server exchange the XIM transports by using the ClientMessage events and Window Properties. In the following, the window created by the Xlib is referred as the "client communication window", and on the other hand, the window created by the IM Server is referred as the "IMS communication window". Connection In order to establish a connection, a communication window is created. A ClientMessage in the following event's format is sent to the owner window of XIM_SERVER selection, which the IM Server has created. Refer to "The Input Method Protocol" for the XIM_SERVER atom. The ClientMessage sent to the IMS window. Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window IMS Window ID Atom message_type XInternAtom(display, "_XIM_XCONNECT", False) int format 32 long data.l[0] client communication window ID long data.l[1] client-major-transport-version (*1) long data.l[2] client-major-transport-version (*1)
In order to establish the connection (to notify the IM Server communication window), the IM Server sends a ClientMessage in the following event's format to the client communication window. The ClientMessage sent by the IM Server. Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window client communication window ID Atom message_type XInternAtom(display, "_XIM_XCONNECT", False) int format 32 long data.l[0] IMS communication window ID long data.l[1] server-major-transport-version (*1) long data.l[2] server-minor-transport-version (*1) long data.l[3] dividing size between ClientMessage and Property (*2)
(*1) major/minor-transport-version The read/write method is decided by the combination of major/minor-transport-version, as follows: The read/write method and the major/minor-transport-version Transport-version read/write major minor 0 0 only-CM & Property-with-CM 1 only-CM & multi-CM 2 only-CM & multi-CM & Property-with-CM 1 0 PropertyNotify 2 0 only-CM & PropertyNotify 1 only-CM & multi-CM & PropertyNotify
only-CM : data is sent via a ClientMessage multi-CM : data is sent via multiple ClientMessages Property-with-CM : data is written in Property, and its Atom is send via ClientMessage PropertyNotify : data is written in Property, and its Atom is send via PropertyNotify The method to decide major/minor-transport-version is as follows: The client sends 0 as major/minor-transport-version to the IM Server. The client must support all methods in Table D-3. The client may send another number as major/minor-transport-version to use other method than the above in the future. The IM Server sends its major/minor-transport-version number to the client. The client sends data using the method specified by the IM Server. If major/minor-transport-version number is not available, it is regarded as 0. (*2) dividing size between ClientMessage and Property If data is sent via both of multi-CM and Property, specify the dividing size between ClientMessage and Property. The data, which is smaller than this size, is sent via multi-CM (or only-CM), and the data, which is lager than this size, is sent via Property. read/write The data is transferred via either ClientMessage or Window Property in the X Window System. Format for the data from the Client to the IM Server ClientMessage If data is sent via ClientMessage event, the format is as follows: The ClientMessage event's format (first or middle) Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window IMS communication window ID Atom message_type XInternAtom(display, "_XIM_MOREDATA", False) int format 8 char data.b[20] (read/write DATA : 20 byte)
The ClientMessage event's format (only or last) Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window IMS communication window ID Atom message_type XInternAtom(display, "_XIM_PROTOCOL", False) int format 8 char data.b[20] (read/write DATA : MAX 20 byte) (*1)
(*1) If the data is smaller than 20 byte, all data other than available data must be 0. Property In the case of large data, data will be sent via the Window Property for the efficiency. There are the following two methods to notify Property, and transport-version is decided which method is used. The XChangeProperty function is used to store data in the client communication window, and Atom of the stored data is notified to the IM Server via ClientMessage event. The XChangeProperty function is used to store data in the client communication window, and Atom of the stored data is notified to the IM Server via PropertyNotify event. The arguments of the XChangeProperty are as follows: The XChangeProperty event's format Argument Contents Display *display The display to which connects Window window IMS communication window ID Atom property read/write property Atom (*1) Atom type XA_STRING int format 8 int mode PropModeAppend u_char *data read/write DATA int nelements length of DATA
The read/write property ATOM allocates the following strings by XInternAtom. "_clientXXX" The client changes the property with the mode of PropModeAppend and the IM Server will read it with the delete mode i.e. (delete = True). If Atom is notified via ClientMessage event, the format of the ClientMessage is as follows: The ClientMessage event's format to send Atom of property Structure Members Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window IMS communication window ID Atom message_type XInternAtom(display, "_XIM_PROTOCOL", False) int format 32 long data.l[0] length of read/write property Atom long data.l[1] read/write property Atom
Format for the data from the IM Server to the Client ClientMessage The format of the ClientMessage is as follows: The ClientMessage event's format (first or middle) Structure Members Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window client communication window ID Atom message_type XInternAtom(display, "_XIM_MOREDATA", False) int format 8 char data.b[20] (read/write DATA : 20 byte)
The ClientMessage event's format (only or last) Structure Members Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window client communication window ID Atom message_type XInternAtom(display, "_XIM_PROTOCOL", False) int format 8 char data.b[20] (read/write DATA : MAX 20 byte) (*1)
(*1) If the data size is smaller than 20 bytes, all data other than available data must be 0. Property In the case of large data, data will be sent via the Window Property for the efficiency. There are the following two methods to notify Property, and transport-version is decided which method is used. The XChangeProperty function is used to store data in the IMS communication window, and Atom of the property is sent via the ClientMessage event. The XChangeProperty function is used to store data in the IMS communication window, and Atom of the property is sent via PropertyNotify event. The arguments of the XChangeProperty are as follows: The XChangeProperty event's format Argument Contents Display *display The display which to connects Window window client communication window ID Atom property read/write property Atom (*1) Atom type XA_STRING int format 8 int mode PropModeAppend u_char *data read/write DATA int nelements length of DATA
(*1) The read/write property ATOM allocates some strings, which are not allocated by the client, by XInternAtom. The IM Server changes the property with the mode of PropModeAppend and the client reads it with the delete mode, i.e. (delete = True). If Atom is notified via ClientMessage event, the format of the ClientMessage is as follows: The ClientMessage event's format to send Atom of property Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window client communication window ID Atom message_type XInternAtom(display, "_XIM_PROTOCOL", False) int format 32 long data.l[0] length of read/write property ATOM long data.l[1] read/write property ATOM
Closing Connection If the client disconnect with the IM Server, shutdown function should free the communication window properties and etc..
libX11-1.8.12/specs/XIM/staticflow.svg0000644014310600000120000002425314763154126013005 image/svg+xml IM Library IM Server Keys in the on-key-list event mask is changedto deselect the event event mask is changedto select the event XIM_FORWARD_EVENT XIM_EXT_SET_EVENT_MASK intercept-event-mask is set XIM_EXT_SET_EVENT_MASK select-event-mask is set event mask is changedto select the event X events directly cometo the IM Server when preediting is turned off event mask is changedto deselect the event libX11-1.8.12/specs/XIM/Makefile.am0000644014310600000120000000102214763154126012126 if ENABLE_SPECS # Main DocBook/XML files (DOCTYPE book) docbook = xim.xml # Included chapters, appendix, images chapters = \ dynamicflowsampleseq.svg \ dynamicflow.svg \ eventflow.svg \ sampleprotocolflow1.svg \ sampleprotocolflow2.svg \ staticflowsampleseq.svg \ staticflow.svg # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/XIM # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_SPECS libX11-1.8.12/specs/XIM/dynamicflow.svg0000644014310600000120000002555014763154126013143 image/svg+xml IM Library IM Server Keys in the on-key-list event mask is changedto deselect the event event mask is changedto select the event XIM_EXT_SET_EVENT_MASK intercept-event-mask is set XIM_EXT_SET_EVENT_MASK select-event-mask is set event mask is changedto select the event X events directly cometo the IM Server when preediting is turned off event mask is changedto deselect the event XIM_TRIGGER_NOTIFY XIM_TRIGGER_NOTIFY_REPLY libX11-1.8.12/specs/XIM/sampleprotocolflow1.svg0000644014310600000120000010310114763154126014630 image/svg+xml Key event Key event Xib API IM library XNextEvent XFilterEvent XNextEvent XFilterEvent XNextEvent XFilterEvent(returns False) XmbLookupString XIM_FORWARD_EVENT XIM_FORWARD_EVENTor XIM_COMMIT(synchronous) XIM_FORWARD_EVENT XIM_SYNC XIM_SYNC_REPLY XIM_SET_IC_FOCUS XIM_SYNC_REPLY asa reply of the XIM_FORWARD_EVENT IM Server synchronousrequest processed(The focusedIC is changed) processed processed XSetICFocus XNextEvent Application movesthe focus Pending libX11-1.8.12/specs/XIM/dynamicflowsampleseq.svg0000644014310600000120000003672514763154126015064 image/svg+xml IM Library IM Server Keys in the on-key-list XIM_EXT_SET_EVENT_MASK intercept-event-mask is set XIM_EXT_SET_EVENT_MASK select-event-mask is set XIM_TRIGGER_NOTIFY the specified eventsare being filtered Keys in the off-key-list the specified eventsare being processed Keys in the on-key-list the specified eventsare being processed Keys in the off-key-list the specified eventsare being discarded XIM_TRIGGER_NOTIFY_REPLY libX11-1.8.12/specs/Makefile.in0000644014310600000120000005272214763154147011522 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Copyright (c) 2010, Oracle and/or its affiliates. # # 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. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = specs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = libX11 i18n XIM XKB all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/specs/Makefile.am0000644014310600000120000000223014763154126011473 # # Copyright (c) 2010, Oracle and/or its affiliates. # # 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. # SUBDIRS=libX11 i18n XIM XKB libX11-1.8.12/specs/XKB/0000755014310600000120000000000014763154172010147 5libX11-1.8.12/specs/XKB/ch18.xml0000644014310600000120000010557414763154126011367 Symbolic Names The core protocol does not provide any information to clients other than that actually used to interpret events. This makes it difficult to write an application that presents the keyboard to a user in an easy-to-understand way. Such applications have to examine the vendor string and keycodes to determine the type of keyboard connected to the server and then examine keysyms and modifier mappings to determine the effects of most modifiers (the Shift, Lock and Control modifiers are defined by the core protocol but no semantics are implied for any other modifiers). To make it easier for applications to present a keyboard to the user, Xkb supports symbolic names for most components of the keyboard extension. Most of these symbolic names are grouped into the names component of the keyboard description. The XkbNamesRec Structure XkbKeyNameRec XkbKeyAliasRec XkbNamesRec The names component of the keyboard description is defined as follows: #define XkbKeyNameLength 4 #define XkbKeyNumVirtualMods 16 #define XkbKeyNumIndicators 32 #define XkbKeyNumKbdGroups 4 #define XkbMaxRadioGroups 32 typedef struct { char name[XkbKeyNameLength]; /* symbolic key names */ } XkbKeyNameRec, *XkbKeyNamePtr; typedef struct { char real[XkbKeyNameLength]; /* this key name must be in the keys array */ char alias[XkbKeyNameLength]; /* symbolic key name as alias for the key */ } XkbKeyAliasRec, *XkbKeyAliasPtr; typedef struct _XkbNamesRec { Atom keycodes; /* identifies range and meaning of keycodes */ Atom geometry; /* identifies physical location, size, and shape of keys */ Atom symbols; /* identifies the symbols logically bound to the keys */ Atom types; /* identifies the set of key types */ Atom compat; /* identifies actions for keys using core protocol */ Atom vmods[XkbNumVirtualMods]; /* symbolic names for virtual modifiers */ Atom indicators[XkbNumIndicators]; /* symbolic names for indicators */ Atom groups[XkbNumKbdGroups]; /* symbolic names for keyboard groups */ XkbKeyNamePtr keys; /* symbolic key name array */ XkbKeyAliasPtr key_aliases; /* real/alias symbolic name pairs array */ Atom * radio_groups; /* radio group name array */ Atom phys_symbols; /* identifies the symbols engraved on the keyboard */ unsigned char num_keys; /* number of keys in the keys array */ unsigned char num_key_aliases; /* number of keys in the key_aliases array */ unsigned short num_rg; /* number of radio groups */ } XkbNamesRec, *XkbNamesPtr; The keycodes name identifies the range and meaning of the keycodes returned by the keyboard in question. The geometry name, on the other hand, identifies the physical location, size and shape of the various keys on the keyboard. As an example to distinguish between these two names, consider function keys on PC-compatible keyboards. Function keys are sometimes above the main keyboard and sometimes to the left of the main keyboard, but the same keycode is used for the key that is logically F1 regardless of physical position. Thus, all PC-compatible keyboards share a similar keycodes name but may have different geometry names. The keycodes name is intended to be a very general description of the keycodes returned by a keyboard; a single keycodes name might cover keyboards with differing numbers of keys provided all keys have the same semantics when present. For example, 101 and 102 key PC keyboards might use the same name. In these cases, applications can use the keyboard geometry name to determine which subset of the named keycodes is in use. The symbols name identifies the symbols logically bound to the keys. The symbols name is a human or application-readable description of the intended locale or usage of the keyboard with these symbols. The phys_symbols name, on the other hand, identifies the symbols actually engraved on the keyboard. Given this, the symbols name and phys_symbols names might be different. For example, the description for a keyboard that has English US engravings, but that is using Swiss German symbols might have a phys_symbols name of "en_US" and a symbols name of "de_CH." The types name provides some information about the set of key types (see section 15.2) that can be associated with the keyboard. In addition, each key type can have a name, and each shift level of a type can have a name. Although these names are stored in the map description with each of the types, they are accessed using the same methods as the other symbolic names. The compat name provides some information about the rules used to bind actions to keys that are changed using core protocol requests. Xkb provides symbolic names for each of the 4 keyboard groups, 16 virtual modifiers, 32 keyboard indicators, and 4 keyboard groups. These names are held in the vmods, indicators, and groups fixed-length arrays. Each key has a four-byte symbolic name. All of the symbolic key names are held in the keys array, and num_keys reports the number of entries that are in the keys array. For each key, the key name links keys with similar functions or in similar positions on keyboards that report different keycodes. For example, the F1 key may emit keycode 23 on one keyboard and keycode 86 on another. By naming this key "FK01" on both keyboards, the keyboard layout designer can reuse parts of keyboard descriptions for different keyboards. Key aliases allow the keyboard layout designer to assign multiple key names to a single key. This allows the keyboard layout designer to refer to keys using either their position or their function. For example, a keyboard layout designer may wish to refer to the left arrow key on a PC keyboard using the ISO9995-5 positional specification of A31 or using the functional specification of LEFT. The key_aliases field holds a variable-length array of real and alias key name pairs, and the total number of entries in the key_aliases array is held in num_key_aliases. For each real and alias key name pair, the real field refers to the a name in the keys array, and the alias field refers to the alias for that key. Using the previous example, the keyboard designer may use the name A31 in the keys array, but also define the name LEFT as an alias for A31 in the key_aliases array. Key aliases defined in the geometry component of a keyboard mapping (see ) override those defined in the keycodes component of the server database, which are stored in the XkbNamesRec (xkb->names). Therefore, consider the key aliases defined by the geometry before considering key aliases supplied by the XkbNamesRec. A radio group is a set of keys whose behavior simulates a set of radio buttons. Once a key in a radio group is pressed, it stays logically depressed until another key in the group is pressed, at which point the previously depressed key is logically released. Consequently, at most one key in a radio group can be logically depressed at one time. Each radio group in the keyboard description can have a name. These names are held in the variable-length array radio_groups, and num_rg tells how many elements are in the radio_groups array. Symbolic Names Masks Xkb provides several functions that work with symbolic names. Each of these functions uses a mask to specify individual fields of the structures described above. These masks and their relationships to the fields in a keyboard description are shown in Table 18.1. Symbolic Names Masks Mask Bit Value Keyboard Component Field XkbKeycodesNameMask (1<<0) Xkb->names keycodes XkbGeometryNameMask (1<<1) Xkb->names geometry XkbSymbolsNameMask (1<<2) Xkb->names symbols XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols XkbTypesNameMask (1<<4) Xkb->names type XkbCompatNameMask (1<<5) Xkb->names compat XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*] XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*] XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*] XkbGroupNamesMask (1<<12) Xkb->names groups[*] XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg XkbComponentNamesMask (0x3f) Xkb->names keycodes, geometry, symbols, physical symbols, types, and compatibility map XkbAllNamesMask (0x3fff) Xkb->names all name components
Getting Symbolic Names From the Server To obtain symbolic names from the server, use XkbGetNames. XkbGetNames Status XkbGetNames Display *dpy unsigned int which XkbDescPtr xkb dpy connection to the X server which mask of names or map components to be updated xkb keyboard description to be updated XkbGetNames retrieves symbolic names for the components of the keyboard extension from the X server. The which parameter specifies the name components to be updated in the xkb parameter, and is the bitwise inclusive OR of the valid names mask bits defined in Table 18.1. If the names field of the keyboard description xkb is NULL, XkbGetNames allocates and initializes the names component of the keyboard description before obtaining the values specified by which. If the names field of xkb is not NULL, XkbGetNames obtains the values specified by which and copies them into the keyboard description xkb. If the map component of the xkb parameter is NULL, XkbGetNames does not retrieve type or shift level names, even if XkbKeyTypeNamesMask or XkbKTLevelNamesMask are set in which. XkbGetNames can return Success, or BadAlloc, BadLength, BadMatch, and BadImplementation errors. To free symbolic names, use XkbFreeNames (see section 18.6) Changing Symbolic Names on the Server To change the symbolic names in the server, first modify a local copy of the keyboard description and then use either XkbSetNames, or, to save network traffic, use a XkbNameChangesRec structure and call XkbChangeNames to download the changes to the server. XkbSetNames and XkbChangeNames can generate BadAlloc, BadAtom, BadLength, BadMatch, and BadImplementation errors. XkbSetNames Bool XkbSetNames Display *dpy unsigned int which unsigned int first_type unsigned int num_types XkbDescPtr xkb dpy connection to the X server which mask of names or map components to be changed first_type first type whose name is to be changed num_types number of types for which names are to be changed xkb keyboard description from which names are to be taken Use XkbSetNames to change many names at the same time. For each bit set in which, XkbSetNames takes the corresponding value (or values in the case of arrays) from the keyboard description xkb and sends it to the server. The first_type and num_types arguments are used only if XkbKeyTypeNamesMask or XkbKTLevelNamesMask is set in which and specify a subset of the types for which the corresponding names are to be changed. If either or both of these mask bits are set but the specified types are illegal, XkbSetNames returns False and does not update any of the names specified in which. The specified types are illegal if xkb does not include a map component or if first_type and num_types specify types that are not defined in the keyboard description. <sect3 id='The_XkbNameChangesRec_Structure'> <title>The XkbNameChangesRec Structure XkbNameChangesRec The XkbNameChangesRec allows applications to identify small modifications to the symbolic names and effectively reduces the amount of traffic sent to the server: typedef struct _XkbNameChanges { unsigned int changed; /* name components that have changed */ unsigned char first_type; /* first key type with a new name */ unsigned char num_types; /* number of types with new names */ unsigned char first_lvl; /* first key type with new level names */ unsigned char num_lvls; /* number of key types with new level names */ unsigned char num_aliases; /* if key aliases changed, total number of key aliases */ unsigned char num_rg; /* if radio groups changed, total number of radio groups */ unsigned char first_key; /* first key with a new name */ unsigned char num_keys; /* number of keys with new names */ unsigned short changed_vmods; /* mask of virtual modifiers for which names have changed */ unsigned long changed_indicators; /* mask of indicators for which names were changed */ unsigned char changed_groups; /* mask of groups for which names were changed */ } XkbNameChangesRec, *XkbNameChangesPtr; The changed field specifies the name components that have changed and is the bitwise inclusive OR of the valid names mask bits defined in Table 18.1. The rest of the fields in the structure specify the ranges that have changed for the various kinds of symbolic names, as shown in Table 18.2. XkbNameChanges Fields Mask Fields Component Field XkbKeyTypeNamesMask first_type, num_types Xkb->map type[*].name XkbKTLevelNamesMask first_lvl, num_lvls Xkb->map type[*].lvl_names[*] XkbKeyAliasesMask num_aliases Xkb->names key_aliases[*] XkbRGNamesMask num_rg Xkb->names radio_groups[*] XkbKeyNamesMask first_key, num_keys Xkb->names keys[*] XkbVirtualModNamesMask changed_vmods Xkb->names vmods[*] XkbIndicatorNamesMask changed_indicators Xkb->names indicators[*] XkbGroupNamesMask changed_groups Xkb->names groups[*]
XkbChangeNames provides a more flexible method for changing symbolic names than XkbSetNames and requires the use of an XkbNameChangesRec structure. XkbChangeNames Bool XkbChangeNames Display *dpy XkbDescPtr xkb XkbNameChangesPtr changes dpy connection to the X server xkb keyboard description from which names are to be taken changes names map components to be updated on the server XkbChangeNames copies any names specified by changes from the keyboard description, xkb, to the X server specified by dpy. XkbChangeNames aborts and returns False if any illegal type names or type shift level names are specified by changes.
Tracking Name Changes eventsXkbNamesNotify XkbNamesNotifyEvent Whenever a symbolic name changes in the server’s keyboard description, the server sends a XkbNamesNotify event to all interested clients. To receive name notify events, use XkbSelectEvents (see section 4.3) with XkbNamesNotifyMask in both the bits_to_change and values_for_bits parameters. To receive events for only specific names, use XkbSelectEventDetails. Set the event_type parameter to XkbNamesNotify, and set both the bits_to_change and values_for_bits detail parameter to a mask composed of a bitwise OR of masks in Table 18.1. The structure for the XkbNamesNotify event is defined as follows: typedef struct { int type; /* Xkb extension base event code */ unsigned long serial; /* X server serial number for event */ Bool send_event; /* True ⇒ synthetically generated */ Display * display; /* server connection where event generated */ Time time; /* server time when event generated */ int xkb_type; /* XkbNamesNotify */ int device; /* Xkb device ID, will not be XkbUseCoreKbd */ unsigned int changed; /* mask of name components that have changed */ int first_type; /* first key type with a new name */ int num_types; /* number of types with new names */ int first_lvl; /* first key type with new level names */ int num_lvls; /* number of key types with new level names */ int num_aliases; /* if key aliases changed, total number of key aliases */ int num_radio_groups; /* if radio groups changed, total number of radio groups */ unsigned int changed_vmods; /* mask of virtual modifiers for which names have changed */ unsigned int changed_groups; /* mask of groups for which names were changed */ unsigned int changed_indicators; /* mask of indicators for which names were changed */ int first_key; /* first key with a new name */ int num_keys; /* number of keys with new names */ } XkbNamesNotifyEvent; The changed field specifies the name components that have changed and is the bitwise inclusive OR of the valid names mask bits defined in Table 18.1. The other fields in this event are interpreted as the like-named fields in an XkbNameChangesRec , as previously defined. When your application receives a XkbNamesNotify event, you can note the changed names in a changes structure using XkbNoteNameChanges. XkbNoteNameChanges void XkbNoteNameChanges XkbNameChangesPtr old XkbNamesNotifyEvent *new unsigned int wanted old XkbNameChangesRec structure to be updated new event from which changes are to be copied wanted types of names for which changes are to be noted The wanted parameter is the bitwise inclusive OR of the valid names mask bits shown in Table 18.1. XkbNoteNameChanges copies any changes that are reported in new and specified in wanted into the changes record specified by old. Allocating and Freeing Symbolic Names Most applications do not need to directly allocate symbolic names structures. Do not allocate a names structure directly using malloc or Xmalloc if your application changes the number of key aliases or radio groups or constructs a symbolic names structure without loading the necessary components from the X server. Instead use XkbAllocNames. XkbAllocNames Status XkbAllocNames XkbDescPtr xkb unsigned int which int num_rg int num_key_aliases xkb keyboard description for which names are to be allocated which mask of names to be allocated num_rg total number of radio group names needed num_key_aliases total number of key aliases needed XkbAllocNames can return BadAlloc, BadMatch, and BadValue errors. The which parameter is the bitwise inclusive OR of the valid names mask bits defined in Table 18.1. Do not free symbolic names structures directly using free or XFree. Use XkbFreeNames instead. XkbFreeNames void XkbFreeNames XkbDescPtr xkb unsigned int which Bool free_map xkb keyboard description for which names are to be freed which mask of names components to be freed free_map True ⇒ XkbNamesRec structure itself should be freed The which parameter is the bitwise inclusive OR of the valid names mask bits defined in Table 18.1.
libX11-1.8.12/specs/XKB/XKBlib-16.svg0000644014310600000120000007141714763154126012160 image/svg+xml unsigned char(s)(array) unsigned short(s)(array) unsigned short(s)(array) XkbBehaviors(s)(array) XkbActions(s)(array) KeyCode XkbServerMapRec num_acts size_acts acts behaviors key_acts explicit vmods[16] vmodmap libX11-1.8.12/specs/XKB/XKBlib-11.svg0000644014310600000120000012536514763154126012155 image/svg+xml XkbGeometryRec,XkbColorRec, andXkbShapeRecrepeated fromFigure 16.4 . . . label_color base_color properties colors shapes sections doodads key_aliases XkbGeometryRec . . . color_ndx shape_ndx . . . XkbShapeDoodadRec(s) . . . color_ndx XkbTextDoodadRec(s) doodads arraymay containany of thesedoodad types shape_ndx on_color_ndx off_color_ndx . . . XkbIndicatorDoodadRec(s) color_ndx shape_ndx . . . XkbLogoDoodadRec(s) outlines approx primary bounds XkbShapeRec(s)(array) . . . XkbColorRec(s)(array) libX11-1.8.12/specs/XKB/ch11.xml0000644014310600000120000004444014763154126011352 X Library Controls The Xkb extension is composed of two parts: a server extension, and a client-side X library extension. discusses functions used to modify controls affecting the behavior of the server portion of the Xkb extension. This chapter discusses functions used to modify controls that affect only the behavior of the client portion of the extension; these controls are known as Library Controls. library controls controlslibrary All of the Library Controls are boolean flags that may be enabled and disabled. The controls can be divided into several categories: Controls affecting general string lookups Controls affecting compose processing Controls affecting event delivery There are two types of string lookups performed by XLookupString. XLookupString The first type involves translating a single keycode into a string; the controls in the first category affect this type of lookup. The second type involves translating a series of keysyms into a string; the controls in the second category affect this type of lookup. An Xkb implementation is required to support the programming interface for all of the controls. However, an implementation may choose not to support the semantics associated with the controls that deal with compose processing. In this case, a program that accesses these controls should still function normally; however, the feedback that would normally occur with the controls enabled may be missing. Controls Affecting Keycode-to-String Translation The first type of string lookups, which are here called simple string lookups, involves translating a single keycode into a string. Because these simple lookups involve only a single keycode, all of the information needed to do the translation is contained in the keyboard state in a single event. The controls affecting simple string lookups are: ForceLatin1Lookup ConsumeLookupMods LevelOneUsesShiftAndLock ForceLatin1Lookup If the ForceLatin1Lookup control is enabled, XLookupString only returns strings using the Latin1 character set. If ForceLatin1Lookup is not enabled, XLookupString can return characters that are not in the Latin1 set. By default, this control is disabled, allowing characters outside of the Latin1 set to be returned. ConsumeLookupMods Simple string lookups in XLookupString involve two different translation phases. The first phase translates raw device keycodes to individual keysyms. The second phase attempts to map the resulting keysym into a string of one or more characters. In the first phase, some of the modifiers are normally used to determine the appropriate shift level for a key. The ConsumeLookupMods control determines whether or not XLookupString consumes the modifiers it uses during the first phase of processing (mapping a keycode to a keysym). When a modifier is consumed, it is effectively removed from the working copy of the keyboard state information XLookupString is using and appears to be unset for the remainder of the processing. If the ConsumeLookupMods control is enabled, XLookupString does not use the modifiers used to translate the keycode of the event to a keysym when it is determining the string associated with a keysym. For example, assume the keymap for the ‘A’ key only contains the shift modifier and the ConsumeLookupMods control is enabled. If a user presses the Shift key and the A key while the Num_Lock key is locked, XLookupString uses the Shift modifier when mapping the keycode for the ‘a’ key to the keysym for ‘A’; subsequently, it only uses the NumLock modifier when determining the string associated with the keysym ‘A’. If the ConsumeLookupMods control is not enabled, XLookupString uses all of the event modifiers to determine the string associated with a keysym. This behavior mirrors the behavior of XLookupString in the core implementation. The ConsumeLookupMods control is unset by default. For more information on modifier consumption, refer to . AlwaysConsumeShiftAndLock The AlwaysConsumeShiftAndLock control, if enabled, forces XLookupString to consume the Shift and Lock modifiers when processing all keys, even if the definition for the key type does not specify these modifiers. The AlwaysConsumeShiftAndLock control is unset by default. See section 15.2 for a discussion of key types. Controls Affecting Compose Processing The second type of string lookup performed by XLookupString involves translating a series of keysyms into a string. Because these lookups can involve more than one key event, they require XLookupString to retain some state information between successive calls. The process of mapping a series of keysyms to a string is known as compose processing. compose processing The controls affecting compose processing are: ConsumeKeysOnComposeFail ComposeLED BeepOnComposeFail Because different vendors have historically used different algorithms to implement compose processing, and these algorithms may be incompatible with the semantics required by the Xkb compose processing controls, implementation of the compose processing controls is optional in an Xkb implementation. ConsumeKeysOnComposeFail Some compose processing algorithms signal the start of a compose sequence by a key event meaning start compose. Another possibility is to have the compose processing simply be the result of a finite state acceptor; a compose sequence would never fail for a properly written finite state acceptor. The subsequent key events should normally result in a valid composition yielding a valid translation to a string. If the subsequent key events do not have a valid translation, some decision must be made about what to do with the key events that were processed while attempting the compose. The ConsumeKeysOnComposeFail control allows a client to specify what happens with the key events XLookupString has been considering when it reaches a dead end in a compose sequence. If the ConsumeKeysOnComposeFail control is set, all keys associated with a failed compose sequence should be consumed (discarded). If the ConsumeKeysOnComposeFail control is not set, the key events associated with a failed compose sequence should be processed as a normal sequence of key events. The ConsumeKeysOnComposeFail control is disabled by default. ComposeLED The ComposeLED control allows a client to specify whether or not an indicator should be set and cleared to provide feedback when compose processing is in progress. The control does not specify which indicator should be used; the mapping for this is up to the individual implementation. If the ComposeLED control is enabled, it specifies that an indicator should be set when a compose sequence is in progress and cleared when one is not in progress. The ComposeLED control is disabled by default. While the Xkb extension does not specify the type of type of indicator to be used when the ComposeLED control is implemented, a consistent convention between implementations is to everyone’s benefit. If a named indicator is used for this purpose, the recommended name is “Compose”. Note that some implementations may use an unnamed, custom hardware LED for this purpose. BeepOnComposeFail The BeepOnComposeFail control allows a client to specify whether or not a bell should be activated to provide feedback when a compose sequence fails. The control does not specify the type of bell that should be used; the mapping for this is up to the individual implementation. If the BeepOnComposeFail control is enabled, it specifies that a bell should be activated when a compose sequence fails. The BeepOnComposeFail control is disabled by default. If implemented, the bell should be activated using XkbBell or XkbDeviceBell. While the Xkb extension does not specify the type of bell to be used when the BeepOnComposeFail control is implemented, a consistent convention between implementations is to everyone’s benefit. If a named bell is used for this purpose, the recommended name is “ComposeFail”. Controls Effecting Event Delivery IgnoreNewKeyboards eventsNewKeyboardNotify eventsMappingNotify When Xkb is initialized, it implicitly forces requests for NewKeyboardNotify events. These events may be used by the Xkb library extension internally; they are normally translated into core protocol MappingNotify events before being passed to the client. While delivering the event to the client is appropriate in most cases, it is not appropriate for some clients that maintain per-key data structures. This is because once the server has sent a NewKeyboardNotify event, it is free to send the client events for all keys in the new range and that range may be outside of the per-key data structures the client is maintaining. The IgnoreNewKeyboards control, if enabled, prevents Xkb from mapping NewKeyboardNotify events to core MappingNotify events and passing them to the client. The control is initially disabled. Manipulating the Library Controls The Library Controls are manipulated using functions that deal with bitmasks to indicate which controls to manipulate. The controls are identified by the masks defined in Table 11.1. Library Control Masks Library Control Mask Value XkbLC_ForceLatin1Lookup (1 << 0) XkbLC_ConsumeLookupMods (1 << 1) XkbLC_AlwaysConsumeShiftAndLock (1 << 2) XkbLC_IgnoreNewKeyboards (1 << 3) XkbLC_ConsumeKeysOnComposeFail (1 << 29) XkbLC_ComposeLED (1 << 30) XkbLC_BeepOnComposeFail (1 << 31) XkbLC_AllControls (0xc0000007)
Determining Which Library Controls are Implemented To determine which Library Controls are actually implemented, use XkbXlibControlsImplemented. XkbXlibControlsImplemented unsigned int XkbXlibControlsImplemented Display *display display connection to X server XkbXlibControlsImplemented returns a bitmask indicating the controls actually implemented in the Xkb library and is composed of an inclusive OR of bits from Table 11.1. Determining the State of the Library Controls To determine the current state of the Library Controls, use XkbGetXlibControls. XkbGetXlibControls unsigned int XkbGetXlibControls Display *display display connection to X server XkbGetXlibControls returns the current state of the Library Controls as a bit mask that is an inclusive OR of the control masks from Table 11.1 for the controls that are enabled. For the optional compose processing controls, the fact that a control is enabled does not imply that it is actually implemented. Changing the State of the Library Controls To change the state of the Library Controls, use XkbSetXlibControls. XkbSetXlibControls Bool XkbSetXlibControls Display *display unsigned long bits_to_change unsigned long values_for_bits display connection to X server bits_to_change selects controls to be modified values_for_bits turns selected controls on (1) or off (0) XkbSetXlibControls modifies the state of the controls selected by bits_to_change; only the controls selected by bits_to_change are modified. If the bit corresponding to a control is on in bits_to_change and also on in values_for_bits, the control is enabled. If the bit corresponding to a control is on in bits_to_change but off in values_for_bits, the control is disabled. bits_to_change should be an inclusive OR of bits from Table 11.1.
libX11-1.8.12/specs/XKB/ch16.xml0000644014310600000120000041677314763154126011373 Xkb Server Keyboard Mapping server map mapserver The server field of the complete Xkb keyboard description (see section 6.1) is a pointer to the Xkb server map. Figure 16.1 shows the relationships between elements in the server map:
Server Map Relationships
XkbServerMapRec The Xkb server map contains the information the server needs to interpret key events and is of type XkbServerMapRec: #define XkbNumVirtualMods 16 typedef struct { /* Server Map */ unsigned short num_acts; /* # of occupied entries in acts */ unsigned short size_acts; /* # of entries in acts */ XkbAction * acts; /* linear 2d tables of key actions, 1 per keycode */ XkbBehavior * behaviors; /* key behaviors, 1 per keycode */ unsigned short * key_acts; /* index into acts, 1 per keycode */ unsigned char * explicit; /* explicit overrides of core remapping, 1 per key */ unsigned char vmods[XkbNumVirtualMods]; /* real mods bound to virtual mods */ unsigned short * vmodmap; /* virtual mods bound to key, 1 per keycode */ } XkbServerMapRec, *XkbServerMapPtr; The num_acts, size_acts, acts, and key_acts fields specify the key actions, defined in section 16.1. The behaviors field describes the behavior for each key and is defined in section 16.2. The explicit field describes the explicit components for a key and is defined in section 16.3. The vmods and the vmodmap fields describe the virtual modifiers and the per-key virtual modifier mapping and are defined in section 16.4. Key Actions A key action defines the effect key presses and releases have on the internal state of the server. For example, the expected key action associated with pressing the Shift key is to set the Shift modifier. There is zero or one key action associated with each keysym bound to each key. Just as the entire list of key symbols for the keyboard mapping is held in the syms field of the client map, the entire list of key actions for the keyboard mapping is held in the acts array of the server map. The total size of acts is specified by size_acts, and the number of entries is specified by num_acts. The key_acts array, indexed by keycode, describes the actions associated with a key. The key_acts array has min_key_code unused entries at the start to allow direct indexing using a keycode. If a key_acts entry is zero, it means the key does not have any actions associated with it. If an entry is not zero, the entry represents an index into the acts field of the server map, much as the offset field of a KeySymMapRec structure is an index into the syms field of the client map. The reason the acts field is a linear list of XkbActions is to reduce the memory consumption associated with a keymap. Because Xkb allows individual keys to have multiple shift levels and a different number of groups per key, a single two-dimensional array of KeySyms would potentially be very large and sparse. Instead, Xkb provides a small two-dimensional array of XkbActions for each key. To store all of these individual arrays, Xkb concatenates each array together in the acts field of the server map. The key action structures consist only of fields of type char or unsigned char. This is done to optimize data transfer when the server sends bytes over the wire. If the fields are anything but bytes, the server has to sift through all of the actions and swap any nonbyte fields. Because they consist of nothing but bytes, it can just copy them out. Xkb provides the following macros, to simplify accessing information pertaining to key actions: XkbKeyHasActions Bool XkbKeyHasActions XkbDescPtr xkb KeyCode keycode xkb Xkb description of interest keycode keycode of interest XkbKeyHasActions returns True if the key corresponding to keycode has any actions associated with it; otherwise, it returns False. XkbKeyNumActions int XkbKeyNumActions XkbDescPtr xkb KeyCode keycode xkb Xkb description of interest keycode keycode of interest XkbKeyNumActions computes the number of actions associated with the key corresponding to keycode. This should be the same value as the result of XkbKeyNumSyms (see section 15.3.3). XkbKeyActionsPtr XkbKeyActionPtr XkbKeyActionsPtr XkbDescPtr xkb KeyCode keycode xkb Xkb description of interest keycode keycode of interest XkbKeyActionsPtr returns a pointer to the two-dimensional array of key actions associated with the key corresponding to keycode. Use XkbKeyActionsPtr only if the key actually has some actions associated with it, that is, XkbKeyNumActions (xkb, keycode) returns something greater than zero. XkbKeyAction XkbAction XkbKeyAction XkbDescPtr xkb KeyCode keycode int idx xkb Xkb description of interest keycode keycode of interest idx index for group and shift level XkbKeyAction returns the key action indexed by idx in the two-dimensional array of key actions associated with the key corresponding to keycode. idx may be computed from the group and shift level of interest as follows: idx = group_index * key_width + shift_level XkbKeyActionEntry XkbAction XkbKeyActionEntry XkbDescPtr xkb KeyCode keycode int shift int grp xkb Xkb description of interest keycode keycode of interest shift shift level within group grp group index for group of interest XkbKeyActionEntry returns the key action corresponding to group grp and shift level shift from the two-dimensional table of key actions associated with the key corresponding to keycode. The XkbAction Structure XkbAction The description for an action is held in an XkbAction structure, which is a union of all possible Xkb action types: typedef union _XkbAction { XkbAnyAction any; XkbModAction mods; XkbGroupAction group; XkbISOAction iso; XkbPtrAction ptr; XkbPtrBtnAction btn; XkbPtrDfltAction dflt; XkbSwitchScreenAction screen; XkbCtrlsAction ctrls; XkbMessageAction msg; XkbRedirectKeyAction redirect; XkbDeviceBtnAction devbtn; XkbDeviceValuatorAction devval; unsigned char type; } XkbAction; The type field is provided for convenience and is the same as the type field in the individual structures. The following sections describe the individual structures for each action in detail. The XkbAnyAction Structure XkbAnyAction The XkbAnyAction structure is a convenience structure that refers to any of the actions: #define XkbAnyActionDataSize 7 typedef struct _XkbAnyAction { unsigned char type; /* type of action; determines interpretation for data */ unsigned char data[XkbAnyActionDataSize]; } XkbAnyAction; The data field represents a structure for an action, and its interpretation depends on the type field. The valid values for the type field, and the data structures associated with them are shown in Table 16.1: Action Types Type Structure for Data XkbAction Union Member Section XkbSA_NoAction XkbSA_NoAction means the server does not perform an action for the key; this action does not have an associated data structure. any XkbSA_SetMods XkbSA_LatchMods XkbSA_LockMods XkbModAction mods 16.1.3 XkbSA_SetGroup XkbSA_LatchGroup XkbSA_LockGroup XkbGroupAction group 16.1.4 XkbSA_MovePtr XkbPtrAction ptr 16.1.5 XkbSA_PtrBtn XkbSA_LockPtrBtn XkbPtrBtnActionbtn 16.1.6 XkbSA_SetPtrDflt XkbPtrDfltAction dflt 16.1.7 XkbSA_ISOLock XkbISOAction iso 16.1.8 XkbSA_SwitchScreen XkbSwitchScreenAction screen 16.1.9 XkbSA_SetControls XkbSA_LockControls XkbCtrlsAction ctrls 16.1.10 XkbSA_ActionMessage XkbMessageAction msg 16.1.11 XkbSA_RedirectKey XkbRedirectKeyAction redirect 16.1.12 XkbSA_DeviceBtn XkbSA_LockDeviceBtn XkbDeviceBtnAction devbtn 16.1.13 XkbSA_DeviceValuator XkbDeviceValuatorAction devval 16.1.14
Actions for Changing Modifiers’ State XkbModAction Actions associated with the XkbModAction structure change the state of the modifiers when keys are pressed and released (see for a discussion of modifiers): typedef struct _XkbModAction { unsigned char type; /* XkbSA_{Set|Latch|Lock}Mods */ unsigned char flags; /* with type, controls the effect on modifiers */ unsigned char mask; /* same as mask field of a modifier description */ unsigned char real_mods; /* same as real_mods field of a modifier description */ unsigned char vmods1; /* derived from vmods field of a modifier description */ unsigned char vmods2; /* derived from vmods field of a modifier description */ } XkbModAction; In the following description, the term action modifiers action modifiers modifiersaction means the real modifier bits associated with this action. Depending on the value of flags (see Table 16.3), these are designated either in the mask field of the XkbModAction structure itself or the real modifiers bound to the key for which the action is being used. In the latter case, this is the client map->modmap [ keycode ] field. The type field can have any of the values shown in Table 16.2. Modifier Action Types Type Effect XkbSA_SetMods A key press adds any action modifiers to the keyboard’s base modifiers. A key release clears any action modifiers in the keyboard’s base modifiers, provided no other key affecting the same modifiers is logically down. If no other keys are physically depressed when this key is released, and XkbSA_ClearLocks is set in the flags field, the key release unlocks any action modifiers. XkbSA_LatchMods Key press and key release events have the same effect as for XkbSA_SetMods; if no keys are physically depressed when this key is released, key release events have the following additional effects: Modifiers unlocked due to XkbSA_ClearLocks have no further effect. If XkbSA_LatchToLock is set in the flags field, a key release locks and then unlatches any remaining action modifiers that are already latched. A key release latches any action modifiers not used by the XkbSA_ClearLocks and XkbSA_LatchToLock flags. XkbSA_LockMods A key press sets the base state of any action modifiers. If XkbSA_LockNoLock is set in the flags field, a key press also sets the locked state of any action modifiers. A key release clears any action modifiers in the keyboard’s base modifiers, provided no other key that affects the same modifiers is down. If XkbSA_LockNoUnlock is not set in the flags field, and any of the action modifiers were locked before the corresponding key press occurred, a key release unlocks them.
The flags field is composed of the bitwise inclusive OR of the masks shown in Table 16.3. A general meaning is given in the table, but the exact meaning depends on the action type. Modifier Action Flags Flag Meaning XkbSA_UseModMapMods If set, the action modifiers are determined by the modifiers bound by the modifier mapping of the key. Otherwise, the action modifiers are set to the modifiers specified by the mask, real_mods, vmods1, and vmods2 fields. XkbSA_ClearLocks If set and no keys are physically depressed when this key transition occurs, the server unlocks any action modifiers. XkbSA_LatchToLock If set, and the action type is XkbSA_LatchMods, the server locks the action modifiers if they are already latched. XkbSA_LockNoLock If set, and the action type is XkbSA_LockMods, the server only unlocks the action modifiers. XkbSA_LockNoUnlock If set, and the action is XkbSA_LockMods, the server only locks the action modifiers.
If XkbSA_UseModMapMods is not set in the flags field, the mask, real_mods, vmods1, and vmods2 fields are used to determine the action modifiers. Otherwise they are ignored and the modifiers bound to the key (client map->modmap [ keycode ]) are used instead. The mask, real_mods, vmods1, and vmods2 fields represent the components of an Xkb modifier description (see section 7.2). While the mask and real_mods fields correspond directly to the mask and real_mods fields of an Xkb modifier description, the vmods1 and vmods2 fields are combined to correspond to the vmods field of an Xkb modifier description. Xkb provides the following macros, to convert between the two formats: XkbModActionVMods unsigned short XkbModActionVMods XkbAction act act action from which to extract virtual mods XkbModActionVMods returns the vmods1 and vmods2 fields of act converted to the vmods format of an Xkb modifier description. XkbSetModActionVMods void XkbSetModActionVMods XkbAction act unsigned short vmods act action in which to set vmods vmods virtual mods to set XkbSetModActionVMods sets the vmods1 and vmods2 fields of act using the vmods format of an Xkb modifier description. Despite the fact that the first parameter of these two macros is of type XkbAction, these macros may be used only with Actions of type XkbModAction and XkbISOAction.
Actions for Changing Group State XkbGroupAction Actions associated with the XkbGroupAction structure change the current group state when keys are pressed and released (see for a description of groups and keyboard state): typedef struct _XkbGroupAction { unsigned char type; /* XkbSA_{Set|Latch|Lock}Group */ unsigned char flags; /* with type , controls the effect on groups */ char group_XXX; /* represents a group index or delta */ } XkbGroupAction; The type field can have any of the following values: Group Action Types Type Effect XkbSA_SetGroup If the XkbSA_GroupAbsolute bit is set in the flags field, key press events change the base keyboard group to the group specified by the group_XXX field. Otherwise, key press events change the base keyboard group by adding the group_XXX field to the base keyboard group. In either case, the resulting effective keyboard group is brought back into range depending on the value of the groups_wrap field of the controls structure (see section 10.7.1). If a key with an XkbSA_ISOLock action (see section 16.1.8) is pressed while this key is down, the key release of this key has no effect. Otherwise, the key release cancels the effects of the key press. If the XkbSA_ClearLocks bit is set in the flags field, and no keys are physically depressed when this key is released, the key release also sets the locked keyboard group to Group1. XkbSA_LatchGroup Key press and key release events have the same effect as for XkbSA_SetGroup; if no keys are physically depressed when this key is released, key release events have the following additional effects. If the XkbSA_LatchToLock bit is set in the flags field and the latched keyboard group index is nonzero, the key release adds the delta applied by the corresponding key press to the locked keyboard group and subtracts it from the latched keyboard group. The locked and effective keyboard group are brought back into range according to the value of the groups_wrap field of the controls structure. Otherwise, the key press adds the key press delta to the latched keyboard group. XkbSA_LockGroup If the XkbSA_GroupAbsolute is set in the flags field, key press events set the locked keyboard group to the group specified by the group_XXX field. Otherwise, key press events add the group specified by the group_XXX field to the locked keyboard group. In either case, the resulting locked and effective keyboard groups are brought back into range depending on the value of the groups_wrap field of the controls structure. A key release has no effect.
The flags field is composed of the bitwise inclusive OR of the masks shown in Table 16.5. A general meaning is given in the table, but the exact meaning depends on the action type. Group Action Flags Flag Meaning XkbSA_ClearLocks If set and no keys are physically depressed when this key transition occurs, the server sets the locked keyboard group to Group1 on a key release. XkbSA_LatchToLock If set, and the action type is XkbSA_LatchGroup, the server locks the action group if it is already latched. XkbSA_GroupAbsolute If set, the group_XXX field represents an absolute group number. Otherwise, it represents a group delta to be added to the current group to determine the new group number.
The group_XXX field represents a signed character. Xkb provides the following macros to convert between a signed integer value and a signed character: XkbSAGroup int XkbSAGroup XkbAction act act action from which to extract group XkbSAGroup returns the group_XXX field of act converted to a signed int. XkbSASetGroup void XkbSASetGroup XkbAction act int grp act action from which to set group grp group index to set in group_XXX XkbSASetGroup sets the group_XXX field of act from the group index grp. Despite the fact that the first parameter of these two macros is of type XkbAction, these macros may only be used with Actions of type XkbGroupAction and XkbISOAction.
Actions for Moving the Pointer XkbPtrAction Actions associated with the XkbPtrAction structure move the pointer when keys are pressed and released: typedef struct _XkbPtrAction { unsigned char type; /* XkbSA_MovePtr */ unsigned char flags; /* determines type of pointer motion */ unsigned char high_XXX; /* x coordinate, high bits */ unsigned char low_XXX; /* y coordinate, low bits */ unsigned char high_YYY; /* x coordinate, high bits */ unsigned char low_YYY; /* y coordinate, low bits */ } XkbPtrAction; If the MouseKeys control is not enabled (see section 10.5.1), KeyPress and KeyRelease events are treated as though the action is XkbSA_NoAction. If the MouseKeys control is enabled, a server action of type XkbSA_MovePtr instructs the server to generate core pointer MotionNotify events rather than the usual KeyPress event, and the corresponding KeyRelease event disables any mouse keys timers that were created as a result of handling the XkbSA_MovePtr action. The type field of the XkbPtrAction structure is always XkbSA_MovePtr. The flags field is a bitwise inclusive OR of the masks shown in Table 16.6. Pointer Action Types Action Type Meaning XkbSA_NoAcceleration If not set, and the MouseKeysAccel control is enabled (see section 10.5.2), the KeyPress initiates a mouse keys timer for this key; every time the timer expires, the cursor moves. XkbSA_MoveAbsoluteX If set, the X portion of the structure specifies the new pointer X coordinate. Otherwise, the X portion is added to the current pointer X coordinate to determine the new pointer X coordinate. XkbSA_MoveAbsoluteY If set, the Y portion of the structure specifies the new pointer Y coordinate. Otherwise, the Y portion is added to the current pointer Y coordinate to determine the new pointer Y coordinate.
Each of the X and Y coordinates of the XkbPtrAction structure is composed of two signed 16-bit values, that is, the X coordinate is composed of high_XXX and low_XXX, and similarly for the Y coordinate. Xkb provides the following macros, to convert between a signed integer and two signed 16-bit values in XkbPtrAction structures: XkbPtrActionX int XkbPtrActionX XkbPtrAction act act action from which to extract X XkbPtrActionX returns the high_XXX and low_XXX fields of act converted to a signed int. XkbPtrActionY int XkbPtrActionY XkbPtrAction act act action from which to extract Y XkbPtrActionY returns the high_YYY and low_YYY fields of act converted to a signed int. XkbSetPtrActionX void XkbSetPtrActionX XkbPtrAction act int x act action in which to set X x new value to set XkbSetPtrActionX sets the high_XXX and low_XXX fields of act from the signed integer value x. XkbSetPtrActionY void XkbSetPtrActionY XkbPtrAction act int y act action in which to set Y y new value to set XkbSetPtrActionX sets the high_YYY and low_YYY fields of act from the signed integer value y.
Actions for Simulating Pointer Button Press and Release XkbPtrBtnAction Actions associated with the XkbPtrBtnAction structure simulate the press and release of pointer buttons when keys are pressed and released: typedef struct _XkbPtrBtnAction { unsigned char type; /* XkbSA_PtrBtn, XkbSA_LockPtrBtn */ unsigned char flags; /* with type, controls the effect on pointer buttons */ unsigned char count; /* controls number of ButtonPress and ButtonRelease events */ unsigned char button; /* pointer button to simulate */ } XkbPtrBtnAction; If the MouseKeys (see section 10.5.1) control is not enabled, KeyPress and KeyRelease events are treated as though the action is XkbSA_NoAction. The type field can have any one of the values shown in Table 16.7. Pointer Button Action Types Type Effect XkbSA_PtrBtn If XkbSA_UseDfltButton is set in the flags field, the event is generated for the pointer button specified by the mk_dflt_btn attribute of the MouseKeys control (see section 10.5.1). Otherwise, the event is generated for the button specified by the button field. If the mouse button specified for this action is logically down, the key press and corresponding key release are ignored and have no effect. Otherwise, a key press causes one or more core pointer button events instead of the usual KeyPress event. If count is zero, a key press generates a single ButtonPress event; if count is greater than zero, a key press generates count pairs of ButtonPress and ButtonRelease events. If count is zero, a key release generates a core pointer ButtonRelease that matches the event generated by the corresponding KeyPress; if count is nonzero, a key release does not cause a ButtonRelease event. A key release never generates a key KeyRelease event. XkbSA_LockPtrBtn If the button specified by the MouseKeys default button or button is not locked, a key press causes a ButtonPress event instead of a KeyPress event and locks the button. If the button is already locked or if XkbSA_LockNoUnlock is set in the flags field, a key press is ignored and has no effect. If the corresponding key press was ignored, and if XkbSA_LockNoLock is not set in the flags field, a key release generates a ButtonRelease event instead of a KeyRelease event and unlocks the specified button. If the corresponding key press locked a button, the key release is ignored and has no effect.
The flags field is composed of the bitwise inclusive OR of the masks shown in Table 16.8. A general meaning is given in the table, but the exact meaning depends on the action type: Pointer Button Action Flags Flag Meaning XkbSA_UseDfltButton If set, the action uses the pointer button specified by the mk_dflt_btn attribute of the MouseKeys control (see section 10.5.1). Otherwise, the action uses the pointer button specified by the button field. XkbSA_LockNoLock If set, and the action type is XkbSA_LockPtrBtn, the server only unlocks the pointer button. XkbSA_LockNoUnlock If set, and the action type is XkbSA_LockPtrBtn, the server only locks the pointer button.
Actions for Changing the Pointer Button Simulated XkbPtrDfltAction Actions associated with the XkbPtrDfltAction structure change the mk_dflt_btn attribute of the MouseKeys control (see section 10.5.1): typedef struct _XkbPtrDfltAction { unsigned char type; /* XkbSA_SetPtrDflt */ unsigned char flags; /* controls the pointer button number */ unsigned char affect; /* XkbSA_AffectDfltBtn */ char valueXXX; /* new default button member */ } XkbPtrDfltAction; If the MouseKeys control is not enabled, KeyPress and KeyRelease events are treated as though the action is XkbSA_NoAction. Otherwise, this action changes the mk_dflt_btn attribute of the MouseKeys control. The type field of the XkbPtrDfltAction structure should always be XkbSA_SetPtrDflt. The flags field is composed of the bitwise inclusive OR of the values shown in Table 16.9 (currently there is only one value defined). Pointer Default Flags Flag Meaning XkbSA_DfltBtnAbsolute If set, the value field represents an absolute pointer button. Otherwise, the value field represents the amount to be added to the current default button.
The affect field specifies what changes as a result of this action. The only valid value for the affect field is XkbSA_AffectDfltBtn. The valueXXX field is a signed character that represents the new button value for the mk_dflt_btn attribute of the MouseKeys control (see section 10.5.1). If XkbSA_DfltBtnAbsolute is set in flags, valueXXX specifies the button to be used; otherwise, valueXXX specifies the amount to be added to the current default button. In either case, illegal button choices are wrapped back around into range. Xkb provides the following macros, to convert between the integer and signed character values in XkbPtrDfltAction structures: XkbSAPtrDfltValue int XkbSAPtrDfltValue XkbAction act act action from which to extract group XkbSAPtrDfltValue returns the valueXXX field of act converted to a signed int. XkbSASetPtrDfltValue void XkbSASetPtrDfltValue XkbPtrDfltAction act int val act action in which to set valueXXX val value to set in valueXXX XkbSASetPtrDfltValue sets the valueXXX field of act from val.
Actions for Locking Modifiers and Group XkbISOAction Actions associated with the XkbISOAction structure lock modifiers and the group according to the ISO9995 specification. Operated by itself, the XkbISOAction is just a caps lock. Operated simultaneously with another modifier key, it transforms the other key into a locking key. For example, press ISO_Lock, press and release Control_L, release ISO_Lock ends up locking the Control modifier. The default behavior is to convert: {Set,Latch}Mods to: LockMods {Set,Latch}Group to: LockGroup SetPtrBtn to: LockPtrBtn SetControls to: LockControls The affects field allows you to turn those effects on or off individually. Set XkbSA_ISONoAffectMods to disable the first, XkbSA_ISONoAffectGroup to disable the second, and so forth. typedef struct _XkbISOAction { unsigned char type; /* XkbSA_ISOLock */ unsigned char flags; /* controls changes to group or modifier state */ unsigned char mask; /* same as mask field of a modifier description */ unsigned char real_mods; /* same as real_mods field of a modifier description */ char group_XXX; /* group index or delta group */ unsigned char affect; /* specifies whether to affect mods, group, ptrbtn, or controls */ unsigned char vmods1; /* derived from vmods field of a modifier description */ unsigned char vmods2; /* derived from vmods field of a modifier description */ } XkbISOAction; The type field of the XkbISOAction structure should always be XkbSA_ISOLock. The interpretation of the flags field depends on whether the XkbSA_ISODfltIsGroup is set in the flags field or not. If the XkbSA_ISODfltIsGroup is set in the flags field, the action is used to change the group state. The remaining valid bits of the flags field are composed of a bitwise inclusive OR using the masks shown in Table 16.10. ISO Action Flags when XkbSA_ISODfltIsGroup is Set Flag Meaning XkbSA_ISODfltIsGroup If set, the action is used to change the base group state. Must be set for the remaining bits in this table to carry their interpretations. A key press sets the base group as specified by the group_XXX field and the XkbSA_GroupAbsolute bit of the flags field (see section Note). If no other actions are transformed by the XkbSA_ISOLock action, a key release locks the group. Otherwise, a key release clears group set by the key press. XkbSA_GroupAbsolute If set, the group_XXX field represents an absolute group number. Otherwise, it represents a group delta to be added to the current group to determine the new group number. XkbSA_ISONoAffectMods If not set, any XkbSA_SetMods or XkbSA_LatchMods actions that occur simultaneously with the XkbSA_ISOLock action are treated as XkbSA_LockMods actions instead. XkbSA_ISONoAffectGroup If not set, any XkbSA_SetGroup or XkbSA_LatchGroup actions that occur simultaneously with the XkbSA_ISOLock action are treated as XkbSA_LockGroup actions instead. XkbSA_ISONoAffectPtr If not set, any XkbSA_PtrBtn actions that occur simultaneously with the XkbSA_ISOLock action are treated as XkbSA_LockPtrBtn actions instead. XkbSA_ISONoAffectCtrls If not set, any XkbSA_SetControls actions that occur simultaneously with the XkbSA_ISOLock action are treated as XkbSA_LockControls actions instead.
If the XkbSA_ISODfltIsGroup is not set in the flags field, the action is used to change the modifier state and the remaining valid bits of the flags field are composed of a bitwise inclusive OR using the masks shown in Table 16.11. ISO Action Flags when XkbSA_ISODfltIsGroup is Not Set Flag Meaning XkbSA_ISODfltIsGroup If not set, action is used to change the base modifier state. Must not be set for the remaining bits in this table to carry their interpretations. A key press sets the action modifiers in the keyboard’s base modifiers using the mask, real_mods, vmods1, and vmods2 fields (see section 16.1.3). If no other actions are transformed by the XkbSA_ISOLock action, a key release locks the action modifiers. Otherwise, a key release clears the base modifiers set by the key press. XkbSA_UseModMapMods If set, the action modifiers are determined by the modifiers bound by the modifier mapping of the key. Otherwise, the action modifiers are set to the modifiers specified by the mask, real_mods, vmods1, and vmods2 fields. XkbSA_LockNoLock If set, the server only unlocks the action modifiers. XkbSA_LockNoUnlock If set, the server only locks the action modifiers. XkbSA_ISONoAffectMods If not set, any XkbSA_SetMods or XkbSA_LatchMods actions that occur simultaneously with the XkbSA_ISOLock action are treated as XkbSA_LockMods actions instead. XkbSA_ISONoAffectGroup If not set, any XkbSA_SetGroup or XkbSA_LatchGroup actions that occur simultaneously with the XkbSA_ISOLock action are treated as XkbSA_LockGroup actions instead. XkbSA_ISONoAffectPtr If not set, any XkbSA_PtrBtn actions that occur simultaneously with the XkbSA_ISOLock action are treated as XkbSA_LockPtrBtn actions instead. XkbSA_ISONoAffectCtrls If not set, any XkbSA_SetControls actions that occur simultaneously with the XkbSA_ISOLock action are treated as XkbSA_LockControls actions instead.
The group_XXX field represents a signed character. Xkb provides macros to convert between a signed integer value and a signed character as shown in section Note. The mask, real_mods, vmods1, and vmods2 fields represent the components of an Xkb modifier description (see section 7.2). While the mask and real_mods fields correspond directly to the mask and real_mods fields of an Xkb modifier description, the vmods1 and vmods2 fields are combined to correspond to the vmods field of an Xkb modifier description. Xkb provides macros to convert between the two formats as shown in section 16.1.3. The affect field is composed of a bitwise inclusive OR using the masks shown in Table 16.11. ISO Action Affect Field Values Affect Meaning XkbSA_ISONoAffectMods If XkbSA_ISONoAffectMods is not set, any SA_SetMods or SA_LatchMods actions occurring simultaneously with the XkbISOAction are treated as SA_LockMods instead. XkbSA_ISONoAffectGroup If XkbSA_ISONoAffectGroup is not set, any SA_SetGroup or SA_LatchGroup actions occurring simultaneously with the XkbISOAction are treated as SA_LockGroup instead. XkbSA_ISONoAffectPtr If XkbSA_ISONoAffectPtr is not set, any SA_PtrBtn actions occurring simultaneously with the XkbISOAction are treated as SA_LockPtrBtn instead. XkbSA_ISONoAffectCtrls If XkbSA_ISONoAffectCtrls is not set, any SA_SetControls actions occurring simultaneously with the XkbISOAction are treated as SA_LockControls instead.
Actions for Changing the Active Screen XkbSwitchScreenAction Actions associated with the XkbSwitchScreenAction action structure change the active screen on a multiscreen display: This action is optional. Servers are free to ignore the action or any of its flags if they do not support the requested behavior. If the action is ignored, it behaves like XkbSA_NoAction. Otherwise, key press and key release events do not generate an event. typedef struct _XkbSwitchScreenAction { unsigned char type; /* XkbSA_SwitchScreen */ unsigned char flags; /* controls screen switching */ char screenXXX; /* screen number or delta */ } XkbSwitchScreenAction; The type field of the XkbSwitchScreenAction structure should always be XkbSA_SwitchScreen. The flags field is composed of the bitwise inclusive OR of the masks shown in Table 16.13. Switch Screen Action Flags Flag Meaning XkbSA_SwitchAbsolute If set, the screenXXX field represents the index of the new screen. Otherwise, it represents an offset from the current screen to the new screen. XkbSA_SwitchApplication If not set, the action should switch to another screen on the same server. Otherwise, it should switch to another X server or application that shares the same physical display.
The screenXXX field is a signed character value that represents either the relative or absolute screen index, depending on the state of the XkbSA_SwitchAbsolute bit in the flags field. Xkb provides the following macros to convert between the integer and signed character value for screen numbers in XkbSwitchScreenAction structures: XkbSAScreen int XkbSAScreen XkbSwitchScreenAction act act action from which to extract screen XkbSAScreen returns the screenXXX field of act converted to a signed int. XkbSASetScreen void XkbSASetScreen XkbSwitchScreenAction act int s act action in which to set screenXXX s value to set in screenXXX XkbSASetScreen sets the screenXXX field of act from s.
Actions for Changing Boolean Controls State XkbCtrlsAction Actions associated with the XkbCtrlsAction structure change the state of the boolean controls (see section 10.1): typedef struct _XkbCtrlsAction { unsigned char type; /* XkbSA_SetControls, XkbSA_LockControls */ unsigned char flags; /* with type, controls enabling and disabling of controls */ unsigned char ctrls3; /* ctrls0 through ctrls3 represent the boolean controls */ unsigned char ctrls2; /* ctrls0 through ctrls3 represent the boolean controls */ unsigned char ctrls1; /* ctrls0 through ctrls3 represent the boolean controls */ unsigned char ctrls0; /* ctrls0 through ctrls3 represent the boolean controls */ } XkbCtrlsAction; The type field can have any one of the values shown in Table 16.14. Controls Action Types Type Effect XkbSA_SetControls A key press enables any boolean controls specified in the ctrls fields that were not already enabled at the time of the key press. A key release disables any controls enabled by the key press. This action can cause XkbControlsNotify events (see section 10.1). XkbSA_LockControls If the XkbSA_LockNoLock bit is not set in the flags field, a key press enables any controls specified in the ctrls fields that were not already enabled at the time of the key press. If the XkbSA_LockNoUnlock bit is not set in the flags field, a key release disables any controls specified in the ctrls fields that were not already disabled at the time of the key press. This action can cause XkbControlsNotify events (see section 10.1).
The flags field is composed of the bitwise inclusive OR of the masks shown in Table 16.15. Control Action Flags Flag Meaning XkbSA_LockNoLock If set, and the action type is XkbSA_LockControls, the server only disables controls. XkbSA_LockNoUnlock If set, and the action type is XkbSA_LockControls, the server only enables controls.
The XkbSA_SetControls action implements a key that enables a boolean control when pressed and disables it when released. The XkbSA_LockControls action is used to implement a key that toggles the state of a boolean control each time it is pressed and released. The XkbSA_LockNoLock and XkbSA_LockNoUnlock flags allow modifying the toggling behavior to only unlock or only lock the boolean control. The ctrls0, ctrls1, ctrls2, and ctrls3 fields represent the boolean controls in the enabled_ctrls field of the controls structure (see section 10.1). Xkb provides the following macros, to convert between the two formats: XkbActionCtrls unsigned int XkbActionCtrls XkbCtrlsAction act act action from which to extract controls XkbActionCtrls returns the ctrls fields of act converted to an unsigned int. XkbActionSetCtrls void XkbActionSetCtrls XkbCtrlsAction act unsigned int ctrls act action in which to set ctrls0-ctrls3 ctrls value to set in ctrls0-ctrls3 XkbActionSetCtrls sets the ctrls0 through ctrls3 fields of act from ctrls.
Actions for Generating Messages XkbMessageAction Actions associated with the XkbMessageAction structure generate XkbActionMessage events: #define XkbActionMessageLength 6 typedef struct _XkbMessageAction { unsigned char type; /* XkbSA_ActionMessage */ unsigned char flags; /* controls event generation via key presses and releases */ unsigned char message[XkbActionMessageLength]; /* message */ } XkbMessageAction; The type field of the XkbMessageAction structure should always be XkbSA_ActionMessage. The flags field is composed of the bitwise inclusive OR of the masks shown in Table 16.16. Message Action Flags Flag Meaning XkbSA_MessageOnPress If set, key press events generate an XkbActionMessage event that reports the keycode, event type, and contents of the message field. XkbSA_MessageOnRelease If set, key release events generate an XkbActionMessage event that reports the keycode, event type, and contents of the message field. XkbSA_MessageGenKeyEvent If set, key press and key release events generate KeyPress and KeyRelease events, regardless of whether they generate XkbActionMessage events.
The message field is an array of XkbActionMessageLength unsigned characters and may be set to anything the keymap designer wishes. Detecting Key Action Messages eventsXkbActionMessage XkbActionMessageEvent To receive XkbActionMessage events by calling either XkbSelectEvents or XkbSelectEventDetails (see section 4.3). To receive XkbActionMessage events under all possible conditions, use XkbSelectEvents and pass XkbActionMessageMask in both bits_to_change and values_for_bits. The XkbActionMessage event has no event details. However, you can call XkbSelectEventDetails using XkbActionMessage as the event_type and specifying XkbAllActionMessagesMask in bits_to_change and values_for_bits. This has the same effect as a call to XkbSelectEvents. The structure for the XkbActionMessage event is defined as follows: typedef struct _XkbActionMessage { int type; /* Xkb extension base event code */ unsigned long serial; /* X server serial number for event */ Bool send_event; /* True ⇒ synthetically generated */ Display * display; /* server connection where event generated */ Time time; /* server time when event generated */ int xkb_type; /* XkbActionMessage */ int device; /* Xkb device ID, will not be XkbUseCoreKbd */ KeyCode keycode; /* keycode of key triggering event */ Bool press; /* True ⇒ key press, False ⇒ release */ Bool key_event_follows;/* True ⇒ KeyPress/KeyRelease follows */ char message[XkbActionMessageLength+1]; /* message text */ } XkbActionMessageEvent; The keycode is the keycode of the key that was pressed or released. The press field specifies whether the event was the result of a key press or key release. The key_event_follows specifies whether a KeyPress (if press is True) or KeyRelease (if press is False) event is also sent to the client. As with all other Xkb events, XkbActionMessageEvents are delivered to all clients requesting them, regardless of the current keyboard focus. However, the KeyPress or KeyRelease event that conditionally follows an XkbActionMessageEvent is sent only to the client selected by the current keyboard focus. key_event_follows is True only for the client that is actually sent the following KeyPress or KeyRelease event. The message field is set to the message specified in the action and is guaranteed to be NULL -terminated; the Xkb extension forces a NULL into message [ XkbActionMessageLength ].
Actions for Generating a Different Keycode XkbRedirectKeyAction Actions associated with the XkbRedirectKeyAction structure generate KeyPress and KeyRelease events containing a keycode different from the key that was pressed or released: typedef struct _XkbRedirectKeyAction { unsigned char type; /* XkbSA_RedirectKey */ unsigned char new_key; /* keycode to be put in event */ unsigned char mods_mask; /* mask of real mods to be reset */ unsigned char mods; /* mask of real mods to take values from */ unsigned char vmods_mask0; /* first half of mask of virtual mods to be reset */ unsigned char vmods_mask1; /* other half of mask of virtual mods to be reset */ unsigned char vmods0; /* first half of mask of virtual mods to take values from */ unsigned char vmods1; /* other half of mask of virtual mods to take values from */ } XkbRedirectKeyAction; The type field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey. Key presses cause a KeyPress event for the key specified by the new_key field instead of the actual key. The state reported in this event reports the current effective modifiers changed as follows: any real modifiers selected by the mods_mask field are set to corresponding values from the mods field. Any real modifiers bound to the virtual modifiers specified by the vmods_mask0 and vmods_mask1 fields are either set or cleared, depending on the corresponding values in the vmods0 and vmods1 fields. If the real and virtual modifier definitions specify conflicting values for a single modifier, the real modifier definition has priority. Key releases cause a KeyRelease event for the key specified by the new_key field instead of the actual key. The state for this event consists of the effective keyboard modifiers at the time of the release, changed as described previously. The XkbSA_RedirectKey action normally redirects to another key on the same device as the key that caused the event, unless that device does not belong to the input extension KeyClass, in which case this action causes an event on the core keyboard device. (The input extension categorizes devices by breaking them into classes. Keyboards, and other input devices with keys, are classified as KeyClass devices by the input extension.) The vmods_mask0 and vmods_mask1 fields actually represent one vmods_mask value, as described in . Xkb provides the following macros, to convert between the two formats: XkbSARedirectVModsMask unsigned int XkbSARedirectVModsMask XkbRedirectKeyAction act act action from which to extract vmods XkbSARedirectVModsMask returns the vmods_mask0 and vmods_mask1 fields of act converted to an unsigned int. XkbSARedirectSetVModsMask void XkbSARedirectSetVModsMask XkbRedirectKeyAction act unsigned int vm act action in which to set vmods vm new value for virtual modifier mask XkbSARedirectSetVModsMask sets the vmods_mask0 and vmods_mask1 fields of act from vm. Similarly, the vmods0 and vmods1 fields actually represent one vmods value, as described in . To convert between the two formats, Xkb provides the following convenience macros: XkbSARedirectVMods unsigned int XkbSARedirectVMods XkbRedirectKeyAction act act action from which to extract vmods XkbSARedirectVModsMask returns the vmods0 and vmods1 fields of act converted to an unsigned int. XkbSARedirectSetVMods void XkbSARedirectSetVMods XkbRedirectKeyAction act unsigned int v act action in which to set vmods v new value for virtual modifiers XkbSARedirectSetVModsMask sets the vmods0 and vmods1 of act from v. Actions for Generating DeviceButtonPress and DeviceButtonRelease XkbDeviceBtnAction Actions associated with XkbDeviceBtnAction structures generate DeviceButtonPress and DeviceButtonRelease events instead of normal KeyPress and KeyRelease events: typedef struct _XkbDeviceBtnAction { unsigned char type; /* XkbSA_DeviceBtn, XkbSA_LockDeviceBtn */ unsigned char flags; /* with type, specifies locking or unlocking */ unsigned char count; /* controls number of DeviceButtonPress and Release events */ unsigned char button; /* index of button on device */ unsigned char device; /* device ID of an X input extension device */ } XkbDeviceBtnAction; The type field can have any one of the values shown in Table 16.17. Device Button Action Types Type Effect XkbSA_DeviceBtn If the button specified by this action is logically down, the key press and corresponding release are ignored and have no effect. If the device or button specified by this action are illegal, this action behaves like XkbSA_NoAction. Otherwise, key presses cause one or more input extension device events instead of the usual key press event. If the count field is zero, a key press generates a single DeviceButtonPress event. If count is greater than zero, a key press event generates count pairs of DeviceButtonPress and DeviceButtonRelease events. If count is zero, a key release generates an input extension DeviceButtonRelease event that matches the event generated by the corresponding key press. If count is nonzero, a key release does not cause a DeviceButtonRelease event. Key releases never cause KeyRelease events. XkbSA_LockDeviceBtn If the device or button specified by this action are illegal, this action behaves like XkbSA_NoAction. Otherwise, if the specified button is not locked and the XkbSA_LockNoLock bit is not set in the flags field, a key press generates an input extension DeviceButtonPress event instead of a KeyPress event and locks the button. If the button is already locked or if XkbSA_LockNoLock bit is set in the flags field, the key press is ignored and has no effect. If the corresponding key press was ignored, and if the XkbSA_LockNoUnlock bit is not set in the flags field, a key release generates an input extension DeviceButtonRelease event instead of a KeyRelease event and unlocks the button. If the corresponding key press locked a button, the key release is ignored and has no effect.
The flags field is composed of the bitwise inclusive OR of the masks shown in Table 16.18. Device Button Action Flags Flag Meaning XkbSA_LockNoLock If set, and the action type is XkbSA_LockDeviceBtn, the server only unlocks the button. XkbSA_LockNoUnlock If set, and the action type is XkbSA_LockDeviceBtn, the server only locks the button.
Actions for Simulating Events from Device Valuators XkbDeviceValuatorAction A valuator valuator manipulates a range of values for some entity, like a mouse axis, a slider or a dial. Actions associated with XkbDeviceValuatorAction structures are used to simulate events from one or two input extension device valuators. typedef struct _XkbDeviceValuatorAction { unsigned char type; /* XkbSA_DeviceValuator */ unsigned char device; /* device ID */ unsigned char v1_what; /* determines how valuator is to behave for valuator 1 */ unsigned char v1_ndx; /* specifies a real valuator */ unsigned char v1_value; /* the value for valuator 1 */ unsigned char v2_what; /* determines how valuator is to behave for valuator 2 */ unsigned char v2_ndx; /* specifies a real valuator */ unsigned char v2_value; /* the value for valuator 1 */ } XkbDeviceValuatorAction; If device is illegal or if neither v1_ndx nor v2_ndx specifies a legal valuator, this action behaves like XkbSA_NoAction. The low four bits of v1_what and v2_what specify the corresponding scale value (denoted val<n>Scale in Table 16.17), if needed. The high four bits of v1_what and v2_what specify the operation to perform to set the values. The high four bits of v1_what and v2_what can have the values shown in Table 16.17; the use of val<n>Scale is shown in that table also. Device Valuator v<n>_what High Bits Values Value of high bits Effect XkbSA_IgnoreVal No action XkbSA_SetValMin v<n>_value is set to its minimum legal value. XkbSA_SetValCenter v<n>_valueis centered (to (max-min)/2). XkbSA_SetValMax v<n>_value is set to its maximum legal value. XkbSA_SetValRelative v<n>_value * (2 val<n>Scale) is added to v<n>_value. XkbSA_SetValAbsolute v<n>_value is set to (2 val<n>Scale).
Illegal values for XkbSA_SetValRelative or XkbSA_SetValAbsolute are clamped into range. Note that all of these possibilities are legal for absolute valuators. For relative valuators, only XkbSA_SetValRelative is permitted. Part of the input extension description of a device is the range of legal values for all absolute valuators, whence the maximum and minimum legal values shown in Table 16.17. The following two masks are provided as a convenience to select either portion of v1_what or v2_what: #define XkbSA_ValOpMask (0x70) #define XkbSA_ValScaleMask (0x07) v1_ndx and v2_ndx specify valuators that actually exists. For example, most mice have two valuators (x and y axes) so the only legal values for a mouse would be 0 and 1. For a dial box with eight dials, any value in the range 0..7 would be correct.
Obtaining Key Actions for Keys from the Server To update the actions (the key_acts array) for a subset of the keys in a keyboard description, use XkbGetKeyActions. XkbGetKeyActions Status XkbGetKeyActions Display *dpy unsigned int first unsigned int num XkbDescPtr xkb dpy connection to X server first keycode of first key of interest num number of keys desired xkb pointer to keyboard description where result is stored XkbGetKeyActions sends a request to the server to obtain the actions for num keys on the keyboard starting with key first. It waits for a reply and returns the actions in the server->key_acts field of xkb. If successful, XkbGetKeyActions returns Success. The xkb parameter must be a pointer to a valid Xkb keyboard description. If the server map in the xkb parameter has not been allocated, XkbGetKeyActions allocates and initializes it before obtaining the actions. If the server does not have a compatible version of Xkb, or the Xkb extension has not been properly initialized, XkbGetKeyActions returns BadAccess. If num is less than 1 or greater than XkbMaxKeyCount, XkbGetKeyActions returns BadValue. If any allocation errors occur, XkbGetKeyActions returns BadAlloc. Changing the Number of Actions Bound to a Key To change the number of actions bound to a key, use XkbResizeKeyActions. XkbResizeKeyActions XkbAction *XkbResizeKeyActions XkbDescRec *xkb int key int needed xkb keyboard description to change key keycode of key to change needed new number of actions required The xkb parameter points to the keyboard description containing the key whose number of actions is to be changed. The key parameter is the keycode of the key to change, and needed specifies the new number of actions required for the key. XkbResizeKeyActions reserves the space needed for the actions and returns a pointer to the beginning of the new array that holds the actions. It can change the acts, num_acts, and size_acts fields of xkb->server if it is necessary to reallocate the acts array. If needed is greater than the current number of keysyms for the key, XkbResizeKeyActions initializes all new actions in the array to NoAction. Because the number of actions needed by a key is normally computed as width * number of groups, and XkbResizeKeyActions does not modify either the width or number of groups for the key, a discrepancy exists on return from XkbResizeKeyActions between the space allocated for the actions and the number required. The unused entries in the list of actions returned by XkbResizeKeyActions are not preserved across future calls to any of the map editing functions, so you must update the key actions (which updates the width and number of groups for the key) before calling another allocator function. A call to XkbChangeTypesOfKey updates these. If any allocation errors occur while resizing the number of actions bound to the key, XkbResizeKeyActions returns NULL. A change to the number of actions bound to a key should be accompanied by a change in the number of symbols bound to a key. Refer to section 15.3.7 for more information on changing the number of symbols bound to a key.
Key Behavior Key behavior refers to the demeanor of a key. For example, the expected behavior of the CapsLock key is that it logically locks when pressed, and then logically unlocks when pressed again. Radio Groups Keys that belong to the same radio group have the XkbKB_RadioGroup type in the type field and the radio group index specified in the data field in the XkbBehavior structure. If the radio group has a name in the XkbNamesRec structure, the radio group index is the index into the radio_group array in the XkbNamesRec structure. A radio group key when pressed stays logically down until another key in the radio group is pressed, when the first key becomes logically up and the new key becomes logically down. Setting the XkbKB_RGAllowNone bit in the behavior for all of the keys of the radio group means that pressing the logically down member of the radio group causes it to logically release, in which case none of the keys of the radio group would be logically down. If XkbKB_RGAllowNone is not set, there is no way to release the logically down member of the group. The low five bits of the data field of the XkbBehavior structure are the group number, the high three bits are flags. The only flag currently defined is: #define XkbKB_RGAllowNone 0x80 The XkbBehavior Structure XkbBehavior The behaviors field of the server map is an array of XkbBehavior structures, indexed by keycode, and contains the behavior for each key. The XkbBehavior structure is defined as follows: typedef struct _XkbBehavior { unsigned char type; /* behavior type + optional XkbKB_Permanent bit */ unsigned char data; } XkbBehavior; The type field specifies the Xkb behavior, and the value of the data field depends on the type. Xkb supports the key behaviors shown in Table 16.20. Key Behaviors Type Effect XkbKB_Default Press and release events are processed normally. The data field is unused. XkbKB_Lock If a key is logically up (that is, the corresponding bit of the core key map is cleared) when it is pressed, the key press is processed normally and the corresponding release is ignored. If the key is logically down when pressed, the key press is ignored but the corresponding release is processed normally. The data field is unused. XkbKB_RadioGroup If another member of the radio group is logically down (all members of the radio group have the same index, specified in data) when a key is pressed, the server synthesizes a key release for the member that is logically down and then processes the new key press event normally. If the key itself is logically down when pressed, the key press event is ignored, but the processing of the corresponding key release depends on the value of the XkbKB_RGAllowNone bit in flags. If it is set, the key release is processed normally; otherwise, the key release is also ignored. All other key release events are ignored. XkbKB_Overlay1 If the Overlay1 control is enabled (see section 10.4), data is interpreted as a keycode, and events from this key are reported as if they came from data’s keycode. Otherwise, press and release events are processed normally. XkbKB_Overlay2 If the Overlay2 control is enabled (see section 10.4), data is interpreted as a keycode, and events from this key are reported as if they came from data’s keycode. Otherwise, press and release events are processed normally.
Xkb also provides the mask, XkbKB_Permanent to specify whether the key behavior type should be simulated by Xkb or whether the key behavior describes an unalterable physical, electrical, or software aspect of the keyboard. If the XkbKB_Permanent bit is not set in the type field, Xkb simulates the behavior in software. Otherwise, Xkb relies upon the keyboard to implement the behavior.
Obtaining Key Behaviors for Keys from the Server To obtain the behaviors (the behaviors array) for a subset of the keys in a keyboard description from the server, use XkbGetKeyBehaviors: XkbGetKeyBehaviors Status XkbGetKeyBehaviors Display *dpy unsigned int first unsigned int num XkbDescPtr xkb dpy connection to server first keycode of first key to get num number of keys for which behaviors are desired xkb Xkb description to contain the result XkbGetKeyBehaviors sends a request to the server to obtain the behaviors for num keys on the keyboard starting with the key whose keycode is first. It waits for a reply and returns the behaviors in the server->behaviors field of xkb. If successful, XkbGetKeyBehaviors returns Success. If the server map in the xkb parameter has not been allocated, XkbGetKeyBehaviors allocates and initializes it before obtaining the actions. If the server does not have a compatible version of Xkb, or the Xkb extension has not been properly initialized, XkbGetKeyBehaviors returns BadAccess. If num is less than 1 or greater than XkbMaxKeyCount, XkbGetKeyBehaviors returns BadValue. If any allocation errors occur, XkbGetKeyBehaviors returns BadAlloc.
Explicit Components—Avoiding Automatic Remapping by the Server Whenever a client remaps the keyboard using core protocol requests, Xkb examines the map to determine likely default values for the components that cannot be specified using the core protocol (see section 17.1.2 for more information on how Xkb chooses the default values). This automatic remapping might replace definitions explicitly requested by an application, so the Xkb keyboard description defines an explicit components mask for each key. Any aspects of the automatic remapping listed in the explicit components mask for a key are not changed by the automatic keyboard mapping. The explicit components masks are held in the explicit field of the server map, which is an array indexed by keycode. Each entry in this array is a mask that is a bitwise inclusive OR of the values shown in Table 16.21. Explicit Component Masks Bit in Explicit Mask Value Protects Against ExplicitKeyType1 (1<<0) Automatic determination of the key type associated with Group1. ExplicitKeyType2 (1<<1) Automatic determination of the key type associated with Group2. ExplicitKeyType3 (1<<2) Automatic determination of the key type associated with Group3. ExplicitKeyType4 (1<<3) Automatic determination of the key type associated with Group4. ExplicitInterpret (1<<4) Application of any of the fields of a symbol interpretation to the key in question. ExplicitAutoRepeat (1<<5) Automatic determination of auto-repeat status for the key, as specified in a symbol interpretation. ExplicitBehavior (1<<6) Automatic assignment of the XkbKB_Lock behavior to the key, if the XkbSI_LockingKey flag is set in a symbol interpretation. ExplicitVModMap (1<<7) Automatic determination of the virtual modifier map for the key based on the actions assigned to the key and the symbol interpretations that match the key.
Obtaining Explicit Components for Keys from the Server To obtain the explicit components (the explicit array) for a subset of the keys in a keyboard description, use XkbGetKeyExplicitComponents. XkbGetKeyExplicitComponents Status XkbGetKeyExplicitComponents Display *dpy unsigned int first unsigned int num XkbDescPtr xkb dpy connection to server first keycode of first key to fetch num number of keys for which to get explicit info xkb Xkb description in which to put results XkbGetKeyExplicitComponents sends a request to the server to obtain the explicit components for num keys on the keyboard starting with key first. It waits for a reply and returns the explicit components in the server->explicit array of xkb. If successful, XkbGetKeyExplicitComponents returns Success. The xkb parameter must be a pointer to a valid Xkb keyboard description. If the server map in the xkb parameter has not been allocated, XkbGetKeyExplicitComponents allocates and initializes it before obtaining the actions. If the server does not have a compatible version of Xkb, or the Xkb extension has not been properly initialized, XkbGetKeyExplicitComponents returns BadMatch. If num is less than 1 or greater than XkbMaxKeyCount, XkbGetKeyExplicitComponents returns BadValue. If any allocation errors occur, XkbGetKeyExplicitComponents returns BadAlloc.
Virtual Modifier Mapping The vmods member of the server map is a fixed-length array containing XkbNumVirtualMods entries. Each entry corresponds to a virtual modifier and provides the binding of the virtual modifier to the real modifier bits. Each entry in the vmods array is a bitwise inclusive OR of the legal modifier masks: ShiftMask LockMask ControlMask Mod1Mask Mod2Mask Mod3Mask Mod4Mask Mod5Mask The vmodmap member of the server map is similar to the modmap array of the client map (see section 15.4), but is used to define the virtual modifier mapping for each key. Like the modmap member, it is indexed by keycode, and each entry is a mask representing the virtual modifiers bound to the corresponding key: Each of the bits in a vmodmap entry represents an index into the vmods member. That is, bit 0 of a vmodmap entry refers to index 0 of the vmods array, bit 1 refers to index 1, and so on. If a bit is set in the vmodmap entry for a key, that key is bound to the corresponding virtual modifier in the vmods array. The vmodmap and vmods members of the server map are the master virtual modifier definitions. Xkb automatically propagates any changes to these fields to all other fields that use virtual modifier mappings. The overall relationship of fields dealing with virtual modifiers in an Xkb keyboard description are shown in Figure 16.2.
Virtual Modifier Relationships
Obtaining Virtual Modifier Bindings from the Server To obtain a subset of the virtual modifier bindings (the vmods array) in a keyboard description, use XkbGetVirtualMods: XkbGetVirtualMods Status XkbGetVirtualMods Display *dpy unsigned int which XkbDescPtr xkb dpy connection to server which mask indicating virtual modifier bindings to get xkb Xkb description where results will be placed XkbGetVirtualMods sends a request to the server to obtain the vmods entries for the virtual modifiers specified in the mask, which, and waits for a reply. See section 7.1 for a description of how to determine the virtual modifier mask. For each bit set in which, XkbGetVirtualMods updates the corresponding virtual modifier definition in the server->vmods array of xkb. The xkb parameter must be a pointer to a valid Xkb keyboard description. If successful, XkbGetVirtualMods returns Success. If the server map has not been allocated in the xkb parameter, XkbGetVirtualMods allocates and initializes it before obtaining the virtual modifier bindings. If the server does not have a compatible version of Xkb, or the Xkb extension has not been properly initialized, XkbGetVirtualMods returns BadMatch. Any errors in allocation cause XkbGetVirtualMods to return BadAlloc. Obtaining Per-Key Virtual Modifier Mappings from the Server To obtain the virtual modifier map (the vmodmap array) for a subset of the keys in a keyboard description, use XkbGetKeyVirtualModMap: XkbGetKeyVirtualModMap Status XkbGetKeyVirtualModMap Display *dpy unsigned int first unsigned int num XkbDescPtr xkb dpy connection to server first keycode of first key to fetch num # keys for which virtual mod maps are desired xkb Xkb description where results will be placed XkbGetKeyVirtualModmap sends a request to the server to obtain the virtual modifier mappings for num keys on the keyboard starting with key first. It waits for a reply and returns the virtual modifier mappings in the server->vmodmap array of xkb. If successful, XkbGetKeyVirtualModMap returns Success. The xkb parameter must be a pointer to a valid Xkb keyboard description If the server map in the xkb parameter has not been allocated, XkbGetKeyVirtualModMap allocates and initializes it before obtaining the virtual modifier mappings. If the server does not have a compatible version of Xkb, or the Xkb extension has not been properly initialized, XkbGetKeyVirtualModMap returns BadMatch. If num is less than 1 or greater than XkbMaxKeyCount, XkbGetKeyVirtualModMap returns BadValue. If any allocation errors occur, XkbGetKeyVirtualModMap returns BadAlloc.
libX11-1.8.12/specs/XKB/XKBlib-18.svg0000644014310600000120000011673014763154126012160 image/svg+xml Xkb-capableClientXkb-aware XlibXkb-unaware App Xkb-unawareClientCore kb XlibXkb-unaware App Xkb-awareClientXkb-aware XlibXkb-aware App state config kbmapping Xkb-awareServerMaintains Xkb State and Mapping,core kb mapping, but not core kb state Xkb kbmapping Xkb state Xkb Keycode Xkb Core protocol Xkb protocol Keyboard config config state kbmapping config Xkb libX11-1.8.12/specs/XKB/XKBlib-3.svg0000644014310600000120000014524514763154126012075 image/svg+xml libX11-1.8.12/specs/XKB/XKBlib-4.svg0000644014310600000120000006166314763154126012077 image/svg+xml libX11-1.8.12/specs/XKB/ch07.xml0000644014310600000120000003610414763154126011355 Virtual Modifiers The core protocol specifies that certain keysyms, when bound to modifiers, affect the rules of keycode to keysym interpretation for all keys; for example, when the Num_Lock keysym is bound to some modifier, that modifier is used to select between shifted and unshifted state for the numeric keypad keys. The core protocol does not provide a convenient way to determine the mapping of modifier bits (in particular Mod1 through Mod5) to keysyms such as Num_Lock and Mode_switch. Using the core protocol only, a client application must retrieve and search the modifier map to determine the keycodes bound to each modifier, and then retrieve and search the keyboard mapping to determine the keysyms bound to the keycodes. It must repeat this process for all modifiers whenever any part of the modifier mapping is changed. Xkb alleviates these problems by defining virtual modifiers. In addition to the eight core modifiers, referred to as the real modifiers, real modifiers modifiersreal Xkb provides a set of sixteen named virtual modifiers. virtual modifiers modifiersvirtual Each virtual modifier can be bound to any set of the real modifiers ( Shift, Lock, Control, and Mod1Mod5). The separation of function from physical modifier bindings makes it easier to specify more clearly the intent of a binding. X servers do not all assign modifiers the same way — for example, Num_Lock might be bound to Mod2 for one vendor and to Mod4 for another. This makes it cumbersome to automatically remap the keyboard to a desired configuration without some kind of prior knowledge about the keyboard layout and bindings. With XKB, applications can use virtual modifiers to specify the desired behavior, without regard for the actual physical bindings in effect. Virtual Modifier Names and Masks Virtual modifiers are named by converting their string name to an X Atom and storing the Atom in the names.vmods array in an XkbDescRec structure (see section 6.1). The position of a name Atom in the names.vmods array defines the bit position used to represent the virtual modifier and also the index used when accessing virtual modifier information in arrays: the name in the i-th (0 relative) entry of names.vmods is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb, various functions have a parameter that is a mask representing virtual modifier choices. In each case, the i-th bit (0 relative) of the mask represents the i-th virtual modifier. To set the name of a virtual modifier, use XkbSetNames, using XkbVirtualModNamesMask in which and the name in the xkb argument; to retrieve indicator names, use XkbGetNames. These functions are discussed in . Modifier Definitions XkbModsRec An Xkb modifier definition modifier definition enumerates a collection of real and virtual modifiers but does not in itself bind those modifiers to any particular key or to each other. Modifier definitions are included in a number of structures in the keyboard description to define the collection of modifiers that affect or are affected by some other entity. A modifier definition is relevant only in the context of some other entity such as an indicator map, a control, or a key type. (See section 8.2.2, section 10.8, and section 15.2.) typedef struct _XkbMods { unsigned char mask; /* real_mods | vmods mapped to real modifiers */ unsigned char real_mods; /* real modifier bits */ unsigned short vmods; /* virtual modifier bits */ } XkbModsRec, *XkbModsPtr; An Xkb modifier definition consists of a set of bit masks corresponding to the eight real modifiers (real_mods); a similar set of bitmasks corresponding to the 16 named virtual modifiers (vmods); and an effective mask (mask). The effective mask represents the set of all real modifiers that can logically be set either by setting any of the real modifiers or by setting any of the virtual modifiers in the definition. mask is derived from the real and virtual modifiers and should never be explicitly changed — it contains all of the real modifiers specified in the definition (real_mods) plus any real modifiers that are bound to the virtual modifiers specified in the definition (vmods). The binding of the virtual modifiers to real modifiers is exterior to the modifier definition. Xkb automatically recomputes the mask field of modifier definitions as necessary. Whenever you access a modifier definition that has been retrieved using an Xkb library function, the mask field will be correct for the keyboard mapping of interest. Binding Virtual Modifiers to Real Modifiers The binding of virtual modifiers to real modifiers is defined by the server.vmods array in an XkbDescRec structure. Each entry contains the real modifier bits that are bound to the virtual modifier corresponding to the entry. The overall relationship of fields dealing with virtual modifiers in the server keyboard description are shown in Figure 16.2. Virtual Modifier Key Mapping Xkb maintains a virtual modifier mapping, virtual modifier mapping modifiersvirtual mapping which lists the virtual modifiers associated with, or bound to, each key. The real modifiers bound to a virtual modifier always include all of the modifiers bound to any of the keys that specify that virtual modifier in their virtual modifier mapping. The server.vmodmap array indicates which virtual modifiers are bound to each key; each entry is a bitmask for the virtual modifier bits. The server.vmodmap array is indexed by keycode. The vmodmap and vmods members of the server map are the master virtual modifier definitions. Xkb automatically propagates any changes to these fields to all other fields that use virtual modifier mappings (see section 16.4). For example, if Mod3 is bound to the Num_Lock key by the core protocol modifier mapping, and the NumLock virtual modifier is bound to they Num_Lock key by the virtual modifier mapping, Mod3 is added to the set of modifiers associated with NumLock. The virtual modifier mapping is normally updated whenever actions are automatically applied to symbols (see section 16.4 for details), and few applications should need to change the virtual modifier mapping explicitly. Use XkbGetMap (see section 14.2) to get the virtual modifiers from the server or use XkbGetVirtualMods (see section 16.4.1) to update a local copy of the virtual modifiers bindings from the server. To set the binding of a virtual modifier to a real modifier, use XkbSetMap (see section 14.3). To determine the mapping of virtual modifiers to core X protocol modifiers, use XkbVirtualModsToReal. XkbVirtualModsToReal Bool XkbVirtualModsToReal XkbDescPtr xkb unsigned int virtual_mask unsigned int *mask_rtrn xkb keyboard description for input device virtual_mask virtual modifier mask to translate mask_rtrn backfilled with real modifiers If the keyboard description defined by xkb includes bindings for virtual modifiers, XkbVirtualModsToReal uses those bindings to determine the set of real modifiers that correspond to the set of virtual modifiers specified in virtual_mask. The virtual_mask parameter is a mask specifying the virtual modifiers to translate; the i-th bit (0 relative) of the mask represents the i-th virtual modifier. If mask_rtrn is non- NULL, XkbVirtualModsToReal backfills it with the resulting real modifier mask. If the keyboard description in xkb does not include virtual modifier bindings, XkbVirtualModsToReal returns False; otherwise, it returns True. It is possible for a local (client-side) keyboard description (the xkb parameter) to not contain any virtual modifier information (simply because the client has not requested it) while the server’s corresponding definition may contain virtual modifier information. Inactive Modifier Sets An unbound virtual modifier is one that is not bound to any real modifier ( server->vmods [virtual_modifier_index] is zero). Some Xkb operations ignore modifier definitions in which the virtual modifiers are unbound. Consider this example: if (state matches {Shift}) Do OneThing; if (state matches {Shift+NumLock}) Do Another; If the NumLock virtual modifier is not bound to any real modifiers, the effective masks for these two cases are identical (that is, contain only Shift). When it is essential to distinguish between OneThing and Another, Xkb considers only those modifier definitions for which all virtual modifiers are bound. Conventions modifiersnames The Xkb extension does not require any specific virtual modifier names. However, everyone benefits if the same names are used for common modifiers. The following names are suggested: NumLock ScrollLock Alt Meta AltGr LevelThree Example If the second (0-relative) entry in names.vmods contains the Atom for "NumLock", then 0x4 (1<<2) is the virtual modifier bit for the NumLock virtual modifier. If server.vmods [2] contains Mod3Mask, then the NumLock virtual modifier is bound to the Mod3 real modifier. A virtual modifier definition for this example would have: real_mods = 0 vmods = 0x4 (NumLock named virtual modifier) mask = 0x20 (Mod3Mask) Continuing the example, if the keyboard has a Num_Lock keysym bound to the key with keycode 14, and the NumLock virtual modifier is bound to this key, server.vmodmap[14] contains 0x4. Finally, if the keyboard also used the real Mod1 modifier for numeric lock operations, the modifier definition below would represent the situation where either the key bound to Mod1 or the NumLock virtual modifier could be used for this purpose: real_mods = 0x8 (Mod1Mask) vmods = 0x4 (NumLock named virtual modifier) mask = 0x28 (Mod1Mask | Mod3Mask) libX11-1.8.12/specs/XKB/ch09.xml0000644014310600000120000007372514763154126011371 Bells bell The core X protocol allows only applications to explicitly sound the system bell with a given duration, pitch, and volume. Xkb extends this capability by allowing clients to attach symbolic names to bells, disable audible bells, and receive an event whenever the keyboard bell is rung. For the purposes of this document, the audible audible bell bellaudible bell is defined to be the system bell, or the default keyboard bell, as opposed to any other audible sound generated elsewhere in the system. You can ask to receive XkbBellNotify events (see section 9.4) when any client rings any one of the following: The default bell Any bell on an input device that can be specified by a bell_class and bell_id pair Any bell specified only by an arbitrary name. (This is, from the server’s point of view, merely a name, and not connected with any physical sound-generating device. Some client application must generate the sound, or visual feedback, if any, that is associated with the name.) You can also ask to receive XkbBellNotify events when the server rings the default bell or if any client has requested events only (without the bell sounding) for any of the bell types previously listed. You can disable audible bells on a global basis (to set the AudibleBell control, see ). For example, a client that replaces the keyboard bell with some other audible cue might want to turn off the AudibleBell control to prevent the server from also generating a sound and avoid cacophony. If you disable audible bells and request to receive XkbBellNotify events, you can generate feedback different from the default bell. You can, however, override the AudibleBell control by calling one of the functions that force the ringing of a bell in spite of the setting of the AudibleBell control — XkbForceDeviceBell or XkbForceBell (see section 9.3.3). In this case the server does not generate a bell event. Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeating, Xkb can provide feedback for the controls by using special beep codes. The AccessXFeedback control is used to configure the specific types of operations that generate feedback. See section 10.6.3 for a discussion on AccessXFeedback control. This chapter describes bell names, the functions used to generate named bells, and the events the server generates for bells. Bell Names You can associate a name to an act of ringing a bell by converting the name to an Atom and then using this name when you call the functions listed in this chapter. If an event is generated as a result, the name is then passed to all other clients interested in receiving XkbBellNotify events. Note that these are arbitrary names and that there is no binding to any sounds. Any sounds or other effects (such as visual bells on the screen) must be generated by a client application upon receipt of the bell event containing the name. There is no default name for the default keyboard bell. The server does generate some predefined bells for the AccessX controls (see section 10.6.3). These named bells are shown in Table 9.1; the name is included in any bell event sent to clients that have requested to receive XkbBellNotify events. Predefined Bells Action Named Bell Indicator turned on AX_IndicatorOn Indicator turned off AX_IndicatorOff More than one indicator changed state AX_IndicatorChange Control turned on AX_FeatureOn Control turned off AX_FeatureOff More than one control changed state AX_FeatureChange SlowKeys and BounceKeys about to be turned on or off AX_SlowKeysWarning SlowKeys key pressed AX_SlowKeyPress SlowKeys key accepted AX_SlowKeyAccept SlowKeys key rejected AX_SlowKeyReject Accepted SlowKeys key released AX_SlowKeyRelease BounceKeys key rejected AX_BounceKeyReject StickyKeys key latched AX_StickyLatch StickyKeys key locked AX_StickyLock StickyKeys key unlocked AX_StickyUnlock
Audible Bells Using Xkb you can generate bell events that do not necessarily ring the system bell. This is useful if you need to use an audio server instead of the system beep. For example, when an audio client starts, it could disable the audible bell (the system bell) and then listen for XkbBellNotify events (see section 9.4). When it receives a XkbBellNotify event, the audio client could then send a request to an audio server to play a sound. You can control the audible bells feature by passing the XkbAudibleBellMask to XkbChangeEnabledControls (see section 10.1.1). If you set XkbAudibleBellMask on, the server rings the system bell when a bell event occurs. This is the default. If you set XkbAudibleBellMask off and a bell event occurs, the server does not ring the system bell unless you call XkbForceDeviceBell or XkbForceBell (see section 9.3.3). Audible bells are also part of the per-client auto-reset controls. For more information on auto-reset controls, see section 10.1.2. Bell Functions Use the functions described in this section to ring bells and to generate bell events. The input extension has two types of feedbacks that can generate bells — bell feedback and keyboard feedback. Some of the functions in this section have bell_class and bell_id parameters; set them as follows: Set bell_class to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of each type; set bell_id to the particular bell feedback of bell_class type. Table 9.2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated when a bell function is called. Bell Sounding and Bell Event Generating Function called AudibleBell Server sounds a bell Server sends an XkbBellNotifyEvent XkbDeviceBell On Yes Yes XkbDeviceBell Off No Yes XkbBell On Yes Yes XkbBell Off No Yes XkbDeviceBellEvent On or Off No Yes XkbBellEvent On or Off No Yes XkbDeviceForceBell On or Off Yes No XkbForceBell On or Off Yes No
Generating Named Bells To ring the bell on an X input extension device or the default keyboard, use XkbDeviceBell. XkbDeviceBell Bool XkbDeviceBell Display *display Window window unsigned int device_spec unsigned int bell_class unsigned int bell_id int percent Atom name display connection to the X server window window for which the bell is generated, or None device_spec device ID, or XkbUseCoreKbd bell_class X input extension bell class of the bell to be rung bell_id X input extension bell ID of the bell to be rung percent bell volume, from −100 to 100 inclusive name a name for the bell, or NULL Set percent to be the volume relative to the base volume for the keyboard as described for XBell. Note that bell_class and bell_id indicate the bell to physically ring. name is simply an arbitrary moniker for the client application’s use. To determine the current feedback settings of an extension input device, use XGetFeedbackControl. See the X input extension documentation for more information on XGetFeedbackControl and related data structures. If a compatible keyboard extension is not present in the X server, XkbDeviceBell immediately returns False. Otherwise, XkbDeviceBell rings the bell as specified for the display and keyboard device and returns True. If you have disabled the audible bell, the server does not ring the system bell, although it does generate a XkbBellNotify event. You can call XkbDeviceBell without first initializing the keyboard extension. As a convenience function, Xkb provides a function to ring the bell on the default keyboard: XkbBell. XkbBell Bool XkbBell Display *display Window window int percent Atom name display connection to the X server window event window, or None percent relative volume, which can range from −100 to 100 inclusive name a bell name, or NULL If a compatible keyboard extension isn’t present in the X server, XkbBell calls XBell with the specified display and percent, and returns False. Otherwise, XkbBell calls XkbDeviceBell with the specified display, window, percent, and name, a device_spec of XkbUseCoreKbd, a bell_class of XkbDfltXIClass, and a bell_id of XkbDfltXIId, and returns True. If you have disabled the audible bell, the server does not ring the system bell, although it does generate a XkbBellNotify event. You can call XkbBell without first initializing the keyboard extension. Generating Named Bell Events Using Xkb, you can also generate a named bell event that does not ring any bell. This allows you to do things such as generate events when your application starts. For example, if an audio client listens for these types of bells, it can produce a whoosh sound when it receives a named bell event to indicate a client just started. In this manner, applications can generate start-up feedback and not worry about producing annoying beeps if an audio server is not running. To cause a bell event for an X input extension device or for the keyboard, without ringing the corresponding bell, use XkbDeviceBellEvent. XkbDeviceBellEvent Bool XkbDeviceBellEvent Display *display Window window unsigned int device_spec unsigned int bell_class unsigned int bell_id int percent Atom name display connection to the X server window event window, or None device_spec device ID, or XkbUseCoreKbd bell_class input extension bell class for the event bell_id input extension bell ID for the event percent volume for the bell, which can range from −100 to 100 inclusive name a bell name, or NULL If a compatible keyboard extension isn’t present in the X server, XkbDeviceBellEvent immediately returns False. Otherwise, XkbDeviceBellEvent causes an XkbBellNotify event to be sent to all interested clients and returns True. Set percent to be the volume relative to the base volume for the keyboard as described for XBell. In addition, XkbDeviceBellEvent may generate Atom protocol errors as well as XkbBellNotify events. You can call XkbBell without first initializing the keyboard extension. As a convenience function, Xkb provides a function to cause a bell event for the keyboard without ringing the bell: XkbBellEvent. XkbBellEvent Bool XkbBellEvent Display *display Window window int percent Atom name display connection to the X server window the event window, or None percent relative volume, which can range from −100 to 100 inclusive name a bell name, or NULL If a compatible keyboard extension isn’t present in the X server, XkbBellEvent immediately returns False. Otherwise, XkbBellEvent calls XkbDeviceBellEvent with the specified display, window, percent, and name, a device_spec of XkbUseCoreKbd, a bell_class of XkbDfltXIClass, and a bell_id of XkbDfltXIId, and returns what XkbDeviceBellEvent returns. XkbBellEvent generates a XkbBellNotify event. You can call XkbBellEvent without first initializing the keyboard extension. Forcing a Server-Generated Bell To ring the bell on any keyboard, overriding user preference settings for audible bells, use XkbForceDeviceBell. XkbForceDeviceBell Bool XkbForceDeviceBell Display *display Window window unsigned int device_spec unsigned int bell_class unsigned int bell_id int percent display connection to the X server window event window, or None device_spec device ID, or XkbUseCoreKbd bell_class input extension class of the bell to be rung bell_id input extension ID of the bell to be rung percent relative volume, which can range from −100 to 100 inclusive If a compatible keyboard extension isn’t present in the X server, XkbForceDeviceBell immediately returns False. Otherwise, XkbForceDeviceBell rings the bell as specified for the display and keyboard device and returns True. Set percent to be the volume relative to the base volume for the keyboard as described for XBell. There is no name parameter because XkbForceDeviceBell does not cause an XkbBellNotify event. You can call XkbBell without first initializing the keyboard extension. To ring the bell on the default keyboard, overriding user preference settings for audible bells, use XkbForceBell. XkbForceBell Bool XkbForceBell Display *display int percent display connection to the X server percent volume for the bell, which can range from −100 to 100 inclusive If a compatible keyboard extension isn’t present in the X server, XkbForceBell calls XBell with the specified display and percent and returns False. Otherwise, XkbForceBell calls XkbForceDeviceBell with the specified display and percent, device_spec = XkbUseCoreKbd, bell_class = XkbDfltXIClass, bell_id = XkbDfltXIId, window = None, and name = NULL, and returns what XkbForceDeviceBell returns. XkbForceBell does not cause an XkbBellNotify event. You can call XkbBell without first initializing the keyboard extension.
Detecting Bells Xkb generates XkbBellNotify events for all bells except for those resulting from calls to XkbForceDeviceBell and XkbForceBell. To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask in both the bits_to_change and values_for_bits parameters to XkbSelectEvents (see section 4.3). The XkbBellNotify event has no event details. It is either selected or it is not. However, you can call XkbSelectEventDetails using XkbBellNotify as the event_type and specifying XkbAllBellEventsMask in bits_to_change and values_for_bits. This has the same effect as a call to XkbSelectEvents. The structure for the XkbBellNotify event type contains: typedef struct _XkbBellNotify { int type; /* Xkb extension base event code */ unsigned long serial; /* X server serial number for event */ Bool send_event; /* True ⇒ synthetically generated */ Display * display; /* server connection where event generated */ Time time; /* server time when event generated */ int xkb_type; /* XkbBellNotify */ unsigned int device; /* Xkb device ID, will not be XkbUseCoreKbd */ int percent; /* requested volume as % of max */ int pitch; /* requested pitch in Hz */ int duration; /* requested duration in microseconds */ unsigned int bell_class; /* X input extension feedback class */ unsigned int bell_id; /* X input extension feedback ID */ Atom name; /* "name" of requested bell */ Window window; /* window associated with event */ Bool event_only; /* False → the server did not produce a beep */ } XkbBellNotifyEvent; If your application needs to generate visual bell feedback on the screen when it receives a bell event, use the window ID in the XkbBellNotifyEvent, if present.
libX11-1.8.12/specs/XKB/acknowledgement.xml0000644014310600000120000000400614763154126013757 Acknowledgement This document is the result of a great deal of hard work by a great many people. Without Erik Fortune’s work as Architect of the X Keyboard Extension and the longtime support of Silicon Graphics Inc. there would not be a keyboard extension. We gratefully thank Will Walker and George Sachs for their help and expertise in providing some of the content for this document, and Digital Equipment Corporation and Hewlett-Packard for allowing them to participate in this project, and we are deeply indebted to IBM for providing the funding to complete this library specification. Most of all, we thank Gary Aitken and Amber J. Benson for their long hours and late nights as ultimate authors of this specification, and for serving as authors, document editors, and XKB protocol and implementation reviewers. Their commitment to accuracy and completeness, their attention to detail, their keen insight, and their good natures when working under tremendous pressure are in some measure responsible not only for the quality of this document, but for the quality of the Keyboard extension itself. Matt Landau Manager, X Window System X Consortium Inc. X Version 11, Release 7 addendum This document is made available to you in modern formats such as HTML and PDF thanks to the efforts of Matt Dew, who converted the original troff sources to DocBook/XML and edited them into shape; Fernando Carrijo, who converted the images to SVG format; Gaetan Nadon, who set up the formatting machinery in the libX11 builds and performed further editing of the DocBook markup; and Alan Coopersmith, who converted the DocBook tags to semantic markup and cleaned up other formatting issues. libX11-1.8.12/specs/XKB/XKBlib-5.svg0000644014310600000120000007312214763154126012071 image/svg+xml libX11-1.8.12/specs/XKB/ch22.xml0000644014310600000120000001444514763154126011356 Debugging Aids The debugging aids are intended for use primarily by Xkb implementors and are optional in any implementation. There are two bitmasks that may be used to control debugging. One bitmask controls the output of debugging information, and the other controls behavior. Both bitmasks are initially all zeros. To change the values of any of the debug controls, use XkbSetDebuggingFlags. XkbSetDebuggingFlags Bool XkbSetDebuggingFlags Display *display unsigned int mask unsigned int flags char *msg unsigned int ctrls_mask unsigned int ctrls unsigned int *ret_flags unsigned int *ret_ctrls display connection to X server mask mask selecting debug output flags to change flags values for debug output flags selected by mask msg message to print right now ctrls_mask mask selecting debug controls to change ctrls values for debug controls selected by ctrls_mask ret_flags resulting state of all debug output flags ret_ctrls resulting state of all debug controls XkbSetDebuggingFlags modifies the debug output flags as specified by mask and flags, modifies the debug controls flags as specified by ctrls_mask and ctrls, prints the message msg, and backfills ret_flags and ret_ctrls with the resulting debug output and debug controls flags. When bits are set in the debug output masks, mask and flags, Xkb prints debug information corresponding to each bit at appropriate points during its processing. The device to which the output is written is implementation-dependent, but is normally the same device to which X server error messages are directed; thus the bits that can be set in mask and flags is implementation-specific. To turn on a debug output selection, set the bit for the output in the mask parameter and set the corresponding bit in the flags parameter. To turn off event selection for an event, set the bit for the output in the mask parameter and do not set the corresponding bit in the flags parameter. When bits are set in the debug controls masks, ctrls_mask and ctrls, Xkb modifies its behavior according to each controls bit. ctrls_mask and ctrls are related in the same way that mask and flags are. The valid controls bits are defined in Table 22.1. Debug Control Masks Debug Control Mask Value Meaning XkbDF_DisableLocks (1 << 0) Disable actions that lock modifiers
XkbSetDebuggingFlags returns True if successful and False otherwise. The only protocol error it may generate is BadAlloc, if for some reason it is unable to allocate storage. XkbSetDebuggingFlags is intended for developer use and may be disabled in production X servers. If it is disabled, XkbSetDebuggingFlags has no effect and does not generate any protocol errors. The message in msg is written immediately. The device to which it is written is implementation dependent but is normally the same device where X server error messages are directed.
libX11-1.8.12/specs/XKB/XKBlib-2.svg0000644014310600000120000007723514763154126012077 image/svg+xml Xkb State Base Modifiers Base Group Locked Modifiers Locked Group Latched Modifiers Latched Group Core Pointer Buttons Server Internal Modifiers IgnoreLock Modifiers IgnoreGroupLock Compatibility Map Effective Group Effective Modifiers Compatibility State Compatibility Lookup State Compatibility Grab State Lookup State Grab State libX11-1.8.12/specs/XKB/ch17.xml0000644014310600000120000016222414763154126011361 The Xkb Compatibility Map As shown in Figure 17.1, the X server is normally dealing with more than one client, each of which may be receiving events from the keyboard, and each of which may issue requests to modify the keyboard in some manner. Each client may be either Xkb-unaware, Xkb-capable, or Xkb-aware. The server itself may be either Xkb-aware or Xkb-unaware. If the server is Xkb-unaware, Xkb state and keyboard mappings are not involved in any manner, and Xkb-aware clients may not issue Xkb requests to the server. If the server is Xkb-aware, the server must be able to deliver events and accept requests in which the keyboard state and mapping are compatible with the mode in which the client is operating. Consequently, for some situations, conversions must be made between Xkb state / keyboard mappings and core protocol state / keyboard mappings, and vice versa.
Server Interaction with Types of Clients
In addition to these situations involving a single server, there are cases where a client that deals with multiple servers may need to configure keyboards on different servers to be similar and the different servers may not all be Xkb-aware. Finally, a client may be dealing with descriptions of keyboards (files, and so on) that are based on core protocol and therefore may need to be able to map these descriptions to Xkb descriptions. An Xkb-aware server maintains keyboard state and mapping as an Xkb keyboard state and an Xkb keyboard mapping plus a compatibility map used to convert from Xkb components to core components and vice versa. In addition, the server also maintains a core keyboard mapping that approximates the Xkb keyboard mapping. The core keyboard mapping may be updated piecemeal, on a per-key basis. When the server receives a core protocol ChangeKeyboardMapping or SetModifierMapping request, it updates its core keyboard mapping, then uses the compatibility map to update its Xkb keyboard mapping. When the server receives an XkbSetMap request, it updates those portions of its Xkb keyboard mapping specified by the request, then uses its compatibility map to update the corresponding parts of its core keyboard map. Consequently, the server’s Xkb keyboard map and also its core keyboard map may contain components that were set directly and others that were computed. Figure 17.2 illustrates these relationships. The core keyboard map is contained only in the server, not in any client-side data structures.
Server Derivation of State and Keyboard Mapping Components
There are three kinds of compatibility transformations made by the server: Xkb State to Core State Keyboard state information reported to a client in the state field of various core events may be translated from the Xkb keyboard state maintained by the server, which includes a group number, to core protocol state, which does not. In addition, whenever the Xkb state is retrieved, the compat_state, compat_grab_mods, and compat_lookup_mods fields of the XkbStateRec returned indicate the result of applying the compatibility map to the current Xkb state in the server. Core Keyboard Mapping to Xkb Keyboard Mapping After core protocol requests received by the server to change the keyboard mapping (ChangeKeyboardMapping and SetModifierMapping) have been applied to the server’s core keyboard map, the results must be transformed to achieve an equivalent change of the Xkb keyboard mapping maintained by the server. Xkb Keyboard Mapping to Core Keyboard Mapping After Xkb protocol requests received by the server to change the keyboard mapping (XkbSetMap) have been applied to the server’s Xkb keyboard map, the results are transformed to achieve an approximately equivalent change to the core keyboard mapping maintained by the server. This chapter discusses how a client may modify the compatibility map so that subsequent transformations have a particular result. The XkbCompatMap Structure XkbCompatMapRec All configurable aspects of mapping Xkb state and configuration to and from core protocol state and configuration are defined by a compatibility map, contained in an XkbCompatMapRec structure; plus a set of explicit override controls used to prevent particular components of type 2 (core-to-Xkb keyboard mapping) transformations from automatically occurring. These explicit override controls are maintained in a separate data structure discussed in section 16.3. The compat member of an Xkb keyboard description (XkbDescRec) points to the XkbCompatMapRec structure: typedef struct _XkbCompatMapRec { XkbSymInterpretPtr sym_interpret; /* symbol based key semantics */ XkbModsRec groups[XkbNumKbdGroups]; /* group ⇒ modifier map */ unsigned short num_si; /* # structures used in sym_interpret */ unsigned short size_si; /* # structures allocated in sym_interpret */ } XkbCompatMapRec, *XkbCompatMapPtr;
Xkb Compatibility Data Structures
The subsections that follow discuss how the compatibility map and explicit override controls are used in each of the three cases where compatibility transformations are made. Xkb State to Core Protocol State Transformation As shown in Figure 17.3, there are four group compatibility maps group compatibility map mapgroup compatibility (contained in groups [0..3]) in the XkbCompatMapRec structure, one per possible Xkb group. Each group compatibility map is a modifier definition (see section 7.2 for a description of modifier definitions). The mask component of the definition specifies which real modifiers should be set in the core protocol state field when the corresponding group is active. Because only one group is active at any one time, only one of the four possible transformations is ever applied at any one point in time. If the device described by the XkbDescRec does not support four groups, the extra groups fields are present, but undefined. Normally, the Xkb-aware server reports keyboard state in the state member of events such as a KeyPress event and ButtonPress event, encoded as follows: bits meaning 15 0 13–14 Group index 8–12 Pointer Buttons 0–7 Modifiers For Xkb-unaware clients, only core protocol keyboard information may be reported. Because core protocol does not define the group index, the group index is mapped to modifier bits as specified by the groups [group index] field of the compatibility map (the bits set in the compatibility map are ORed into bits 0–7 of the state), and bits 13–14 are reported in the event as zero. Core Keyboard Mapping to Xkb Keyboard Mapping Transformation When a core protocol keyboard mapping request is received by the server, the server’s core keyboard map is updated, and then the Xkb map maintained by the server is updated. Because a client may have explicitly configured some of the Xkb keyboard mapping in the server, this automatic regeneration of the Xkb keyboard mapping from the core protocol keyboard mapping should not modify any components of the Xkb keyboard mapping that were explicitly set by a client. The client must set explicit override controls to prevent this from happening (see section 16.3). The core-to-Xkb mapping is done as follows: Map the symbols from the keys in the core keyboard map to groups and symbols on keys in the Xkb keyboard map. The core keyboard mapping is of fixed width, so each key in the core mapping has the same number of symbols associated with it. The Xkb mapping allows a different number of symbols to be associated with each key; those symbols may be divided into a different number of groups (1-4) for each key. For each key, this process therefore involves partitioning the fixed number of symbols from the core mapping into a set of variable-length groups with a variable number of symbols in each group. For example, if the core protocol map is of width five, the partition for one key might result in one group with two symbols and another with three symbols. A different key might result in two groups with two symbols plus a third group with one symbol. The core protocol map requires at least two symbols in each of the first two groups. For each changed key, determine the number of groups represented in the new core keyboard map. This results in a tentative group count for each key in the Xkb map. For each changed key, determine the number of symbols in each of the groups found in step 1a. There is one explicit override control associated with each of the four possible groups for each Xkb key, ExplicitKeyType1 through ExplicitKeyType4. If no explicit override control is set for a group, the number of symbols used for that group from the core map is two. If the explicit override control is set for a group on the key, the number of symbols used for that Xkb group from the core map is the width of the Xkb group with one exception: because of the core protocol requirement for at least two symbols in each of groups one and two, the number of symbols used for groups one and two is the maximum of 2 or the width of the Xkb group. For each changed key, assign the symbols in the core map to the appropriate group on the key. If the total number of symbols required by the Xkb map for a particular key needs more symbols than the core protocol map contains, the additional symbols are taken to be NoSymbol keysyms appended to the end of the core set. If the core map contains more symbols than are needed by the Xkb map, trailing symbols in the core map are discarded. In the absence of an explicit override for group one or two, symbols are assigned in order by group; the first symbols in the core map are assigned to group one, in order, followed by group two, and so on. For example, if the core map contained eight symbols per key, and a particular Xkb map contained 2 symbols for G1 and G2 and three for G3, the symbols would be assigned as (G is group, L is shift level): G1L1 G1L2 G2L1 G2L2 G3L1 G3L2 G3L3 If an explicit override control is set for group one or two, the symbols are taken from the core set in a somewhat different order. The first four symbols from the core set are assigned to G1L1, G1L2, G2L1, G2L2, respectively. If group one requires more symbols, they are taken next, and then any additional symbols needed by group two. Group three and four symbols are taken in complete sequence after group two. For example, a key with four groups and three symbols in each group would take symbols from the core set in the following order: G1L1 G1L2 G2L1 G2L2 G1L3 G2L3 G3L1 G3L2 G3L3 G4L1 G4L2 G4L3 As previously noted, the core protocol map requires at lease two symbols in groups one and two. Because of this, if an explicit override control for an Xkb key is set and group one and / or group two is of width one, it is not possible to generate the symbols taken from the core protocol set and assigned to position G1L2 and / or G2L2. For each group on each changed key, assign a key type appropriate for the symbols in the group. For each changed key, remove any empty or redundant groups. At this point, the groups and their associated symbols have been assigned to the corresponding key definitions in the Xkb map. Apply symbol interpretations to modify key operation. This phase is completely skipped if the ExplicitInterpret override control bit is set in the explicit controls mask for the Xkb key (see section 16.3). For each symbol on each changed key, attempt to match the symbol and modifiers from the Xkb map to a symbol interpretation describing how to generate the symbol. When a match is found in step 2a, apply the symbol interpretation to change the semantics associated with the symbol in the Xkb key map. If no match is found, apply a default interpretation. The symbol interpretations used in step 2 are configurable and may be specified using XkbSymInterpretRec structures referenced by the sym_interpret field of an XkbCompatMapRec (see Figure 17.3). Symbol Interpretations — the XkbSymInterpretRec Structure XkbSymInterpretRec Symbol interpretations are used to guide the X server when it modifies the Xkb keymap in step 2. An initial set of symbol interpretations is loaded by the server when it starts. A client may add new ones using XkbSetCompatMap (see section 17.4). Symbol interpretations result in key semantics being set. When a symbol interpretation is applied, the following components of server key event processing may be modified for the particular key involved: Virtual modifier map Auto repeat Key behavior (may be set to XkbKB_Lock) Key action (see section 16.1) The XkbSymInterpretRec structure specifies a symbol interpretation: typedef struct { KeySym sym; /* keysym of interest or NULL */ unsigned char flags; /* XkbSI_AutoRepeat, XkbSI_LockingKey */ unsigned char match; /* specifies how mods is interpreted */ unsigned char mods; /* modifier bits, correspond to eight real modifiers */ unsigned char virtual_mod; /* 1 modifier to add to key virtual mod map */ XkbAnyAction act; /* action to bind to symbol position on key */ } XkbSymInterpretRec,*XkbSymInterpretPtr; If sym is not NULL, it limits the symbol interpretation to keys on which that particular keysym is selected by the modifiers matching the criteria specified by mods and match. If sym is NULL, the interpretation may be applied to any symbol selected on a key when the modifiers match the criteria specified by mods and match. match must be one of the values shown in Table 17.1 and specifies how the real modifiers specified in mods are to be interpreted. Symbol Interpretation Match Criteria Match Criteria Value Effect XkbSI_NoneOf (0) None of the bits that are on in mods can be set, but other bits can be. XkbSI_AnyOfOrNone (1) Zero or more of the bits that are on in mods can be set, as well as others. XkbSI_AnyOf (2) One or more of the bits that are on in mods can be set, as well as any others. XkbSI_AllOf (3) All of the bits that are on in mods must be set, but others may be set as well. XkbSI_Exactly (4) All of the bits that are on in mods must be set, and no other bits may be set.
In addition to the above bits, match may contain the XkbSI_LevelOneOnly bit, in which case the modifier match criteria specified by mods and match applies only if sym is in level one of its group; otherwise, mods and match are ignored and the symbol matches a condition where no modifiers are set. #define XkbSI_LevelOneOnly (0x80) /* use mods + match only if sym is level 1 */ If no matching symbol interpretation is found, the server uses a default interpretation where: sym = 0 flags = XkbSI_AutoRepeat match = XkbSI_AnyOfOrNone mods = 0 virtual_mod = XkbNoModifier act = SA_NoAction When a matching symbol interpretation is found in step 2a, the interpretation is applied to modify the Xkb map as follows. The act field specifies a single action to be bound to the symbol position; any key event that selects the symbol causes the action to be taken. Valid actions are defined in section 16.1. If the Xkb keyboard map for the key does not have its ExplicitVModMap control set, the XkbSI_LevelOneOnly bit and symbol position are examined. If the XkbSI_LevelOneOnly bit is not set in match or the symbol is in position G1L1, the virtual_mod field is examined. If virtual_mod is not XkbNoModifier, virtual_mod specifies a single virtual modifier to be added to the virtual modifier map for the key. virtual_mod is specified as an index in the range [0..15]. If the matching symbol is in position G1L1 of the key, two bits in the flags field potentially specify additional behavior modifications: #define XkbSI_AutoRepeat (1<<0) /* key repeats if sym is in position G1L1 */ #define XkbSI_LockingKey (1<<1) /* set KB_Lock behavior if sym is in psn G1L1 */ If the Xkb keyboard map for the key does not have its ExplicitAutoRepeat control set, its auto repeat behavior is set based on the value of the XkbSI_AutoRepeat bit. If the XkbSI_AutoRepeat bit is set, the auto-repeat behavior of the key is turned on; otherwise, it is turned off. If the Xkb keyboard map for the key does not have its ExplicitBehavior control set, its locking behavior is set based on the value of the XkbSI_LockingKey bit. If XkbSI_LockingKey is set, the key behavior is set to KB_Lock; otherwise, it is turned off (see section 16.3).
Xkb Keyboard Mapping to Core Keyboard Mapping Transformations Whenever the server processes Xkb requests to change the keyboard mapping, it discards the affected portion of its core keyboard mapping and regenerates it based on the new Xkb mapping. When the Xkb mapping for a key is transformed to a core protocol mapping, the symbols for the core map are taken in the following order from the Xkb map: G1L1 G1L2 G2L1 G2L2 G1L3-n G2L3-n G3L1-n G4L1-n If group one is of width one in the Xkb map, G1L2 is taken to be NoSymbol; similarly, if group two is of width one in the Xkb map, G2L2 is taken to be NoSymbol. If the Xkb key map for a particular key has fewer groups than the core keyboard, the symbols for group one are repeated to fill in the missing core components. For example, an Xkb key with a single width-three group would be mapped to a core mapping counting three groups as: G1L1 G1L2 G1L1 G1L2 G1L3 G1L3 G1L1 G1L2 G1L3 When a core keyboard map entry is generated from an Xkb keyboard map entry, a modifier mapping is generated as well. The modifier mapping contains all of the modifiers affected by any of the actions associated with the key combined with all of the real modifiers associated with any of the virtual modifiers bound to the key. In addition, if any of the actions associated with the key affect any component of the keyboard group, all of the modifiers in the mask field of all of the group compatibility maps are added to the modifier mapping as well. While an XkbSA_ISOLock action can theoretically affect any modifier, if the Xkb mapping for a key specifies an XkbSA_ISOLock action, only the modifiers or group that are set by default are added to the modifier mapping.
Getting Compatibility Map Components From the Server Use XkbGetCompatMap to fetch any combination of the current compatibility map components from the server. When another client modifies the compatibility map, you are notified if you have selected for XkbCompatMapNotify events (see section 17.5). XkbGetCompatMap is particularly useful when you receive an event of this type, as it allows you to update your program’s version of the compatibility map to match the modified version now in the server. If your program is dealing with multiple servers and needs to configure them all in a similar manner, the updated compatibility map may be used to reconfigure other servers. To make a complete matching configuration you must also update the explicit override components of the server state. XkbGetCompatMap Status XkbGetCompatMap Display *display unsigned int which XkbDescRec *xkb display connection to server which mask of compatibility map components to fetch xkb keyboard description where results placed XkbGetCompatMap fetches the components of the compatibility map specified in which from the server specified by display and places them in the compat structure of the keyboard description xkb. Valid values for which are an inclusive OR of the values shown in Table 17.2. Compatibility Map Component Masks Mask Value Affecting XkbSymInterpMask (1<<0) Symbol interpretations XkbGroupCompatMask (1<<1) Group maps XkbAllCompatMask (0x3) All compatibility map components
If no compatibility map structure is allocated in xkb upon entry, XkbGetCompatMap allocates one. If one already exists, its contents are overwritten with the returned results. XkbGetCompatMap fetches compatibility map information for the device specified by the device_spec field of xkb. Unless you have specifically modified this field, it is the default keyboard device. XkbGetCompatMap returns Success if successful, BadAlloc if it is unable to obtain necessary storage for either the return values or work space, BadMatch if the dpy field of the xkb argument is non- NULL and does not match the display argument, and BadLength under certain conditions caused by server or Xkb implementation errors.
Using the Compatibility Map Xkb provides several functions that make it easier to apply the compatibility map to configure a client-side Xkb keyboard mapping, given a core protocol representation of part or all of a keyboard mapping. Obtain a core protocol representation of a keyboard mapping from an actual server (by using XGetKeyboardMapping, for example), a data file, or some other source. To update a local Xkb keyboard map to reflect the mapping expressed by a core format mapping by calling the function XkbUpdateMapFromCore. XkbUpdateMapFromCore Bool XkbUpdateMapFromCore XkbDescPtr xkb KeyCode first_key int num_keys int map_width KeySym *core_keysyms XkbChangesPtr changes xkb keyboard description to update first_key keycode of first key description to update num_keys number of key descriptions to update map_width width of core protocol keymap core_keysyms symbols in core protocol keymap changes backfilled with changes made to Xkb XkbUpdateMapFromCore interprets input argument information representing a keyboard map in core format to update the Xkb keyboard description passed in xkb. Only a portion of the Xkb map is updated — the portion corresponding to keys with keycodes in the range first_key through first_key + num_keys - 1. If XkbUpdateMapFromCore is being called in response to a MappingNotify event, first_key and num_keys are reported in the MappingNotify event. core_keysyms contains the keysyms corresponding to the keycode range being updated, in core keyboard description order. map_width is the number of keysyms per key in core_keysyms. Thus, the first map_width entries in core_keysyms are for the key with keycode first_key, the next map_width entries are for key first_key + 1, and so on. In addition to modifying the Xkb keyboard mapping in xkb, XkbUpdateMapFromCore backfills the changes structure whose address is passed in changes to indicate the modifications that were made. You may then use changes in subsequent calls such as XkbSetMap, to propagate the local modifications to a server. When dealing with core keyboard mappings or descriptions, it is sometimes necessary to determine the Xkb key types appropriate for the symbols bound to a key in a core keyboard mapping. Use XkbKeyTypesForCoreSymbols for this purpose: XkbKeyTypesForCoreSymbols int XkbKeyTypesForCoreSymbols XkbDescPtr xkb int map_width KeySym *core_syms unsigned int protected int *types_inout KeySym *xkb_syms_rtrn xkb keyboard description in which to place symbols map_width width of core protocol keymap in xkb_syms_rtrn core_syms core protocol format array of KeySyms protected explicit key types types_inout backfilled with the canonical types bound to groups one and two for the key xkb_syms_rtrn backfilled with symbols bound to the key in the Xkb mapping XkbKeyTypesForCoreSymbols expands the symbols in core_syms and types in types_inout according to the rules specified in section 12 of the core protocol, then chooses canonical key types (canonical key types are defined in section 15.2.1) for groups 1 and 2 using the rules specified by the Xkb protocol and places them in xkb_syms_rtrn, which will be non- NULL. A core keymap is a two-dimensional array of keysyms. It has map_width columns and max_key_code rows. XkbKeyTypesForCoreSymbols takes a single row from a core keymap, determines the number of groups associated with it, the type of each group, and the symbols bound to each group. The return value is the number of groups, types_inout has the types for each group, and xkb_syms_rtrn has the symbols in Xkb order (that is, groups are contiguous, regardless of size). protected contains the explicitly protected key types. There is one explicit override control associated with each of the four possible groups for each Xkb key, ExplicitKeyType1 through ExplicitKeyType4; protected is an inclusive OR of these controls. map_width is the width of the core keymap and is not dependent on any Xkb definitions. types_inout is an array of four type indices. On input, types_inout contains the indices of any types already assigned to the key, in case they are explicitly protected from change. Upon return, types_inout contains any automatically selected (that is, canonical) types plus any protected types. Canonical types are assigned to all four groups if there are enough symbols to do so. The four entries in types_inout correspond to the four groups for the key in question. If the groups mapping does not change, but the symbols assigned to an Xkb keyboard compatibility map do change, the semantics of the key may be modified. To apply the new compatibility mapping to an individual key to get its semantics updated, use XkbApplyCompatMapToKey. XkbApplyCompatMapToKey Bool XkbApplyCompatMapToKey XkbDescPtr xkb KeyCode key XkbChangesPtr changes xkb keyboard description to be updated key key to be updated changes notes changes to the Xkb keyboard description XkbApplyCompatMapToKey essentially performs the operation described in section 17.1.2 to a specific key. This updates the behavior, actions, repeat status, and virtual modifier bindings of the key. Changing the Server’s Compatibility Map To modify the server’s compatibility map, first modify a local copy of the Xkb compatibility map, then call XkbSetCompatMap. You may allocate a new compatibility map for this purpose using XkbAllocCompatMap (see section 17.6). You may also use a compatibility map from another server, although you need to adjust the device_spec field in the XkbDescRec accordingly. Note that symbol interpretations in a compatibility map ( sym_interpret, the vector of XkbSymInterpretRec structures) are also allocated using this same function. XkbSetCompatMap Bool XkbSetCompatMap Display *display unsigned int which XkbDescPtr xkb Bool update_actions display connection to server which mask of compat map components to set xkb source for compat map components update_actions True ⇒ apply to server’s keyboard map XkbSetCompatMap copies compatibility map information from the keyboard description in xkb to the server specified in display’s compatibility map for the device specified by the device_spec field of xkb. Unless you have specifically modified this field, it is the default keyboard device. which specifies the compatibility map components to be set, and is an inclusive OR of the bits shown in Table 17.2. After updating its compatibility map for the specified device, if update_actions is True, the server applies the new compatibility map to its entire keyboard for the device to generate a new set of key semantics, compatibility state, and a new core keyboard map. If update_actions is False, the new compatibility map is not used to generate any modifications to the current device semantics, state, or core keyboard map. One reason for not applying the compatibility map immediately would be if one server was being configured to match another on a piecemeal basis; the map should not be applied until everything is updated. To force an update at a later time, use XkbSetCompatMap specifying which as zero and update_actions as True. XkbSetCompatMap returns True if successful and False if unsuccessful. The server may report problems it encounters when processing the request subsequently via protocol errors. To add a symbol interpretation to the list of symbol interpretations in an XkbCompatRec, use XkbAddSymInterpret. XkbAddSymInterpret XkbSymInterpretPtr XkbAddSymInterpret XkbDescPtr xkb XkbSymInterpretPtr si Bool updateMap XkbChangesPtr changes xkb keyboard description to be updated si symbol interpretation to be added updateMap True⇒apply compatibility map to keys changes changes are put here XkbAddSymInterpret adds si to the list of symbol interpretations in xkb. If updateMap is True, it (re)applies the compatibility map to all of the keys on the keyboard. If changes is non- NULL, it reports the parts of the keyboard that were affected (unless updateMap is True, not much changes). XkbAddSymInterpret returns a pointer to the actual new symbol interpretation in the list or NULL if it failed. Tracking Changes to the Compatibility Map eventsXkbCompatMapNotify XkbCompatMapNotifyEvent The server automatically generates MappingNotify events when the keyboard mapping changes. If you wish to be notified of changes to the compatibility map, you should select for XkbCompatMapNotify events. If you select for XkbMapNotify events, you no longer receive the automatically generated MappingNotify events. If you subsequently deselect XkbMapNotifyEvent delivery, you again receive MappingNotify events. To receive XkbCompatMapNotify events under all possible conditions, use XkbSelectEvents (see section 4.3) and pass XkbCompatMapNotifyMask in both bits_to_change and values_for_bits. To receive XkbCompatMapNotify events only under certain conditions, use XkbSelectEventDetails using XkbCompatMapNotify as the event_type and specifying the desired map changes in bits_to_change and values_for_bits using mask bits from Table 17.2. Note that you are notified of changes you make yourself, as well as changes made by other clients. The structure for the XkbCompatMapNotifyEvent is: typedef struct { int type; /* Xkb extension base event code */ unsigned long serial; /* X server serial number for event */ Bool send_event; /* True ⇒ synthetically generated */ Display * display; /* server connection where event generated */ Time time; /* server time when event generated */ int xkb_type; /* XkbCompatMapNotify */ int device; /* Xkb device ID, will not be XkbUseCoreKbd */ unsigned int changed_groups; /* number of group maps changed */ int first_si; /* index to 1st changed symbol interpretation */ int num_si; /* number of changed symbol interpretations */ int num_total_si; /* total number of valid symbol interpretations */ } XkbCompatMapNotifyEvent; changed_groups is the number of group compatibility maps that have changed. If you are maintaining a corresponding copy of the compatibility map, or get a fresh copy from the server using XkbGetCompatMap, changed_groups references groups [0.. changed_groups -1] in the XkbCompatMapRec structure. first_si is the index of the first changed symbol interpretation, num_si is the number of changed symbol interpretations, and num_total_si is the total number of valid symbol interpretations. If you are maintaining a corresponding copy of the compatibility map, or get a fresh copy from the server using XkbGetCompatMap, first_si, num_si, and num_total_si are appropriate for use with the compat.sym_interpret vector in this structure. Allocating and Freeing the Compatibility Map If you are modifying the compatibility map, you need to allocate a new compatibility map if you do not already have one available. To do so, use XkbAllocCompatMap. XkbAllocCompatMap Status XkbAllocCompatMap XkbDescPtr xkb unsigned int which unsigned int num_si xkb keyboard description in which to allocate compat map which mask of compatibility map components to allocate num_si number of symbol interpretations to allocate xkb specifies the keyboard description for which compatibility maps are to be allocated. The compatibility map is the compat field in this structure. which specifies the compatibility map components to be allocated (see XkbGetCompatMap, in section 17.2). which is an inclusive OR of the bits shown in Table 17.2. num_si specifies the total number of entries to allocate in the symbol interpretation vector (xkb.compat.sym_interpret). Note that symbol interpretations in a compatibility map (the sym_interpret vector of XkbSymInterpretRec structures) are also allocated using this same function. To ensure that there is sufficient space in the symbol interpretation vector for entries to be added, use XkbAllocCompatMap specifying which as XkbSymInterpretMask and the number of free symbol interpretations needed in num_si. XkbAllocCompatMap returns Success if successful, BadMatch if xkb is NULL, or BadAlloc if errors are encountered when attempting to allocate storage. To free an entire compatibility map or selected portions of one, use XkbFreeCompatMap. XkbFreeCompatMap void XkbFreeCompatMap XkbDescPtr xkb unsigned int which Bool free_map xkb Xkb description in which to free compatibility map which mask of compatibility map components to free free_map True ⇒ free XkbCompatMapRec structure itself which specifies the compatibility map components to be freed (see XkbGetCompatMap, in section 17.2). which is an inclusive OR of the bits shown in Table 17.2 free_map indicates whether the XkbCompatMapRec structure itself should be freed. If free_map is True, which is ignored, all non- NULL compatibility map components are freed, and the compat field in the XkbDescRec referenced by xkb is set to NULL.
libX11-1.8.12/specs/XKB/XKBlib-19.svg0000644014310600000120000006525314763154126012164 image/svg+xml Xkb State Base Modifiers and Group Locked Modifiers and Group Latched Modifiers and Group Core Pointer Button State ServerInternalModifiers IgnoreLocksModifiers IgnoreGroupLock Compatibility Map Explicit Override Controls Xkb Keyboard Map Core Keyboard Map Compatibility State Compatibility Lookup State Compatibility Grab State LookupState Grab State EffectiveModifiersand Group libX11-1.8.12/specs/XKB/ch10.xml0000644014310600000120000042216314763154126011353 Keyboard Controls controls server controls controlsserver The Xkb extension is composed of two parts: a server extension, and a client-side X library extension. This chapter discusses functions used to modify controls effecting the behavior of the server portion of the Xkb extension. discusses functions used to modify controls that affect only the behavior of the client portion of the extension; those controls are known as Library Controls. Xkb contains control features that affect the entire keyboard, known as global keyboard controls. Some of the controls may be selectively enabled and disabled; these controls are known as the Boolean Controls. boolean controls controlsboolean Boolean Controls can be turned on or off under program control and can also be automatically set to an on or off condition when a client program exits. The remaining controls, known as the Non-Boolean Controls, non-boolean controls controlsnon-boolean are always active. The XkbControlsRec structure describes the current state of most of the global controls and the attributes effecting the behavior of each of these Xkb features. This chapter describes the Xkb controls and how to manipulate them. There are two possible components for each of the Boolean Controls: attributes describing how the control should work, and a state describing whether the behavior as a whole is enabled or disabled. The attributes and state for most of these controls are held in the XkbControlsRec structure (see section 10.8). You can manipulate the Xkb controls individually, via convenience functions, or as a whole. To treat them as a group, modify an XkbControlsRec structure to describe all of the changes to be made, and then pass that structure and appropriate flags to an Xkb library function, or use a XkbControlsChangesRec (see section 10.10.1) to reduce network traffic. When using a convenience function to manipulate one control individually, you do not use an XkbControlsRec structure directly. The Xkb controls are grouped as shown in Table 10.1. Xkb Keyboard Controls Type of Control Control Name Boolean Control? Controls for enabling and disabling other controls EnabledControls No AutoReset No Control for bell behavior AudibleBell Boolean Controls for repeat key behavior PerKeyRepeat No RepeatKeys Boolean DetectableAutorepeat Boolean Controls for keyboard overlays Overlay1 Boolean Overlay2 Boolean Controls for using the mouse from the keyboard MouseKeys Boolean MouseKeysAccel Boolean Controls for better keyboard access by AccessXFeedback Boolean physically impaired persons AccessXKeys Boolean AccessXTimeout Boolean BounceKeys Boolean SlowKeys Boolean StickyKeys Boolean Controls for general keyboard mapping GroupsWrap No IgnoreGroupLock Boolean IgnoreLockMods No InternalMods No Miscellaneous per-client controls GrabsUseXKBState Boolean LookupStateWhenGrabbed Boolean SendEventUsesXKBState Boolean
The individual categories and controls are described first, together with functions for manipulating them. A description of the XkbControlsRec structure and the general functions for dealing with all of the controls at once follow at the end of the chapter. Controls that Enable and Disable Other Controls Enable and disable the boolean controls under program control by using the EnabledControls control; enable and disable them upon program exit by configuring the AutoReset control. The EnabledControls Control The EnabledControls control is a bit mask where each bit that is turned on means the corresponding control is enabled, and when turned off, disabled. It corresponds to the enabled_ctrls field of an XkbControlsRec structure (see section 10.8). The bits describing which controls are turned on or off are defined in Table 10.7. Use XkbChangeEnabledControls to manipulate the EnabledControls control. XkbChangeEnabledControls Bool XkbChangeEnabledControls Display *dpy unsigned int device_spec unsigned int mask unsigned int values dpy connection to X server device_spec keyboard device to modify mask 1 bit → controls to enable / disable values 1 bit ⇒ enable, 0 bit ⇒ disable The mask parameter specifies the boolean controls to be enabled or disabled, and the values mask specifies the new state for those controls. Valid values for both of these masks are composed of a bitwise inclusive OR of bits taken from the set of mask bits in Table 10.7, using only those masks with ok in the enabled_ctrls column. If the X server does not support a compatible version of Xkb or the Xkb extension has not been properly initialized, XkbChangeEnabledControls returns False; otherwise, it sends the request to the X server and returns True. Note that the EnabledControls control only enables and disables controls; it does not configure them. Some controls, such as the AudibleBell control, have no configuration attributes and are therefore manipulated solely by enabling and disabling them. Others, however, have additional attributes to configure their behavior. For example, the RepeatControl control uses repeat_delay and repeat_interval fields to describe the timing behavior of keys that repeat. The RepeatControl behavior is turned on or off depending on the value of the XkbRepeatKeysMask bit, but you must use other means, as described in this chapter, to configure its behavior in detail. The AutoReset Control You can configure the boolean controls to automatically be enabled or disabled when a program exits. This capability is controlled via two masks maintained in the X server on a per-client basis. There is no client-side Xkb data structure corresponding to these masks. Whenever the client exits for any reason, any boolean controls specified in the auto-reset mask auto-reset mask maskauto-reset are set to the corresponding value from the auto-reset values mask. This makes it possible for clients to "clean up after themselves" automatically, even if abnormally terminated. The bits used in the masks correspond to the EnabledControls control bits. For example, a client that replaces the keyboard bell with some other audible cue might want to turn off the AudibleBell control to prevent the server from also generating a sound and avoid cacophony. If the client were to exit without resetting the AudibleBell control, the user would be left without any feedback at all. Setting AudibleBell in both the auto-reset mask and auto-reset values guarantees that the audible bell will be turned back on when the client exits. To get the current values of the auto-reset controls, use XkbGetAutoResetControls. XkbGetAutoResetControls Bool XkbGetAutoResetControls Display *dpy unsigned int *auto_ctrls unsigned int *auto_values dpy connection to X server auto_ctrls specifies which bits in auto_values are relevant auto_values 1 bit ⇒ corresponding control has auto-reset on XkbGetAutoResetControls backfills auto_ctrls and auto_values with the AutoReset control attributes for this particular client. It returns True if successful, and False otherwise. To change the current values of the AutoReset control attributes, use XkbSetAutoResetControls. XkbSetAutoResetControls Bool XkbSetAutoResetControls Display *dpy unsigned int changes unsigned int *auto_ctrls unsigned int *auto_values dpy connection to X server changes controls for which to change auto-reset values auto_ctrls controls from changes that should auto reset auto_values 1 bit ⇒ auto-reset on XkbSetAutoResetControls changes the auto-reset status and associated auto-reset values for the controls selected by changes. For any control selected by changes, if the corresponding bit is set in auto_ctrls, the control is configured to auto-reset when the client exits. If the corresponding bit in auto_values is on, the control is turned on when the client exits; if zero, the control is turned off when the client exits. For any control selected by changes, if the corresponding bit is not set in auto_ctrls, the control is configured to not reset when the client exits. For example: To leave the auto-reset controls for StickyKeys the way they are: ok = XkbSetAutoResetControls(dpy, 0, 0, 0); To change the auto-reset controls so that StickyKeys are unaffected when the client exits: ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, 0, 0); To change the auto-reset controls so that StickyKeys are turned off when the client exits: ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, XkbStickyKeysMask, 0); To change the auto-reset controls so that StickyKeys are turned on when the client exits: ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, XkbStickyKeysMask, XkbStickyKeysMask); XkbSetAutoResetControls backfills auto_ctrls and auto_values with the auto-reset controls for this particular client. Note that all of the bits are valid in the returned values, not just the ones selected in the changes mask. Control for Bell Behavior The X server’s generation of sounds is controlled by the AudibleBell control. Configuration of different bell sounds is discussed in . The AudibleBell Control The AudibleBell control is a boolean control that has no attributes. As such, you may enable and disable it using either the EnabledControls control or the AutoReset control discussed in section 10.1.1. When enabled, protocol requests to generate a sound result in the X server actually producing a real sound; when disabled, requests to the server to generate a sound are ignored unless the sound is forced. See section 9.2. Controls for Repeat Key Behavior auto-repeatcontrols The repeating behavior of keyboard keys is governed by three controls, the PerKeyRepeat control, which is always active, and the RepeatKeys and DetectableAutorepeat controls, which are boolean controls that may be enabled and disabled. PerKeyRepeat determines which keys are allowed to repeat. RepeatKeys governs the behavior of an individual key when it is repeating. DetectableAutorepeat allows a client to detect when a key is repeating as a result of being held down. The PerKeyRepeat Control The PerKeyRepeat control is a bitmask long enough to contain a bit for each key on the device; it determines which individual keys are allowed to repeat. The Xkb PerKeyRepeat control provides no functionality different from that available via the core X protocol. There are no convenience functions in Xkb for manipulating this control. The PerKeyRepeat control settings are carried in the per_key_repeat field of an XkbControlsRec structure, discussed in section 10.8. The RepeatKeys Control The core protocol allows only control over whether or not the entire keyboard or individual keys should auto-repeat when held down. RepeatKeys is a boolean control that extends this capability by adding control over the delay until a key begins to repeat and the rate at which it repeats. RepeatKeys is coupled with the core auto-repeat control: when RepeatKeys is enabled or disabled, the core auto-repeat is enabled or disabled and vice versa. Auto-repeating keys are controlled by two attributes. The first, timeout, is the delay after the initial press of an auto-repeating key and the first generated repeat event. The second, interval, is the delay between all subsequent generated repeat events. As with all boolean controls, configuring the attributes that determine how the control operates does not automatically enable the control as a whole; see section 10.1. To get the current attributes of the RepeatKeys control for a keyboard device, use XkbGetAutoRepeatRate. XkbGetAutoRepeatRate Bool XkbGetAutoRepeatRate Display *display unsigned int device_spec unsigned int *timeout_rtrn unsigned int *interval_rtrn display connection to X server device_spec desired device ID, or XkbUseCoreKbd timeout_rtrn backfilled with initial repeat delay, ms interval_rtrn backfilled with subsequent repeat delay, ms XkbGetAutoRepeatRate queries the server for the current values of the RepeatControls control attributes, backfills timeout_rtrn and interval_rtrn with them, and returns True. If a compatible version of the Xkb extension is not available in the server XkbGetAutoRepeatRate returns False. To set the attributes of the RepeatKeys control for a keyboard device, use XkbSetAutoRepeatRate. XkbSetAutoRepeatRate Bool XkbSetAutoRepeatRate Display *display unsigned int device_spec unsigned int timeout unsigned int interval display connection to X server device_spec device to configure, or XkbUseCoreKbd timeout initial delay, ms interval delay between repeats, ms XkbSetAutoRepeatRate sends a request to the X server to configure the AutoRepeat control attributes to the values specified in timeout and interval. XkbSetAutoRepeatRate does not wait for a reply; it normally returns True. Specifying a zero value for either timeout or interval causes the server to generate a BadValue protocol error. If a compatible version of the Xkb extension is not available in the server, XkbSetAutoRepeatRate returns False. The DetectableAutorepeat Control Auto-repeat is the generation of multiple key events by a keyboard when the user presses a key and holds it down. Keyboard hardware and device-dependent X server software often implement auto-repeat by generating multiple KeyPress events with no intervening KeyRelease event. The standard behavior of the X server is to generate a KeyRelease event for every KeyPress event. If the keyboard hardware and device-dependent software of the X server implement auto-repeat by generating multiple KeyPress events, the device-independent part of the X server by default synthetically generates a KeyRelease event after each KeyPress event. This provides predictable behavior for X clients, but does not allow those clients to detect the fact that a key is auto-repeating. Xkb allows clients to request detectable auto-repeat. detectable auto-repeat auto-repeatdetectable If a client requests and the server supports DetectableAutorepeat, Xkb generates KeyRelease events only when the key is physically released. If DetectableAutorepeat is not supported or has not been requested, the server synthesizes a KeyRelease event for each repeating KeyPress event it generates. DetectableAutorepeat, unlike the other controls in this chapter, is not contained in the XkbControlsRec structure, nor can it be enabled or disabled via the EnabledControls control. Instead, query and set DetectableAutorepeat using XkbGetDetectableAutorepeat and XkbSetDetectableAutorepeat. DetectableAutorepeat is a condition that applies to all keyboard devices for a client’s connection to a given X server; it cannot be selectively set for some devices and not for others. For this reason, none of the Xkb library functions involving DetectableAutorepeat involve a device specifier. To determine whether or not the server supports DetectableAutorepeat, use XkbGetDetectableAutorepeat. XkbGetDetectableAutorepeat Bool XkbGetDetectableAutorepeat Display *display Bool *supported_rtrn display connection to X server supported_rtrn backfilled True if DetectableAutorepeat supported XkbGetDetectableAutorepeat queries the server for the current state of DetectableAutorepeat and waits for a reply. If supported_rtrn is not NULL, it backfills supported_rtrn with True if the server supports DetectableAutorepeat, and False otherwise. XkbGetDetectableAutorepeat returns the current state of DetectableAutorepeat for the requesting client: True if DetectableAutorepeat is set, and False otherwise. To set DetectableAutorepeat, use XkbSetDetectableAutorepeat. This request affects all keyboard activity for the requesting client only; other clients still see the expected nondetectable auto-repeat behavior, unless they have requested otherwise. XkbSetDetectableAutorepeat Bool XkbSetDetectableAutorepeat Display *display Bool detectable Bool *supported_rtrn display connection to X server detectable True ⇒ set DetectableAutorepeat supported_rtrn backfilled True if DetectableAutorepeat supported XkbSetDetectableAutorepeat sends a request to the server to set DetectableAutorepeat on for the current client if detectable is True, and off it detectable is False; it then waits for a reply. If supported_rtrn is not NULL, XkbSetDetectableAutorepeat backfills supported_rtrn with True if the server supports DetectableAutorepeat, and False if it does not. XkbSetDetectableAutorepeat returns the current state of DetectableAutorepeat for the requesting client: True if DetectableAutorepeat is set, and False otherwise. Controls for Keyboard Overlays (Overlay1 and Overlay2 Controls) A keyboard overlay allows some subset of the keyboard to report alternate keycodes when the overlay is enabled. For example, a keyboard overlay can be used to simulate a numeric or editing keypad on a keyboard that does not actually have one by reusing some portion of the keyboard as an overlay. This technique is very common on portable computers and embedded systems with small keyboards. Xkb includes direct support for two keyboard overlays, using the Overlay1 and Overlay2 controls. When Overlay1 is enabled, all of the keys that are members of the first keyboard overlay generate an alternate keycode. When Overlay2 is enabled, all of the keys that are members of the second keyboard overlay generate an alternate keycode. The two overlays are mutually exclusive; any particular key may be in at most one overlay. Overlay1 and Overlay2 are boolean controls. As such, you may enable and disable them using either the EnabledControls control or the AutoReset control discussed in section 10.1.1. To specify the overlay to which a key belongs and the alternate keycode it should generate when that overlay is enabled, assign it either the XkbKB_Overlay1 or XkbKB_Overlay2 key behaviors, as described in section 16.2. Controls for Using the Mouse from the Keyboard Using Xkb, it is possible to configure the keyboard to allow simulation of the X pointer device. This simulation includes both movement of the pointer itself and press and release events associated with the buttons on the pointer. Two controls affect this behavior: the MouseKeys control determines whether or not simulation of the pointer device is active, as well as configuring the default button; the MouseKeysAccel control determines the movement characteristics of the pointer when simulated via the keyboard. Both of them are boolean controls; as such, you may enable and disable them using either the EnabledControls control or the AutoReset control discussed in section 10.1.1. The individual keys that simulate different aspects of the pointer device are determined by the keyboard mapping, discussed in . The MouseKeys Control The MouseKeys control allows a user to control all the mouse functions from the keyboard. When MouseKeys are enabled, all keys with MouseKeys actions bound to them generate core pointer events instead of normal KeyPress and KeyRelease events. The MouseKeys control has a single attribute, mk_dflt_btn that specifies the core button number to be used by mouse keys actions that do not explicitly specify a button. There is no convenience function for getting or setting the attribute; instead use XkbGetControls and XkbSetControls (see section 10.9 and section 10.10). MouseKeys can also be turned on and off by pressing the key combination necessary to produce an XK_Pointer_EnableKeys keysym. The de facto default standard for this is ShiftAltNumLock, but this may vary depending on the keymap. The MouseKeysAccel Control When the MouseKeysAccel control is enabled, the effect of a key-activated pointer motion action changes as a key is held down. If the control is disabled, pressing a mouse-pointer key yields one mouse event. When MouseKeysAccel is enabled, mouse movement is defined by an initial distance specified in the XkbSA_MovePtr action and the following fields in the XkbControlsRec structure (see section 10.8). MouseKeysAccel Fields Field Function mk_delay Time (ms) between the initial key press and the first repeated motion event mk_interval Time (ms) between repeated motion events mk_time_to_max Number of events (count) before the pointer reaches maximum speed mk_max_speed The maximum speed (in pixels per event) the pointer reaches mk_curve The ramp used to reach maximum pointer speed
There are no convenience functions to query or change the attributes of the MouseKeysAccel control; instead use XkbGetControls and XkbSetControls (see section 10.9 and section 10.10). The effects of the attributes of the MouseKeysAccel control depend on whether the XkbSA_MovePtr action (see section 16.1) specifies relative or absolute pointer motion. Absolute Pointer Motion If an XkbSA_MovePtr action specifies an absolute position for one of the coordinates but still allows acceleration, all repeated events contain any absolute coordinates specified in the action. For example, if the XkbSA_MovePtr action specifies an absolute position for the X direction, but a relative motion for the Y direction, the pointer accelerates in the Y direction, but stays at the same X position. Relative Pointer Motion If the XkbSA_MovePtr action specifies relative motion, the initial event always moves the cursor the distance specified in the action. After mk_delay milliseconds, a second motion event is generated, and another occurs every mk_interval milliseconds until the user releases the key. Between the time of the second motion event and mk_time_to_max intervals, the change in pointer distance per interval increases with each interval. After mk_time_to_max intervals have elapsed, the change in pointer distance per interval remains the same and is calculated by multiplying the original distance specified in the action by mk_max_speed. For example, if the XkbSA_MovePtr action specifies a relative motion in the X direction of 5, mk_delay =160, mk_interval =40, mk_time_to_max =30, and mk_max_speed =30, the following happens when the user presses the key: The pointer immediately moves 5 pixels in the X direction when the key is pressed. After 160 milliseconds (mk_delay), and every 40 milliseconds thereafter (mk_interval), the pointer moves in the X direction. The distance in the X direction increases with each interval until 30 intervals ( mk_time_to_max) have elapsed. After 30 intervals, the pointer stops accelerating, and moves 150 pixels ( mk_max_speed * the original distance) every interval thereafter, until the key is released. The increase in pointer difference for each interval is a function of mk_curve. Events after the first but before maximum acceleration has been achieved are accelerated according to the formula: Where action_delta is the relative motion specified by the XkbSA_MovePtr action, mk_max_speed and mk_time_to_max are parameters to the MouseKeysAccel control, and the curveFactor is computed using the MouseKeysAccel mk_curve parameter as follows: With the result that a mk_curve of zero causes the distance moved to increase linearly from action_delta to . A negative mk_curve causes an initial sharp increase in acceleration that tapers off, and a positive curve yields a slower initial increase in acceleration followed by a sharp increase as the number of pointer events generated by the action approaches mk_time_to_max. The legal values for mk_curve are between −1000 and 1000. A distance vs. time graph of the pointer motion is shown in Figure 10.1.
MouseKeys Acceleration
Controls for Better Keyboard Access by Physically Impaired Persons The Xkb extension includes several controls specifically aimed at making keyboard use more effective for physically impaired people. All of these controls are boolean controls and may be individually enabled and disabled, as well as configured to tune their specific behavior. The behavior of these controls is based on the AccessDOS package AccessDOS provides access to the DOS operating system for people with physical impairments and was developed by the Trace R&D Center at the University of Wisconsin. For more information on AccessDOS, contact the Trace R&D Center, Waisman Center and Department of Industrial Engineering, University of Wisconsin-Madison WI 53705-2280. Phone: 608-262-6966. e-mail: info@trace.wisc.edu. . The AccessXKeys Control Enabling or disabling the keyboard controls through a graphical user interface may be impossible for people who need to use the controls. For example, a user who needs SlowKeys (see section 10.6.6) may not even be able to start the graphical application, let alone use it, if SlowKeys is not enabled. To allow easier access to some of the controls, the AccessXKeys control provides a set of special key sequences similar to those available in AccessDOS. When the AccessXKeys control is enabled, the user can turn controls on or off from the keyboard by entering the following standard key sequences: Holding down a Shift key by itself for eight seconds toggles the SlowKeys control. Pressing and releasing the left or right Shift key five times in a row, without any intervening key events and with less than 30 seconds delay between consecutive presses, toggles the state of the StickyKeys control. Simultaneously operating two or more modifier keys deactivates the StickyKeys control. When the AccessXKeys control is disabled, Xkb does not look for the above special key sequences. Some of these key sequences optionally generate audible feedback of the change in state, as described in section 10.6.3, or XkbControlsNotify events, described in section 10.11. The AccessXTimeout Control In environments where computers are shared, features such as SlowKeys present a problem: if SlowKeys is on, the keyboard can appear to be unresponsive because keys are not accepted until they are held for a certain period of time. To help solve this problem, Xkb provides an AccessXTimeout control to automatically change the enabled/disabled state of any boolean controls and to change the value of the AccessXKeys and AccessXFeedback control attributes if the keyboard is idle for a specified period of time. When a timeout as specified by AccessXTimeout occurs and a control is consequently modified, Xkb generates an XkbControlsNotify event. For more information on XkbControlsNotify events, refer to section 10.11. There are no convenience functions in Xkb for manipulating this control. The AccessXTimeout control settings are carried in the ax_timeout, axt_opts_mask, axt_opts_values, axt_ctrls_mask, and axt_ctrls_values fields of an XkbControlsRec structure, discussed in section 10.8. The AccessXFeedback Control Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeating, Xkb can provide feedback for the controls by using special beep codes. Use the AccessXFeedback control to configure the specific types of operations that generate feedback. There is no convenience function for modifying the AccessXFeedback control, although the feedback as a whole can be enabled or disabled just as other boolean controls are (see section 10.1). Individual beep codes are turned on or off by modifying the following bits in the ax_options field of an XkbControlsRec structure and using XkbSetControls (see section 10.10): AccessXFeedback Masks Action Beep Code ax_options bit LED turned on High-pitched beep XkbAX_IndicatorFBMask LED turned off Low-pitched beep XkbAX_IndicatorFBMask More than one LED changed state Two high-pitched beeps XkbAX_IndicatorFBMask Control turned on Rising tone XkbAX_FeatureFBMask Control turned off Falling tone XkbAX_FeatureFBMask More than one control changed state Two high-pitched beeps XkbAX_FeatureFBMask SlowKeys and BounceKeys about to be turned on or off Three high-pitched beeps XkbAX_SlowWarnFBMask SlowKeys key pressed Medium-pitched beep XkbAX_SKPressFBMask SlowKeys key accepted Medium-pitched beep XkbAX_SKAcceptFBMask SlowKeys key rejected Low-pitched beep XkbAX_SKRejectFBMask Accepted SlowKeys key released Medium-pitched beep XkbAX_SKReleaseFBMask BounceKeys key rejected Low-pitched beep XkbAX_BKRejectFBMask StickyKeys key latched Low-pitched beep followed by high-pitched beep XkbAX_StickyKeysFBMask StickyKeys key locked High-pitched beep XkbAX_StickyKeysFBMask StickyKeys key unlocked Low-pitched beep XkbAX_StickyKeysFBMask
Implementations that cannot generate continuous tones may generate multiple beeps instead of falling and rising tones; for example, they can generate a high-pitched beep followed by a low-pitched beep instead of a continuous falling tone. Other implementations can only ring the bell with one fixed pitch. In these cases, use the XkbAX_DumbBellFBMask bit of ax_options to indicate that the bell can only ring with a fixed pitch. When any of the above feedbacks occur, Xkb may generate a XkbBellNotify event (see section 9.4).
AccessXNotify Events eventsXkbAccessXNotify XkbAccessXNotifyEvent The server can generate XkbAccessXNotify events for some of the global keyboard controls. The structure for the XkbAccessXNotify event type is as follows: typedef struct { int type; /* Xkb extension base event code */ unsigned long serial; /* X server serial number for event */ Bool send_event; /* True ⇒ synthetically generated */ Display * display; /* server connection where event generated */ Time time; /* server time when event generated */ int xkb_type; /* XkbAccessXNotify */ int device; /* Xkb device ID, will not be XkbUseCoreKbd */ int detail; /* XkbAXN_* */ KeyCode keycode; /* key of event */ int slowKeysDelay; /* current SlowKeys delay */ int debounceDelay; /* current debounce delay */ } XkbAccessXNotifyEvent; The detail field describes what AccessX event just occurred and can be any of the values in Table 10.4. AccessXNotify Events detail Reason XkbAXN_SKPress A key was pressed when SlowKeys was enabled. XkbAXN_SKAccept A key was accepted (held longer than the SlowKeys delay). XkbAXN_SKRelease An accepted SlowKeys key was released. XkbAXN_SKReject A key was rejected (released before the SlowKeys delay expired). XkbAXN_BKAccept A key was accepted by BounceKeys. XkbAXN_BKReject A key was rejected (pressed before the BounceKeys delay expired). XkbAXN_AXKWarning AccessXKeys is about to turn on/off StickyKeys or BounceKeys.
The keycode field reports the keycode of the key for which the event occurred. If the action is related to SlowKeys, the slowKeysDelay field contains the current SlowKeys acceptance delay. If the action is related to BounceKeys, the debounceDelay field contains the current BounceKeys debounce delay. Selecting for AccessX Events To receive XkbAccessXNotify events under all possible conditions, use XkbSelectEvents (see section 4.3) and pass XkbAccessXNotifyMask in both bits_to_change and values_for_bits. To receive XkbStateNotify events only under certain conditions, use XkbSelectEventDetails using XkbAccessXNotify as the event_type and specifying the desired state changes in bits_to_change and values_for_bits using mask bits from Table 10.5. AccessXNotify Event Details XkbAccessXNotify Event Details Value Circumstances XkbAXN_SKPressMask (1<<0) Slow key press notification wanted XkbAXN_SKAcceptMask (1<<1) Slow key accept notification wanted XkbAXN_SKRejectMask (1<<2) Slow key reject notification wanted XkbAXN_SKReleaseMask (1<<3) Slow key release notification wanted XkbAXN_BKAcceptMask (1<<4) Bounce key accept notification wanted XkbAXN_BKRejectMask (1<<5) Bounce key reject notification wanted XkbAXN_AXKWarningMask (1<<6) AccessX warning notification wanted XkbAXN_AllEventsMask (0x7f) All AccessX features notifications wanted
StickyKeys, RepeatKeys, and MouseKeys Events The StickyKeys, RepeatKeys, and MouseKeys controls do not generate specific events. Instead, the latching, unlatching, locking, or unlocking of modifiers using StickyKeys generates XkbStateNotify events as described in section 5.4. Repeating keys generate normal KeyPress and KeyRelease events, though the auto-repeat can be detected using DetectableAutorepeat (see section 10.3.3). Finally, MouseKeys generates pointer events identical to those of the core pointer device. The SlowKeys Control Some users may accidentally bump keys while moving a hand or typing stick toward the key they want. Usually, the keys that are accidentally bumped are just hit for a very short period of time. The SlowKeys control helps filter these accidental bumps by telling the server to wait a specified period, called the SlowKeys acceptance delay, before delivering key events. If the key is released before this period elapses, no key events are generated. Users can then bump any number of keys on their way to the one they want without accidentally getting those characters. Once they have reached the key they want, they can then hold the desired key long enough for the computer to accept it. SlowKeys is a boolean control with one configurable attribute. When the SlowKeys control is active, the server reports the initial key press, subsequent acceptance or rejection, and release of any key to interested clients by sending an appropriate AccessXNotify event (see section 10.6.4). There are no convenience functions in Xkb for manipulating this control. The SlowKeys control settings are carried in the slow_keys_delay field of an XkbControlsRec structure, discussed in section 10.8. The BounceKeys Control Some users may accidentally bounce on a key when they release it. They press it once, then accidentally press it again after they release it. The BounceKeys control temporarily disables a key after it has been pressed, effectively debouncing the keyboard. The period of time the key is disabled after it is released is known as the BounceKeys delay. BounceKeys is a boolean control. When the BounceKeys control is active, the server reports acceptance or rejection of any key to interested clients by sending an appropriate AccessXNotify event (see section 10.6.4). There are no convenience functions in Xkb for manipulating this control. The BounceKeys control settings are carried in the debounce_delay field of an XkbControlsRec structure, discussed in section 10.8. The StickyKeys Control Some people find it difficult or even impossible to press two keys at once. For example, a one-fingered typist or someone using a mouth stick cannot press the Shift and 1 keys at the same time. The StickyKeys control solves this problem by changing the behavior of the modifier keys. With StickyKeys, the user can first press a modifier, release it, then press another key. For example, to get an exclamation point on a PC-style keyboard, the user can press the Shift key, release it, and then press the 1 key. StickyKeys also allows users to lock modifier keys without requiring special locking keys. When StickyKeys is enabled, a modifier is latched when the user presses it just once. The user can press a modifier twice in a row to lock it, and then unlock it by pressing it one more time. When a modifier is latched, it becomes unlatched when the user presses a nonmodifier key or a pointer button. For instance, to enter the sequence Shift Control Z the user could press and release the Shift key to latch it, then press and release the Control key to latch it, and finally press and release the Z key. Because the Control key is a modifier key, pressing it does not unlatch the Shift key. Thus, after the user presses the Control key, both the Shift and Control modifiers are latched. When the user presses the Z key, the effect is as though the user had pressed Shift Control Z . In addition, because the Z key is not a modifier key, the Shift and Control modifiers are unlatched. Locking a modifier key means that the modifier affects any key or pointer button the user presses until the user unlocks it or it is unlocked programmatically. For example, to enter the sequence ("XKB") on a keyboard where ‘(’ is a shifted ‘9’, ‘)’ is a shifted ‘0’, and ‘"’ is a shifted single quote, the user could press and release the Shift key twice to lock the Shift modifier. Then, when the user presses the 9, ', x, k, b, ', and 0 keys in sequence, it generates ("XKB"). To unlock the Shift modifier, the user can press and release the Shift key. StickyKeys is a boolean control with two separate attributes that may be individually configured: one to automatically disable it, and one to control the latching behavior of modifier keys. StickyKeys Options The StickyKeys control has two options that can be accessed via the ax_options of an XkbControlsRec structure (see section 10.8). The first option, TwoKeys, specifies whether StickyKeys should automatically turn off when two keys are pressed at the same time. This feature is useful for shared computers so people who do not want them do not need to turn StickyKeys off if a previous user left StickyKeys on. The second option, LatchToLock, specifies whether or not StickyKeys locks a modifier when pressed twice in a row. There are no convenience functions in Xkb for manipulating this control. The StickyKeys control settings are carried in the ax_options field of an XkbControlsRec structure, discussed in section 10.8.
Controls for General Keyboard Mapping There are several controls that apply to the keyboard mapping in general. They control handling of out-of-range group indices and how modifiers are processed and consumed in the server. These are: GroupsWrap IgnoreGroupLock IgnoreLockMods InternalMods IgnoreGroupLock is a boolean control; the rest are always active. Without the modifier processing options provided by Xkb, passive grabs set via translations in a client (for example, Alt<KeyPress>space) do not trigger if any modifiers other than those specified by the translation are set. This results in problems in the user interface when either NumLock or a secondary keyboard group is active. The IgnoreLockMods and IgnoreGroupLock controls make it possible to avoid this behavior without exhaustively specifying a grab for every possible modifier combination. The GroupsWrap Control The GroupsWrap control determines how illegal groups are handled on a global basis. There are a number of valid keyboard sequences that can cause the effective group number to go out of range. When this happens, the group must be normalized back to a valid number. The GroupsWrap control specifies how this is done. When dealing with group numbers, all computations are done using the group index, which is the group number minus one. There are three different algorithms; the GroupsWrap control specifies which one is used: XkbRedirectIntoRange All invalid group numbers are converted to a valid group number by taking the last four bits of the GroupsWrap control and using them as the group index. If the result is still out of range, Group one is used. XkbClampIntoRange All invalid group numbers are converted to the nearest valid group number. Group numbers larger than the highest supported group number are mapped to the highest supported group; those less than one are mapped to group one. XkbWrapIntoRange All invalid group numbers are converted to a valid group number using integer modulus applied to the group index. There are no convenience functions for manipulating the GroupsWrap control. Manipulate the GroupsWrap control via the groups_wrap field in the XkbControlsRec structure, then use XkbSetControls and XkbGetControls (see section 10.9 and section 10.10) to query and change this control. See also section 15.3.2 or a discussion of the related field, group_info, which also normalizes a group under certain circumstances. The IgnoreLockMods Control The core protocol does not provide a way to exclude specific modifiers from grab calculations, with the result that locking modifiers sometimes have unanticipated side effects. The IgnoreLockMods control specifies modifiers that should be excluded from grab calculations. These modifiers are also not reported in any core events except KeyPress and KeyRelease events that do not activate a passive grab and that do not occur while a grab is active. Manipulate the IgnoreLockMods control via the ignore_lock field in the XkbControlsRec structure, then use XkbSetControls and XkbGetControls (see section 10.9 and section 10.10) to query and change this control. Alternatively, use XkbSetIgnoreLockMods. To set the modifiers that, if locked, are not to be reported in matching events to passive grabs, use XkbSetIgnoreLockMods. XkbSetIgnoreLockMods Bool XkbSetIgnoreLockMods Display *display unsigned int device_spec unsigned int affect_real unsigned int real_values unsigned int affect_virtual unsigned int virtual_values display connection to the X server device_spec device ID, or XkbUseCoreKbd affect_real mask of real modifiers affected by this call real_values values for affected real modifiers (1⇒set, 0⇒unset) affect_virtual mask of virtual modifiers affected by this call virtual_values values for affected virtual modifiers (1⇒set, 0⇒unset) XkbSetIgnoreLockMods sends a request to the server to change the server’s IgnoreLockMods control. affect_real and real_values are masks of real modifier bits indicating which real modifiers are to be added and removed from the server’s IgnoreLockMods control. Modifiers selected by both affect_real and real_values are added to the server’s IgnoreLockMods control; those selected by affect_real but not by real_values are removed from the server’s IgnoreLockMods control. Valid values for affect_real and real_values consist of any combination of the eight core modifier bits: ShiftMask, LockMask, ControlMask, Mod1MaskMod5Mask. affect_virtual and virtual_values are masks of virtual modifier bits indicating which virtual modifiers are to be added and removed from the server’s IgnoreLockMods control. Modifiers selected by both affect_virtual and virtual_values are added to the server’s IgnoreLockMods control; those selected by affect_virtual but not by virtual_values are removed from the server’s IgnoreLockMods control. See section 7.1 for a discussion of virtual modifier masks to use in affect_virtual and virtual_values. XkbSetIgnoreLockMods does not wait for a reply from the server. It returns True if the request was sent, and False otherwise. The IgnoreGroupLock Control The IgnoreGroupLock control is a boolean control with no attributes. If enabled, it specifies that the locked state of the keyboard group should not be considered when activating passive grabs. Because IgnoreGroupLock is a boolean control with no attributes, use the general boolean controls functions (see section 10.1) to change its state. The InternalMods Control The core protocol does not provide any means to prevent a modifier from being reported in events sent to clients; Xkb, however makes this possible via the InternalMods control. It specifies modifiers that should be consumed by the server and not reported to clients. When a key is pressed and a modifier that has its bit set in the InternalMods control is reported to the server, the server uses the modifier when determining the actions to apply for the key. The server then clears the bit, so it is not actually reported to the client. In addition, modifiers specified in the InternalMods control are not used to determine grabs and are not used to calculate core protocol compatibility state. Manipulate the InternalMods control via the internal field in the XkbControlsRec structure, using XkbSetControls and XkbGetControls (see section 10.9 and section 10.10). Alternatively, use XkbSetServerInternalMods. To set the modifiers that are consumed by the server before events are delivered to the client, use XkbSetServerInternalMods. XkbSetServerInternalMods Bool XkbSetServerInternalMods Display *display unsigned int device_spec unsigned int affect_real unsigned int real_values unsigned int affect_virtual unsigned int virtual_values display connection to the X server device_spec ‘device ID, or XkbUseCoreKbd affect_real mask of real modifiers affected by this call real_values values for affected real modifiers (1⇒set, 0⇒unset) affect_virtual mask of virtual modifiers affected by this call virtual_values values for affected virtual modifiers (1⇒set, 0⇒unset) XkbSetServerInternalMods sends a request to the server to change the internal modifiers consumed by the server. affect_real and real_values are masks of real modifier bits indicating which real modifiers are to be added and removed from the server’s internal modifiers control. Modifiers selected by both affect_real and real_values are added to the server’s internal modifiers control; those selected by affect_real but not by real_values are removed from the server’s internal modifiers mask. Valid values for affect_real and real_values consist of any combination of the eight core modifier bits: ShiftMask, LockMask, ControlMask, Mod1MaskMod5Mask. affect_virtual and virtual_values are masks of virtual modifier bits indicating which virtual modifiers are to be added and removed from the server’s internal modifiers control. Modifiers selected by both affect_virtual and virtual_values are added to the server’s internal modifiers control; those selected by affect_virtual but not by virtual_values are removed from the server’s internal modifiers control. See section 7.1 for a discussion of virtual modifier masks to use in affect_virtual and virtual_values. XkbSetServerInternalMods does not wait for a reply from the server. It returns True if the request was sent and False otherwise. The XkbControlsRec Structure XkbControlsRec Many of the individual controls described in sections 10.1 through 10.7 may be manipulated via convenience functions discussed in those sections. Some of them, however, have no convenience functions. The XkbControlsRec structure allows the manipulation of one or more of the controls in a single operation and to track changes to any of them in conjunction with the XkbGetControls and XkbSetControls functions. This is the only way to manipulate those controls that have no convenience functions. The XkbControlsRec structure is defined as follows: #define XkbMaxLegalKeyCode 255 #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8) typedef struct { unsigned char mk_dflt_btn; /* default button for keyboard driven mouse */ unsigned char num_groups; /* number of keyboard groups */ unsigned char groups_wrap; /* how to wrap out-of-bounds groups */ XkbModsRec internal; /* defines server internal modifiers */ XkbModsRec ignore_lock; /* modifiers to ignore when checking for grab */ unsigned int enabled_ctrls; /* 1 bit ⇒ corresponding boolean control enabled */ unsigned short repeat_delay; /* ms delay until first repeat */ unsigned short repeat_interval; /* ms delay between repeats */ unsigned short slow_keys_delay; /* ms minimum time key must be down to be ok */ unsigned short debounce_delay; /* ms delay before key reactivated */ unsigned short mk_delay; /* ms delay to second mouse motion event */ unsigned short mk_interval; /* ms delay between repeat mouse events */ unsigned short mk_time_to_max; /* # intervals until constant mouse move */ unsigned short mk_max_speed; /* multiplier for maximum mouse speed */ short mk_curve; /* determines mouse move curve type */ unsigned short ax_options; /* 1 bit ⇒ Access X option enabled */ unsigned short ax_timeout; /* seconds until Access X disabled */ unsigned short axt_opts_mask; /* 1 bit ⇒ options to reset on Access X timeout */ unsigned short axt_opts_values; /* 1 bit ⇒ turn option on, 0⇒ off */ unsigned int axt_ctrls_mask; /* which bits in enabled_ctrls to modify */ unsigned int axt_ctrls_values; /* values for new bits in enabled_ctrls */ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /* per key auto repeat */ } XkbControlsRec, *XkbControlsPtr; The general-purpose functions that work with the XkbControlsRec structure use a mask to specify which controls are to be manipulated. Table 10.6 lists these controls, the masks used to select them in the general function calls (which parameter), and the data fields in the XkbControlsRec structure that comprise each of the individual controls. Also listed are the bit used to turn boolean controls on and off and the section where each control is described in more detail. Xkb Controls Control Control Selection Mask (which parameter) Relevant XkbControlsRec Data Fields Boolean Control enabled_ctrls bit Section AccessXFeedback XkbAccessXFeedbackMask ax_options: XkbAX_*FBMask XkbAccessXFeedback­Mask 10.6.3 AccessXKeys XkbAccessXKeys­Mask 10.6.1 AccessXTimeout XkbAccessXTimeoutMask ax_timeout axt_opts_mask axt_opts_values axt_ctrls_mask axt_ctrls_values XkbAccessXTimeout­Mask 10.6.2 AudibleBell XkbAudibleBellMask 9.2 AutoReset 10.1.2 BounceKeys XkbBounceKeysMask debounce_delay XkbBounceKeysMask 10.6.7 Detectable-Autorepeat 10.3.3 EnabledControls XkbControlsEnabledMask enabled_ctrls Non-Boolean Control 10.1.1 GroupsWrap XkbGroupsWrapMask groups_wrap Non-Boolean Control 10.7.1 IgnoreGroupLock XkbIgnoreGroupLock­Mask 10.7.3 IgnoreLockMods XkbIgnoreLockModsMask ignore_lock Non-Boolean Control 5.1 InternalMods XkbInternalModsMask internal Non-Boolean Control 5.1 MouseKeys XkbMouseKeysMask mk_dflt_btn XkbMouseKeysMask 10.5.1 MouseKeysAccel XkbMouseKeysAccelMask mk_delay mk_interval mk_time_to_max mk_max_speed mk_curve XkbMouseKeysAccel­Mask 10.5.2 Overlay1 XkbOverlay1Mask 10.4 Overlay2 XkbOverlay2Mask 10.4 PerKeyRepeat XkbPerKeyRepeatMask per_key_repeat Non-Boolean Control 10.3.1 RepeatKeys XkbRepeatKeysMask repeat_delay repeat_interval XkbRepeatKeysMask 10.3 SlowKeys XkbSlowKeysMask slow_keys_delay XkbSlowKeysMask 10.6.6 StickyKeys XkbStickyKeysMask ax_options: XkbAX_Two­KeysMask XkbAX_Latch­ToLockMask XkbStickyKeysMask 10.6.8
Table 10.7 shows the actual values for the individual mask bits used to select controls for modification and to enable and disable the control. Note that the same mask bit is used to specify general modifications to the parameters used to configure the control (which), and to enable and disable the control (enabled_ctrls). The anomalies in the table (no ok in column) are for controls that have no configurable attributes; and for controls that are not boolean controls and therefore cannot be enabled or disabled. Controls Mask Bits Mask Bit which or changed_ctrls enabled_ctrls Value XkbRepeatKeysMask ok ok (1L<<0) XkbSlowKeysMask ok ok (1L<<1) XkbBounceKeysMask ok ok (1L<<2) XkbStickyKeysMask ok ok (1L<<3) XkbMouseKeysMask ok ok (1L<<4) XkbMouseKeysAccelMask ok ok (1L<<5) XkbAccessXKeysMask ok ok (1L<<6) XkbAccessXTimeoutMask ok ok (1L<<7) XkbAccessXFeedbackMask ok ok (1L<<8) XkbAudibleBellMask ok (1L<<9) XkbOverlay1Mask ok (1L<<10) XkbOverlay2Mask ok (1L<<11) XkbIgnoreGroupLockMask ok (1L<<12) XkbGroupsWrapMask ok (1L<<27) XkbInternalModsMask ok (1L<<28) XkbIgnoreLockModsMask ok (1L<<29) XkbPerKeyRepeatMask ok (1L<<30) XkbControlsEnabledMask ok (1L<<31) XkbAccessXOptionsMask ok ok (XkbStickyKeysMask | XkbAccessXFeedbackMask) XkbAllBooleanCtrlsMask ok (0x00001FFF) XkbAllControlsMask ok (0xF8001FFF)
The individual fields of the XkbControlsRec structure are defined as follows. <sect3 id='mk_dflt_btn'> <title>mk_dflt_btn mk_dflt_btn is an attribute of the MouseKeys control (see section 10.5). It specifies the mouse button number to use for keyboard simulated mouse button operations. Its value should be one of the core symbols Button1Button5. num_groups num_groups is not a part of any control, but is reported in the XkbControlsRec structure whenever any of its components are fetched from the server. It reports the number of groups the particular keyboard configuration uses and is computed automatically by the server whenever the keyboard mapping changes. groups_wrap groups_wrap is an attribute of the GroupsWrap control (see section 10.7.1). It specifies the handling of illegal groups on a global basis. Valid values for groups_wrap are shown in Table 10.8. GroupsWrap options (groups_wrap field) groups_wrap symbolic name value XkbWrapIntoRange (0x00) XkbClampIntoRange (0x40) XkbRedirectIntoRange (0x80)
When groups_wrap is set to XkbRedirectIntoRange, its four low-order bits specify the index of the group to use.
internal internal is an attribute of the InternalMods control (see section 10.7.4). It specifies modifiers to be consumed in the server and not passed on to clients when events are reported. Valid values consist of any combination of the eight core modifier bits: ShiftMask, LockMask, ControlMask, Mod1MaskMod5Mask. ignore_lock ignore_lock is an attribute of the IgnoreLockMods control (see section 10.7.2). It specifies modifiers to be ignored in grab calculations. Valid values consist of any combination of the eight core modifier bits: ShiftMask, LockMask, ControlMask, Mod1MaskMod5Mask. enabled_ctrls enabled_ctrls is an attribute of the EnabledControls control (see section 10.1.1). It contains one bit per boolean control. Each bit determines whether the corresponding control is enabled or disabled; a one bit means the control is enabled. The mask bits used to enable these controls are listed in Table 10.7, using only those masks with ok in the enabled_ctrls column. repeat_delay and repeat_interval repeat_delay and repeat_interval are attributes of the RepeatKeys control (see section 10.3.2). repeat_delay is the initial delay before a key begins repeating, in milliseconds; repeat_interval is the delay between subsequent key events, in milliseconds. slow_keys_delay slow_keys_delay is an attribute of the SlowKeys control (see section 10.6.6). Its value specifies the SlowKeys acceptance delay period in milliseconds before a key press is accepted by the server. debounce_delay debounce_delay is an attribute of the BounceKeys control (see section 10.6.7). Its value specifies the BounceKeys delay period in milliseconds for which the key is disabled after having been pressed before another press of the same key is accepted by the server. mk_delay, mk_interval, mk_time_to_max, mk_max_speed, and mk_curve mk_delay, mk_interval, mk_time_to_max, mk_max_speed, and mk_curve are attributes of the MouseKeysAccel control. Refer to section 10.5.2 for a description of these fields and the units involved. ax_options The ax_options field contains attributes used to configure two different controls, the StickyKeys control (see section 10.6.8) and the AccessXFeedback control (see section 10.6.3). The ax_options field is a bitmask and may include any combination of the bits defined in Table 10.9. Access X Enable/Disable Bits (ax_options field) Access X Control ax_options bit value AccessXFeedback XkbAX_SKPressFBMask (1L<<0) XkbAX_SKAcceptFBMask (1L << 1) XkbAX_FeatureFBMask (1L << 2) XkbAX_SlowWarnFBMask (1L << 3) XkbAX_IndicatorFBMask (1L << 4) XkbAX_StickyKeysFBMask (1L << 5) XkbAX_SKReleaseFBMask (1L << 8) XkbAX_SKRejectFBMask (1L << 9) XkbAX_BKRejectFBMask (1L << 10) XkbAX_DumbBellFBMask (1L << 11) StickyKeys XkbAX_TwoKeysMask (1L << 6) XkbAX_LatchToLockMask (1L << 7) XkbAX_AllOptionsMask (0xFFF)
The fields pertaining to each control are relevant only when the control is enabled (XkbAccessXFeedbackMask or XkbStickyKeysMask bit is turned on in the enabled_ctrls field). Xkb provides a set of convenience macros for working with the ax_options field of an XkbControlsRec structure: #define XkbAX_NeedOption(c,w) ((c)->ax_options & (w)) The XkbAX_NeedOption macro is useful for determining whether a particular AccessX option is enabled or not. It accepts a pointer to an XkbControlsRec structure and a valid mask bit from Table 10.9. If the specified mask bit in the ax_options field of the controls structure is set, the macro returns the mask bit. Otherwise, it returns zero. Thus, XkbAX_NeedOption(ctlrec, XkbAX_LatchToLockMask) is nonzero if the latch to lock transition for latching keys is enabled, and zero if it is disabled. Note that XkbAX_NeedOption only determines whether or not the particular capability is configured to operate; the XkbAccessXFeedbackMask bit must also be turned on in enabled_ctrls for the capability to actually be functioning. #define XkbAX_AnyFeedback(c) \ ((c)->enabled_ctrls & XkbAccessXFeedbackMask) The XkbAX_AnyFeedback macro accepts a pointer to an XkbControlsRec structure and tells whether the AccessXFeedback control is enabled or not. If the AccessXFeedback control is enabled, the macro returns XkbAccessXFeedbackMask. Otherwise, it returns zero. #define XkbAX_NeedFeedback(c,w) \ (XkbAX_AnyFeedback(c) && XkbAX_NeedOption(c,w)) The XkbAX_NeedFeedback macro is useful for determining if both the AccessXFeedback control and a particular AccessX feedback option are enabled. The macro accepts a pointer to an XkbControlsRec structure and a feedback option from the table above. If both the AccessXFeedback control and the specified feedback option are enabled, the macro returns True. Otherwise it returns False.
ax_timeout, axt_opts_mask, axt_opts_values, axt_ctrls_mask, and axt_ctrls_values ax_timeout, axt_opts_mask, axt_opts_values, axt_ctrls_mask, and axt_ctrls_values are attributes of the AccessXTimeout control. Refer to section 10.6.2 for a description of these fields and the units involved. per_key_repeat The per_key_repeat field mirrors the auto_repeats field of the core protocol XKeyboardState structure: changing the auto_repeats field automatically changes per_key_repeat and vice versa. It is provided for convenience and to reduce protocol traffic. For example, to obtain the individual repeat key behavior as well as the repeat delay and rate, use XkbGetControls. If the per_key_repeat were not in this structure, you would have to call both XGetKeyboardControl and XkbGetControls to get this information. The bits correspond to keycodes. The first seven keys (keycodes 1–7) are indicated in per_key_repeat[0], with bit position 0 (low order) corresponding to the fictitious keycode 0. Following array elements correspond to 8 keycodes per element. A 1 bit indicates that the key is a repeating key.
Querying Controls Use XkbGetControls to find the current state of Xkb server controls. XkbGetControls Status XkbGetControls Display *display unsigned long which XkbDescPtr xkb display connection to X server which mask of controls requested xkb keyboard description for controls information XkbGetControls queries the server for the requested control information, waits for a reply, and then copies the server’s values for the requested information into the ctrls structure of the xkb argument. Only those components specified by the which parameter are copied. Valid values for which are any combination of the masks listed in Table 10.7 that have ok in the which column. If xkb->ctrls is NULL, XkbGetControls allocates and initializes it before obtaining the values specified by which. If xkb->ctrls is not NULL, XkbGetControls modifies only those portions of xkb->ctrls corresponding to the values specified by which. XkbGetControls returns Success if successful; otherwise, it returns BadAlloc if it cannot obtain sufficient storage, BadMatch if xkb is NULL or which is empty, or BadImplementation. To free the ctrls member of a keyboard description, use XkbFreeControls (see section 10.12) The num_groups field in the ctrls structure is always filled in by XkbGetControls, regardless of which bits are selected by which. Changing Controls There are two ways to make changes to controls: either change a local copy keyboard description and call XkbSetControls, or, to reduce network traffic, use an XkbControlsChangesRec structure and call XkbChangeControls. To change the state of one or more controls, first modify the ctrls structure in a local copy of the keyboard description and then use XkbSetControls to copy those changes to the X server. XkbSetControls Bool XkbSetControls Display *display unsigned long which XkbDescPtr xkb display connection to X server which mask of controls to change xkb ctrls field contains new values to be set For each bit that is set in the which parameter, XkbSetControls sends the corresponding values from the xkb->ctrls field to the server. Valid values for which are any combination of the masks listed in Table 10.7 that have ok in the which column. If xkb->ctrls is NULL, the server does not support a compatible version of Xkb, or the Xkb extension has not been properly initialized, XkbSetControls returns False. Otherwise, it sends the request to the X server and returns True. Note that changes to attributes of controls in the XkbControlsRec structure are apparent only when the associated control is enabled, although the corresponding values are still updated in the X server. For example, the repeat_delay and repeat_interval fields are ignored unless the RepeatKeys control is enabled (that is, the X server’s equivalent of xkb->ctrls has XkbRepeatKeysMask set in enabled_ctrls). It is permissible to modify the attributes of a control in one call to XkbSetControls and enable the control in a subsequent call. See section 10.1.1 for more information on enabling and disabling controls. Note that the enabled_ctrls field is itself a control — the EnabledControls control. As such, to set a specific configuration of enabled and disabled boolean controls, you must set enabled_ctrls to the appropriate bits to enable only the controls you want and disable all others, then specify the XkbControlsEnabledMask in a call to XkbSetControls. Because this is somewhat awkward if all you want to do is enable and disable controls, and not modify any of their attributes, a convenience function is also provided for this purpose (XkbChangeEnabledControls, section 10.1.1). The XkbControlsChangesRec Structure XkbControlsChangesRec The XkbControlsChangesRec structure allows applications to track modifications to an XkbControlsRec structure and thereby reduce the amount of traffic sent to the server. The same XkbControlsChangesRec structure may be used in several successive modifications to the same XkbControlsRec structure, then subsequently used to cause all of the changes, and only the changes, to be propagated to the server. The XkbControlsChangesRec structure is defined as follows: typedef struct _XkbControlsChanges { unsigned int changed_ctrls; /* bits indicating changed control data */ unsigned int enabled_ctrls_changes; /* bits indicating enabled/disabled controls */ Bool num_groups_changed; /* True if number of keyboard groups changed */ } XkbControlsChangesRec, *XkbControlsChangesPtr; The changed_ctrls field is a mask specifying which logical sets of data in the controls structure have been modified. In this context, modified means set, that is, if a value is set to the same value it previously contained, it has still been modified, and is noted as changed. Valid values for changed_ctrls are any combination of the masks listed in Table 10.7 that have ok in the changed_ctrls column. Setting a bit implies the corresponding data fields from the Relevant XkbControlsRec Data Fields column in Table 10.6 have been modified. The enabled_ctrls_changes field specifies which bits in the enabled_ctrls field have changed. If the number of keyboard groups has changed, the num_groups_changed field is set to True. If you have an Xkb description with controls that have been modified and an XkbControlsChangesRec that describes the changes that have been made, the XkbChangeControls function provides a flexible method for updating the controls in a server to match those in the changed keyboard description. XkbChangeControls Bool XkbChangeControls Display *dpy XkbDescPtr xkb XkbControlsChangesPtr changes dpy connection to X server xkb keyboard description with changed xkb->ctrls changes which parts of xkb->ctrls have changed XkbChangeControls copies any controls fields specified by changes from the keyboard description controls structure, xkb->ctrls, to the server specified by dpy. Tracking Changes to Keyboard Controls eventsXkbControlsNotify XkbControlsNotifyEvent Whenever a field in the controls structure changes in the server’s keyboard description, the server sends an XkbControlsNotify event to all interested clients.To receive XkbControlsNotify events under all possible conditions, use XkbSelectEvents (see section 4.3) and pass XkbControlsNotifyMask in both bits_to_change and values_for_bits. To receive XkbControlsNotify events only under certain conditions, use XkbSelectEventDetails using XkbControlsNotify as the event_type and specifying the desired state changes in bits_to_change and values_for_bits using mask bits from Table 10.7. The structure for the XkbControlsNotify event is defined as follows: typedef struct { int type; /* Xkb extension base event code */ unsigned long serial; /* X server serial number for event */ Bool send_event; /* True ⇒ synthetically generated */ Display * display; /* server connection where event generated */ Time time; /* server time when event generated */ int xkb_type; /* XkbCompatMapNotify */ int device; /* Xkb device ID, will not be XkbUseCoreKbd */ unsigned int changed_ctrls; /* bits indicating which controls data have changed */ unsigned int enabled_ctrls; /* controls currently enabled in server */ unsigned int enabled_ctrl_changes; /* bits indicating enabled/disabled controls */ int num_groups; /* current number of keyboard groups */ KeyCode keycode; /* != 0 ⇒ keycode of key causing change */ char event_type; /* Type of event causing change */ char req_major; /* major event code of event causing change */ char req_minor; /* minor event code of event causing change */ } XkbControlsNotifyEvent; The changed_ctrls field specifies the controls components that have changed and consists of bits taken from the masks defined in Table 10.7 with ok in the changed_ctrls column. The controls currently enabled in the server are reported in the enabled_ctrls field. If any controls were just enabled or disabled (that is, the contents of the enabled_ctrls field changed), they are flagged in the enabled_ctrl_changes field. The valid bits for these fields are the masks listed in Table 10.7 with ok in the enabled_ctrls column. The num_groups field reports the number of groups bound to the key belonging to the most number of groups and is automatically updated when the keyboard mapping changes. If the change was caused by a request from a client, the keycode and event_type fields are set to zero and the req_major and req_minor fields identify the request. The req_major value is the same as the major extension opcode. Otherwise, event_type is set to the type of event that caused the change (one of KeyPress, KeyRelease, DeviceKeyPress, DeviceKeyRelease, ButtonPress or ButtonRelease), and req_major and req_minor are undefined. If event_type is KeyPress, KeyRelease, DeviceKeyPress, or DeviceKeyRelease, the keycode field is set to the key that caused the change. If event_type is ButtonPress or ButtonRelease, keycode contains the button number. When a client receives an XkbControlsNotify event, it can note the changes in a changes structure using XkbNoteControlsChanges. XkbNoteControlsChanges void XkbNoteControlsChanges XkbControlsChangesPtr changes XkbControlsNotifyEvent *new unsigned int wanted changes records changes indicated by new new tells which things have changed wanted tells which parts of new to record in changes The wanted parameter is a bitwise inclusive OR of bits taken from the set of masks specified in Table 10.7 with ok in the changed_ctrls column. XkbNoteControlsChanges copies any changes reported in new and specified in wanted into the changes record specified by changes. Use XkbGetControlsChanges to update a local copy of a keyboard description with the changes previously noted by one or more calls to XkbNoteControlsChanges. XkbGetControlsChanges Status XkbGetControlsChanges Display *dpy XkbDescPtr xkb XkbNameChangesPtr changes dpy connection to X server xkb xkb->ctrls will be updated changes indicates which parts of xkb->ctrls to update XkbGetControlsChanges examines the changes parameter, queries the server for the necessary information, and copies the results into the xkb->ctrls keyboard description. If the ctrls field of xkb is NULL, XkbGetControlsChanges allocates and initializes it. To free the ctrls field, use XkbFreeControls (see section 10.12). XkbGetControlsChanges returns Success if successful and can generate BadAlloc, BadImplementation, and BadMatch errors. Allocating and Freeing an XkbControlsRec The need to allocate an XkbControlsRec structure seldom arises; Xkb creates one when an application calls XkbGetControls or a related function. For those situations where there is not an XkbControlsRec structure allocated in the XkbDescRec, allocate one by calling XkbAllocControls. XkbAllocControls Status XkbAllocControls XkbDescPtr xkb unsigned int which xkb Xkb description in which to allocate ctrls rec which mask of components of ctrls to allocate XkbAllocControls allocates the ctrls field of the xkb parameter, initializes all fields to zero, and returns Success. If the ctrls field is not NULL, XkbAllocControls simply returns Success. If xkb is NULL, XkbAllocControls reports a BadMatch error. If the ctrls field could not be allocated, it reports a BadAlloc error. The which mask specifies the individual fields of the ctrls structure to be allocated and can contain any of the valid masks defined in Table 10.7. Because none of the currently existing controls have any structures associated with them, which is currently of little practical value in this call. To free memory used by the ctrls member of an XkbDescRec structure, use XkbFreeControls: XkbFreeControls void XkbFreeControls XkbDescPtr xkb unsigned int which Bool free_all xkb Xkb description in which to free controls components which mask of components of ctrls to free free_all True ⇒ free everything + ctrls itself XkbFreeControls frees the specified components of the ctrls field in the xkb keyboard description and sets the corresponding structure component values to NULL or zero. The which mask specifies the fields of ctrls to be freed and can contain any of the controls components specified in Table 10.7. If free_all is True, XkbFreeControls frees every non- NULL structure component in the controls, frees the XkbControlsRec structure referenced by the ctrls member of xkb, and sets ctrls to NULL. The Miscellaneous Per-client Controls You can configure the boolean per-client controls which affect the state reported in button and key events. See section 12.1.1, 12.3, 12.5, and 16.3.11 of the XKB Protocol specification for more details. To get the current values of the per-client controls, use XkbGetPerClientControls. XkbGetPerClientControls Bool XkbGetPerClientControls Display *dpy unsigned int *ctrls dpy connection to X server ctrls 1 bit ⇒ corresponding control is on XkbGetPerClientControls backfills ctrls with the per-client control attributes for this particular client. It returns True if successful, and False otherwise. To change the current values of the per-client control attributes, use XkbSetPerClientControls. XkbSetPerClientControls Bool XkbSetPerClientControls Display *dpy unsigned int change unsigned int *value dpy connection to X server change 1 bit ⇒ change control value 1 bit ⇒ control on XkbSetPerClientControls changes the per-client values for the controls selected by change to the corresponding value in value. Legal values for change and value are: XkbPCF_GrabsUseXKBStateMask, XkbPCF_LookupStateWhenGrabbed, and XkbPCF_SendEventUsesXKBState. More than one control may be changed at one time by OR-ing the values together. XkbSetPerClientControls backfills value with the per-client control attributes for this particular client. It returns True if successful, and False otherwise.
libX11-1.8.12/specs/XKB/XKBlib-10.svg0000644014310600000120000020347314763154126012151 image/svg+xml label_color base_color properties colors shapes sections doodads key_aliases . . . . . . XkbGeometryRec XkbKeyAliasRec(s)(array) XkbColorRec(s)(array) XkbPropertyRec(s)(array) (See Figure 13.6) overlays(s)(array) . . . rows doodads bounds overlays XkbSectionRec(s)(array) (See Figure 13.5) doodads(s)(array) XkbBoundsRec XkbBoundsRec . . . keys bounds XkbRowRec(s)(array) . . . shape_ndx color_ndx XkbKeyRec(s)(array) (See Figure 13.5) doodads(s)(array) XkbBoundsRec XkbOutlineRec(s)(array) outlines approx primary bounds . . . XkbShapeRec(s)(array) libX11-1.8.12/specs/XKB/ch19.xml0000644014310600000120000002660614763154126011366 Replacing a Keyboard <quote>On the Fly</quote> Some operating system and X server implementations allow hot plugging of input devices. When using these implementations, input devices can be unplugged and new ones plugged in without restarting the software that is using those devices. There is no provision in the standard X server for notification of client programs if input devices are unplugged and/or new ones plugged in. In the case of the X keyboard, this could result in the X server having a keymap that does not match the new keyboard. If the X server implementation supports the X input device extension, a client program may also change the X keyboard programmatically. The XChangeKeyboardDevice input extension request allows a client to designate an input extension keyboard device as the X keyboard, in which case the old X keyboard device becomes inaccessible except via the input device extension. In this case, core protocol MappingNotify and input extension XChangeDeviceNotify events are generated to notify all clients that a new keyboard with a new keymap has been designated. When a client opens a connection to the X server, the server reports the minimum and maximum keycodes. The server keeps track of the minimum and maximum keycodes last reported to each client. When delivering events to a particular client, the server filters out any events that fall outside of the valid range for the client. Xkb provides an XkbNewKeyboardNotify event that reports a change in keyboard geometry and/or the range of supported keycodes. The server can generate an XkbNewKeyboardNotify event when it detects a new keyboard or in response to an XkbGetKeyboardByName request that loads a new keyboard description. Selecting for XkbNewKeyboardNotify events allows Xkb-aware clients to be notified whenever a keyboard change occurs that may affect the keymap. When a client requests XkbNewKeyboardNotify events, the server compares the range of keycodes for the current keyboard to the range of keycodes that are valid for the client. If they are not the same, the server immediately sends the client an XkbNewKeyboardNotify event. Even if the new keyboard is not new to the server, it is new to this particular client. When the server sends an XkbNewKeyboardNotify event to a client to inform it of a new keycode range, it resets the stored range of legal keycodes for the client to the keycode range reported in the event; it does not reset this range for the client if it does not sent an XkbNewKeyboardNotify event to a client. Because Xkb-unaware clients and Xkb-aware clients that do not request XkbNewKeyboardNotify events are never sent these events, the server’s notion of the legal keycode range never changes, and these clients never receive events from keys that fall outside of their notion of the legal keycode range. Clients that have not selected to receive XkbNewKeyboardNotify events do, however, receive the XkbNewKeyboardNotify event when a keyboard change occurs. Clients that have not selected to receive this event also receive numerous other events detailing the individual changes that occur when a keyboard change occurs. Clients wishing to track changes in min_key_code and max_key_code must watch for both XkbNewKeyboardNotify and XkbMapNotify events, because a simple mapping change causes an XkbMapNotify event and may change the range of valid keycodes, but does not cause an XkbNewKeyboardNotify event. If a client does not select for XkbNewKeyboardNotify events, the server restricts the range of keycodes reported to the client. In addition to filtering out-of-range key events, Xkb: Adjusts core protocol MappingNotify events to refer only to keys that match the stored legal range. Reports keyboard mappings for keys that match the stored legal range to clients that issue a core protocol GetKeyboardMapping request. Reports modifier mappings only for keys that match the stored legal range to clients that issue a core protocol GetModifierMapping request. Restricts the core protocol ChangeKeyboardMapping and SetModifierMapping requests to keys that fall inside the stored legal range. In short, Xkb does everything possible to hide from Xkb-unaware clients the fact that the range of legal keycodes has changed, because such clients cannot be expected to deal with them. Xkb events and requests are not modified in this manner; all Xkb events report the full range of legal keycodes. No requested Xkb events are discarded, and no Xkb requests have their keycode range clamped. eventsXkbNewKeyboardNotify XkbNewKeyboardNotifyEvent The structure for the XkbNewKeyboardNotify event is defined as follows: typedef struct _XkbNewKeyboardNotify { int type; /* Xkb extension base event code */ unsigned long serial; /* X server serial number for event */ Bool send_event; /* True ⇒ synthetically generated */ Display * display; /* server connection where event generated */ Time time; /* server time when event generated */ int xkb_type; /* XkbNewKeyboardNotify */ int device; /* device ID of new keyboard */ int old_device; /* device ID of old keyboard */ int min_key_code; /* min keycode of new keyboard */ int max_key_code; /* max keycode of new keyboard */ int old_min_key_code; /* min keycode of old keyboard */ int old_max_key_code; /* max keycode of old keyboard */ unsigned int changed; /* changed aspects - see masks below */ char req_major; /* major request that caused change */ char req_minor; /* minor request that caused change */ } XkbNewKeyboardNotifyEvent; To receive name notify events, use XkbSelectEvents (see section 4.3) with XkbNewKeyboardNotifyMask in both the bits_to_change and values_for_bits parameters. To receive events for only specific names, use XkbSelectEventDetails. Set the event_type parameter to XkbNewKeyboardNotify, and set both the bits_to_change and values_for_bits detail parameter to a mask composed of a bitwise OR of masks in Table 19.1. XkbNewKeyboardNotifyEvent Details XkbNewKeyboardNotify Event Details Value Circumstances XkbNKN_KeycodesMask (1L<<0) Notification of keycode range changes wanted XkbNKN_GeometryMask (1L<<1) Notification of geometry changes wanted XkbNKN_DeviceIDMask (1L<<2) Notification of device ID changes wanted XkbAllNewKeyboardEventsMask (0x7) Includes all of the above masks
The req_major and req_minor fields indicate what type of keyboard change has occurred. If req_major and req_minor are zero, the device change was not caused by a software request to the server — a spontaneous change has occurred, such as hot-plugging a new device. In this case, device is the device identifier for the new, current X keyboard device, but no implementation-independent guarantee can be made about old_device. old_device may be identical to device (an implementor is permitted to reuse the device specifier when the device changes); or it may be different. Note that req_major and req_minor being zero do not necessarily mean that the physical keyboard device has changed; rather, they only imply a spontaneous change outside of software control (some systems have keyboards that can change personality at the press of a key). If the keyboard change is the result of an X Input Extension ChangeKeyboardDevice request, req_major contains the input extension major opcode, and req_minor contains the input extension request number for X_ChangeKeyboardDevice. In this case, device and old_device are different, with device being the identifier for the new, current X keyboard device, and old_device being the identifier for the former device. If the keyboard change is the result of an XkbGetKeyboardByName function call, which generates an X_kbGetKbdByName request, req_major contains the Xkb extension base event code (see section 2.4), and req_minor contains the event code for the Xkb extension request X_kbGetKbdByName. device contains the device identifier for the new device, but nothing definitive can be said for old_device; it may be identical to device, or it may be different, depending on the implementation.
libX11-1.8.12/specs/XKB/XKBlib-17.svg0000644014310600000120000007345714763154126012167 image/svg+xml Define realmodifiers boundto virtualmodifier Define virtual modifiersfor each key KeyCode XkbDescRec . . . . . . . . . server names . . . . . . . . . vmods[0] vmods[1] vmods[2] vmods[15] XkbNamesRec XkbServerMapRec vmods[0] vmods[1] vmods[2] vmods[15] vmodmap . . . . . . unsigned short(one per key) libX11-1.8.12/specs/XKB/ch08.xml0000644014310600000120000016566614763154126011376 Indicators indicators Although the core X implementation supports up to 32 LEDs on an input device, it does not provide any linkage between the state of the LEDs and the logical state of the input device. For example, most keyboards have a CapsLock LED, but X does not provide a mechanism to make the LED automatically follow the logical state of the CapsLock key. Furthermore, the core X implementation does not provide clients with the ability to determine what bits in the led_mask field of the XKeyboardState map to the particular LEDs on the keyboard. For example, X does not provide a method for a client to determine what bit to set in the led_mask field to turn on the Scroll Lock LED or whether the keyboard even has a Scroll Lock LED. Xkb provides indicator names and programmable indicators to help solve these problems. Using Xkb, clients can determine the names of the various indicators, determine and control the way that the individual indicators should be updated to reflect keyboard changes, and determine which of the 32 keyboard indicators reported by the protocol are actually present on the keyboard. Clients may also request immediate notification of changes to the state of any subset of the keyboard indicators, which makes it straightforward to provide an on-screen virtual LED panel. This chapter describes Xkb indicators and the functions used for manipulating them. Indicator Names Xkb provides the capability of symbolically naming indicators. Xkb itself doesn’t use these symbolic names for anything; they are there only to help make the keyboard description comprehensible to humans. To set the names of specific indicators, use XkbSetNames as discussed in . Then set the map using XkbSetMap (see section 14.3) or XkbSetNamedDeviceIndicator (below). To retrieve indicator names, use XkbGetNames (). Indicator Data Structures Use the indicator description record, XkbIndicatorRec, and its indicator map, XkbIndicatorMapRec, to inquire about and control most indicator properties and behaviors. XkbIndicatorRec XkbIndicatorRec The description for all the Xkb indicators is held in the indicators field of the complete keyboard description (see ), which is defined as follows: #define XkbNumIndicators 32 typedef struct { unsigned long phys_indicators; /* LEDs existence */ XkbIndicatorMapRec maps[XkbNumIndicators]; /* indicator maps */ } XkbIndicatorRec, *XkbIndicatorPtr; This structure contains the phys_indicators field, which relates some information about the correspondence between indicators and physical LEDs on the keyboard, and an array of indicator maps, one map per indicator. The phys_indicators field indicates which indicators are bound to physical LEDs on the keyboard; if a bit is set in phys_indicators, then the associated indicator has a physical LED associated with it. This field is necessary because some indicators may not have corresponding physical LEDs on the keyboard. For example, most keyboards have an LED for indicating the state of CapsLock, but most keyboards do not have an LED that indicates the current group. Because phys_indicators describes a physical characteristic of the keyboard, you cannot directly change it under program control. However, if a client program loads a completely new keyboard description via XkbGetKeyboardByName, or if a new keyboard is attached and the X implementation notices, phys_indicators changes if the indicators for the new keyboard are different. XkbIndicatorMapRec XkbIndicatorMapRec Each indicator has its own set of attributes that specify whether clients can explicitly set its state and whether it tracks the keyboard state. The attributes of each indicator are held in the maps array, which is an array of XkbIndicatorRec structures: typedef struct { unsigned char flags; /* how the indicator can be changed */ unsigned char which_groups; /* match criteria for groups */ unsigned char groups; /* which keyboard groups the indicator watches */ unsigned char which_mods; /* match criteria for modifiers */ XkbModsRec mods; /* which modifiers the indicator watches */ unsigned int ctrls; /* which controls the indicator watches */ } XkbIndicatorMapRec, *XkbIndicatorMapPtr; This indicator map specifies for each indicator: The conditions under which the keyboard modifier state affects the indicator The conditions under which the keyboard group state affects the indicator The conditions under which the state of the boolean controls affects the indicator The effect (if any) of attempts to explicitly change the state of the indicator using the functions XkbSetControls or XChangeKeyboardControl For more information on the effects of explicit changes to indicators and the relationship to the indicator map, see section 8.4.1. XkbIndicatorMapRec flags field The flags field specifies the conditions under which the indicator can be changed and the effects of changing the indicator. The valid values for flags and their effects are shown in Table 8.1. XkbIndicatorMapRec flags Field Value Effect XkbIM_NoExplicit (1L<<7) Client applications cannot change the state of the indicator. XkbIM_NoAutomatic (1L<<6) Xkb does not automatically change the value of the indicator based upon a change in the keyboard state, regardless of the values for the other fields of the indicator map. XkbIM_LEDDrivesKB (1L<<5) A client application changing the state of the indicator causes the state of the keyboard to change.
Note that if XkbIM_NoAutomatic is not set, by default the indicator follows the keyboard state. If XkbIM_LEDDrivesKB is set and XkbIM_NoExplicit is not, and if you call a function which updates the server’s image of the indicator map (such as XkbSetIndicatorMap or XkbSetNamedDeviceIndicator), Xkb changes the keyboard state and controls to reflect the other fields of the indicator map, as described in the remainder of this section. If you attempt to explicitly change the value of an indicator for which XkbIM_LEDDrivesKB is absent or for which XkbIM_NoExplicit is present, keyboard state or controls are unaffected. For example, a keyboard designer may want to make the CapsLock LED controllable only by the server, but allow the Scroll Lock LED to be controlled by client applications. To do so, the keyboard designer could set the XkbIM_NoExplicit flag for the CapsLock LED, but not set it for the Scroll Lock LED. Or the keyboard designer may wish to allow the CapsLock LED to be controlled by both the server and client applications and also have the server to automatically change the CapsLock modifier state whenever a client application changes the CapsLock LED. To do so, the keyboard designer would not set the XkbIM_NoExplicit flag, but would instead set the XkbIM_LEDDrivesKB flag. The remaining fields in the indicator map specify the conditions under which Xkb automatically turns an indicator on or off (only if XkbIM_NoAutomatic is not set). If these conditions match the keyboard state, Xkb turns the indicator on. If the conditions do not match, Xkb turns the indicator off.
XkbIndicatorMapRec which_groups and groups fields The which_groups and the groups fields of an indicator map determine how the keyboard group state affects the corresponding indicator. The which_groups field controls the interpretation of groups and may contain any one of the following values: #define XkbIM_UseNone 0 #define XkbIM_UseBase (1L << 0) #define XkbIM_UseLatched (1L << 1) #define XkbIM_UseLocked (1L << 2) #define XkbIM_UseEffective (1L << 3) #define XkbIM_UseAnyGroup XkbIM_UseLatched | XkbIM_UseLocked | XkbIM_UseEffective The groups field specifies what keyboard groups an indicator watches and is the bitwise inclusive OR of the following valid values: #define XkbGroup1Mask (1<<0) #define XkbGroup2Mask (1<<1) #define XkbGroup3Mask (1<<2) #define XkbGroup4Mask (1<<3) #define XkbAnyGroupMask (1<<7) #define XkbAllGroupsMask (0xf) If XkbIM_NoAutomatic is not set (the keyboard drives the indicator), the effect of which_groups and groups is shown in Table 8.2. XkbIndicatorMapRec which_groups and groups, Keyboard Drives Indicator which_groups Effect XkbIM_UseNone The groups field and the current keyboard group state are ignored. XkbIM_UseBase If groups is nonzero, the indicator is lit whenever the base keyboard group is nonzero. If groups is zero, the indicator is lit whenever the base keyboard group is zero. XkbIM_UseLatched If groups is nonzero, the indicator is lit whenever the latched keyboard group is nonzero. If groups is zero, the indicator is lit whenever the latched keyboard group is zero. XkbIM_UseLocked The groups field is interpreted as a mask. The indicator is lit when the current locked keyboard group matches one of the bits that are set in groups. XkbIM_UseEffective The groups field is interpreted as a mask. The indicator is lit when the current effective keyboard group matches one of the bits that are set in groups.
The effect of which_groups and groups when you change an indicator for which XkbIM_LEDDrivesKB is set (the indicator drives the keyboard) is shown in Table 8.3. The New State column refers to the new state to which you set the indicator. XkbIndicatorMapRec which_groups and groups, Indicator Drives Keyboard which_groups New State Effect on Keyboard Group State XkbIM_UseNone On or Off No effect XkbIM_UseBase On or Off No effect XkbIM_UseLatched On The groups field is treated as a group mask. The keyboard group latch is changed to the lowest numbered group specified in groups; if groups is empty, the keyboard group latch is changed to zero. XkbIM_UseLatched Off The groups field is treated as a group mask. If the indicator is explicitly extinguished, keyboard group latch is changed to the lowest numbered group not specified in groups; if groups is zero, the keyboard group latch is set to the index of the highest legal keyboard group. XkbIM_UseLocked or XkbIM_UseEffective On If the groups mask is empty, group is not changed; otherwise, the locked keyboard group is changed to the lowest numbered group specified in groups. XkbIM_UseLocked or XkbIM_UseEffective Off Locked keyboard group is changed to the lowest numbered group that is not specified in the groups mask, or to Group1 if the groups mask contains all keyboard groups.
XkbIndicatorMapRec which_mods and mods fields The mods field specifies what modifiers an indicator watches. The mods field is an Xkb modifier definition, XkbModsRec, as described in section 7.2, which can specify both real and virtual modifiers. The mods field takes effect even if some or all of the virtual indicators specified in mods are unbound. To specify the mods field, in general, assign the modifiers of interest to mods.real_mods and the virtual modifiers of interest to mods.vmods. You can disregard the mods.mask field unless your application needs to interpret the indicator map directly (that is, to simulate automatic indicator behavior on its own). Relatively few applications need to do so, but if you find it necessary, you can either read the indicator map back from the server after you update it (the server automatically updates the mask field whenever any of the real or virtual modifiers are changed in the modifier definition) or you can use XkbVirtualModsToReal to determine the proper contents for the mask field, assuming that the XkbDescRec contains the virtual modifier definitions. which_mods specifies what criteria Xkb uses to determine a match with the corresponding mods field by specifying one or more components of the Xkb keyboard state. If XkbIM_NoAutomatic is not set (the keyboard drives the indicator), the indicator is lit whenever any of the modifiers specified in the mask field of the mods modifier definition are also set in any of the current keyboard state components specified by which_mods. Remember that the mask field is comprised of all of the real modifiers specified in the definition plus any real modifiers that are bound to the virtual modifiers specified in the definition. (See for more information on the keyboard state and for more information on virtual modifiers.) Use a bitwise inclusive OR of the following values to compose a value for which_mods: #define XkbIM_UseNone 0 #define XkbIM_UseBase (1L << 0) #define XkbIM_UseLatched (1L << 1) #define XkbIM_UseLocked (1L << 2) #define XkbIM_UseEffective (1L << 3) #define XkbIM_UseCompat (1L << 4) #define XkbIM_UseAnyMods XkbIM_UseBase | XkbIM_UseLatched | XkbIM_UseLocked | XkbIM_UseEffective | XkbIM_UseCompat If XkbIM_NoAutomatic is not set (the keyboard drives the indicator), the effect of which_mods and mods is shown in Table 8.4 XkbIndicatorMapRec which_mods and mods, Keyboard Drives Indicator which_mods Effect on Keyboard Modifiers XkbIM_UseNone The mods field and the current keyboard modifier state are ignored. XkbIM_UseBase The indicator is lit when any of the modifiers specified in the mask field of mods are on in the keyboard base state. If both mods.real_mods and mods.vmods are zero, the indicator is lit when the base keyboard state contains no modifiers. XkbIM_UseLatched The indicator is lit when any of the modifiers specified in the mask field of mods are latched. If both mods.real_mods and mods.vmods are zero, the indicator is lit when none of the modifier keys are latched. XkbIM_UseLocked The indicator is lit when any of the modifiers specified in the mask field of mods are locked. If both mods.real_mods and mods.vmods are zero, the indicator is lit when none of the modifier keys are locked. XkbIM_UseEffective The indicator is lit when any of the modifiers specified in the mask field of mods are in the effective keyboard state. If both mods.real_mods and mods.vmods are zero, the indicator is lit when the effective keyboard state contains no modifiers. XkbIM_UseCompat The indicator is lit when any of the modifiers specified in the mask field of mods are in the keyboard compatibility state. If both mods.real_mods and mods.vmods are zero, the indicator is lit when the keyboard compatibility state contains no modifiers.
The effect on the keyboard modifiers of which_mods and mods when you change an indicator for which XkbIM_LEDDrivesKB is set (the indicator drives the keyboard) is shown in Table 8.5. The New State column refers to the new state to which you set the indicator. XkbIndicatorMapRec which_mods and mods, Indicator Drives Keyboard which_mods New State Effect on Keyboard Modifiers XkbIM_UseNone or XkbIM_UseBase On or Off No Effect XkbIM_UseLatched On Any modifiers specified in the mask field of mods are added to the latched modifiers. XkbIM_UseLatched Off Any modifiers specified in the mask field of mods are removed from the latched modifiers. XkbIM_UseLocked, XkbIM_UseCompat, or XkbIM_UseEffective On Any modifiers specified in the mask field of mods are added to the locked modifiers. XkbIM_UseLocked Off Any modifiers specified in the mask field of mods are removed from the locked modifiers. XkbIM_UseCompat or XkbIM_UseEffective Off Any modifiers specified in the mask field of mods are removed from both the locked and latched modifiers.
XkbIndicatorMapRec ctrls field The ctrls field specifies what controls (see ) the indicator watches and is composed using the bitwise inclusive OR of the following values: #define XkbRepeatKeysMask (1L << 0) #define XkbSlowKeysMask (1L << 1) #define XkbBounceKeysMask (1L << 2) #define XkbStickyKeysMask (1L << 3) #define XkbMouseKeysMask (1L << 4) #define XkbMouseKeysAccelMask (1L << 5) #define XkbAccessXKeysMask (1L << 6) #define XkbAccessXTimeoutMask (1L << 7) #define XkbAccessXFeedbackMask (1L << 8) #define XkbAudibleBellMask (1L << 9) #define XkbOverlay1Mask (1L << 10) #define XkbOverlay2Mask (1L << 11) #define XkbAllBooleanCtrlsMask (0x00001FFF) Xkb lights the indicator whenever any of the boolean controls specified in ctrls is enabled.
Getting Information About Indicators Xkb allows applications to obtain information about indicators using two different methods. The first method, which is similar to the core X implementation, uses a mask to specify the indicators. The second method, which is more suitable for applications concerned with interoperability, uses indicator names. The correspondence between the indicator name and the bit position in masks is as follows: one of the parameters returned from XkbGetNamedDeviceIndicator is an index that is the bit position to use in any function call that requires a mask of indicator bits, as well as the indicator’s index into the XkbIndicatorRec array of indicator maps. Getting Indicator State Because the state of the indicators is relatively volatile, the keyboard description does not hold the current state of the indicators. To obtain the current state of the keyboard indicators, use XkbGetIndicatorState. XkbGetIndicatorState Status XkbGetIndicatorState Display *display unsigned int device_spec unsigned int *state_return display connection to the X server device_spec device ID, or XkbUseCoreKbd state_return backfilled with a mask of the indicator state XkbGetIndicatorState queries the display for the state of the indicators on the device specified by the device_spec. For each indicator that is turned on on the device, the associated bit is set in state_return. If a compatible version of the Xkb extension is not available in the server, XkbGetIndicatorState returns a BadMatch error. Otherwise, it sends the request to the X server, places the state of the indicators into state_return, and returns Success. Thus the value reported by XkbGetIndicatorState is identical to the value reported by the core protocol. Getting Indicator Information by Index To get the map for one or more indicators, using a mask to specify the indicators, use XkbGetIndicatorMap. XkbGetIndicatorMap Status XkbGetIndicatorMap Display *dpy unsigned int which XkbDescPtr desc dpy connection to the X server which mask of indicators for which maps should be returned desc keyboard description to be updated XkbGetIndicatorMap obtains the maps from the server for only those indicators specified by the which mask and copies the values into the keyboard description specified by desc. If the indicators field of the desc parameter is NULL, XkbGetIndicatorMap allocates and initializes it. XkbGetIndicatorMap can generate BadAlloc, BadLength, BadMatch, and BadImplementation errors. To free the indicator maps, use XkbFreeIndicatorMaps (see section 8.6). Getting Indicator Information by Name Xkb also allows applications to refer to indicators by name. Use XkbGetNames to get the indicator names (see ). Using names eliminates the need for hard-coding bitmask values for particular keyboards. For example, instead of using vendor-specific constants such as WSKBLed_ScrollLock mask on Digital workstations or XLED_SCROLL_LOCK on Sun workstations, you can instead use XkbGetNamedDeviceIndicator or XkbGetNamedIndicator to look up information on the indicator named Scroll Lock. Use XkbGetNamedDeviceIndicator to look up the indicator map and other information for an indicator by name on a specific device. XkbGetNamedDeviceIndicator Bool XkbGetNamedDeviceIndicator Display *dpy unsigned int device_spec unsigned int led_class unsigned int led_id Atom name int *ndx_rtrn Bool *state_rtrn XkbIndicatorMapPtr map_rtrn Bool *real_rtrn dpy connection to the X server device_spec keyboard device ID, or XkbUseCoreKbd led_class feedback class, or XkbDfltXIClass led_id feedback ID, or XkbDfltXIId name name of the indicator to be retrieved ndx_rtrn backfilled with the index of the retrieved indicator state_rtrn backfilled with the current state of the retrieved indicator map_rtrn backfilled with the mapping for the retrieved indicator real_rtrn backfilled with True if the named indicator is real (physical) If the device specified by device_spec with feedback specified by led_class and led_id has an indicator named name, XkbGetNamedDeviceIndicator returns True and populates the rest of the parameters with information about the indicator. Otherwise, XkbGetNamedDeviceIndicator returns False. The ndx_rtrn field returns the zero-based index of the named indicator. This index is the bit position to use in any function call that requires a mask of indicator bits, as well as the indicator’s index into the XkbIndicatorRec array of indicator maps. state_rtrn returns the current state of the named indicator (True = on, False = off). map_rtrn returns the indicator map for the named indicator. In addition, if the indicator is mapped to a physical LED, the real_rtrn parameter is set to True. Each of the "_rtrn" arguments is optional; you can pass NULL for any unneeded "_rtrn" arguments. XkbGetNamedDeviceIndicator can generate BadAtom and BadImplementation errors. As a convenience function, Xkb provides a function to get information about indicators with the default class and identifier on the default device: XkbGetNamedIndicator. XkbGetNamedIndicator Bool XkbGetNamedIndicator Display *dpy Atom name int *ndx_rtrn Bool *state_rtrn XkbIndicatorMapPtr map_rtrn Bool *real_rtrn dpy connection to the X server name name of the indicator to be retrieved ndx_rtrn backfilled with the index of the retrieved indicator state_rtrn backfilled with the current state of the retrieved indicator map_rtrn backfilled with the mapping for the retrieved indicator real_rtrn backfilled with True if the named indicator is real (physical) XkbGetNamedIndicator calls XkbGetNamedDeviceIndicator with the specified parameters, a device_spec of XkbUseCoreKbd, a led_class of XkbDfltXIClass, and a led_id of XkbDfltXIId, and returns the value which was returned by XkbGetNamedDeviceIndicator. Changing Indicator Maps and State Just as you can get the indicator map using a mask or using an indicator name, so you can change it using a mask or a name. You cannot change the phys_indicators field of the indicators structure. The only way to change the phys_indicators field is to change the keyboard map. To make changes to indicator maps and state, change a local copy of the indicator maps and use XkbSetIndicatorMap or XkbSetNamedDeviceIndicator. Effects of Explicit Changes on Indicators This section discusses the effects of explicitly changing indicators depending upon different settings in the indicator map. See Table 8.3 and Table 8.5 for information on the effects of the indicator map fields when explicit changes are made. If XkbIM_LEDDrivesKB is set and XkbIM_NoExplicit is not, and if you call a function that updates the server’s image of the indicator map (such as XkbSetIndicatorMap or XkbSetNamedDeviceIndicator), Xkb changes the keyboard state and controls to reflect the other fields of the indicator map. If you attempt to explicitly change the value of an indicator for which XkbIM_LEDDrivesKB is absent or for which XkbIM_NoExplicit is present, keyboard state or controls are unaffected. If neither XkbIM_NoAutomatic nor XkbIM_NoExplicit is set in an indicator map, Xkb honors any request to change the state of the indicator, but the new state might be immediately superseded by automatic changes to the indicator state if the keyboard state or controls change. The effects of changing an indicator that drives the keyboard are cumulative; it is possible for a single change to affect keyboard group, modifiers, and controls simultaneously. If you change an indicator for which both the XkbIM_LEDDrivesKB and XkbIM_NoAutomatic flags are specified, Xkb applies the keyboard changes specified in the other indicator map fields and changes the indicator to reflect the state that was explicitly requested. The indicator remains in the new state until it is explicitly changed again. If the XkbIM_NoAutomatic flag is not set and XkbIM_LEDDrivesKB is set, Xkb applies the changes specified in the other indicator map fields and sets the state of the indicator to the values specified by the indicator map. Note that it is possible in this case for the indicator to end up in a different state than the one that was explicitly requested. For example, Xkb does not extinguish an indicator with which_mods of XkbIM_UseBase and mods of Shift if, at the time Xkb processes the request to extinguish the indicator, one of the Shift keys is physically depressed. If you explicitly light an indicator for which XkbIM_LEDDrivesKB is set, Xkb enables all of the boolean controls specified in the ctrls field of its indicator map. Explicitly extinguishing such an indicator causes Xkb to disable all of the boolean controls specified in ctrls. Changing Indicator Maps by Index To update the maps for one or more indicators, first modify a local copy of the keyboard description, then use XkbSetIndicatorMap to download the changes to the server: XkbSetIndicatorMap Bool XkbSetIndicatorMap Display *dpy unsigned int which XkbDescPtr desc dpy connection to the X server which mask of indicators to change desc keyboard description from which the maps are taken For each bit set in the which parameter, XkbSetIndicatorMap sends the corresponding indicator map from the desc parameter to the server. Changing Indicator Maps by Name XkbSetNamedDeviceIndicator and XkbSetNamedIndicator can do several related things: Name an indicator if it is not already named Toggle the state of the indicator Set the indicator to a specified state Set the indicator map for the indicator XkbSetNamedDeviceIndicator BoolXkbSetNamedDeviceIndicator Display *dpy unsigned int device_spec unsigned int led_class unsigned int led_id Atom name Bool change_state Bool state Bool create_new XkbIndicatorMapPtr map dpy connection to the X server device_spec device ID, or XkbUseCoreKbd led_class feedback class, or XkbDfltXIClass led_id feedback ID, or XkbDfltXIId name name of the indicator to change change_state whether to change the indicator state or not state desired new state for the indicator create_new whether a new indicator with the specified name should be created when necessary map new map for the indicator If a compatible version of the Xkb extension is not available in the server, XkbSetNamedDeviceIndicator returns False. Otherwise, it sends a request to the X server to change the indicator specified by name and returns True. If change_state is True, XkbSetNamedDeviceIndicator tells the server to change the state of the named indicator to the value specified by state. If change_state is False, state is not used. If an indicator with the name specified by name does not already exist, the create_new parameter tells the server whether it should create a new named indicator. If create_new is True, the server finds the first indicator that doesn’t have a name and gives it the name specified by name. If the optional parameter, map, is not NULL, XkbSetNamedDeviceIndicator tells the server to change the indicator’s map to the values specified in map. XkbSetNamedDeviceIndicator can generate BadAtom and BadImplementation errors. In addition, it can also generate XkbIndicatorStateNotify (see section 8.5), XkbIndicatorMapNotify, and XkbNamesNotify events (see section 18.5). As a convenience function, Xkb provides a function to set information about indicators with the default class and identifier on the default device: XkbSetNamedIndicator. XkbSetNamedIndicator BoolXkbSetNamedIndicator Display *dpy Atom name Bool change_state Bool state Bool create_new XkbIndicatorMapPtr map dpy connection to the X server name name of the indicator to change change_state whether to change the indicator state or not state desired new state for the indicator create_new whether a new indicator with the specified name should be created when necessary map new map for the indicator XkbSetNamedIndicator calls XkbSetNamedDeviceIndicator with the specified parameters, a device_spec of XkbUseCoreKbd, a led_class of XkbDfltXIClass, and a led_id of XkbDfltXIId, and returns the value which was returned by XkbSetNamedDeviceIndicator. Tracking Changes to Indicator State or Map eventsXkbIndicatorStateNotify XkbIndicatorStateNotifyEvent eventsXkbIndicatorMapNotify XkbIndicatorMapNotifyEvent Whenever an indicator changes state, the server sends XkbIndicatorStateNotify events to all interested clients. Similarly, whenever an indicator’s map changes, the server sends XkbIndicatorMapNotify events to all interested clients. To receive XkbIndicatorStateNotify events, use XkbSelectEvents (see section 4.3) with both the bits_to_change and values_for_bits parameters containing XkbIndicatorStateNotifyMask. To receive XkbIndicatorMapNotify events, use XkbSelectEvents with XkbIndicatorMapNotifyMask. To receive events for only specific indicators, use XkbSelectEventDetails. Set the event_type parameter to XkbIndicatorStateNotify or XkbIndicatorMapNotify, and set both the bits_to_change and values_for_bits detail parameters to a mask where each bit specifies one indicator, turning on those bits that specify the indicators for which you want to receive events. Both types of indicator events use the same structure: typedef struct _XkbIndicatorNotify { int type; /* Xkb extension base event code */ unsigned long serial; /* X server serial number for event */ Bool send_event; /* True ⇒ synthetically generated */ Display * display; /* server connection where event generated */ Time time; /* server time when event generated */ int xkb_type; /* specifies state or map notify */ int device; /* Xkb device ID, will not be XkbUseCoreKbd */ unsigned int changed; /* mask of indicators with new state or map */ unsigned int state; /* current state of all indicators */ } XkbIndicatorNotifyEvent; xkb_type is either XkbIndicatorStateNotify or XkbIndicatorMapNotify, depending on whether the event is a XkbIndicatorStateNotify event or XkbIndicatorMapNotify, event. The changed parameter is a mask that is the bitwise inclusive OR of the indicators that have changed. If the event is of type XkbIndicatorMapNotify, changed reports the maps that changed. If the event is of type XkbIndicatorStateNotify, changed reports the indicators that have changed state. state is a mask that specifies the current state of all indicators, whether they have changed or not, for both XkbIndicatorStateNotify and XkbIndicatorMapNotify events. Allocating and Freeing Indicator Maps Most applications do not need to directly allocate the indicators member of the keyboard description record (the keyboard description record is described in ). If the need arises, however, use XkbAllocIndicatorMaps. XkbAllocIndicatorMaps Status XkbAllocIndicatorMaps XkbDescPtr xkb xkb keyboard description structure The xkb parameter must point to a valid keyboard description. If it doesn’t, XkbAllocIndicatorMaps returns a BadMatch error. Otherwise, XkbAllocIndicatorMaps allocates and initializes the indicators member of the keyboard description record and returns Success. If XkbAllocIndicatorMaps was unable to allocate the indicators record, it reports a BadAlloc error. To free memory used by the indicators member of an XkbDescRec structure, use XkbFreeIndicatorMaps. XkbFreeIndicatorMaps void XkbFreeIndicatorMaps XkbDescPtr xkb xkb keyboard description structure If the indicators member of the keyboard description record pointed to by xkb is not NULL, XkbFreeIndicatorMaps frees the memory associated with the indicators member of xkb.
libX11-1.8.12/specs/XKB/ch01.xml0000644014310600000120000003420414763154126011346 Overview The X Keyboard Extension provides capabilities that are lacking or are cumbersome in the core X protocol. Core X Protocol Support for Keyboards The core X protocol specifies the ways that the Shift, Control, and Lock modifiers and the modifiers bound to the Mode_switch or Num_Lock keysyms interact to generate keysyms and characters. The core protocol also allows users to specify that a key affects one or more modifiers. This behavior is simple and fairly flexible, but it has a number of limitations that make it difficult or impossible to properly support many common varieties of keyboard behavior. The limitations of core protocol support for keyboards include: Use of a single, uniform, four-symbol mapping for all keyboard keys makes it difficult to properly support keyboard overlays, PC-style break keys, or keyboards that comply with ISO9995, or a host of other national and international standards. A second keyboard group may be specified using a modifier, but this has side effects that wreak havoc with client grabs and X toolkit translations. Furthermore, this approach limits the number of keyboard groups to two. Poorly specified locking key behavior requires X servers to look for a few magic keysyms to determine that keys should lock when pressed. This leads to incompatibilities between X servers with no way for clients to detect implementation differences. Poorly specified capitalization and control behavior requires modifications to X library source code to support new character sets or locales and can lead to incompatibilities between system wide and X library capitalization behavior. Limited interactions between modifiers specified by the core protocol make many common keyboard behaviors difficult or impossible to implement. For example, there is no reliable way to indicate whether or not the shift modifier should cancel the lock modifier. The lack of any explicit descriptions for indicators, most modifiers, and other aspects of the keyboard appearance requires clients that wish to clearly describe the keyboard to a user to resort to a mish-mash of prior knowledge and heuristics. Xkb Keyboard Extension Support for Keyboards The X Keyboard Extension makes it possible to clearly and explicitly specify most aspects of keyboard behavior on a per-key basis. It adds the notion of a keyboard group to the global keyboard state and provides mechanisms to more closely track the logical and physical state of the keyboard. For keyboard-control clients, Xkb provides descriptions and symbolic names for many aspects of keyboard appearance and behavior. In addition, the X Keyboard Extension includes additional keyboard controls designed to make keyboards more accessible to people with movement impairments. Xkb Extension Components The Xkb extension is composed of two parts: a server extension, and a client-side X library extension. These consist of a loadable module that may be activated when an X server is started and a modified version of Xlib. Both server and Xlib versions must be at least X11 R6. Figure 1.1 shows the overall structure of the Xkb extension:
Overall Xkb Structure
The server portion of the Xkb extension encompasses a database of named keyboard components, in unspecified format, that may be used to configure a keyboard. Internally, the server maintains a keyboard description keyboard description that includes the keyboard state and configuration (mapping). By keyboard we mean the logical keyboard device, which includes not only the physical keys, but also potentially a set of up to 32 indicators (usually LEDs) and bells. The keyboard description is a composite of several different data structures, each of which may be manipulated separately. When manipulating the server components, the design allows partial components to be transmitted between the server and a client. The individual components are shown in Figure 1.1. Client Map The key mapping information needed to convert arbitrary keycodes to symbols. Server Map The key mapping information categorizing keys by functionality (which keys are modifiers, how keys behave, and so on). Controls Client configurable quantities effecting how the keyboard behaves, such as repeat behavior and modifications for people with movement impairments. Indicators The mapping of behavior to indicators. Geometry A complete description of the physical keyboard layout, sufficient to draw a representation of the keyboard. Names A mapping of names to various aspects of the keyboard such as individual virtual modifiers, indicators, and bells. Compatibility Map The definition of how to map core protocol keyboard state to Xkb keyboard state. A client application interrogates and manipulates the keyboard by reading and writing portions of the server description for the keyboard. In a typical sequence a client would fetch the current information it is interested in, modify it, and write it back. If a client wishes to track some portion of the keyboard state, it typically maintains a local copy of the portion of the server keyboard description dealing with the items of interest and updates this local copy from events describing state transitions that are sent by the server. A client may request the server to reconfigure the keyboard either by sending explicit reconfiguration instructions to it, or by telling it to load a new configuration from its database of named components. Partial reconfiguration and incremental reconfiguration are both supported. Groups and Shift Levels The graphic characters or control functions that may be accessed by one key are logically arranged in groups and levels. See section 14.1 for a complete description of groups and levels. Radio Groups radio group groupradio A radio group is a set of keys whose behavior simulates a set of radio buttons. Once a key in a radio group is pressed, it stays logically depressed until another key in the group is pressed, at which point the previously depressed key is logically released. Consequently, at most one key in a radio group can be logically depressed at one time. A radio group is defined by a radio group index, an optional name, and by assigning each key in the radio group XkbKB_RadioGroup behavior and the radio group index.
Client Types This specification differentiates between three different classes of client applications: Xkb-aware applications These applications make specific use of Xkb functionality and APIs not present in the core protocol. Xkb-capable applications These applications make no use of Xkb extended functionality and Application Programming Interfaces (APIs) directly. However, they are linked with a version of Xlib that includes Xkb and indirectly benefit from some of Xkb’s features. Xkb-unaware applications These applications make no use of Xkb extended functionality or APIs and require Xkb’s functionality to be mapped to core Xlib functionality to operate properly. Compatibility With the Core Protocol Because the Xkb extension allows a keyboard to be configured in ways not foreseen by the core protocol, and because Xkb-unaware clients are allowed to connect to a server using the Xkb extension, there must be a means of converting between the Xkb domain and the core protocol. The Xkb server extension maintains a compatibility map as part of its keyboard description; this map controls the conversion of Xkb generated events to core protocol events and the results of core protocol requests to appropriate Xkb state and configuration. Additional Protocol Errors The Xkb extension adds a single protocol error, BadKeyboard, to the core protocol error set. See section 2.6 for a discussion of the BadKeyboard protocol error. Extension Library Functions The X Keyboard Extension replaces the core protocol definition of a keyboard with a more comprehensive one. The X Keyboard Extension library interfaces are included in Xlib. X11R6.1 is the first release by the X Consortium, Inc., that includes the X Keyboard Extension in Xlib. X11R6 included work in progress on this extension as nonstandard additions to the library. Xlib detects the presence of the X Keyboard server extension and uses Xkb protocol to replace some standard X library functions related to the keyboard. If an application uses only standard X library functions to examine the keyboard or process key events, it should not need to be modified when linked with an X library containing the X keyboard extension. All of the keyboard-related X library functions have been modified to automatically use Xkb protocol when the server extension is present. The Xkb extension adds library interfaces to allow a client application to directly manipulate the new capabilities. Error Indications errors Xkb functions that communicate with the X server check to be sure the Xkb extension has been properly initialized prior to doing any other operations. If the extension has not been properly initialized or the application, library, and server versions are incompatible, these functions return an error indication as shown in Table 1.1. Because of this test, BadAccess and BadMatch (due to incompatible versions) protocol errors should normally not be generated. Function Error Returns Due to Extension Problems Functions return type Return value pointer to a structure NULL Bool False Status BadAccess
Many Xkb functions do not actually communicate with the X server; they only require processing in the client-side portion of the library. Furthermore, some applications may never actually need to communicate with the server; they simply use the Xkb library capabilities. The functions that do not communicate with the server return either a pointer to a structure, a Bool, or a Status. These functions check that the application has queried the Xkb library version and return the values shown in Table 1.1 if it has not.
libX11-1.8.12/specs/XKB/ch06.xml0000644014310600000120000002660314763154126011357 Complete Keyboard Description The complete Xkb description for a keyboard device is accessed using a single structure containing pointers to major Xkb components. This chapter describes this single structure and provides references to other sections of this document that discuss the major Xkb components in detail. The XkbDescRec Structure XkbDescRec The complete description of an Xkb keyboard is given by an XkbDescRec. The component structures in the XkbDescRec represent the major Xkb components outlined in Figure 1.1. typedef struct { struct _XDisplay * display; /* connection to X server */ unsigned short flags; /* private to Xkb, do not modify */ unsigned short device_spec; /* device of interest */ KeyCode min_key_code; /* minimum keycode for device */ KeyCode max_key_code; /* maximum keycode for device */ XkbControlsPtr ctrls; /* controls */ XkbServerMapPtr server; /* server keymap */ XkbClientMapPtr map; /* client keymap */ XkbIndicatorPtr indicators; /* indicator map */ XkbNamesPtr names; /* names for all components */ XkbCompatMapPtr compat; /* compatibility map */ XkbGeometryPtr geom; /* physical geometry of keyboard */ } XkbDescRec, *XkbDescPtr; The display field points to an X display structure. The flags field is private to the library: modifying flags may yield unpredictable results. The device_spec field specifies the device identifier of the keyboard input device, or XkbUseCoreKbd, which specifies the core keyboard device. The min_key_code and max_key_code fields specify the least and greatest keycode that can be returned by the keyboard. The other fields specify structure components of the keyboard description and are described in detail in other sections of this document. Table 6.1 identifies the subsequent sections of this document that discuss the individual components of the XkbDescRec. XkbDescRec Component References XkbDescRec Field For more info ctrls server map indicators names compat geom
Each structure component has a corresponding mask bit that is used in function calls to indicate that the structure should be manipulated in some manner, such as allocating it or freeing it. These masks and their relationships to the fields in the XkbDescRec are shown in Table 6.2. Mask Bits for XkbDescRec Mask Bit XkbDescRec Field Value XkbControlsMask ctrls (1L<<0) XkbServerMapMask server (1L<<1) XkbIClientMapMask map (1L<<2) XkbIndicatorMapMask indicators (1L<<3) XkbNamesMask names (1L<<4) XkbCompatMapMask compat (1L<<5) XkbGeometryMask geom (1L<<6) XkbAllComponentsMask All Fields (0x7f)
Obtaining a Keyboard Description from the Server To retrieve one or more components of a keyboard device description, use XkbGetKeyboard (see also XkbGetKeyboardByName). XkbGetKeyboard XkbDescPtr XkbGetKeyboard Display *display unsigned int which unsigned int device_spec display connection to X server which mask indicating components to return device_spec device for which to fetch description, or XkbUseCoreKbd XkbGetKeyboard allocates and returns a pointer to a keyboard description. It queries the server for those components specified in the which parameter for device device_spec and copies the results to the XkbDescRec it allocated. The remaining fields in the keyboard description are set to NULL. The valid masks for which are those listed in Table 6.2. XkbGetKeyboard can generate BadAlloc protocol errors. To free the returned keyboard description, use XkbFreeKeyboard (see section 6.4). Tracking Changes to the Keyboard Description in the Server The server can generate events whenever its copy of the keyboard description for a device changes. Refer to section 14.4 for detailed information on tracking changes to the keyboard description. Allocating and Freeing a Keyboard Description Applications seldom need to directly allocate a keyboard description; calling XkbGetKeyboard usually suffices. In the event you need to create a keyboard description from scratch, however, use XkbAllocKeyboard rather than directly calling malloc or Xmalloc. XkbAllocKeyboard XkbDescRec *XkbAllocKeyboard If XkbAllocKeyboard fails to allocate the keyboard description, it returns NULL. Otherwise, it returns a pointer to an empty keyboard description structure. The device_spec field will have been initialized to XkbUseCoreKbd. You may then either fill in the structure components or use Xkb functions to obtain values for the structure components from a keyboard device. To destroy either an entire an XkbDescRec or just some of its members, use XkbFreeKeyboard. XkbFreeKeyboard void XkbFreeKeyboard XkbDescPtr xkb unsigned int which Bool free_all xkb keyboard description with components to free which mask selecting components to free free_all True ⇒ free all components and xkb XkbFreeKeyboard frees the components of xkb specified by which and sets the corresponding values to NULL. If free_all is True, XkbFreeKeyboard frees every non- NULL component of xkb and then frees the xkb structure itself.
libX11-1.8.12/specs/XKB/ch05.xml0000644014310600000120000010501514763154126011351 Keyboard State Keyboard state encompasses all of the transitory information necessary to map a physical key press or release to an appropriate event. The Xkb keyboard state consists of primitive components and additional derived components that are maintained for efficiency reasons. Figure 5.1 shows the components of Xkb keyboard state and their relationships.
Xkb State
Keyboard State Description The Xkb keyboard state is comprised of the state of all keyboard modifiers, the keyboard group, and the state of the pointer buttons. These are grouped into the following components: The locked group and locked modifiers The latched group and latched modifiers The base group and base modifiers The effective group and effective modifiers The state of the core pointer buttons The modifiers modifiers are Shift, Lock, Control, and Mod1Mod5, as defined by the core protocol. A modifier can be thought of as a toggle that is either set or unset. All modifiers are initially unset. When a modifier is locked, it is set and remains set for all future key events, until it is explicitly unset. A latched modifier is set, but automatically unsets after the next key event that does not change the keyboard state. Locked and latched modifier state can be changed by keyboard activity or via Xkb extension library functions. The Xkb extension provides support for keysym groups, keysym groups groupkeysym groupISO9995 as defined by ISO9995: Group A logical state of a keyboard providing access to a collection of characters. A group usually contains a set of characters that logically belong together and that may be arranged on several shift levels within that group. The Xkb extension supports up to four keysym groups. Groups are named beginning with one and indexed beginning with zero. All group states are indicated using the group index. At any point in time, there is zero or one locked group, zero or one latched group, and one base group. When a group is locked, it supersedes any previous locked group and remains the locked group for all future key events, until a new group is locked. A latched group applies only to the next key event that does not change the keyboard state. The locked and latched group can be changed by keyboard activity or via Xkb extension library functions. Changing to a different group changes the keyboard state to produce characters from a different group. Groups are typically used to switch between keysyms of different languages and locales. The pointer buttons are Button1Button5, as defined by the core protocol. The base group base group groupbase and base modifiers base modifiers modifiersbase represent keys that are physically or logically down. These and the pointer buttons can be changed by keyboard activity and not by Xkb requests. It is possible for a key to be logically down, but not physically down, and neither latched nor locked. Keys may be logically down when they are physically up because of their electrical properties or because of the keyboard extension in the X server having filtered the key release, for esoteric reasons. The effective modifiers effective modifiers modifierseffective are the bitwise union of the locked, latched, and the base modifiers. The effective group effective group groupeffective is the arithmetic sum of the group indices of the latched group, locked group, and base group, which is then normalized by some function. The result is a meaningful group index. n = number of keyboard groups, 1<= n <= 4 0 <= any of locked, latched, or base group < n effective group = f(locked group + latched group + base group) The function f ensures that the effective group is within range. The precise function is specified for the keyboard and can be retrieved through the keyboard description. It may wrap around, clamp down, or default. Few applications will actually examine the effective group, and far fewer still will examine the locked, latched, and base groups. There are two circumstances under which groups are normalized: The global locked or effective group changes. In this case, the changed group is normalized into range according to the settings of the groups_wrap field of the XkbControlsRec structure for the keyboard (see section 10.7.1). The Xkb library is interpreting an event with an effective group that is legal for the keyboard as a whole, but not for the key in question. In this case, the group to use for this event only is determined using the group_info field of the key symbol mapping (XkbSymMapRec) for the event key. Each nonmodifier key on a keyboard has zero or more symbols, or keysyms, associated with it. These are the logical symbols that the key can generate when it is pressed. The set of all possible keysyms for a keyboard is divided into groups. Each key is associated with zero or more groups; each group contains one or more symbols. When a key is pressed, the determination of which symbol for the key is selected is based on the effective group and the shift level, which is determined by which modifiers are set. A client that does not explicitly call Xkb functions, but that otherwise makes use of an X library containing the Xkb extension, will have keyboard state represented in bits 0 – 14 of the state field of events that report modifier and button state. Such a client is said to be Xkb-capable. Xkb-capable client A client that does explicitly call Xkb functions is an Xkb-aware Xkb-aware client client. The Xkb keyboard state includes information derived from the effective state and from two server parameters that can be set through the keyboard extension. The following components of keyboard state pertain to Xkb-capable and Xkb-aware clients: lookup state: lookup group and lookup modifiers grab state: grab group and grab modifiers The lookup modifiers lookup modifiers modifierslookup and lookup group lookup group grouplookup are represented in the state field of core X events. The modifier state and keycode of a key event are used to determine the symbols associated with the event. For KeyPress and KeyRelease events, the lookup modifiers are computed as: ((base | latched | locked) & ~server_internal_modifiers) Otherwise the lookup modifiers are computed as: (((base | latched | (locked & ~ignore_locks)) & ~server_internal_modifiers) The lookup group is the same as the effective group. When an Xkb-capable or Xkb-aware client wishes to map a keycode to a keysym, it should use the lookup state lookup state statelookup — the lookup group and the lookup modifiers. The grab state grab state stategrab is the state used when matching events to passive grabs. If the event activates a grab, the grab modifiers grab modifiers modifiersgrab and grab group grab group groupgrab are represented in the state field of core X events; otherwise, the lookup state is used. The grab modifiers are computed as: (((base | latched | (locked & ~ignore_locks)) & ~server_internal_modifiers) If the server’s IgnoreGroupLock control (see section 10.7.3) is not set, the grab group is the same as the effective group. Otherwise, the grab group is computed from the base group and latched group, ignoring the locked group. The final three components of Xkb state are applicable to clients that are not linked with an Xlib containing the X keyboard extension library and therefore are not aware of the keyboard extension (Xkb-unaware clients): The compatibility modifier state The compatibility lookup modifier state The compatibility grab modifier state The X11 protocol interpretation of modifiers does not include direct support for multiple groups. When an Xkb-extended X server connects to an Xkb-unaware client, the compatibility states remap the keyboard group into a core modifier whenever possible. The compatibility state corresponds to the effective modifier and effective group state, with the group remapped to a modifier. The compatibility lookup and grab states correspond to the lookup and grab states, respectively, with the group remapped to a modifier. The compatibility lookup state is reported in events that do not trigger passive grabs; otherwise, the compatibility grab state is reported. Changing the Keyboard State Changing Modifiers real modifiers modifiersreal maskreal modifiers The functions in this section that change the use of modifiers use a mask in the parameter affect. It is a bitwise inclusive OR of the legal modifier masks: Real Modifier Masks Mask ShiftMask LockMask ControlMask Mod1Mask Mod2Mask Mod3Mask Mod4Mask Mod5Mask
To lock and unlock any of the eight real keyboard modifiers, use XkbLockModifiers: XkbLockModifiers Bool XkbLockModifiers Display *display unsigned int device_spec unsigned int affect unsigned int values display connection to the X server device_spec device ID, or XkbUseCoreKbd affect mask of real modifiers whose lock state is to change values 1 ⇒ lock, 0 ⇒ unlock; only for modifiers selected by affect XkbLockModifiers sends a request to the server to lock the real modifiers selected by both affect and values and to unlock the real modifiers selected by affect but not selected by values. XkbLockModifiers does not wait for a reply from the server. It returns True if the request was sent, and False otherwise. To latch and unlatch any of the eight real keyboard modifiers, use XkbLatchModifiers: XkbLatchModifiers Bool XkbLatchModifiers Display *display unsigned int device_spec unsigned int affect unsigned int values display connection to the X server device_spec device ID, or XkbUseCoreKbd affect mask of modifiers whose latch state is to change values 1 ⇒ latch, 0 ⇒ unlatch; only for mods selected by affect XkbLatchModifiers sends a request to the server to latch the real modifiers selected by both affect and values and to unlatch the real modifiers selected by affect but not selected by values. XkbLatchModifiers does not wait for a reply from the server. It returns True if the request was sent, and False otherwise.
Changing Groups keysym groups groupkeysym Reference the keysym group indices with these symbolic constants: Symbolic Group Names Symbolic Name Value XkbGroup1Index 0 XkbGroup2Index 1 XkbGroup3Index 2 XkbGroup4Index 3
To lock the keysym group, use XkbLockGroup. XkbLockGroup Bool XkbLockGroup Display *display unsigned int device_spec unsigned int group display connection to the X server device_spec device ID, or XkbUseCoreKbd group index of the keysym group to lock XkbLockGroup sends a request to the server to lock the specified group and does not wait for a reply. It returns True if the request was sent and False otherwise. To latch the keysym group, use XkbLatchGroup. XkbLatchGroup Bool XkbLatchGroup Display *display unsigned int device_spec unsigned int group display connection to the X server device_spec device ID, or XkbUseCoreKbd group index of the keysym group to latch XkbLatchGroup sends a request to the server to latch the specified group and does not wait for a reply. It returns True if the request was sent and False otherwise.
Determining Keyboard State XkbStateRec Xkb keyboard state may be represented in an XkbStateRec structure: typedef struct { unsigned char group; /* effective group index */ unsigned char base_group; /* base group index */ unsigned char latched_group; /* latched group index */ unsigned char locked_group; /* locked group index */ unsigned char mods; /* effective modifiers */ unsigned char base_mods; /* base modifiers */ unsigned char latched_mods; /* latched modifiers */ unsigned char locked_mods; /* locked modifiers */ unsigned char compat_state; /* effective group ⇒ modifiers */ unsigned char grab_mods; /* modifiers used for grabs */ unsigned char compat_grab_mods; /* mods used for compatibility mode grabs */ unsigned char lookup_mods; /* mods used to lookup symbols */ unsigned char compat_lookup_mods; /* mods used for compatibility lookup */ unsigned short ptr_buttons; /* 1 bit ⇒ corresponding pointer btn is down */ } XkbStateRec, *XkbStatePtr; To obtain the keyboard state, use XkbGetState. XkbGetState Status XkbGetState Display *display unsigned int device_spec XkbStatePtr state_return display connection to the X server device_spec device ID, or XkbUseCoreKbd state_return backfilled with Xkb state The XkbGetState function queries the server for the current keyboard state, waits for a reply, and then backfills state_return with the results. All group values are expressed as group indices in the range [0..3]. Modifiers and the compatibility modifier state values are expressed as the bitwise union of the core X11 modifier masks. The pointer button state is reported as in the core X11 protocol. Tracking Keyboard State eventsXkbStateNotify XkbStateNotifyEvent The Xkb extension reports XkbStateNotify events to clients wanting notification whenever the Xkb state changes. The changes reported include changes to any aspect of the keyboard state: when a modifier is set or unset, when the current group changes, or when a pointer button is pressed or released. As with all Xkb events, XkbStateNotify events are reported to all interested clients without regard to the current keyboard input focus or grab state. There are many different types of Xkb state changes. Xkb defines an event detail mask corresponding to each type of change. The event detail masks are listed in Table 5.3. XkbStateNotify Event Detail Masks Mask Value XkbModifierStateMask (1L << 0) XkbModifierBaseMask (1L << 1) XkbModifierLatchMask (1L << 2) XkbModifierLockMask (1L << 3) XkbGroupStateMask (1L << 4) XkbGroupBaseMask (1L << 5) XkbGroupLatchMask (1L << 6) XkbGroupLockMask (1L << 7) XkbCompatStateMask (1L << 8) XkbGrabModsMask (1L << 9) XkbCompatGrabModsMask (1L << 10) XkbLookupModsMask (1L << 11) XkbCompatLookupModsMask (1L << 12) XkbPointerButtonMask (1L << 13) XkbAllStateComponentsMask (0x3fff)
To track changes in the keyboard state for a particular device, select to receive XkbStateNotify events by calling either XkbSelectEvents or XkbSelectEventDetails (see section 4.3). To receive XkbStateNotify events under all possible conditions, use XkbSelectEvents and pass XkbStateNotifyMask in both bits_to_change and values_for_bits. To receive XkbStateNotify events only under certain conditions, use XkbSelectEventDetails using XkbStateNotify as the event_type and specifying the desired state changes in bits_to_change and values_for_bits using mask bits from Table 5.3. The structure for XkbStateNotify events is: typedef struct { int type; /* Xkb extension base event code */ unsigned long serial; /* X server serial number for event */ Bool send_event; /* True ⇒ synthetically generated */ Display * display; /* server connection where event generated */ Time time; /* server time when event generated */ int xkb_type; /* XkbStateNotify */ int device; /* Xkb device ID, will not be XkbUseCoreKbd */ unsigned int changed; /* bits indicating what has changed */ int group; /* group index of effective group */ int base_group; /* group index of base group */ int latched_group; /* group index of latched group */ int locked_group; /* group index of locked group */ unsigned int mods; /* effective modifiers */ unsigned int base_mods; /* base modifiers */ unsigned int latched_mods; /* latched modifiers */ unsigned int locked_mods; /* locked modifiers */ int compat_state; /* computed compatibility state */ unsigned char grab_mods; /* modifiers used for grabs */ unsigned char compat_grab_mods; /* modifiers used for compatibility grabs */ unsigned char lookup_mods; /* modifiers used to lookup symbols */ unsigned char compat_lookup_mods; /* mods used for compatibility look up */ int ptr_buttons; /* core pointer buttons */ KeyCode keycode; /* keycode causing event, 0 if programmatic */ char event_type; /* core event if req_major or req_minor non zero */ char req_major; /* major request code if program trigger, else 0 */ char req_minor; /* minor request code if program trigger, else 0 */ } XkbStateNotifyEvent; When you receive an XkbStateNotify event, the changed field indicates which elements of keyboard state have changed. This will be the bitwise inclusive OR of one or more of the XkbStateNotify event detail masks shown in Table 5.3. All fields reported in the event are valid, but only those indicated in changed have changed values. The group field is the group index of the effective keysym group. The base_group, latched_group, and locked_group fields are set to a group index value representing the base group, the latched group, and the locked group, respectively. The X server can set the modifier and compatibility state fields to a union of the core modifier mask bits; this union represents the corresponding modifier states. The ptr_buttons field gives the state of the core pointer buttons as a mask composed of an inclusive OR of zero or more of the core pointer button masks. Xkb state changes can occur either in response to keyboard activity or under application control. If a key event caused the state change, the keycode field gives the keycode of the key event, and the event_type field is set to either KeyPress or KeyRelease. If a pointer button event caused the state change, the keycode field is zero, and the event_type field is set to either ButtonPress or ButtonRelease. Otherwise, the major and minor codes of the request that caused the state change are given in the req_major and req_minor fields, and the keycode field is zero. The req_major value is the same as the major extension opcode.
libX11-1.8.12/specs/XKB/ch02.xml0000644014310600000120000006204714763154126011355 Initialization and General Programming Information Extension Header Files The following include files are part of the Xkb standard: <X11/XKBlib.h> XKBlib.h is the main header file for Xkb; it declares constants, types, and functions. <X11/extensions/XKBstr.h> XKBstr.h declares types and constants for Xkb. It is included automatically from <X11/XKBlib.h>; you should never need to reference it directly in your application code. <X11/extensions/XKB.h> XKB.h defines constants for Xkb. It is included automatically from <X11/XKBstr.h>; you should never need to reference it directly in your application code. <X11/extensions/XKBgeom.h> XKBgeom.h declares types, symbolic constants, and functions for manipulating keyboard geometry descriptions. Extension Name XkbName The name of the Xkb extension is given in <X11/extensions/Xkb.h>: #define XkbName "XKEYBOARD" Most extensions to the X protocol are initialized by calling XInitExtension and passing the extension name. However, as explained in section 2.4, Xkb requires a more complex initialization sequence, and a client program should not call XInitExtension directly. Determining Library Compatibility If an application is dynamically linked, both the X server and the client-side X library must contain the Xkb extension in order for the client to use the Xkb extension capabilities. Therefore a dynamically linked application must check both the library and the server for compatibility before using Xkb function calls. A properly written program must check for compatibility between the version of the Xkb library that is dynamically loaded and the one used when the application was built. It must then check the server version for compatibility with the version of Xkb in the library. If your application is statically linked, you must still check for server compatibility and may check library compatibility. (It is possible to compile against one set of header files and link against a different, incompatible, version of the library, although this should not normally occur.) To determine the compatibility of a library at runtime, call XkbLibraryVersion. XkbLibraryVersion Bool XkbLibraryVersion int *lib_major_in_out int *lib_minor_in_out lib_major_in_out specifies and returns the major Xkb library version. lib_minor_in_out specifies and returns the minor Xkb library version. Pass the symbolic value XkbMajorVersion in lib_major_in_out and XkbMinorVersion in lib_minor_in_out. These arguments represent the version of the library used at compile time. The XkbLibraryVersion function backfills the major and minor version numbers of the library used at run time in lib_major_in_out and lib_minor_in_out. If the versions of the compile time and run time libraries are compatible, XkbLibraryVersion returns True, otherwise, it returns False. In addition, in order to use the Xkb extension, you must ensure that the extension is present in the server and that the server supports the version of the extension expected by the client. Use XkbQueryExtension to do this, as described in the next section. Initializing the Keyboard Extension Call XkbQueryExtension to check for the presence and compatibility of the extension in the server and to initialize the extension. Because of potential version mismatches, you cannot use the generic extension mechanism functions (XQueryExtension and XInitExtension) for checking for the presence of, and initializing the Xkb extension. You must call XkbQueryExtension or XkbOpenDisplay before using any other Xkb library interfaces, unless such usage is explicitly allowed in the interface description in this document. The exceptions are: XkbIgnoreExtension, XkbLibraryVersion, and a handful of audible-bell functions. You should not use any other Xkb functions if the extension is not present or is uninitialized. In general, calls to Xkb library functions made prior to initializing the Xkb extension cause BadAccess protocol errors. errors BadAccess BadAccess XkbQueryExtension both determines whether a compatible Xkb extension is present in the X server and initializes the extension when it is present. XkbQueryExtension Bool XkbQueryExtension Display *dpy int *opcode_rtrn int *event_rtrn int *error_rtrn int *major_in_out int *minor_in_out dpy connection to the X server opcode_rtrn backfilled with the major extension opcode event_rtrn backfilled with the extension base event code error_rtrn backfilled with the extension base error code major_in_out compile time lib major version in, server major version out minor_in_out compile time lib min version in, server minor version out The XkbQueryExtension function determines whether a compatible version of the X Keyboard Extension is present in the server. If a compatible extension is present, XkbQueryExtension returns True; otherwise, it returns False. If a compatible version of Xkb is present, XkbQueryExtension initializes the extension. It backfills the major opcode for the keyboard extension in opcode_rtrn, the base event code in event_rtrn, the base error code in error_rtrn, and the major and minor version numbers of the extension in major_in_out and minor_in_out. The major opcode is reported in the req_major fields of some Xkb events. For a discussion of the base event code, see section 4.1. As a convenience, you can use the function XkbOpenDisplay to perform these three tasks at once: open a connection to an X server, check for a compatible version of the Xkb extension in both the library and the server, and initialize the extension for use. XkbOpenDisplay Display *XkbOpenDisplay char *display_name int *event_rtrn int *error_rtrn int *major_in_out int *minor_in_out int *reason_rtrn display_name hardware display name, which determines the display and communications domain to be used event_rtrn backfilled with the extension base event code error_rtrn backfilled with the extension base error code major_in_out compile time lib major version in, server major version out minor_in_out compile time lib minor version in, server minor version out reason_rtrn backfilled with a status code XkbOpenDisplay is a convenience function that opens an X display connection and initializes the X keyboard extension. In all cases, upon return reason_rtrn contains a status value indicating success or the type of failure. If major_in_out and minor_in_out are not NULL, XkbOpenDisplay first calls XkbLibraryVersion to determine whether the client library is compatible, passing it the values pointed to by major_in_out and minor_in_out. If the library is incompatible, XkbOpenDisplay backfills major_in_out and minor_in_out with the major and minor extension versions of the library being used and returns NULL. If the library is compatible, XkbOpenDisplay next calls XOpenDisplay with the display_name. If this fails, the function returns NULL. If successful, XkbOpenDisplay calls XkbQueryExtension and backfills the major and minor Xkb server extension version numbers in major_in_out and minor_in_out. If the server extension version is not compatible with the library extension version or if the server extension is not present, XkbOpenDisplay closes the display and returns NULL. When successful, the function returns the display connection. The possible values for reason_rtrn are: XkbOD_BadLibraryVersion indicates XkbLibraryVersion returned False. XkbOD_ConnectionRefused indicates the display could not be opened. XkbOD_BadServerVersion indicates the library and the server have incompatible extension versions. XkbOD_NonXkbServer indicates the extension is not present in the X server. XkbOD_Success indicates that the function succeeded. Disabling the Keyboard Extension If a server supports the Xkb extension, the X library normally implements preXkb keyboard functions using the Xkb keyboard description and state. The server Xkb keyboard state may differ from the preXkb keyboard state. This difference does not affect most clients, but there are exceptions. To allow these clients to work properly, you may instruct the extension not to use Xkb functionality. Call XkbIgnoreExtension to prevent core X library keyboard functions from using the X Keyboard Extension. You must call XkbIgnoreExtension before you open a server connection; Xkb does not provide a way to enable or disable use of the extension once a connection is established. XkbIgnoreExtension Bool XkbIgnoreExtension Bool ignore ignore True means ignore the extension XkbIgnoreExtension tells the X library whether to use the X Keyboard Extension on any subsequently opened X display connections. If ignore is True, the library does not initialize the Xkb extension when it opens a new display. This forces the X server to use compatibility mode and communicate with the client using only core protocol requests and events. If ignore is False, the library treats subsequent calls to XOpenDisplay normally and uses Xkb extension requests, events, and state. Do not explicitly use Xkb on a connection for which it is disabled. XkbIgnoreExtension returns False if it was unable to apply the ignore request. Protocol Errors errors Many of the Xkb extension library functions described in this document can cause the X server to report an error, referred to in this document as a BadXxx protocol error, where Xxx is some name. These errors are fielded in the normal manner, by the default Xlib error handler or one replacing it. Note that X protocol errors are not necessarily reported immediately because of the buffering of X protocol requests in Xlib and the server. Table 2.1 lists the protocol errors that can be generated, and their causes. Xkb Protocol Errors Error Cause BadAccess The Xkb extension has not been properly initialized BadKeyboard The device specified was not a valid core or input extension device BadImplementation Invalid reply from server BadAlloc Unable to allocate storage BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid BadValue An argument is out of range BadAtom A name is neither a valid Atom or None BadDevice Device, Feedback Class, or Feedback ID invalid
errors BadKeyboard BadKeyboard The Xkb extension adds a single protocol error, BadKeyboard, to the core protocol error set. This error code will be reported as the error_rtrn when XkbQueryExtension is called. When a BadKeyboard error is reported in an XErrorEvent, additional information is reported in the resourceid field. The most significant byte of the resource_id is a further refinement of the error cause, as defined in Table 2.2. The least significant byte will contain the device, class, or feedback ID as indicated in the table. <errorname>BadKeyboard</errorname> Protocol Error resource_id Values high-order byte value meaning low-order byte XkbErr_BadDevice 0xff device not found device ID XkbErr_BadClass 0xfe device found, but it is of the wrong class class ID XkbErr_BadId 0xfd device found, class ok, but device does not contain a feedback with the indicated ID feedback ID
Display and Device Specifications in Function Calls Where a connection to the server is passed as an argument (Display*) and an XkbDescPtr is also passed as an argument, the Display* argument must match the dpy field of the XkbDescRec pointed to by the XkbDescPtr argument, or else the dpy field of the XkbDescRec must be NULL. If they don’t match or the dpy field is not NULL, a BadMatch error is returned (either in the return value or a backfilled Status variable). Upon successful return, the dpy field of the XkbDescRec always contains the Display* value passed in. The Xkb extension can communicate with the X input extension if it is present. Consequently, there can potentially be more than one input device connected to the server. Most Xkb library calls that require communicating with the server involve both a server connection (Display * dpy) and a device identifier (unsigned int device_spec). In some cases, the device identifier is implicit and is taken as the device_spec field of an XkbDescRec structure passed as an argument. XkbUseCoreKbd The device identifier can specify any X input extension device with a KeyClass component, or it can specify the constant, XkbUseCoreKbd. The use of XkbUseCoreKbd allows applications to indicate the core keyboard without having to determine its device identifier. Where an Xkb device identifier is passed as an argument and an XkbDescPtr is also passed as an argument, if either the argument or the XkbDescRec device_spec field is XkbUseCoreKbd, and if the function returns successfully, the XkbDescPtr device_spec field will have been converted from XkbUseCoreKbd to a real Xkb device ID. If the function does not complete successfully, the device_spec field remains unchanged. Subsequently, the device id argument must match the device_spec field of the XkbDescPtr argument. If they don’t match, a BadMatch error is returned (either in the return value or a backfilled Status variable). When the Xkb extension in the server hands an application a device identifier to use for the keyboard, that ID is the input extension identifier for the device if the server supports the X Input Extension. If the server does not support the input extension, the meaning of the identifier is undefined — the only guarantee is that when you use XkbUseCoreKbd, XkbUseCoreKbd will work and the identifier returned by the server will refer to the core keyboard device.
libX11-1.8.12/specs/XKB/Makefile.in0000644014310600000120000006544214763154147012151 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = specs/XKB ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = xkblib.xml acknowledgement.xml ch01.xml \ ch02.xml ch03.xml ch04.xml ch05.xml ch06.xml ch07.xml ch08.xml \ ch09.xml ch10.xml ch11.xml ch12.xml ch13.xml ch14.xml ch15.xml \ ch16.xml ch17.xml ch18.xml ch19.xml ch20.xml ch21.xml ch22.xml \ glossary.xml XKBlib-1.svg XKBlib-2.svg XKBlib-3.svg \ XKBlib-4.svg XKBlib-5.svg XKBlib-6.svg XKBlib-7.svg \ XKBlib-8.svg XKBlib-9.svg XKBlib-10.svg XKBlib-11.svg \ XKBlib-12.svg XKBlib-13.svg XKBlib-14.svg XKBlib-15.svg \ XKBlib-16.svg XKBlib-17.svg XKBlib-18.svg XKBlib-19.svg \ XKBlib-20.svg XKBlib-21.svg am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_SPECS_TRUE@docbook = xkblib.xml # Included chapters, appendix, images @ENABLE_SPECS_TRUE@chapters = \ @ENABLE_SPECS_TRUE@ acknowledgement.xml \ @ENABLE_SPECS_TRUE@ ch01.xml \ @ENABLE_SPECS_TRUE@ ch02.xml \ @ENABLE_SPECS_TRUE@ ch03.xml \ @ENABLE_SPECS_TRUE@ ch04.xml \ @ENABLE_SPECS_TRUE@ ch05.xml \ @ENABLE_SPECS_TRUE@ ch06.xml \ @ENABLE_SPECS_TRUE@ ch07.xml \ @ENABLE_SPECS_TRUE@ ch08.xml \ @ENABLE_SPECS_TRUE@ ch09.xml \ @ENABLE_SPECS_TRUE@ ch10.xml \ @ENABLE_SPECS_TRUE@ ch11.xml \ @ENABLE_SPECS_TRUE@ ch12.xml \ @ENABLE_SPECS_TRUE@ ch13.xml \ @ENABLE_SPECS_TRUE@ ch14.xml \ @ENABLE_SPECS_TRUE@ ch15.xml \ @ENABLE_SPECS_TRUE@ ch16.xml \ @ENABLE_SPECS_TRUE@ ch17.xml \ @ENABLE_SPECS_TRUE@ ch18.xml \ @ENABLE_SPECS_TRUE@ ch19.xml \ @ENABLE_SPECS_TRUE@ ch20.xml \ @ENABLE_SPECS_TRUE@ ch21.xml \ @ENABLE_SPECS_TRUE@ ch22.xml \ @ENABLE_SPECS_TRUE@ glossary.xml \ @ENABLE_SPECS_TRUE@ XKBlib-1.svg \ @ENABLE_SPECS_TRUE@ XKBlib-2.svg \ @ENABLE_SPECS_TRUE@ XKBlib-3.svg \ @ENABLE_SPECS_TRUE@ XKBlib-4.svg \ @ENABLE_SPECS_TRUE@ XKBlib-5.svg \ @ENABLE_SPECS_TRUE@ XKBlib-6.svg \ @ENABLE_SPECS_TRUE@ XKBlib-7.svg \ @ENABLE_SPECS_TRUE@ XKBlib-8.svg \ @ENABLE_SPECS_TRUE@ XKBlib-9.svg \ @ENABLE_SPECS_TRUE@ XKBlib-10.svg \ @ENABLE_SPECS_TRUE@ XKBlib-11.svg \ @ENABLE_SPECS_TRUE@ XKBlib-12.svg \ @ENABLE_SPECS_TRUE@ XKBlib-13.svg \ @ENABLE_SPECS_TRUE@ XKBlib-14.svg \ @ENABLE_SPECS_TRUE@ XKBlib-15.svg \ @ENABLE_SPECS_TRUE@ XKBlib-16.svg \ @ENABLE_SPECS_TRUE@ XKBlib-17.svg \ @ENABLE_SPECS_TRUE@ XKBlib-18.svg \ @ENABLE_SPECS_TRUE@ XKBlib-19.svg \ @ENABLE_SPECS_TRUE@ XKBlib-20.svg \ @ENABLE_SPECS_TRUE@ XKBlib-21.svg # The location where the DocBook/XML files and their generated formats are installed @ENABLE_SPECS_TRUE@shelfdir = $(docdir)/XKB # DocBook/XML generated output formats to be installed @ENABLE_SPECS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_SPECS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_SPECS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/XKB/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/XKB/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_shelfDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-shelfDATA install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-dist_shelfDATA uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/specs/XKB/XKBlib-8.svg0000644014310600000120000012060014763154126012066 image/svg+xml Editing Function Alpha Keypad libX11-1.8.12/specs/XKB/XKBlib-21.svg0000644014310600000120000012170214763154126012145 image/svg+xml Augment names tosupply componentnames required bywant and need but notsupplied in request Augment names tosupply required com-ponent names not sup-plied in request KeyboardComponentDatabase False True True False Build keyboarddescription fromexpressions innames New KeyboardDescription(Temporary) load load Keyboard Descriptionfor device_spec KeyboardDescriptionreturned toClient Build keyboarddescription for clientby extracting struc-tures specified in wantand need Replace device_specactive keyboarddescription with newlybuilt description Initial Request: device_spec names want need load libX11-1.8.12/specs/XKB/ch21.xml0000644014310600000120000016756114763154126011365 Attaching Xkb Actions to X Input Extension Devices The X input extension allows an X server to support multiple keyboards, as well as other input devices, in addition to the core X keyboard and pointer. The input extension categorizes devices by grouping them into classes. Keyboards and other input devices with keys are classified as KeyClass devices by the input extension. Other types of devices supported by the input extension include, but are not limited to: mice, tablets, touchscreens, barcode readers, button boxes, trackballs, identifier devices, data gloves, and eye trackers. Xkb provides additional control over all X input extension devices, whether they are KeyClass devices or not, as well as the core keyboard and pointer. If an X server implements support for both the input extension and Xkb, the server implementor determines whether interaction between Xkb and the input extension is allowed. Implementors are free to restrict the effects of Xkb to only the core X keyboard device or allow interaction between Xkb and the input extension. Several types of interaction between Xkb and the input extension are defined by Xkb. Some or all may be allowed by the X server implementation. Regardless of whether the server allows interaction between Xkb and the input extension, the following access is provided: Xkb functionality for the core X keyboard device and its mapping is accessed via the functions described in the other chapters of this specification. Xkb functionality for the core X pointer device is accessed via the XkbGetDeviceInfo and XkbSetDeviceInfo functions described in this chapter. If all types of interaction are allowed between Xkb and the input extension, the following additional access is provided: If allowed, Xkb functionality for additional KeyClass devices supported by the input extension is accessed via those same functions. If allowed, Xkb functionality for non- KeyClass devices supported by the input extension is also accessed via the XkbGetDeviceInfo and XkbSetDeviceInfo functions described in this chapter. Each device has an X Input Extension device ID. Each device may have several classes of feedback. For example, there are two types of feedbacks that can generate bells: bell feedback and keyboard feedback (BellFeedbackClass and KbdFeedbackClass). A device can have more than one feedback of each type; the feedback ID identifies the particular feedback within its class. A keyboard feedback has: Auto-repeat status (global and per key) 32 LEDs A bell An indicator feedback has: Up to 32 LEDs If the input extension is present and the server allows interaction between the input extension and Xkb, then the core keyboard, the core keyboard indicators, and the core keyboard bells may each be addressed using an appropriate device spec, class, and ID. The constant XkbDfltXIId may be used as the device ID to specify the core keyboard indicators for the core indicator feedback. The particular device ID corresponding to the core keyboard feedback and the core indicator feedback may be obtained by calling XkbGetDeviceInfo and specifying XkbUseCoreKbd as the device_spec; the values will be returned in dflt_kbd_fb and dflt_led_fb. If the server does not allow Xkb access to input extension KeyClass devices, attempts to use Xkb requests with those devices fail with a BadKeyboard error. Attempts to access non- KeyClass input extension devices via XkbGetDeviceInfo and XkbSetDeviceInfo fail silently if Xkb access to those devices is not supported by the X server. XkbDeviceInfoRec XkbDeviceInfoRec XkbDeviceLedInfoRec Information about X Input Extension devices is transferred between a client program and the Xkb extension in an XkbDeviceInfoRec structure: typedef struct { char * name; /* name for device */ Atom type; /* name for class of devices */ unsigned short device_spec; /* device of interest */ Bool has_own_state; /* True ⇒ this device has its own state */ unsigned short supported; /* bits indicating supported capabilities */ unsigned short unsupported; /* bits indicating unsupported capabilities */ unsigned short num_btns; /* number of entries in btn_acts */ XkbAction * btn_acts; /* button actions */ unsigned short sz_leds; /* total number of entries in LEDs vector */ unsigned short num_leds; /* number of valid entries in LEDs vector */ unsigned short dflt_kbd_fb; /* input extension ID of default (core kbd) indicator */ unsigned short dflt_led_fb; /* input extension ID of default indicator feedback */ XkbDeviceLedInfoPtr leds; /* LED descriptions */ } XkbDeviceInfoRec, *XkbDeviceInfoPtr; typedef struct { unsigned short led_class; /* class for this LED device */ unsigned short led_id; /* ID for this LED device */ unsigned int phys_indicators; /* bits for which LEDs physically present */ unsigned int maps_present; /* bits for which LEDs have maps in maps */ unsigned int names_present; /* bits for which LEDs are in names */ unsigned int state; /* 1 bit ⇒ corresponding LED is on */ Atom names[XkbNumIndicators]; /* names for LEDs */ XkbIndicatorMapRec maps; /* indicator maps for each LED */ } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr; The type field is a registered symbolic name for a class of devices (for example, "TABLET"). If a device is a keyboard (that is, is a member of KeyClass), it has its own state, and has_own_state is True. If has_own_state is False, the state of the core keyboard is used. The supported and unsupported fields are masks where each bit indicates a capability. The meaning of the mask bits is listed in Table 21.1, together with the fields in the XkbDeviceInfoRec structure that are associated with the capability represented by each bit. The same bits are used to indicate the specific information desired in many of the functions described subsequently in this section. XkbDeviceInfoRec Mask Bits Name XkbDeviceInfoRec Fields Effected Value Capability If Set XkbXI_KeyboardsMask (1L << 0) Clients can use all Xkb requests and events with KeyClass devices supported by the input device extension. XkbXI_ButtonActionsMask num_btns btn_acts (1L <<1) Clients can assign key actions to buttons on non- KeyClass input extension devices. XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign names to indicators on non- KeyClass input extension devices. XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign indicator maps to indicators on non- KeyClass input extension devices. XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request the status of indicators on non- KeyClass input extension devices. XkbXI_IndicatorsMask sz_leds num_leds leds->* (0x1c) XkbXI_IndicatorNames­Mask | XkbXI_IndicatorMaps­Mask | XkbXI_IndicatorState­Mask XkbXI_UnsupportedFeaturesMask unsupported (1L <<15) XkbXI_AllDeviceFeaturesMask Those selected by Value column masks (0x1e) XkbXI_Indicators­Mask | XkbXI_ButtonActions­Mask XkbXI_AllFeaturesMask Those selected by Value column masks (0x1f) XkbXI_AllDevice­FeaturesMask | XkbXI_Keyboards­Mask XkbXI_AllDetailsMask Those selected by Value column masks (0x801f) XkbXI_AllFeatures­Mask | XkbXI_Unsupported­FeaturesMask
The name, type, has_own_state, supported, and unsupported fields are always filled in when a valid reply is returned from the server involving an XkbDeviceInfoRec. All of the other fields are modified only if the particular function asks for them.
Querying Xkb Features for Non-KeyClass Input Extension Devices To determine whether the X server allows Xkb access to particular capabilities of input devices other than the core X keyboard, or to determine the status of indicator maps, indicator names or button actions on a non- KeyClass extension device, use XkbGetDeviceInfo. XkbGetDeviceInfo XkbDeviceInfoPtr XkbGetDeviceInfo Display *dpy unsigned int which unsigned int device_spec unsigned int ind_class unsigned int ind_id dpy connection to X server which mask indicating information to return device_spec device ID, or XkbUseCoreKbd ind_class feedback class for indicator requests ind_id feedback ID for indicator requests XkbGetDeviceInfo returns information about the input device specified by device_spec. Unlike the device_spec parameter of most Xkb functions, device_spec does not need to be a keyboard device. It must, however, indicate either the core keyboard or a valid X Input Extension device. The which parameter is a mask specifying optional information to be returned. It is an inclusive OR of one or more of the values from Table 21.1 and causes the returned XkbDeviceInfoRec to contain values for the corresponding fields specified in the table. The XkbDeviceInfoRec returned by XkbGetDeviceInfo always has values for name (may be a null string, ""), type, supported, unsupported, has_own_state, dflt_kbd_fb, and dflt_led_fb. Other fields are filled in as specified by which. Upon return, the supported field will be set to the inclusive OR of zero or more bits from Table 21.1; each bit set indicates an optional Xkb extension device feature supported by the server implementation, and a client may modify the associated behavior. If the XkbXI_ButtonActionsMask bit is set in which, the XkbDeviceInfoRec returned will have the button actions (btn_acts field) filled in for all buttons. If which includes one of the bits in XkbXI_IndicatorsMask, the feedback class of the indicators must be specified in ind_class, and the feedback ID of the indicators must be specified in ind_id. If the request does not include any of the bits in XkbXI_IndicatorsMask, the ind_class and ind_id parameters are ignored. The class and ID can be obtained via the input device extension XListInputDevices request. If any of the XkbXI_IndicatorsMask bits are set in which, the XkbDeviceInfoRec returned will have filled in the portions of the leds structure corresponding to the indicator feedback identified by ind_class and ind_id. The leds vector of the XkbDeviceInfoRec is allocated if necessary and sz_leds and num_leds filled in. The led_class, led_id and phys_indicators fields of the leds entry corresponding to ind_class and ind_id are always filled in. If which contains XkbXI_IndicatorNamesMask, the names_present and names fields of the leds structure corresponding to ind_class and ind_id are returned. If which contains XkbXI_IndicatorStateMask, the corresponding state field is updated. If which contains XkbXI_IndicatorMapsMask, the maps_present and maps fields are updated. Xkb provides convenience functions to request subsets of the information available via XkbGetDeviceInfo. These convenience functions mirror some of the mask bits. The functions all take an XkbDeviceInfoPtr as an input argument and operate on the X Input Extension device specified by the device_spec field of the structure. Only the parts of the structure indicated in the function description are updated. The XkbDeviceInfoRec structure used in the function call can be obtained by calling XkbGetDeviceInfo or can be allocated by calling XkbAllocDeviceInfo (see section 21.3). These convenience functions are described as follows. To query the button actions associated with an X Input Extension device, use XkbGetDeviceButtonActions. XkbGetDeviceButtonActions Status XkbGetDeviceButtonActions Display *dpy XkbDeviceInfoPtr device_info Bool all_buttons unsigned int first_button unsigned int num_buttons dpy connection to X server device_info structure to update with results all_buttons True ⇒ get information for all buttons first_button number of first button for which info is desired num_buttons number of buttons for which info is desired XkbGetDeviceButtonActions queries the server for the desired button information for the device indicated by the device_spec field of device_info and waits for a reply. If successful, XkbGetDeviceButtonActions backfills the button actions (btn_acts field of device_info) for only the requested buttons, updates the name, type, supported, and unsupported fields, and returns Success. all_buttons, first_button and num_buttons specify the device buttons for which actions should be returned. Setting all_buttons to True requests actions for all device buttons; if all_buttons is False, first_button and num_buttons specify a range of buttons for which actions are requested. If a compatible version of Xkb is not available in the server or the Xkb extension has not been properly initialized, XkbGetDeviceButtonActions returns BadAccess. If allocation errors occur, a BadAlloc status is returned. If the specified device (device_info->device_spec) is invalid, a BadKeyboard status is returned. If the device has no buttons, a BadMatch status is returned. If first_button and num_buttons specify illegal buttons, a BadValue status is returned. To query the indicator names, maps, and state associated with an LED feedback of an input extension device, use XkbGetDeviceLedInfo. XkbGetDeviceLedInfo Status XkbGetDeviceLedInfo Display *dpy XkbDeviceInfoPtr device_info unsigned int led_class unsigned int led_id unsigned int which dpy connection to X server device_info structure to update with results led_class LED feedback class assigned by input extension led_id LED feedback ID assigned by input extension which mask indicating desired information XkbGetDeviceLedInfo queries the server for the desired LED information for the feedback specified by led_class and led_id for the X input extension device indicated by device_spec->device_info and waits for a reply. If successful, XkbGetDeviceLedInfo backfills the relevant fields of device_info as determined by which with the results and returns Success. Valid values for which are the inclusive OR of any of XkbXI_IndicatorNamesMask, XkbXI_IndicatorMapsMask, and XkbXI_IndicatorStateMask. The fields of device_info that are filled in when this request succeeds are name, type, supported, and unsupported, and portions of the leds structure corresponding to led_class and led_id as indicated by the bits set in which. The device_info->leds vector is allocated if necessary and sz_leds and num_leds filled in. The led_class, led_id and phys_indicators fields of the device_info->leds entry corresponding to led_class and led_id are always filled in. If which contains XkbXI_IndicatorNamesMask, the names_present and names fields of the device_info->leds structure corresponding to led_class and led_id are updated, if which contains XkbXI_IndicatorStateMask, the corresponding state field is updated, and if which contains XkbXI_IndicatorMapsMask, the maps_present and maps fields are updated. If a compatible version of Xkb is not available in the server or the Xkb extension has not been properly initialized, XkbGetDeviceLedInfo returns BadAccess. If allocation errors occur, a BadAlloc status is returned. If the device has no indicators, a BadMatch error is returned. If ledClass or ledID have illegal values, a BadValue error is returned. If they have legal values but do not specify a feedback that contains LEDs and is associated with the specified device, a BadMatch error is returned. Allocating, Initializing, and Freeing the XkbDeviceInfoRec Structure To obtain an XkbDeviceInfoRec structure, use XkbGetDeviceInfo or XkbAllocDeviceInfo. XkbAllocDeviceInfo XkbDeviceInfoPtr XkbAllocDeviceInfo unsigned int device_spec unsigned int n_buttons unsigned int sz_leds device_spec device ID with which structure will be used n_buttons number of button actions to allocate space for sz_leds number of LED feedbacks to allocate space for XkbAllocDeviceInfo allocates space for an XkbDeviceInfoRec structure and initializes that structure’s device_spec field with the device ID specified by device_spec. If n_buttons is nonzero, n_buttons XkbActions are linked into the XkbDeviceInfoRec structure and initialized to zero. If sz_leds is nonzero, sz_leds XkbDeviceLedInfoRec structures are also allocated and linked into the XkbDeviceInfoRec structure. If you request XkbDeviceLedInfoRec structures be allocated using this request, you must initialize them explicitly. To initialize an XkbDeviceLedInfoRec structure, use XkbAddDeviceLedInfo. XkbAddDeviceLedInfo XkbDeviceLedInfoPtr XkbAddDeviceLedInfo XkbDeviceInfoPtr device_info unsigned int led_class unsigned int led_id device_info structure in which to add LED info led_class input extension class for LED device of interest led_id input extension ID for LED device of interest XkbAddDeviceLedInfo first checks to see whether an entry matching led_class and led_id already exists in the device_info->leds array. If it finds a matching entry, it returns a pointer to that entry. Otherwise, it checks to be sure there is at least one empty entry in device_info->leds and extends it if there is not enough room. It then increments device_info->num_leds and fills in the next available entry in device_info->leds with led_class and led_id. If successful, XkbAddDeviceLedInfo returns a pointer to the XkbDeviceLedInfoRec structure that was initialized. If unable to allocate sufficient storage, or if device_info points to an invalid XkbDeviceInfoRec structure, or if led_class or led_id are inappropriate, XkbAddDeviceLedInfo returns NULL. To allocate additional space for button actions in an XkbDeviceInfoRec structure, use XkbResizeDeviceButtonActions. XkbResizeDeviceButtonActions Status XkbResizeDeviceButtonActions XkbDeviceInfoPtr device_info unsigned int new_total device_info structure in which to allocate button actions new_total new total number of button actions needed XkbResizeDeviceButtonActions reallocates space, if necessary, to make sure there is room for a total of new_total button actions in the device_info structure. Any new entries allocated are zeroed. If successful, XkbResizeDeviceButtonActions returns Success. If new_total is zero, all button actions are deleted, device_info->num_btns is set to zero, and device_info->btn_acts is set to NULL. If device_info is invalid or new_total is greater than 255, BadValue is returned. If a memory allocation failure occurs, a BadAlloc is returned. To free an XkbDeviceInfoRec structure, use XkbFreeDeviceInfo. XkbFreeDeviceInfo void XkbFreeDeviceInfo XkbDeviceInfoPtr device_info unsigned int which Bool free_all device_info pointer to XkbDeviceInfoRec in which to free items which mask of components of device_info to free free_all True ⇒ free everything, including device_info If free_all is True, the XkbFreeDeviceInfo frees all components of device_info and the XkbDeviceInfoRec structure pointed to by device_info itself. If free_all is False, the value of which determines which subcomponents are freed. which is an inclusive OR of one or more of the values from Table 21.1. If which contains XkbXI_ButtonActionsMask, all button actions associated with device_info are freed, device_info->btn_acts is set to NULL, and device_info->num_btns is set to zero. If which contains all bits in XkbXI_IndicatorsMask, all XkbDeviceLedInfoRec structures associated with device_info are freed, device_info->leds is set to NULL, and device_info->sz_leds and device_info->num_leds are set to zero. If which contains XkbXI_IndicatorMapsMask, all indicator maps associated with device_info are cleared, but the number of LEDs and the leds structures themselves are preserved. If which contains XkbXI_IndicatorNamesMask, all indicator names associated with device_info are cleared, but the number of LEDs and the leds structures themselves are preserved. If which contains XkbXI_IndicatorStateMask, the indicator state associated with the device_info leds are set to zeros but the number of LEDs and the leds structures themselves are preserved. Setting Xkb Features for Non-KeyClass Input Extension Devices The Xkb extension allows clients to assign any key action to either core pointer or input extension device buttons. This makes it possible to control the keyboard or generate keyboard key events from extension devices or from the core pointer. Key actions assigned to core X pointer buttons or input extension device buttons cause key events to be generated as if they had originated from the core X keyboard. Xkb implementations are required to support key actions for the buttons of the core pointer device, but support for actions on extension devices is optional. Implementations that do not support button actions for extension devices must not set the XkbXI_ButtonActionsMask bit in the supported field of an XkbDeviceInfoRec structure. If a client attempts to modify valid characteristics of a device using an implementation that does not support modification of those characteristics, no protocol error is generated. Instead, the server reports a failure for the request; it also sends an XkbExtensionDeviceNotify event to the client that issued the request if the client has selected to receive these events. To change characteristics of an X Input Extension device in the server, first modify a local copy of the device structure and then use either XkbSetDeviceInfo, or, to save network traffic, use an XkbDeviceChangesRec structure (see section 21.6) and call XkbChangeDeviceInfo to download the changes to the server. To modify some or all of the characteristics of an X Input Extension device, use XkbSetDeviceInfo. XkbSetDeviceInfo Bool XkbSetDeviceInfo Display *dpy unsigned int which XkbDeviceInfoPtr device_info dpy connection to X server which mask indicating characteristics to modify device_info structure defining the device and modifications XkbSetDeviceInfo sends a request to the server to modify the characteristics of the device specified in the device_info structure. The particular characteristics modified are identified by the bits set in which and take their values from the relevant fields in device_info (see Table 21.1). XkbSetDeviceInfo returns True if the request was successfully sent to the server. If the X server implementation does not allow interaction between the X input extension and the Xkb Extension, the function does nothing and returns False. The which parameter specifies which aspects of the device should be changed and is a bitmask composed of an inclusive OR or one or more of the following bits: XkbXI_ButtonActionsMask, XkbXI_IndicatorNamesMask, XkbXI_IndicatorMapsMask. If the features requested to be manipulated in which are valid for the device, but the server does not support assignment of one or more of them, that particular portion of the request is ignored. If the device specified in device_info->device_spec does not contain buttons and a request affecting buttons is made, or the device does not contain indicators and a request affecting indicators is made, a BadMatch protocol error results. If the XkbXI_ButtonActionsMask bit is set in the supported mask returned by XkbGetDeviceInfo, the Xkb extension allows applications to assign key actions to buttons on input extension devices other than the core keyboard device. If the XkbXI_ButtonActionsMask is set in which, the actions for all buttons specified in device_info are set to the XkbActions specified in device_info->btn_acts. If the number of buttons requested to be updated is not valid for the device, XkbSetDeviceInfo returns False and a BadValue protocol error results. If the XkbXI_IndicatorMapsMask and / or XkbXI_IndicatorNamesMask bit is set in the supported mask returned by XkbGetDeviceInfo, the Xkb extension allows applications to assign maps and / or names to the indicators of nonkeyboard extension devices. If supported, maps and / or names can be assigned to all extension device indicators, whether they are part of a keyboard feedback or part of an indicator feedback. If the XkbXI_IndicatorMapsMask and / or XkbXI_IndicatorNamesMask flag is set in which, the indicator maps and / or names for all device_info->num_leds indicator devices specified in device_info->leds are set to the maps and / or names specified in device_info->leds. device_info->leds->led_class and led_id specify the input extension class and device ID for each indicator device to modify; if they have invalid values, a BadValue protocol error results and XkbSetDeviceInfo returns False. If they have legal values but do not specify a keyboard or indicator class feedback for the device in question, a BadMatch error results. If any of the values in device_info->leds->names are not a valid Atom or None, a BadAtom protocol error results. Xkb provides convenience functions to modify subsets of the information accessible via XkbSetDeviceInfo. Only the parts of the structure indicated in the function description are modified. These convenience functions are described as follows. To change only the button actions for an input extension device, use XkbSetDeviceButtonActions. XkbSetDeviceButtonActions Bool XkbSetDeviceButtonActions Display *dpy XkbDeviceInfoPtr device_info unsigned int first_button unsigned int num_buttons dpy connection to X server device_info structure defining the device and modifications first_button number of first button to update, 0 relative num_buttons number of buttons to update XkbSetDeviceButtonActions assigns actions to the buttons of the device specified in device_info->device_spec. Actions are assigned to num_buttons buttons beginning with first_button and are taken from the actions specified in device_info->btn_acts. If the server does not support assignment of Xkb actions to extension device buttons, XkbSetDeviceButtonActions has no effect and returns False. If the device has no buttons or if first_button or num_buttons specify buttons outside of the valid range as determined by device_info->num_btns, the function has no effect and returns False. Otherwise, XkbSetDeviceButtonActions sends a request to the server to change the actions for the specified buttons and returns True. If the actual request sent to the server involved illegal button numbers, a BadValue protocol error is generated. If an invalid device identifier is specified in device_info->device_spec, a BadKeyboard protocol error results. If the actual device specified in device_info->device_spec does not contain buttons and a request affecting buttons is made, a BadMatch protocol error is generated. XkbExtensionDeviceNotify Event eventsXkbExtensionDeviceNotify XkbExtensionDeviceNotifyEvent The Xkb extension generates XkbExtensionDeviceNotify events when the status of an input extension device changes or when an attempt is made to use an Xkb feature that is not supported by a particular device. Events indicating an attempt to use an unsupported feature are delivered only to the client requesting the event. To track changes to the status of input extension devices or attempts to use unsupported features of a device, select to receive XkbExtensionDeviceNotify events by calling either XkbSelectEvents or XkbSelectEventDetails (see section 4.3). To receive XkbExtensionDeviceNotify events under all possible conditions, call XkbSelectEvents and pass XkbExtensionDeviceNotifyMask in both bits_to_change and values_for_bits. The XkbExtensionDeviceNotify event has no event details. However, you can call XkbSelectEventDetails using XkbExtensionDeviceNotify as the event_type and specifying XkbAllExtensionDeviceEventsMask in bits_to_change and values_for_bits. This has the same effect as a call to XkbSelectEvents. The structure for XkbExtensionDeviceNotify events is: typedef struct { int type; /* Xkb extension base event code */ unsigned long serial; /* X server serial number for event */ Bool send_event; /* True ⇒ synthetically generated */ Display * display; /* server connection where event generated */ Time time; /* server time when event generated */ int xkb_type; /* XkbExtensionDeviceNotifyEvent */ int device; /* Xkb device ID, will not be XkbUseCoreKbd */ unsigned int reason; /* reason for the event */ unsigned int supported; /* mask of supported features */ unsigned int unsupported; /* unsupported features this client attempted to use */ int first_btn; /* first button that changed */ int num_btns; /* number of buttons that changed */ unsigned int leds_defined; /* indicators with names or maps */ unsigned int led_state; /* current state of the indicators */ int led_class; /* feedback class for LED changes */ int led_id; /* feedback ID for LED changes */ } XkbExtensionDeviceNotifyEvent; The XkbExtensionDeviceNotify event has fields enabling it to report changes in the state (on/off) of all of the buttons for a device, but only for one LED feedback associated with a device. You will get multiple events when more than one LED feedback changes state or configuration. Tracking Changes to Extension Devices XkbDeviceChangesRec XkbDeviceLedChangesRec Changes to an Xkb extension device may be tracked by listening to XkbExtensionDeviceNotify events and accumulating the changes in an XkbDeviceChangesRec structure. The changes noted in the structure may then be used in subsequent operations to update either a server configuration or a local copy of an Xkb extension device configuration. The changes structure is defined as follows: typedef struct _XkbDeviceChanges { unsigned int changed; /* bits indicating what has changed */ unsigned short first_btn; /* number of first button which changed, if any */ unsigned short num_btns; /* number of buttons that have changed */ XkbDeviceLedChangesRec leds; } XkbDeviceChangesRec, *XkbDeviceChangesPtr; typedef struct _XkbDeviceLedChanges { unsigned short led_class; /* class of this indicator feedback bundle */ unsigned short led_id; /* ID of this indicator feedback bundle */ unsigned int names; /* bits indicating which names have changed */ unsigned int maps; /* bits indicating which maps have changed */ struct _XkbDeviceLedChanges *next; /* link to indicator change record for next set */ } XkbDeviceLedChangesRec, *XkbDeviceLedChangesPtr; A local description of the configuration and state of a device may be kept in an XkbDeviceInfoRec structure. The actual state or configuration of the device may change because of XkbSetDeviceInfo and XkbSetButtonActions requests made by clients or by user interaction with the device. The X server sends an XkbExtensionDeviceNotify event to all interested clients when the state of any buttons or indicators or the configuration of the buttons or indicators on the core keyboard or any input extension device changes. The event reports the state of indicators for a single indicator feedback, and the state of up to 128 buttons. If more than 128 buttons or more than one indicator feedback are changed, the additional buttons and indicator feedbacks are reported in subsequent events. Xkb provides functions with which you can track changes to input extension devices by noting the changes that were made and then requesting the changed information from the server. To note device changes reported in an XkbExtensionDeviceNotify event, use XkbNoteDeviceChanges. XkbNoteDeviceChanges void XkbNoteDeviceChanges XkbDeviceChangesPtr old XkbExtensionDeviceNotifyEvent *new unsigned int wanted old structure tracking state changes new event indicating state changes wanted mask indicating changes to note The wanted field specifies the changes that should be noted in old, and is composed of the bitwise inclusive OR of one or more of the masks from Table 21.1. The reason field of the event in new indicates the types of changes the event is reporting. XkbNoteDeviceChanges updates the XkbDeviceChangesRec specified by old with the changes that are both specified in wanted and contained in new->reason. To update a local copy of the state and configuration of an X input extension device with the changes previously noted in an XkbDeviceChangesRec structure, use XkbGetDeviceInfoChanges. To query the changes that have occurred in the button actions or indicator names and indicator maps associated with an input extension device, use XkbGetDeviceInfoChanges. XkbGetDeviceInfoChanges Status XkbGetDeviceInfoChanges Display *dpy XkbDeviceInfoPtr device_info XkbDeviceChangesPtr changes dpy connection to X server device_info structure to update with results changes contains notes of changes that have occurred The changes->changed field indicates which attributes of the device specified in changes->device have changed. The parameters describing the changes are contained in the other fields of changes. XkbGetDeviceInfoChanges uses that information to call XkbGetDeviceInfo to obtain the current status of those attributes that have changed. It then updates the local description of the device in device_info with the new information. To update the server’s description of a device with the changes noted in an XkbDeviceChangesRec, use XkbChangeDeviceInfo. XkbChangeDeviceInfo Bool XkbChangeDeviceInfo Display *dpy XkbDeviceInfoPtr device_info XkbDeviceChangesPtr changes dpy connection to X server device_info local copy of device state and configuration changes note specifying changes in device_info XkbChangeDeviceInfo updates the server’s description of the device specified in device_info->device_spec with the changes specified in changes and contained in device_info. The update is made by an XkbSetDeviceInfo request.
libX11-1.8.12/specs/XKB/XKBlib-1.svg0000644014310600000120000010041614763154126012062 image/svg+xml Xkb-awareUserApplication Xkb-capableUserApplication Xkb-unawareUserApplication Keyboard Core Xlib Server Database ofKeyboard Components X Server Xkb Server Extension Client Map Server Map Compatibility Map Controls Indicator Map Names Geometry Xkb Modificationsto Core Xlibfunctions XkbAdditionsto Xlib(Xkb*functions) Core Xlib Xkb Extension libX11-1.8.12/specs/XKB/XKBlib-6.svg0000644014310600000120000005757514763154126012110 image/svg+xml mk_curve = 0 mk_curve < 0 mk_curve > 0 mk_max_speed * Action delta distance Action delta mk_delay(msec) mk_time_to_max(count) mk_interval(msec) libX11-1.8.12/specs/XKB/ch13.xml0000644014310600000120000035273014763154126011360 Keyboard Geometry The Xkb description of a keyboard includes an optional keyboard geometry that describes the physical appearance of the keyboard. Keyboard geometry describes the shape, location, and color of all keyboard keys or other visible keyboard components such as indicators. The information contained in a keyboard geometry is sufficient to allow a client program to draw an accurate two-dimensional image of the keyboard. You can retrieve a keyboard geometry from an X server that supports Xkb, or you can allocate it from scratch and initialize it in a client program. The keyboard geometry need not have any correspondence with the physical keyboard that is connected to the X server. Geometry measurements are specified in mm/10 units. The origin (0,0) is in the top left corner of the keyboard image. A component’s own origin is also its upper left corner. In some cases a component needs to be drawn rotated. For example, a special keyboard may have a section of keys arranged in rows in a rectangular area, but the entire rectangle may not be in alignment with the rest of the keyboard, and instead, it is rotated from horizontal by 30°. Rotation for a geometry object is specified in 1/10° increments about its origin. An example of a keyboard with rotated sections is shown in Figure 13.1.
Rotated Keyboard Sections
Some geometry components include a priority, which indicates the order in which overlapping objects should be drawn. Objects should be drawn in order from highest priority (0) to lowest (255). XkbGeometryRec The keyboard geometry’s top-level description is stored in a XkbGeometryRec structure. This structure contains three types of information: Lists of items, not used to draw the basic keyboard, but indexed by the geometry descriptions that comprise the entire keyboard geometry (colors, geometry properties, key aliases, shapes) A number of singleton items that describe the keyboard as a whole (keyboard name, width and height, a color for the keyboard as a whole, and a color for keyboard key labels) A list of the keyboard’s sections and nonkey doodads The top-level geometry is described in more detail in the following. The lists of items used by components of the keyboard geometry description is as follows: The top-level keyboard geometry description includes a list of up to XkbGeomMaxColors (32) color names. A color name is a string whose interpretation is not specified by Xkb. The XkbColorRec structure provides a field for this name as well as a pixel field. The pixel field is a convenient place for an application to store a pixel value or color definition, if it needs to. All other geometry data structures refer to colors using their indices in this global list. The top-level keyboard geometry description includes a list of geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Geometry properties can be used to provide hints to programs that display images of keyboards, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. As an example of a possible use of properties, consider the pause/break key on most PC keyboards: the break symbol is usually on the front of the key and is often a different color. A program might set a property to: LBL_PAUS = "{Pause/top/black,Break/front/red}" and use the property information to draw the key with a front label as well as a top label. The top-level keyboard geometry description includes a list of key aliases (see ). Key aliases allow the keyboard layout designer to assign multiple key names to a single key. Key aliases defined in the geometry component of a keyboard mapping override those defined in the keycodes component of the server database, which are stored in the XkbNamesRec (xkb->names). Therefore, consider the key aliases defined by the geometry before considering key aliases supplied by the keycodes. The top-level keyboard geometry description includes a list of shapes; other keyboard components refer to shapes by their index in this list. A shape consists of an arbitrary name of type Atom and one or more closed-polygon outlines. All points in an outline are specified relative to the origin of its enclosing shape, that is, whichever shape that contains this outline in its list of outlines. One outline is the primary outline. The primary outline is by default the first outline, or it can be optionally specified by the primary field in the XkbShapeRec structure. A keyboard display application can generate a simpler but still accurate keyboard image by displaying only the primary outlines for each shape. Nonrectangular keys must include a rectangular approximation as one of the outlines associated with the shape. The approximation is not normally displayed but can be used by very simple keyboard display applications to generate a recognizable but degraded image of the keyboard. The XkbGeometryRec top-level geometry description contains the following information that pertains to the keyboard as a whole: A keyboard symbolic name of type Atom to help users identify the keyboard. The width and height of the keyboard, in mm/10. For nonrectangular keyboards, the width and height describe the smallest bounding box that encloses the outline of the keyboard. The base color of the keyboard is the predominant color on the keyboard and is used as the default color for any components whose color is not explicitly specified. The label color is the color used to draw the labels on most of the keyboard keys. The label font is a string that describes the font used to draw labels on most keys; label fonts are arbitrary strings, because Xkb does not specify the format or name space for font names. The keyboard is subdivided into named sections of related keys and doodads. The sections and doodads on the keyboard are listed in the XkbGeometryRec top-level keyboard geometry description. A section is composed of keys that are physically together and logically related. Figure 13.2 shows a keyboard that is divided into four sections. A doodad describes some visible aspect of the keyboard that is not a key and is not a section.
Keyboard with Four Sections
Shapes and Outlines A shape, used to draw keyboard components and stored in a XkbShapeRec structure, has: An arbitrary name of type Atom. Bounds (two x and y coordinates) that describe the corners of a rectangle containing the shape’s top surface outline. A list of one or more outlines (described below). Optional pointers to a primary and an approximation outline (described below). If either of these pointers is NULL, the default primary/approximation outline is the first one in the list of outlines for the shape. An outline, stored in a XkbOutlineRec structure, is a list of one or more points that describes a single closed-polygon, as follows: A list with a single point describes a rectangle with one corner at the origin of the shape (0,0) and the opposite corner at the specified point. A list of two points describes a rectangle with one corner at the position specified by the first point and the opposite corner at the position specified by the second point. A list of three or more points describes an arbitrary polygon. If necessary, the polygon is automatically closed by connecting the last point in the list with the first. A nonzero value for the corner_radius field specifies that the corners of the polygon should be drawn as circles with the specified radius. All points in an outline are specified relative to the origin of the enclosing shape. Points in an outline may have negative values for the X and Y coordinate. One outline is the primary outline; a keyboard display application can generate a simple but still accurate keyboard image by displaying only the primary outlines for each shape. The default primary outline is the first in a shape’s list of outlines. If the primary field of the XkbShapeRec structure is not NULL, it points to the primary outline. A rectangular approximation must be included for nonrectangular keys as one of the outlines associated with the shape; the approximation is not normally displayed but can be used by very simple keyboard display applications to generate a recognizable but degraded image of the keyboard. Sections As previously noted, a keyboard is subdivided into sections of related keys. Each section has its own coordinate system — if a section is rotated, the coordinates of any components within the section are interpreted relative to the edges that were on the top and left before rotation. The components that make up a section, stored in a XkbSectionRec, include: An arbitrary name of type Atom. A priority, to indicate drawing order. 0 is the highest priority, 255 the lowest. Origin of the section, relative to the origin of the keyboard. The width and height and the angle of rotation. A list of rows. A row is a list of horizontally or vertically adjacent keys. Horizontal rows parallel the (prerotation) top of the section, and vertical rows parallel the (prerotation) left of the section. All keys in a horizontal row share a common top coordinate; all keys in a vertical row share a left coordinate. Figure 13.3 shows the alpha section from the keyboard shown in Figure 13.2, divided into rows. Rows and keys are defined below.
Rows in a Section
An optional list of doodads; any type of doodad can be enclosed within a section. Position and angle of rotation are relative to the origin and angle of rotation of the sections that contain them. Priority for doodads in a section is relative to the other components of the section, not to the keyboard as a whole. An optional overlay with a name of type Atom and a list of overlay rows (described below). Bounds (two x and y coordinates) that describe the corners of a rectangle containing the entire section.
Rows and Keys A row description (XkbRowRec) consists of the coordinates of its origin relative to its enclosing section, a flag indicating whether the row is horizontal or vertical, and a list of keys in the row. A key description (XkbKeyRec) consists of a key name, a shape, a key color, and a gap. The key name should correspond to one of the keys named in the keyboard names description, the shape specifies the appearance of the key, and the key color specifies the color of the key (not the label on the key; the label color is stored in the XkbGeometryRec). Keys are normally drawn immediately adjacent to one another from left to right (or top to bottom) within a row. The gap field specifies the distance between a key and its predecessor. Doodads Doodads can be global to the keyboard or part of a section. Doodads have symbolic names of arbitrary length. The only doodad name whose interpretation is specified by Xkb is Edges, which, if present, describes the outline of the entire keyboard. Each doodad’s origin is stored in fields named left and top, which are the coordinates of the doodad’s origin relative to its enclosing object, whether it be a section or the top-level keyboard. The priority for doodads that are listed in the top-level geometry is relative to the other doodads listed in the top-level geometry and the sections listed in the top-level geometry. The priority for doodads listed in a section are relative to the other components of the section. Each doodad is stored in a structure with a type field, which specifies the type of doodad. Xkb supports five types of doodads: An indicator doodad describes one of the physical keyboard indicators. Indicator doodads specify the shape of the indicator, the indicator color when it is lit (on_color) and the indicator color when it is dark (off_color). An outline doodad describes some aspect of the keyboard to be drawn as one or more hollow, closed polygons. Outline doodads specify the shape, color, and angle of rotation about the doodad origin at which they should be drawn. A solid doodad describes some aspect of the keyboard to be drawn as one or more filled polygons. Solid doodads specify the shape, color, and angle of rotation about the doodad origin at which they should be drawn. A text doodad describes a text label somewhere on the keyboard. Text doodads specify the label string, the font and color to use when drawing the label, and the angle of rotation of the doodad about its origin. A logo doodad is a catch-all, which describes some other visible element of the keyboard. A logo doodad is essentially an outline doodad with an additional symbolic name that describes the element to be drawn. If a keyboard display program recognizes the symbolic name, it can draw something appropriate within the bounding region of the shape specified in the doodad. If the symbolic name does not describe a recognizable image, it should draw an outline using the specified shape, outline, and angle of rotation. The Xkb extension does not specify the interpretation of logo names. The structures these doodads are stored in and the values of the type fields are shown in Table 13.1. Doodad Types Doodad Structure Type indicator doodad XkbIndicatorDoodadRec XkbIndicatorDoodad outline doodad XkbShapeDoodadRec XkbOutlineDoodad solid doodad XkbShapeDoodadRec XkbSolidDoodad text doodad XkbTextDoodadRec XkbTextDoodad logo doodad XkbLogoDoodadRec XkbLogoDoodad
Overlay Rows and Overlay Keys An overlay row (XkbOverlayRowRec) contains a pointer to the row it overlays and a list of overlay keys. Each overlay key definition (XkbOverlayKeyRec) indicates a key that can yield multiple keycodes and consists of a field named under, which specifies the primary name of the key and a field named over, which specifies the name for the key when the overlay keycode is selected. The key specified in under must be a member of the section that contains the overlay key definition, while the key specified in over must not be. Drawing a Keyboard Representation To draw a representation of the keyboard, draw in the following order: Draw the top-level keyboard as a rectangle, using its width and height. For each component (section or doodad) of the top-level geometry, in priority order: If component is a section For each row, in the order it appears in the section Draw keys in the order they appear in the row Draw doodads within the section in priority order. Else draw doodad Geometry Data Structures In the following figures, a solid arrow denotes a pointer to an array of structures or a singleton structure. A dotted arrow denotes an index or a pointer into the array.
Xkb Geometry Data Structures
Xkb Geometry Data Structures (Doodads)
Xkb Geometry Data Structures (Overlays)
typedef struct _XkbGeometry { /* top-level keyboard geometry structure */ Atom name; /* keyboard name */ unsigned short width_mm; /* keyboard width in mm/10 */ unsigned short height_mm; /* keyboard height in mm/10 */ char * label_font; /* font for key labels */ XkbColorPtr label_color; /* color for key labels - pointer into colors array */ XkbColorPtr base_color; /* color for basic keyboard - pointer into colors array */ unsigned short sz_properties; /* size of properties array */ unsigned short sz_colors; /* size of colors array */ unsigned short sz_shapes; /* size of shapes array */ unsigned short sz_sections; /* size of sections array */ unsigned short sz_doodads; /* size of doodads array */ unsigned short sz_key_aliases; /* size of key aliases array */ unsigned short num_properties; /* number of properties in the properties array */ unsigned short num_colors; /* number of colors in the colors array */ unsigned short num_shapes; /* number of shapes in the shapes array */ unsigned short num_sections; /* number of sections in the sections array */ unsigned short num_doodads; /* number of doodads in the doodads array */ unsigned short num_key_aliases; /* number of key aliases in the key_aliases array */ XkbPropertyPtr properties; /* properties array */ XkbColorPtr colors; /* colors array */ XkbShapePtr shapes; /* shapes array */ XkbSectionPtr sections; /* sections array */ XkbDoodadPtr doodads; /* doodads array */ XkbKeyAliasPtr key_aliases; /* key aliases array */ } XkbGeometryRec, *XkbGeometryPtr; The doodads array is only for doodads not contained in any of the sections that has its own doodads. The key aliases contained in the key_aliases array take precedence over any defined in the keycodes component of the keyboard description. typedef struct _XkbProperty { char * name; /* property name */ char * value; /* property value */ } XkbPropertyRec, *XkbPropertyPtr; typedef struct _XkbColor { unsigned int pixel; /* color */ char * spec; /* color name */ } XkbColorRec, *XkbColorPtr; typedef struct _XkbKeyAliasRec { char real[XkbKeyNameLength]; /* real name of the key */ char alias[XkbKeyNameLength]; /* alias for the key */ } XkbKeyAliasRec, *XkbKeyAliasPtr; typedef struct _XkbPoint { /* x, y coordinates */ short x; short y; } XkbPointRec, *XkbPointPtr; typedef struct _XkbOutline { unsigned short num_points; /* number of points in the outline */ unsigned short sz_points; /* size of the points array */ unsigned short corner_radius; /* draw corners as circles with this radius */ XkbPointPtr points; /* array of points defining the outline */ } XkbOutlineRec, *XkbOutlinePtr; typedef struct _XkbBounds { short x1, y1; /* upper left corner of the bounds, in mm/10 */ short x2, y2; /* lower right corner of the bounds, in mm/10 */ } XkbBoundsRec, *XkbBoundsPtr; typedef struct _XkbShape { Atom name; /* shape’s name */ unsigned short num_outlines; /* number of outlines for the shape */ unsigned short sz_outlines; /* size of the outlines array */ XkbOutlinePtr outlines; /* array of outlines for the shape */ XkbOutlinePtr approx; /* pointer into the array to the approximating outline */ XkbOutlinePtr primary; /* pointer into the array to the primary outline */ XkbBoundsRec bounds; /* bounding box for the shape; encompasses all outlines */ } XkbShapeRec, *XkbShapePtr; If approx and/or primary is NULL, the default value is used. The default primary outline is the first element in the outlines array, as is the default approximating outline. typedef struct _XkbKey { /* key in a row */ XkbKeyNameRec name; /* key name */ short gap; /* gap in mm/10 from previous key in row */ unsigned char shape_ndx; /* index of shape for key */ unsigned char color_ndx; /* index of color for key body */ } XkbKeyRec, *XkbKeyPtr; typedef struct _XkbRow { /* row in a section */ short top; /* top coordinate of row origin, relative to section’s origin */ short left; /* left coordinate of row origin, relative to section’s origin */ unsigned short num_keys; /* number of keys in the keys array */ unsigned short sz_keys; /* size of the keys array */ int vertical; /* True ⇒vertical row, False ⇒horizontal row */ XkbKeyPtr keys; /* array of keys in the row */ XkbBoundsRec bounds; /* bounding box for the row */ } XkbRowRec, *XkbRowPtr; top and left are in mm/10. typedef struct _XkbOverlayRec { Atom name; /* overlay name */ XkbSectionPtr section_under; /* the section under this overlay */ unsigned short num_rows; /* number of rows in the rows array */ unsigned short sz_rows; /* size of the rows array */ XkbOverlayRowPtr rows; /* array of rows in the overlay */ XkbBoundsPtr bounds; /* bounding box for the overlay */ } XkbOverlayRec, *XkbOverlayPtr; typedef struct _XkbOverlayRow { unsigned short row_under; /* index into the row under this overlay row */ unsigned short num_keys; /* number of keys in the keys array */ unsigned short sz_keys; /* size of the keys array */ XkbOverlayKeyPtr keys; /* array of keys in the overlay row */ } XkbOverlayRowRec, *XkbOverlayRowPtr; row_under is an index into the array of rows in the section under this overlay. The section under this overlay row is the one pointed to by section_under in this overlay row’s XkbOverlayRec. typedef struct _XkbOverlayKey { XkbKeyNameRec over; /* name of this overlay key */ XkbKeyNameRec under; /* name of the key under this overlay key */ } XkbOverlayKeyRec, *XkbOverlayKeyPtr; typedef struct _XkbSection { Atom name; /* section name */ unsigned char priority; /* drawing priority, 0⇒highest, 255⇒lowest */ short top; /* top coordinate of section origin */ short left; /* left coordinate of row origin */ unsigned short width; /* section width, in mm/10 */ unsigned short height; /* section height, in mm/10 */ short angle; /* angle of section rotation, counterclockwise */ unsigned short num_rows; /* number of rows in the rows array */ unsigned short num_doodads; /* number of doodads in the doodads array */ unsigned short num_overlays; /* number of overlays in the overlays array */ unsigned short sz_rows; /* size of the rows array */ unsigned short sz_doodads; /* size of the doodads array */ unsigned short sz_overlays; /* size of the overlays array */ XkbRowPtr rows; /* section rows array */ XkbDoodadPtr doodads; /* section doodads array */ XkbBoundsRec bounds; /* bounding box for the section, before rotation */ XkbOverlayPtr overlays; /* section overlays array */ } XkbSectionRec, *XkbSectionPtr; top and left are the origin of the section, relative to the origin of the keyboard, in mm/10. angle is in 1/10 degrees. DoodadRec Structures The doodad arrays in the XkbGeometryRec and the XkbSectionRec may contain any of the doodad structures and types shown in Table 13.1. The doodad structures form a union: typedef union _XkbDoodad { XkbAnyDoodadRec any; XkbShapeDoodadRec shape; XkbTextDoodadRec text; XkbIndicatorDoodadRec indicator; XkbLogoDoodadRec logo; } XkbDoodadRec, *XkbDoodadPtr; The top and left coordinates of each doodad are the coordinates of the origin of the doodad relative to the keyboard’s origin if the doodad is in the XkbGeometryRec doodad array, and with respect to the section’s origin if the doodad is in a XkbSectionRec doodad array. The color_ndx or on_color_ndx and off_color_ndx fields are color indices into the XkbGeometryRec’s color array and are the colors to draw the doodads with. Similarly, the shape_ndx fields are indices into the XkbGeometryRec’s shape array. typedef struct _XkbShapeDoodad { Atom name; /* doodad name */ unsigned char type; /* XkbOutlineDoodad or XkbSolidDoodad */ unsigned char priority; /* drawing priority, 0⇒highest, 255⇒lowest */ short top; /* top coordinate, in mm/10 */ short left; /* left coordinate, in mm/10 */ short angle; /* angle of rotation, clockwise, in 1/10 degrees */ unsigned short color_ndx; /* doodad color */ unsigned short shape_ndx; /* doodad shape */ } XkbShapeDoodadRec, *XkbShapeDoodadPtr; typedef struct _XkbTextDoodad { Atom name; /* doodad name */ unsigned char type; /* XkbTextDoodad */ unsigned char priority; /* drawing priority, 0⇒highest, 255⇒lowest */ short top; /* top coordinate, in mm/10 */ short left; /* left coordinate, in mm/10 */ short angle; /* angle of rotation, clockwise, in 1/10 degrees */ short width; /* width in mm/10 */ short height; /* height in mm/10 */ unsigned short color_ndx; /* doodad color */ char * text; /* doodad text */ char * font; /* arbitrary font name for doodad text */ } XkbTextDoodadRec, *XkbTextDoodadPtr; typedef struct _XkbIndicatorDoodad { Atom name; /* doodad name */ unsigned char type; /* XkbIndicatorDoodad */ unsigned char priority; /* drawing priority, 0⇒highest, 255⇒lowest */ short top; /* top coordinate, in mm/10 */ short left; /* left coordinate, in mm/10 */ short angle; /* angle of rotation, clockwise, in 1/10 degrees */ unsigned short shape_ndx; /* doodad shape */ unsigned short on_color_ndx; /* color for doodad if indicator is on */ unsigned short off_color_ndx;/* color for doodad if indicator is off */ } XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr; typedef struct _XkbLogoDoodad { Atom name; /* doodad name */ unsigned char type; /* XkbLogoDoodad */ unsigned char priority; /* drawing priority, 0⇒highest, 255⇒lowest */ short top; /* top coordinate, in mm/10 */ short left; /* left coordinate, in mm/10 */ short angle; /* angle of rotation, clockwise, in 1/10 degrees */ unsigned short color_ndx; /* doodad color */ unsigned short shape_ndx; /* doodad shape */ char * logo_name; /* text for logo */ } XkbLogoDoodadRec, *XkbLogoDoodadPtr
Getting Keyboard Geometry From the Server You can load a keyboard geometry as part of the keyboard description returned by XkbGetKeyboard. However, if a keyboard description has been previously loaded, you can instead obtain the geometry by calling the XkbGetGeometry. In this case, the geometry returned is the one associated with the keyboard whose device ID is contained in the keyboard description. To load a keyboard geometry if you already have the keyboard description, use XkbGetGeometry. XkbGetGeometry Status XkbGetGeometry Display *dpy XkbDescPtr xkb dpy connection to the X server xkb keyboard description that contains the ID for the keyboard and into which the geometry should be loaded XkbGetGeometry can return BadValue, BadImplementation, BadName, BadAlloc, or BadLength errors or Success if it succeeds. It is also possible to load a keyboard geometry by name. The X server maintains a database of keyboard components (see ). To load a keyboard geometry description from this database by name, use XkbGetNamedGeometry. XkbGetNamedGeometry Status XkbGetNamedGeometry Display *dpy XkbDescPtr xkb Atom name dpy connection to the X server xkb keyboard description into which the geometry should be loaded name name of the geometry to be loaded XkbGetNamedGeometry can return BadName if the name cannot be found. Using Keyboard Geometry Xkb provides a number of convenience functions to help use a keyboard geometry. These include functions to return the bounding box of a shape’s top surface and to update the bounding box of a shape row or section. A shape is made up of a number of outlines. Each outline is a polygon made up of a number of points. The bounding box of a shape is a rectangle that contains all the outlines of that shape.
Key Surface, Shape Outlines, and Bounding Box
To determine the bounding box of the top surface of a shape, use XkbComputeShapeTop. XkbComputeShapeTop Bool XkbComputeShapeTop XkbShapePtr shape XkbBoundsPtr bounds_rtrn shape shape to be examined bounds_rtrn backfilled with the bounding box for the shape XkbComputeShapeTop returns a BoundsRec that contains two x and y coordinates. These coordinates describe the corners of a rectangle that contains the outline that describes the top surface of the shape. The top surface is defined to be the approximating outline if the approx field of shape is not NULL. If approx is NULL, the top surface is defined as the last outline in the shape’s array of outlines. XkbComputeShapeTop returns False if shape is NULL or if there are no outlines for the shape; otherwise, it returns True. A ShapeRec contains a BoundsRec that describes the bounds of the shape. If you add or delete an outline to or from a shape, the bounding box must be updated. To update the bounding box of a shape, use XkbComputeShapeBounds. XkbComputeShapeBounds Bool XkbComputeShapeBounds XkbShapePtr shape shape shape to be examined XkbComputeShapeBounds updates the BoundsRec contained in the shape by examining all the outlines of the shape and setting the BoundsRec to the minimum x and minimum y, and maximum x and maximum y values found in those outlines. XkbComputeShapeBounds returns False if shape is NULL or if there are no outlines for the shape; otherwise, it returns True. If you add or delete a key to or from a row, or if you update the shape of one of the keys in that row, you may need to update the bounding box of that row. To update the bounding box of a row, use XkbComputeRowBounds. XkbComputeRowBounds Bool XkbComputeRowBounds XkbGeometryPtr geom XkbSectionPtr section XkbRowPtr row geom geometry that contains the section section section that contains the row row row to be examined and updated XkbComputeRowBounds checks the bounds of all keys in the row and updates the bounding box of the row if necessary. XkbComputeRowBounds returns False if any of the arguments is NULL; otherwise, it returns True. If you add or delete a row to or from a section, or if you change the geometry of any of the rows in that section, you may need to update the bounding box for that section. To update the bounding box of a section, use XkbComputeSectionBounds. XkbComputeSectionBounds Bool XkbComputeSectionBounds XkbGeometryPtr geom XkbSectionPtr section geom geometry that contains the section section section to be examined and updated XkbComputeSectionBounds examines all the rows of the section and updates the bounding box of that section so that it contains all rows. XkbComputeSectionBounds returns False if any of the arguments is NULL; otherwise, it returns True. Keys that can generate multiple keycodes may be associated with multiple names. Such keys have a primary name and an alternate name. To find the alternate name by using the primary name for a key that is part of an overlay, use XkbFindOverlayForKey. XkbFindOverlayForKey char *XkbFindOverlayForKey XkbGeometryPtr geom XkbSectionPtr section char *under geom geometry that contains the section section section to be searched for matching keys under .primary name of the key to be considered XkbFindOverlayForKey uses the primary name of the key, under, to look up the alternate name, which it returns.
Adding Elements to a Keyboard Geometry Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the num_* fields of the corresponding structure is incremented by 1. These functions do not change sz_* unless there is no more room in the array. Some of these functions fill in the values of the element’s structure from the arguments. For other functions, you must explicitly write code to fill the structure’s elements. The top-level geometry description includes a list of geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. To add one property to an existing keyboard geometry description, use XkbAddGeomProperty. XkbAddGeomProperty XkbPropertyPtr XkbAddGeomProperty XkbGeometryPtr geom char *name char *value geom geometry to be updated name name of the new property value value for the new property XkbAddGeomProperty adds one property with the specified name and value to the keyboard geometry specified by geom. XkbAddGeomProperty returns NULL if any of the parameters is empty or if it was not able to allocate space for the property. To allocate space for an arbitrary number of properties, use the XkbAllocGeomProps function. To add one key alias to an existing keyboard geometry description, use XkbAddGeomKeyAlias. XkbAddGeomKeyAlias XkbKeyAliasPtr XkbAddGeomKeyAlias XkbGeometryPtr geom char *alias char *real geom geometry to be updated alias alias to be added real real name to be bound to the new alias XkbAddGeomKeyAlias adds one key alias with the value alias to the geometry geom, and associates it with the key whose real name is real. XkbAddGeomKeyAlias returns NULL if any of the parameters is empty or if it was not able to allocate space for the alias. To allocate space for an arbitrary number of aliases, use the XkbAllocGeomKeyAliases function. To add one color name to an existing keyboard geometry description, use XkbAddGeomColor. XkbAddGeomColor XkbColorPtr XkbAddGeomColor XkbGeometryPtr geom char *spec unsigned int pixel geom geometry to be updated spec color to be added pixel color to be added XkbAddGeomColor adds the specified color name and pixel to the specified geometry geom. The top-level geometry description includes a list of up to MaxColors (32) color names. A color name is a string whose interpretation is not specified by Xkb and neither is the pixel value’s interpretation. All other geometry data structures refer to colors using their indices in this global list or pointers to colors in this list. XkbAddGeomColor returns NULL if any of the parameters is empty or if it was not able to allocate space for the color. To allocate space for an arbitrary number of colors to a geometry, use the XkbAllocGeomColors function. To add one outline to an existing shape, use XkbAddGeomOutline. XkbAddGeomOutline XkbOutlinePtr XkbAddGeomOutline XkbShapePtr shape int sz_points shape shape to be updated sz_points number of points to be reserved An outline consists of an arbitrary number of points. XkbAddGeomOutline adds an outline to the specified shape by reserving sz_points points for it. The new outline is allocated and zeroed. XkbAddGeomOutline returns NULL if any of the parameters is empty or if it was not able to allocate space. To allocate space for an arbitrary number of outlines to a shape, use XkbAllocGeomOutlines. To add a shape to a keyboard geometry, use XkbAddGeomShape. XkbAddGeomShape XkbShapePtr XkbAddGeomShape XkbGeometryPtr geom Atom name int sz_outlines geom geometry to be updated name name of the new shape sz_outlines number of outlines to be reserved A geometry contains an arbitrary number of shapes, each of which is made up of an arbitrary number of outlines. XkbAddGeomShape adds a shape to a geometry geom by allocating space for sz_outlines outlines for it and giving it the name specified by name. If a shape with name name already exists in the geometry, a pointer to the existing shape is returned. XkbAddGeomShape returns NULL if any of the parameters is empty or if it was not able to allocate space. To allocate space for an arbitrary number of geometry shapes, use XkbAllocGeomShapes. To add one key at the end of an existing row of keys, use XkbAddGeomKey. XkbAddGeomKey XkbKeyPtr XkbAddGeomKey XkbRowPtr row row row to be updated Keys are grouped into rows. XkbAddGeomKey adds one key to the end of the specified row. The key is allocated and zeroed. XkbAddGeomKey returns NULL if row is empty or if it was not able to allocate space for the key. To allocate space for an arbitrary number of keys to a row, use XkbAllocGeomKeys. To add one section to an existing keyboard geometry, use XkbAddGeomSection. XkbAddGeomSection XkbSectionPtr XkbAddGeomSection XkbGeometryPtr geom Atom name int sz_rows int sz_doodads int sz_overlays geom geometry to be updated name name of the new section sz_rows number of rows to reserve in the section sz_doodads number of doodads to reserve in the section sz_overlays number of overlays to reserve in the section A keyboard geometry contains an arbitrary number of sections. XkbAddGeomSection adds one section to an existing keyboard geometry geom. The new section contains space for the number of rows, doodads, and overlays specified by sz_rows, sz_doodads, and sz_overlays. The new section is allocated and zeroed and given the name specified by name. If a section with name name already exists in the geometry, a pointer to the existing section is returned. XkbAddGeomSection returns NULL if any of the parameters is empty or if it was not able to allocate space for the section. To allocate space for an arbitrary number of sections to a geometry, use XkbAllocGeomSections. To add a row to a section, use XkbAddGeomRow. XkbAddGeomRow XkbRowPtr XkbAddGeomRow XkbSectionPtr section int sz_keys section section to be updated sz_keys number of keys to be reserved One of the components of a keyboard geometry section is one or more rows of keys. XkbAddGeomRow adds one row to the specified section. The newly created row contains space for the number of keys specified in sz_keys. They are allocated and zeroed, but otherwise uninitialized. XkbAddGeomRow returns NULL if any of the parameters is empty or if it was not able to allocate space for the row. To allocate space for an arbitrary number of rows to a section, use the XkbAllocGeomRows function. To add one doodad to a section of a keyboard geometry or to the top-level geometry, use XkbAddGeomDoodad. XkbAddGeomDoodad XkbDoodadPtr XkbAddGeomDoodad XkbGeometryPtr geom XkbSectionPtr section Atom name geom geometry to which the doodad is added section section, if any, to which the doodad is added name name of the new doodad A doodad describes some visible aspect of the keyboard that is not a key and is not a section. XkbAddGeomDoodad adds a doodad with name specified by name to the geometry geom if section is NULL or to the section of the geometry specified by section if section is not NULL. XkbAddGeomDoodad returns NULL if any of the parameters is empty or if it was not able to allocate space for the doodad. If there is already a doodad with the name name in the doodad array for the geometry (if section is NULL) or the section (if section is non- NULL), a pointer to that doodad is returned. To allocate space for an arbitrary number of doodads to a section, use the XkbAllocGeomSectionDoodads function. To allocate space for an arbitrary number of doodads to a keyboard geometry, use the XkbAllocGeomDoodads function. To add one overlay to a section, use XkbAddGeomOverlay. XkbAddGeomOverlay XkbOverlayPtr XkbAddGeomOverlay XkbSectionPtr section Atom name int sz_rows section section to which an overlay will be added name name of the overlay sz_rows number of rows to reserve in the overlay XkbAddGeomOverlay adds an overlay with the specified name to the specified section. The new overlay is created with space allocated for sz_rows rows. If an overlay with name name already exists in the section, a pointer to the existing overlay is returned. XkbAddGeomOverlay returns NULL if any of the parameters is empty or if it was not able to allocate space for the overlay. To allocate space for an arbitrary number of overlays to a section, use the XkbAllocGeomOverlay function. To add a row to an existing overlay, use XkbAddGeomOverlayRow. XkbAddGeomOverlayRow XkbOverlayRowPtr XkbAddGeomOverlayRow XkbOverlayPtr overlay XkbRowPtr row_under int sz_keys overlay overlay to be updated row_under row to be overlaid in the section overlay overlays sz_keys number of keys to reserve in the row XkbAddGeomOverlayRow adds one row to the overlay. The new row contains space for sz_keys keys. If row_under specifies a row that doesn’t exist on the underlying section, XkbAddGeomOverlayRow returns NULL and doesn’t change the overlay. XkbAddGeomOverlayRow returns NULL if any of the parameters is empty or if it was not able to allocate space for the overlay. To add a key to an existing overlay row, use XkbAddGeomOverlayKey. XkbAddGeomOverlayKey XkbOverlayKeyPtr XkbAddGeomOverlayKey XkbOverlayPtr overlay XkbRowPtr row char *under overlay overlay to be updated row row in overlay to be updated under primary name of the key to be considered XkbAddGeomOverlayKey adds one key to the row in the overlay. If there is no key named under in the row of the underlying section, XkbAddGeomOverlayKey returns NULL. Allocating and Freeing Geometry Components Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase sz_* but never touch num_* (unless there is an allocation failure, in which case they reset both sz_* and num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. To allocate space for an arbitrary number of outlines to a shape, use XkbAllocGeomOutlines. XkbAllocGeomOutlines Status XkbAllocGeomOutlines XkbShapePtr shape int num_needed shape shape for which outlines should be allocated num_needed number of new outlines required XkbAllocGeomOutlines allocates space for num_needed outlines in the specified shape. The outlines are not initialized. To free geometry outlines, use XkbFreeGeomOutlines. XkbFreeGeomOutlines void XkbFreeGeomOutlines XkbShapePtr shape int first int count Bool free_all shape shape in which outlines should be freed first first outline to be freed count number of outlines to be freed free_all True ⇒ all outlines are freed If free_all is True, all outlines are freed regardless of the value of first or count. Otherwise, count outlines are freed beginning with the one specified by first. To allocate space for an arbitrary number of keys to a row, use XkbAllocGeomKeys. XkbAllocGeomKeys Status XkbAllocGeomKeys XkbRowPtr row int num_needed row row to which keys should be allocated num_needed number of new keys required XkbAllocGeomKeys allocates num_needed keys and adds them to the row. No initialization of the keys is done. To free geometry keys, use XkbFreeGeomKeys. XkbFreeGeomKeys void XkbFreeGeomKeys XkbRowPtr row int first int count Bool free_all row row in which keys should be freed first first key to be freed count number of keys to be freed free_all True ⇒ all keys are freed If free_all is True, all keys are freed regardless of the value of first or count. Otherwise, count keys are freed beginning with the one specified by first. To allocate geometry properties, use XkbAllocGeomProps. XkbAllocGeomProps Status XkbAllocGeomProps XkbGeometryPtr geom int num_needed geom geometry for which properties should be allocated num_needed number of new properties required XkbAllocGeomProps allocates space for num_needed properties and adds them to the specified geometry geom. No initialization of the properties is done. A geometry property associates an arbitrary string with an equally arbitrary name. Geometry properties can be used to provide hints to programs that display images of keyboards, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. To free geometry properties, use XkbFreeGeomProperties. XkbFreeGeomProperties void XkbFreeGeomProperties XkbGeometryPtr geom int first int count Bool free_all geom geometry in which properties should be freed first first property to be freed count number of properties to be freed free_all True ⇒ all properties are freed If free_all is True, all properties are freed regardless of the value of first or count. Otherwise, count properties are freed beginning with the one specified by first. To allocate geometry key aliases, use XkbAllocGeomKeyAliases. XkbAllocGeomKeyAliases Status XkbAllocGeomKeyAliases XkbGeometryPtr geom int num_needed geom geometry for which key aliases should be allocated num_needed number of new key aliases required XkbAllocGeomKeyAliases allocates space for num_needed key aliases and adds them to the specified geometry geom. A key alias is a pair of strings that associates an alternate name for a key with the real name for that key. To free geometry key aliases, use XkbFreeGeomKeyAliases. XkbFreeGeomKeyAliases void XkbFreeGeomKeyAliases XkbGeometryPtr geom int first int count Bool free_all geom geometry in which key aliases should be freed first first key alias to be freed count number of key aliases to be freed free_all True ⇒ all key aliases are freed If free_all is True, all aliases in the top level of the specified geometry geom are freed regardless of the value of first or count. Otherwise, count aliases in geom are freed beginning with the one specified by first. To allocate geometry colors, use XkbAllocGeomColors. XkbAllocGeomColors Status XkbAllocGeomColors XkbGeometryPtr geom int num_needed geom geometry for which colors should be allocated num_needed number of new colors required. XkbAllocGeomColors allocates space for num_needed colors and adds them to the specified geometry geom. A color name is a string whose interpretation is not specified by Xkb. All other geometry data structures refer to colors using their indices in this global list or pointers to colors in this list. To free geometry colors, use XkbFreeGeomColors. XkbFreeGeomColors void XkbFreeGeomColors XkbGeometryPtr geom int first int count Bool free_all geom geometry in which colors should be freed first first color to be freed count number of colors to be freed free_all True ⇒ all colors are freed If free_all is True, all colors are freed regardless of the value of first or count. Otherwise, count colors are freed beginning with the one specified by first. To allocate points in an outline, use XkbAllocGeomPoints. XkbAllocGeomPoints Status XkbAllocGeomPoints XkbOutlinePtr outline int num_needed outline outline for which points should be allocated num_needed number of new points required XkbAllocGeomPoints allocates space for num_needed points in the specified outline. The points are not initialized. To free points in a outline, use XkbFreeGeomPoints. XkbFreeGeomPoints void XkbFreeGeomPoints XkbOutlinePtr outline int first int count Bool free_all outline outline in which points should be freed first first point to be freed. count number of points to be freed free_all True ⇒ all points are freed If free_all is True, all points are freed regardless of the value of first and count. Otherwise, the number of points specified by count are freed, beginning with the point specified by first in the specified outline. To allocate space for an arbitrary number of geometry shapes, use XkbAllocGeomShapes. XkbAllocGeomShapes Status XkbAllocGeomShapes XkbGeometryPtr geom int num_needed geom geometry for which shapes should be allocated num_needed number of new shapes required XkbAllocGeomShapes allocates space for num_needed shapes in the specified geometry geom. The shapes are not initialized. To free geometry shapes, use XkbFreeGeomShapes. XkbFreeGeomShapes void XkbFreeGeomShapes XkbGeometryPtr geom int first int count Bool free_all geom geometry in which shapes should be freed first first shape to be freed count number of shapes to be freed free_all True ⇒ all shapes are freed If free_all is True, all shapes in the geometry are freed regardless of the values of first and count. Otherwise, count shapes are freed, beginning with the shape specified by first. To allocate geometry sections, use XkbAllocGeomSections. XkbAllocGeomSections Status XkbAllocGeomSections XkbGeometryPtr geom int num_needed geom geometry for which sections should be allocated num_needed number of new sections required XkbAllocGeomSections allocates num_needed sections and adds them to the geometry geom. No initialization of the sections is done. To free geometry sections, use XkbFreeGeomSections. XkbFreeGeomSections void XkbFreeGeomSections XkbGeometryPtr geom int first int count Bool free_all geom geometry in which sections should be freed first first section to be freed. count number of sections to be freed free_all True ⇒ all sections are freed If free_all is True, all sections are freed regardless of the value of first and count. Otherwise, the number of sections specified by count are freed, beginning with the section specified by first in the specified geometry. To allocate rows in a section, use XkbAllocGeomRows. XkbAllocGeomRows Status XkbAllocGeomRows XkbSectionPtr section int num_needed section section for which rows should be allocated num_needed number of new rows required XkbAllocGeomRows allocates num_needed rows and adds them to the section. No initialization of the rows is done. To free rows in a section, use XkbFreeGeomRows. XkbFreeGeomRows void XkbFreeGeomRows XkbSectionPtr section int first int count Bool free_all section section in which rows should be freed first first row to be freed. count number of rows to be freed free_all True ⇒ all rows are freed If free_all is True, all rows are freed regardless of the value of first and count. Otherwise, the number of rows specified by count are freed, beginning with the row specified by first in the specified section. To allocate overlays in a section, use XkbAllocGeomOverlays. XkbAllocGeomOverlays Status XkbAllocGeomOverlays XkbSectionPtr section int num_needed section section for which overlays should be allocated num_needed number of new overlays required XkbAllocGeomOverlays allocates num_needed overlays and adds them to the section. No initialization of the overlays is done. To free rows in an section, use XkbFreeGeomOverlays. XkbFreeGeomOverlays void XkbFreeGeomOverlays XkbSectionPtr section int first int count Bool free_all section section in which overlays should be freed first first overlay to be freed. count number of overlays to be freed free_all True ⇒ all overlays are freed If free_all is True, all overlays are freed regardless of the value of first and count. Otherwise, the number of overlays specified by count are freed, beginning with the overlay specified by first in the specified section. To allocate rows in a overlay, use XkbAllocGeomOverlayRows. XkbAllocGeomOverlayRows Status XkbAllocGeomOverlayRows XkbOverlayPtr overlay int num_needed overlay overlay for which rows should be allocated num_needed number of new rows required XkbAllocGeomOverlayRows allocates num_needed rows and adds them to the overlay. No initialization of the rows is done. To free rows in an overlay, use XkbFreeGeomOverlayRows. XkbFreeGeomOverlayRows void XkbFreeGeomOverlayRows XkbSectionPtr overlay int first int count Bool free_all overlay section in which rows should be freed first first row to be freed. count number of rows to be freed free_all True ⇒ all rows are freed If free_all is True, all rows are freed regardless of the value of first and count. Otherwise, the number of rows specified by count are freed, beginning with the row specified by first in the specified overlay. To allocate keys in an overlay row, use XkbAllocGeomOverlayKeys. XkbAllocGeomOverlayKeys Status XkbAllocGeomOverlayKeys XkbOverlayRowPtr row int num_needed row row for which keys should be allocated num_needed number of new rows required XkbAllocGeomOverlayKeys allocates num_needed keys and adds them to the row. No initialization of the keys is done. To free keys in an overlay row, use XkbFreeGeomOverlayKeys. XkbFreeGeomOverlayKeys void XkbFreeGeomOverlayKeys XkbOverlayRowPtr row int first int count Bool free_all row row in which keys should be freed first first key to be freed. count number of keys to be freed free_all True ⇒ all keys are freed If free_all is True, all keys are freed regardless of the value of first and count. Otherwise, the number of keys specified by count are freed, beginning with the key specified by first in the specified row. To allocate doodads that are global to a keyboard geometry, use XkbAllocGeomDoodads. XkbAllocGeomDoodads Status XkbAllocGeomDoodads XkbGeometryPtr geom int num_needed geom geometry for which doodads should be allocated num_needed number of new doodads required XkbAllocGeomDoodads allocates num_needed doodads and adds them to the specified geometry geom. No initialization of the doodads is done. To allocate doodads that are specific to a section, use XkbAllocGeomSectionDoodads. XkbAllocGeomSectionDoodads Status XkbAllocGeomSectionDoodads XkbSectionPtr section int num_needed section section for which doodads should be allocated num_needed number of new doodads required XkbAllocGeomSectionDoodads allocates num_needed doodads and adds them to the specified section. No initialization of the doodads is done. To free geometry doodads, use XkbFreeGeomDoodads. XkbFreeGeomDoodads void XkbFreeGeomDoodads XkbDoodadPtr doodads int count Bool free_all doodads doodads to be freed count number of doodads to be freed free_all True ⇒ all doodads are freed If free_all is True, all doodads in the array are freed, regardless of the value of count. Otherwise, count doodads are freed. To allocate an entire geometry, use XkbAllocGeometry. XkbAllocGeometry Status XkbAllocGeometry XkbDescPtr xkb XkbGeometrySizesPtr sizes xkb keyboard description for which geometry is to be allocated sizes initial sizes for all geometry components XkbAllocGeometry allocates a keyboard geometry and adds it to the keyboard description specified by xkb. The keyboard description should be obtained via the XkbGetKeyboard or XkbAllockeyboard functions. The sizes parameter specifies the number of elements to be reserved for the subcomponents of the keyboard geometry and can be zero or more. These subcomponents include the properties, colors, shapes, sections, and doodads. To free an entire geometry, use XkbFreeGeometry. XkbFreeGeometry void XkbFreeGeometry XkbGeometryPtr geom unsigned int which Bool free_all geom geometry to be freed which mask of geometry components to be freed free_all True ⇒ the entire geometry is freed. The values of which and free_all determine how much of the specified geometry is freed. The valid values for which are: #define XkbGeomPropertiesMask (1<<0) #define XkbGeomColorsMask (1<<1) #define XkbGeomShapesMask (1<<2) #define XkbGeomSectionsMask (1<<3) #define XkbGeomDoodadsMask (1<<4) #define XkbGeomAllMask (0x1f) If free_all is True, the entire geometry is freed regardless of the value of which. Otherwise, the portions of the geometry specified by which are freed.
libX11-1.8.12/specs/XKB/ch14.xml0000644014310600000120000014615414763154126011362 Xkb Keyboard Mapping The Xkb keyboard mapping contains all the information the server and clients need to interpret key events. This chapter provides an overview of the terminology used to describe an Xkb keyboard mapping and introduces common utilities for manipulating the keyboard mapping. The mapping consists of two components, a server map and a client map. The client map client map mapclient is the collection of information a client needs to interpret key events from the keyboard. It contains a global list of key types and an array of key symbol maps, each of which describes the symbols bound to a key and the rules to be used to interpret those symbols. The server map server map mapserver contains the information the server needs to interpret key events. This includes actions and behaviors for each key, explicit components for a key, and the virtual modifiers and the per-key virtual modifier mapping. For detailed information on particular components of the keyboard map, refer to , and . Notation and Terminology level shift level The graphic characters or control functions that may be accessed by one key are logically arranged in groups and levels, where group and level are defined as in the ISO9995 standard: Group: A logical state of a keyboard providing access to a collection of graphic characters. Usually these graphic characters logically belong together and may be arranged on several levels within a group. Level: One of several states (normally 2 or 3) governing which graphic character is produced when a graphic key is actuated. In certain cases the level may also affect function keys. These definitions, taken from the ISO standard, refer to graphic keys and characters. In the context of Xkb, Group and Level are not constrained to graphic keys and characters; they may be used with any key to access any character the key is capable of generating. Level is often referred to as Shift Level. Levels are numbered sequentially starting at one. Shift level is derived from the modifier state, but not necessarily in the same way for all keys. For example, the Shift modifier selects shift level 2 on most keys, but for keypad keys the modifier bound to Num_Lock (that is, the NumLock virtual modifier) also selects shift level 2. For example, consider the following key (the gray characters indicate symbols that are implied or expected but are not actually engraved on the key):
Shift Levels and Groups
This key has two groups, indicated by the columns, and each group has two shift levels. For the first group (Group1), the symbol shift level one is a, and the symbol for shift level two is A. For the second group, the symbol for shift level one is æ, and the symbol for shift level two is Æ. Core Implementation The standard interpretation rules for the core X keymap only allow clients to access keys such as the one shown in Figure 14.1. That is, clients using the standard interpretation rules can only access one of four keysyms for any given KeyPress event — two different symbols in two different groups. In general, the Shift modifier, the Lock modifier, and the modifier bound to the Num_Lock key are used to change between shift level 1 and shift level 2. To switch between groups, the core implementation uses the modifier bound to the Mode_switch key. When the Mode_switch modifier is set, the keyboard is logically in Group 2. When the Mode_switch modifier is not set, the keyboard is logically in Group 1. The core implementation does not clearly specify the behavior of keys. For example, the locking behavior of the CapsLock and Num_Lock keys depends on the vendor. Xkb Implementation Xkb extends the core implementation by providing access to up to four keyboard groups with up to 63 shift levels per key The core implementation restricts the number of symbols per key to 255. With four groups, this allows for up to 63 symbols (or shift levels) per group. Most keys will only have a few shift levels. . In addition, Xkb provides precise specifications regarding the behavior of keys. In Xkb, modifier state and the current group are independent (with the exception of compatibility mapping, discussed in ). Xkb handles switching between groups via key actions, independent of any modifier state information. Key actions are in the server map component and are described in detail in section 16.1.4. Xkb handles shift levels by associating a key type with each group on each key. Each key type defines the shift levels available for the groups on keys of its type and specifies the modifier combinations necessary to access each level. For example, Xkb allows key types where the Control modifier can be used to access the shift level two of a key. Key types are in the client map component and are described in detail in section 15.2. Xkb provides precise specification of the behavior of a key using key behaviors. Key behaviors are in the server map component and are described in detail in section 16.2.
Getting Map Components from the Server Xkb provides two functions to obtain the keyboard mapping components from the server. The first function, XkbGetMap, allocates an XkbDescRec structure, retrieves mapping components from the server, and stores them in the XkbDescRec structure it just allocated. The second function, XkbGetUpdatedMap, retrieves mapping components from the server and stores them in an XkbDescRec structure that has previously been allocated. To allocate an XkbDescRec structure and populate it with the server’s keyboard client map and server map, use XkbGetMap. XkbGetMap is similar to XkbGetKeyboard (see section 6.2), but is used only for obtaining the address of an XkbDescRec structure that is populated with keyboard mapping components. It allows finer control over which substructures of the keyboard mapping components are to be populated. XkbGetKeyboard always returns fully populated components, while XkbGetMap can be instructed to return a partially populated component. XkbGetMap XkbDescPtr XkbGetMap Display *display unsigned int which unsigned int device_spec display connection to X server which mask selecting subcomponents to populate device_spec device_id, or XkbUseCoreKbd The which mask is a bitwise inclusive OR of the masks defined in Table 14.1. Only those portions of the keyboard server map and the keyboard client maps that are specified in which are allocated and populated. In addition to allocating and obtaining the server map and the client map, XkbGetMap also sets the device_spec, the min_key_code, and max_key_code fields of the keyboard description. XkbGetMap is synchronous; it queries the server for the desired information, waits for a reply, and then returns. If successful, XkbGetMap returns a pointer to the XkbDescRec structure it allocated. If unsuccessful, XkbGetMap returns NULL. When unsuccessful, one of the following protocol errors is also generated: BadAlloc (unable to allocate the XkbDescRec structure), BadValue (some mask bits in which are undefined), or BadImplementation (a compatible version of the Xkb extension is not available in the server). To free the returned data, use XkbFreeClientMap. Xkb also provides convenience functions to get partial component definitions from the server. These functions are specified in the convenience functions column in Table 14.1. Refer to the sections listed in the table for more information on these functions. Xkb Mapping Component Masks and Convenience Functions Mask Value Map Fields Convenience Functions Section XkbKeyTypesMask (1<<0) client types size_types num_types XkbGetKeyTypes XkbResizeKeyType XkbCopyKeyType XkbCopyKeyTypes 15.2 XkbKeySymsMask (1<<1) client syms size_syms num_syms key_sym_map XkbGetKeySyms XkbResizeKeySyms XkbChangeTypes­OfKey 15.3 XkbModifierMapMask (1<<2) client modmap XkbGetKeyModifier­Map 15.4 XkbExplicitComponentsMask (1<<3) server explicit XkbGetKeyExplicit­Components 16.3 XkbKeyActionsMask (1<<4) server key_acts acts num_acts size_acts XkbGetKeyActions XkbResizeKey­Actions 16.1 XkbKeyBehaviorsMask (1<<5) server behaviors XkbGetKey­Behaviors 16.2 XkbVirtualModsMask (1<<6) server vmods XkbGetVirtualMods 16.4 XkbVirtualModMapMask (1<<7) server vmodmap XkbGetVirtualMod­Map 16.4
Xkb defines combinations of these masks for convenience: #define XkbResizableInfoMask (XkbKeyTypesMask) #define XkbAllClientInfoMask (XkbKeyTypesMask | XkbKeySymsMask | XkbModifierMapMask) #define XkbAllServerInfoMask (XkbExplicitComponentsMask | XkbKeyActionsMask| XkbKeyBehaviorsMask | XkbVirtualModsMask | XkbVirtualModMapMask) #define XkbAllMapComponentsMask (XkbAllClientInfoMask|XkbAllServerInfoMask) Key types, symbol maps, and actions are all interrelated: changes in one require changes in the others. The convenience functions make it easier to edit these components and handle the interdependencies. To update the client or server map information in an existing keyboard description, use XkbGetUpdatedMap. XkbGetUpdatedMap Status XkbGetUpdatedMap Display *display unsigned int which XkbDescPtr xkb display connection to X server which mask selecting subcomponents to populate xkb keyboard description to be updated The which parameter is a bitwise inclusive OR of the masks in Table 14.1. If the needed components of the xkb structure are not already allocated, XkbGetUpdatedMap allocates them. XkbGetUpdatedMap fetches the requested information for the device specified in the XkbDescRec passed in the xkb parameter. XkbGetUpdatedMap is synchronous; it queries the server for the desired information, waits for a reply, and then returns. If successful, XkbGetUpdatedMap returns Success. If unsuccessful, XkbGetUpdatedMap returns one of the following: BadAlloc (unable to allocate a component in the XkbDescRec structure), BadValue (some mask bits in which are undefined), BadImplementation (a compatible version of the Xkb extension is not available in the server or the reply from the server was invalid).
Changing Map Components in the Server There are two ways to make changes to map components: either change a local copy of the keyboard map and call XkbSetMap to send the modified map to the server, or, to reduce network traffic, use an XkbMapChangesRec structure and call XkbChangeMap. XkbSetMap Bool XkbSetMap Display *dpy unsigned int which XkbDescPtr xkb dpy connection to X server which mask selecting subcomponents to update xkb description from which new values are taken Use XkbSetMap to send a complete new set of values for entire components (for example, all symbols, all actions, and so on) to the server. The which parameter specifies the components to be sent to the server, and is a bitwise inclusive OR of the masks listed in Table 14.1. The xkb parameter is a pointer to an XkbDescRec structure and contains the information to be copied to the server. For each bit set in the which parameter, XkbSetMap takes the corresponding structure values from the xkb parameter and sends it to the server specified by dpy. If any components specified by which are not present in the xkb parameter, XkbSetMap returns False. Otherwise, it sends the update request to the server and returns True. XkbSetMap can generate BadAlloc, BadLength, and BadValue protocol errors. Key types, symbol maps, and actions are all interrelated; changes in one require changes in the others. Xkb provides functions to make it easier to edit these components and handle the interdependencies. Table 14.1 lists these helper functions and provides a pointer to where they are defined. The XkbMapChangesRec Structure XkbMapChangesRec Use the XkbMapChangesRec structure to identify and track partial modifications to the mapping components and to reduce the amount of traffic between the server and clients. typedef struct _XkbMapChanges { unsigned short changed; /* identifies valid components in structure */ KeyCode min_key_code; /* lowest numbered keycode for device */ KeyCode max_key_code; /* highest numbered keycode for device */ unsigned char first_type; /* index of first key type modified */ unsigned char num_types; /* # types modified */ KeyCode first_key_sym; /* first key whose key_sym_map changed */ unsigned char num_key_syms; /* # key_sym_map entries changed */ KeyCode first_key_act; /* first key whose key_acts entry changed */ unsigned char num_key_acts; /* # key_acts entries changed */ KeyCode first_key_behavior; /* first key whose behaviors changed */ unsigned char num_key_behaviors; /* # behaviors entries changed */ KeyCode first_key_explicit; /* first key whose explicit entry changed */ unsigned char num_key_explicit; /* # explicit entries changed */ KeyCode first_modmap_key; /* first key whose modmap entry changed */ unsigned char num_modmap_keys; /* # modmap entries changed */ KeyCode first_vmodmap_key; /* first key whose vmodmap changed */ unsigned char num_vmodmap_keys; /* # vmodmap entries changed */ unsigned char pad1; /* reserved */ unsigned short vmods; /* mask indicating which vmods changed */ } XkbMapChangesRec, *XkbMapChangesPtr; The changed field identifies the map components that have changed in an XkbDescRec structure and may contain any of the bits in Table 14.1, which are also shown in Table 14.2. Every 1 bit in changed also identifies which other fields in the XkbMapChangesRec structure contain valid values, as indicated in Table 14.2. The min_key_code and max_key_code fields are for reference only; they are ignored on any requests sent to the server and are always updated by the server whenever it returns the data for an XkbMapChangesRec. XkbMapChangesRec Masks Mask Valid XkbMapChangesRec Fields XkbDescRec Field Containing Changed Data XkbKeyTypesMask first_type, num_types map->type[first_type] .. map->type[first_type + num_types - 1] XkbKeySymsMask first_key_sym, num_key_syms map->key_sym_map[first_key_sym] .. map->key_sym_map[first_key_sym + num_key_syms - 1] XkbModifierMapMask first_modmap_key, num_modmap_keys map->modmap[first_modmap_key] .. map->modmap[first_modmap_key + num_modmap_keys - 1] XkbExplicitComponentsMask first_key_explicit, num_key_explicit server->explicit[first_key_explicit] .. server->explicit[first_key_explicit + num_key_explicit - 1] XkbKeyActionsMask first_key_act, num_key_acts server->key_acts[first_key_act] .. server->key_acts[first_key_act + num_key_acts - 1] XkbKeyBehaviorsMask first_key_behavior, num_key_behaviors server->behaviors[first_key_behavior] .. server->behaviors[first_key_behavior + num_key_behaviors - 1] XkbVirtualModsMask vmods server->vmods[*] XkbVirtualModMapMask first_vmodmap_key, num_vmodmap_keys server->vmodmap[first_vmodmap_key] .. server->vmodmap[first_vmodmap_key + num_vmodmap_keys - 1]
To update only partial components of a keyboard description, modify the appropriate fields in the server and map components of a local copy of the keyboard description, then call XkbChangeMap with an XkbMapChangesRec structure indicating which components have changed. XkbChangeMap Bool XkbChangeMap Display *dpy XkbDescPtr xkb XkbMapChangesPtr changes dpy connection to X server xkb description from which new values are taken changes identifies component parts to update XkbChangeMap copies any components specified by the changes structure from the keyboard description, xkb, to the X server specified by dpy. If any components specified by changes are not present in the xkb parameter, XkbChangeMap returns False. Otherwise, it sends a request to the server and returns True. XkbChangeMap can generate BadAlloc, BadLength, and BadValue protocol errors.
Tracking Changes to Map Components eventsXkbMapNotify XkbMapNotifyEvent The Xkb extension reports XkbMapNotify events to clients wanting notification whenever a map component of the Xkb description for a device changes. There are many different types of Xkb keyboard map changes. Xkb uses an event detail mask to identify each type of change. The event detail masks are identical to the masks listed in Table 14.1. To receive XkbMapNotify events under all possible conditions, use XkbSelectEvents (see section 4.3) and pass XkbMapNotifyMask in both bits_to_change and values_for_bits. To receive XkbMapNotify events only under certain conditions, use XkbSelectEventDetails using XkbMapNotify as the event_type and specifying the desired map changes in bits_to_change and values_for_bits using mask bits from Table 14.1. The structure for XkbMapNotify events is: typedef struct { int type; /* Xkb extension base event code */ unsigned long serial; /* X server serial number for event */ Bool send_event; /* True ⇒ synthetically generated */ Display * display; /* server connection where event generated */ Time time; /* server time when event generated */ int xkb_type; /* XkbMapNotify */ int device; /* Xkb device ID, will not be XkbUseCoreKbd */ unsigned int changed; /* identifies valid fields in rest of event */ unsigned int resized; /* reserved */ int first_type; /* index of first key type modified */ int num_types /* # types modified */ KeyCode min_key_code; /* minimum keycode for device */ KeyCode max_key_code; /* maximum keycode for device */ KeyCode first_key_sym; /* first key whose key_sym_map changed */ KeyCode first_key_act; /* first key whose key_acts entry changed */ KeyCode first_key_behavior; /* first key whose behaviors changed */ KeyCode first_key_explicit; /* first key whose explicit entry changed */ KeyCode first_modmap_key; /* first key whose modmap entry changed */ KeyCode first_vmodmap_key; /* first key whose vmodmap entry changed */ int num_key_syms; /* # key_sym_map entries changed */ int num_key_acts; /* # key_acts entries changed */ int num_key_behaviors; /* # behaviors entries changed */ int num_key_explicit; /* # explicit entries changed */ int num_modmap_keys; /* # modmap entries changed */ int num_vmodmap_keys; /* # vmodmap entries changed */ unsigned int vmods; /* mask indicating which vmods changed */ } XkbMapNotifyEvent; The changed field specifies the map components that have changed and is the bitwise inclusive OR of the mask bits defined in Table 14.1. The other fields in this event are interpreted as the like-named fields in an XkbMapChangesRec (see section 14.3.1). The XkbMapNotifyEvent structure also has an additional resized field that is reserved for future use. Allocating and Freeing Client and Server Maps Calling XkbGetMap (see section 14.2) should be sufficient for most applications to get client and server maps. As a result, most applications do not need to directly allocate client and server maps. If you change the number of key types or construct map components without loading the necessary components from the X server, do not allocate any map components directly using malloc or Xmalloc. Instead, use the Xkb allocators, XkbAllocClientMap, and XkbAllocServerMap. Similarly, use the Xkb destructors, XkbFreeClientMap, and XkbFreeServerMap instead of free or Xfree. Allocating an Empty Client Map To allocate and initialize an empty client map description record, use XkbAllocClientMap. XkbAllocClientMap Status XkbAllocClientMap XkbDescPtr xkb unsigned int which unsigned int type_count xkb keyboard description in which to allocate client map which mask selecting map components to allocate type_count value of num_types field in map to be allocated XkbAllocClientMap allocates and initializes an empty client map in the map field of the keyboard description specified by xkb. The which parameter specifies the particular components of the client map structure to allocate and is a mask composed by a bitwise inclusive OR of one or more of the masks shown in Table 14.3. XkbAllocClientMap Masks Mask Effect XkbKeyTypesMask The type_count field specifies the number of entries to preallocate for the types field of the client map. If the type_count field is less than XkbNumRequiredTypes (see section 15.2.1), returns BadValue. XkbKeySymsMask The min_key_code and max_key_code fields of the xkb parameter are used to allocate the syms and key_sym_map fields of the client map. The fields are allocated to contain the maximum number of entries necessary for max_key_codemin_key_code + 1 keys. XkbModifierMapMask The min_key_code and max_key_code fields of the xkb parameter are used to allocate the modmap field of the client map. The field is allocated to contain the maximum number of entries necessary for max_key_codemin_key_code + 1 keys.
The min_key_code and max_key_code fields of the xkb parameter must be legal values if the XkbKeySymsMask or XkbModifierMapMask masks are set in the which parameter. If they are not valid, XkbAllocClientMap returns BadValue. If the client map of the keyboard description is not NULL, and any fields are already allocated in the client map, XkbAllocClientMap does not overwrite the existing values; it simply ignores that part of the request. The only exception is the types array. If type_count is greater than the current num_types field of the client map, XkbAllocClientMap resizes the types array and resets the num_types field accordingly. If XkbAllocClientMap is successful, it returns Success. Otherwise, it can return either BadMatch, BadAlloc, or BadValue errors.
Freeing a Client Map To free memory used by the client map member of an XkbDescRec structure, use XkbFreeClientMap. XkbFreeClientMap void XkbFreeClientMap XkbDescPtr xkb unsigned int which Bool free_all xkb keyboard description containing client map to free which mask identifying components of map to free free_all True ⇒ free all client components and map itself XkbFreeClientMap frees the components of client map specified by which in the XkbDescRec structure specified by the xkb parameter and sets the corresponding structure component values to NULL. The which parameter specifies a combination of the client map masks shown in Table 14.3. If free_all is True, which is ignored; XkbFreeClientMap frees every non- NULL structure component in the client map, frees the XkbClientMapRec structure referenced by the map member of the xkb parameter, and sets the map member to NULL. Allocating an Empty Server Map To allocate and initialize an empty server map description record, use XkbAllocServerMap. XkbAllocServerMap Status XkbAllocServerMap XkbDescPtr xkb unsigned int which unsigned int count_acts xkb keyboard description in which to allocate server map which mask selecting map components to allocate count_acts value of num_acts field in map to be allocated XkbAllocServerMap allocates and initializes an empty server map in the server field of the keyboard description specified by xkb. The which parameter specifies the particular components of the server map structure to allocate, as specified in Table 14.4. XkbAllocServerMap Masks Mask Effect XkbExplicitComponentsMask The min_key_code and max_key_code fields of the xkb parameter are used to allocate the explicit field of the server map. XkbKeyActionsMask The min_key_code and max_key_code fields of the xkb parameter are used to allocate the key_acts field of the server map. The count_acts parameter is used to allocate the acts field of the server map. XkbKeyBehaviorsMask The min_key_code and max_key_code fields of the xkb parameter are used to allocate the behaviors field of the server map. XkbVirtualModMapMask The min_key_code and max_key_code fields of the xkb parameter are used to allocate the vmodmap field of the server map.
The min_key_code and max_key_code fields of the xkb parameter must be legal values. If they are not valid, XkbAllocServerMap returns BadValue. If the server map of the keyboard description is not NULL and any fields are already allocated in the server map, XkbAllocServerMap does not overwrite the existing values. The only exception is with the acts array. If the count_acts parameter is greater than the current num_acts field of the server map, XkbAllocServerMap resizes the acts array and resets the num_acts field accordingly. If XkbAllocServerMap is successful, it returns Success. Otherwise, it can return either BadMatch or BadAlloc errors.
Freeing a Server Map To free memory used by the server member of an XkbDescRec structure, use XkbFreeServerMap. XkbFreeServerMap void XkbFreeServerMap XkbDescPtr xkb unsigned int which Bool free_all xkb keyboard description containing server map to free which mask identifying components of map to free free_all True ⇒ free all server map components and server itself The XkbFreeServerMap function frees the specified components of server map in the XkbDescRec structure specified by the xkb parameter and sets the corresponding structure component values to NULL. The which parameter specifies a combination of the server map masks and is a bitwise inclusive OR of the masks listed in Table 14.4. If free_all is True, which is ignored and XkbFreeServerMap frees every non- NULL structure component in the server map, frees the XkbServerMapRec structure referenced by the server member of the xkb parameter, and sets the server member to NULL.
libX11-1.8.12/specs/XKB/XKBlib-14.svg0000644014310600000120000010670314763154126012153 image/svg+xml Core Symbols A a L1 L2 L1 L2 G1 G2 Xkb Symbols A a L1 L2 G1 G2 Symbols a G1L1 = A G1L2 = G2L1 = G2L2 = Physical Key Shift Level Group a A libX11-1.8.12/specs/XKB/xkblib.xml0000644014310600000120000001145414763154126012070 %defs; ]> The X Keyboard Extension: Library Specification X Version 11, Release &fullrelvers; Amber J. Benson Gary Aitken Erik Fortune Silicon Graphics, Inc Donna Converse X Consortium, Inc George Sachs Hewlett-Packard Company Will Walker Digital Equipment Corporation 19951996 X Consortium Inc. Silicon Graphics Inc. Hewlett-Packard Company Digital Equipment 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 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 X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the names of the X Consortium, Silicon Graphics Inc., Hewlett-Packard Company, and Digital Equipment Corporation shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization. libX11-1.8.12/specs/XKB/XKBlib-13.svg0000644014310600000120000002053014763154126012143 image/svg+xml actual keysurface approximateoutline primaryoutline detailedoutline boundingbox outline array libX11-1.8.12/specs/XKB/glossary.xml0000644014310600000120000007304514763154126012464 Glossary Allocator Xkb provides functions, known as allocators, to create and initialize Xkb data structures. Audible Bell An audible bell is the sound generated by whatever bell is associated with the keyboard or input extension device, as opposed to any other audible sound generated elsewhere in the system. Autoreset Controls The autoreset controls configure the boolean controls to automatically be enabled or disabled at the time a program exits. Base Group The group in effect as a result of all actions other than a previous lock or latch request; the base group is transient. For example, the user pressing and holding a group shift key that shifts to Group2 would result in the base group being group 2 at that point in time. Initially, base group is always Group1. Base Modifiers Modifiers that are turned on as a result of some actions other than previous lock or latch requests; base modifiers are transient. For example, the user pressing and holding a key bound to the Shift modifier would result in Shift being a base modifier at that point in time. Base Event Code A number assigned by the X server at run time that is assigned to the extension to identify events from that extension. Base State The base group and base modifiers represent keys that are physically or logically down; these constitute the base state. Boolean Controls Global keyboard controls that may be selectively enabled and disabled under program control and that may be automatically set to an on or off condition upon client program exit. Canonical Key Types The canonical key types are predefined key types that describe the types of keys available on most keyboards. The definitions for the canonical key types are held in the first XkbNumRequiredTypes entries of the types field of the client map and are indexed using the following constants: XkbOneLevelIndex XkbTwoLevelIndex XkbAlphabeticIndex XkbKeypadIndex Client Map The key mapping information needed to convert arbitrary keycodes to symbols. Compat Name The compat name is a string that provides some information about the rules used to bind actions to keys that are changed using core protocol requests. Compatibility State When an Xkb-extended X server connects to an Xkb-unaware client, the compatibility state remaps the keyboard group into a core modifier whenever possible. Compatibility Grab State The grab state that results from applying the compatibility map to the Xkb grab state. Compatibility Map The definition of how to map core protocol keyboard state to Xkb keyboard state. Component Expression An expression used to describe server keyboard database components to be loaded. It describes the order in which the components should be loaded and the rules by which duplicate attributes should be resolved. Compose Processing The process of mapping a series of keysyms to a string is known as compose processing. Consumed Modifier Xkb normally consumes modifiers in determining the appropriate symbol for an event, that is, the modifiers are not considered during any of the later stages of event processing. For those rare occasions when a modifier should be considered despite having been used to look up a symbol, key types include an optional preserve field. Core Event An event created from the core X server. Detectable Auto-Repeat Detectable auto-repeat allows a client to detect an auto-repeating key. If a client requests and the server supports detectable auto-repeat, Xkb generates KeyRelease events only when the key is physically released. Thus the client receives a number of KeyPress events for that key without intervening KeyRelease events until the key is finally released, when a KeyRelease event is received. Effective Group The effective group is the arithmetic sum of the locked, latched, and base groups. The effective keyboard group is always brought back into range depending on the value of the GroupsWrap control for the keyboard. If an event occurs with an effective group that is legal for the keyboard as a whole, but not for the key in question, the group for that event only is normalized using the algorithm specified by the group_info member of the key symbol map (XkbSymMapRec). Effective Mask An Xkb modifier definition consists of a set of bit masks corresponding to the eight real modifiers; a similar set of bitmasks corresponding to the 16 named virtual modifiers; and an effective mask. The effective mask represents the set of all real modifiers that can logically be set either by setting any of the real modifiers or by setting any of the virtual modifiers in the definition. Effective Modifier The effective modifiers are the bitwise union of the base, latched and locked modifiers. Extension Device Any keyboard or other input device recognized by the X input extension. Global Keyboard Controls Controls that affect the way Xkb generates key events. The controls affect all keys, as opposed to per-key controls that are for a single key. Global controls include RepeatKeys Control DetectableAuto-repeat SlowKeys BounceKeys StickyKeys MouseKeys MouseKeysAccel AccessXKeys AccessXTimeout AccessXFeedback Overlay1 Overlay2 EnabledControls Grab State The grab state is the state used when matching events to passive grabs. It consists of the grab group and the grab modifiers. Group See Keysym Group Group Index A number used as the internal representation for a group number. Group1 through Group 4 have indices of 0 through 3. Groups Wrap Control If a group index exceeds the maximum number of groups permitted for the specified keyboard, it is wrapped or truncated back into range as specified by the global GroupsWrap control. GroupsWrap can have the following values: WrapIntoRange ClampIntoRange RedirectIntoRange Key Type An attribute of a key that identifies which modifiers affect the shift level of a key and the number of groups on the key. Key Width The maximum number of shift levels in any group for the key type associated with a key. Keysym Group A keysym group is a logical state of the keyboard providing access to a collection of characters. A group usually contains a set of characters that logically belong together and that may be arranged on several shift levels within that group. For example, Group1 could be the English alphabet, and Group2 could be Greek. Xkb supports up to four different groups for an input device or keyboard. Groups are in the range 1–4 (Group1–Group4), and are often referred to as G1–G4 and indexed as 0–3. Indicator An indicator is a feedback mechanism such as an LED on an input device. Using Xkb, a client application can determine the names of the various indicators, determine and control the way that the individual indicators should be updated to reflect keyboard changes, and determine which of the 32 keyboard indicators reported by the protocol are actually present on the keyboard. Indicator Feedback An indicator feedback describes the state of a bank of up to 32 lights. It has a mask where each bit corresponds to a light and an associated value mask that specifies which lights are on or off. Indicator Map An indicator has its own set of attributes that specify whether clients can explicitly set its state and whether it tracks the keyboard state. The indicator map is the collection of these attributes for each indicator and is held in the maps array, which is an array of XkbIndicatorRec structures. Input Extension An extension to the core X protocol that allows an X server to support multiple keyboards, as well as other input devices, in addition to the core X keyboard and pointer. Other types of devices supported by the input extension include, but are not limited to: mice, tablets, touchscreens, barcode readers, button boxes, trackballs, identifier devices, data gloves, and eye trackers. Key Action A key action consists of an operator and some optional data. Once the server has applied the global controls and per-key behavior and has decided to process a key event, it applies key actions to determine the effects of the key on the internal state of the server. Xkb supports actions that do the following: Change base, latched, or locked modifiers or group Move the core pointer or simulate core pointer button events Change most aspects of keyboard behavior Terminate or suspend the server Send a message to interested clients Simulate events on other keys Key Alias A key alias is a symbolic name for a specific physical key. Key aliases allow the keyboard layout designer to assign multiple key names to a single key. This allows the keyboard layout designer to refer to keys using either their position or their function. Key aliases can be specified both in the symbolic names component and in the keyboard geometry. Both sets of aliases are always valid, but key alias definitions in the keyboard geometry have priority; if both symbolic names and geometry include aliases, you should consider the definitions from the geometry before considering the definitions from the symbolic names section. Key Behavior The behaviors field of the server map is an array of XkbBehavior, indexed by keycode, and contains the behavior for each key. The X server uses key behavior to determine whether to process or filter out any given key event; key behavior is independent of keyboard modifier or group state. Each key has exactly one behavior. Key behaviors include: XkbKB_Default XkbKB_Lock XkbKB_RadioGroup XkbKB_Overlay1 XkbKB_Overlay2 Key Symbol Map A key symbol map describes the symbols bound to a key and the rules to be used to interpret those symbols. It is an array of XkbSymMapRec structures indexed by keycode. Key Type Key types are used to determine the shift level of a key given the current state of the keyboard. There is one key type for each group for a key. Key types are defined using the XkbKeyTypeRec and XkbKTMapEntryRec structures. Xkb allows up to XkbMaxKeyTypes (255) key types to be defined, but requires at least XkbNumRequiredTypes (4) predefined types to be in a key map. Keyboard Bells The sound the default bell makes when rung is the system bell or the default keyboard bell. Some input devices may have more than one bell, identified by bell_class and bell_id. Keyboard Components There are five types of components stored in the X server database of keyboard components. They correspond to the >symbols, geometry, keycodes, compat, and types symbolic names associated with a keyboard. Keyboard Feedback A keyboard feedback includes the following: Keyclick volume Bell volume Bell pitch Bell duration Global auto-repeat Per key auto-repeat 32 LEDs Key Width, Key Type Width The maximum number of shift levels for a type is referred to as the width of a key type. Keyboard Geometry Keyboard geometry describes the physical appearance of the keyboard, including the shape, location, and color of all keyboard keys or other visible keyboard components such as indicators and is stored in a XkbGeometryRec structure. The information contained in a keyboard geometry is sufficient to allow a client program to draw an accurate two-dimensional image of the keyboard. Keyboard Geometry Name The keyboard geometry name describes the physical location, size, and shape of the various keys on the keyboard and is part of the XkbNamesRec structure. Keyboard State Keyboard state encompasses all of the transitory information necessary to map a physical key press or release to an appropriate event. Keycode A numeric value returned to the X server when a key on a keyboard is pressed or released, indicating which key is being modulated. Keycode numbers are in the range 1 <= keycode <= max, where max is the number of physical keys on the device. Keycode Name The keycode name describes the range and meaning of the keycodes returned by the keyboard and is part of the XkbNamesRec structure. Latched Group A latched group is a group index that is combined with the base and locked group to form the effective group. It applies only to the next key event that does not change the keyboard state. The latched group can be changed by keyboard activity or via Xkb extension library functions. Latched Modifier Latched modifiers are the set of modifiers that are combined with the base modifiers and the locked modifiers to form the effective modifiers. It applies only to the next key event that does not change the keyboard state. LED A light emitting diode. However, for the purposes of the X keyboard extension specification, a LED is any form of visual two-state indicator that is either on or off. Locked Group A locked group is a group index that is combined with the base and latched group to form the effective group. When a group is locked, it supersedes any previous locked group and remains the locked group for all future key events, until a new group is locked. The locked group can be changed by keyboard activity or via Xkb extension library functions. Locked Modifiers Locked modifiers are the set of modifiers that are combined with the base modifiers and the latched modifiers to form the effective modifiers. A locked modifier applies to all future key events until it is explicitly unlocked. Lookup State The lookup state is composed of the lookup group and the lookup modifiers, and it is the state an Xkb-capable or Xkb-aware client should use to map a keycode to a keysym. Modifier A modifier is a logical condition that is either set or unset. The modifiers control the Shift Level selected when a key event occurs. Xkb supports the core protocol eight modifiers (Shift, Lock, Control, and Mod1 through Mod5), called the real modifiers. In addition, Xkb extends modifier flexibility by providing a set of sixteen named virtual modifiers, each of which can be bound to any set of the eight real modifiers. Modifier Key A modifier key is a key whose operation has no immediate effect, but that, for as long as it is held down, modifies the effect of other keys. A modifier key may be, for example, a shift key or a control key. Modifier Definition An Xkb modifier definition, held in an XkbModsRec, consists of a set of real modifiers, a set of virtual modifiers, and an effective mask. The mask is the union of the real modifiers and the set of real modifiers to which the virtual modifiers map; the mask cannot be explicitly changed. Nonkeyboard Extension Device An input extension device that is not a keyboard. Other types of devices supported by the input extension include, but are not limited to: mice, tablets, touchscreens, barcode readers, button boxes, trackballs, identifier devices, data gloves, and eye trackers. Outlines An outline is a list of one or more points that describes a single closed polygon, used in the geometry specification for a keyboard. Physical Indicator Mask The physical indicator mask is a field in the XkbIndicatorRec that indicates which indicators are bound to physical LEDs on the keyboard; if a bit is set in phys_indicators, then the associated indicator has a physical LED associated with it. This field is necessary because some indicators may not have corresponding physical LEDs on the keyboard. Physical Symbol Keyboard Name The symbols keyboard name identifies the symbols logically bound to the keys. The symbols name is a human or application-readable description of the intended locale or usage of the keyboard with these symbols. The phys_symbols keyboard name, on the other hand, identifies the symbols actually engraved on the keyboard. Preserved Modifier Xkb normally consumes modifiers in determining the appropriate symbol for an event, that is, the modifiers are not considered during any of the later stages of event processing. For those rare occasions when a modifier should be considered despite having been used to look up a symbol, key types include an optional preserve field. If a modifier is present in the preserve list, it is a preserved modifier. Radio Group A radio group is a set of keys whose behavior simulates a set of radio buttons. Once a key in a radio group is pressed, it stays logically depressed until another key in the group is pressed, at which point the previously depressed key is logically released. Consequently, at most one key in a radio group can be logically depressed at one time. Real Modifier Xkb supports the eight core protocol modifiers (Shift, Lock, Control, and Mod1 through Mod5); these are called the real modifiers, as opposed to the set of sixteen named virtual modifiers that can be bound to any set of the eight real modifiers. Server Internal Modifiers Modifiers that the server uses to determine the appropriate symbol for an event; internal modifiers are normally consumed by the server. Shift Level One of several states (normally 2 or 3) governing which graphic character is produced when a key is actuated. Symbol Keyboard Name The symbols keyboard name identifies the symbols logically bound to the keys. The symbols name is a human or application-readable description of the intended locale or usage of the keyboard with these symbols. The phys_symbols keyboard name, on the other hand, identifies the symbols actually engraved on the keyboard. Symbolic Name Xkb supports symbolic names for most components of the keyboard extension. Most of these symbolic names are grouped into the names component of the keyboard description. State Field The portion of a client-side core protocol event that holds the modifier, group, and button state information pertaining to the event. Types Name The types name provides some information about the set of key types that can be associated with the keyboard. In addition, each key type can have a name, and each shift level of a type can have a name. Valuator A valuator reports a range of values for some entity, like a mouse axis, a slider, or a dial. Virtual Modifier Xkb provides a set of sixteen named virtual modifiers that can be bound to any set of the eight real modifiers. Each virtual modifier can be bound to any set of the real modifiers (Shift, Lock, Control, and Mod1Mod5). Virtual Modifier Mapping Xkb maintains a virtual modifier mapping, which lists the virtual modifiers associated with each key. Xkb-aware Client A client application that initializes Xkb extension and is consequently bound to an Xlib that includes the Xkb extension. Xkb-capable Client A client application that makes no Xkb extension Xlib calls but is bound to an Xlib that includes the Xkb extension. Xkb-unaware Client A client application that makes no Xkb extension Xlib calls and is bound to an Xlib that does not include the Xkb extension. libX11-1.8.12/specs/XKB/Makefile.am0000644014310600000120000000204014763154126012116 if ENABLE_SPECS # Main DocBook/XML files (DOCTYPE book) docbook = xkblib.xml # Included chapters, appendix, images chapters = \ acknowledgement.xml \ ch01.xml \ ch02.xml \ ch03.xml \ ch04.xml \ ch05.xml \ ch06.xml \ ch07.xml \ ch08.xml \ ch09.xml \ ch10.xml \ ch11.xml \ ch12.xml \ ch13.xml \ ch14.xml \ ch15.xml \ ch16.xml \ ch17.xml \ ch18.xml \ ch19.xml \ ch20.xml \ ch21.xml \ ch22.xml \ glossary.xml \ XKBlib-1.svg \ XKBlib-2.svg \ XKBlib-3.svg \ XKBlib-4.svg \ XKBlib-5.svg \ XKBlib-6.svg \ XKBlib-7.svg \ XKBlib-8.svg \ XKBlib-9.svg \ XKBlib-10.svg \ XKBlib-11.svg \ XKBlib-12.svg \ XKBlib-13.svg \ XKBlib-14.svg \ XKBlib-15.svg \ XKBlib-16.svg \ XKBlib-17.svg \ XKBlib-18.svg \ XKBlib-19.svg \ XKBlib-20.svg \ XKBlib-21.svg # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/XKB # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_SPECS libX11-1.8.12/specs/XKB/ch03.xml0000644014310600000120000002266314763154126011356 Data Structures An Xkb keyboard description consists of a variety of data structures, each of which describes some aspect of the keyboard. Although each data structure has its own peculiarities, there are a number of features common to nearly all Xkb structures. This chapter describes these common features and techniques for manipulating them. Many Xkb data structures are interdependent; changing a field in one might require changes to others. As an additional complication, some Xkb library functions allocate related components as a group to reduce fragmentation and allocator overhead. In these cases, simply allocating and freeing fields of Xkb structures might corrupt program memory. Creating and destroying such structures or keeping them properly synchronized during editing is complicated and error prone. Xkb provides functions and macros to allocate and free all major data structures. You should use them instead of allocating and freeing the structures yourself. Allocating Xkb Data Structures Xkb provides functions, known as allocators, to create and initialize Xkb data structures. In most situations, the Xkb functions that read a keyboard description from the server call these allocators automatically. As a result, you will seldom have to directly allocate or initialize Xkb data structures. However, if you need to enlarge an existing structure or construct a keyboard definition from scratch, you may need to allocate and initialize Xkb data structures directly. Each major Xkb data structure has its own unique allocator. The allocator functions share common features: allocator functions for structures with optional components take as an input argument a mask of subcomponents to be allocated. Allocators for data structures containing variable-length data take an argument specifying the initial length of the data. You may call an allocator to change the size of the space allocated for variable-length data. When you call an allocator with an existing data structure as a parameter, the allocator does not change the data in any of the fields, with one exception: variable-length data might be moved. The allocator resizes the allocated memory if the current size is too small. This normally involves allocating new memory, copying existing data to the newly allocated memory, and freeing the original memory. This possible reallocation is important to note because local variables pointing into Xkb data structures might be invalidated by calls to allocator functions. Adding Data and Editing Data Structures You should edit most data structures via the Xkb-supplied helper functions and macros, although a few data structures can be edited directly. The helper functions and macros make sure everything is initialized and interdependent values are properly updated for those Xkb structures that have interdependencies. As a general rule, if there is a helper function or macro to edit the data structure, use it. For example, increasing the width of a type requires you to resize every key that uses that type. This is complicated and ugly, which is why there’s an XkbResizeKeyType function. Many Xkb data structures have arrays whose size is reported by two fields. The first field, whose name is usually prefixed by sz_, represents the total number of elements that can be stored in the array. The second field, whose name is usually prefixed by num_, specifies the number of elements currently stored there. These arrays typically represent data whose total size cannot always be determined when the array is created. In these instances, the usual way to allocate space and add data is as follows: Call the allocator function with some arbitrary size, as a hint. For those arrays that have an Xkb...Add... function, call it each time you want to add new data to the array. The function expands the array if necessary. For example, call: XkbAllocGeomShapes(geom,4) to say I’ll need space for four new shapes in this geometry. This makes sure that sz_shapesnum_shapes >= 4, and resizes the shapes array if it isn’t. If this function succeeds, you are guaranteed to have space for the number of shapes you need. When you call an editing function for a structure, you do not need to check for space, because the function automatically checks the sz_ and num_ fields of the array, resizes the array if necessary, adds the entry to the array, and then updates the num_ field. Making Changes to the Server’s Keyboard Description In Xkb, as in the core protocol, the client and server have independent copies of the data structures that describe the keyboard. The recommended way to change some aspect of the keyboard mapping in the X server is to edit a local copy of the Xkb keyboard description and then send only the changes to the X server. This method helps eliminate the need to transfer the entire keyboard description or even an entire data structure for only minor changes. To help you keep track of the changes you make to a local copy of the keyboard description, Xkb provides separate special changes changes data structures data structures for each major Xkb data structure. These data structures do not contain the actual changed values: they only indicate the changes that have been made to the structures that actually describe the keyboard. When you wish to change the keyboard description in the server, you first modify a local copy of the keyboard description and then flag the modifications in an appropriate changes data structure. When you finish editing the local copy of the keyboard description, you pass your modified version of the keyboard description and the modified changes data structure to an Xkb function. This function uses the modified keyboard description and changes structure to pass only the changed information to the server. Note that modifying the keyboard description but not setting the appropriate flags in the changes data structure causes indeterminate behavior. Tracking Keyboard Changes in the Server The server reports all changes in its keyboard description to any interested clients via special Xkb events. Just as clients use special changes data structures to change the keyboard description in the server, the server uses special changes data structures to tell a client what changed in the server’s keyboard description. Unlike clients, however, the server does not always pass the new values when it reports changes to its copy of the keyboard description. Instead, the server only passes a changes data structure when it reports changes to its keyboard description. This is done for efficiency reasons — some clients do not always need to update their copy of the keyboard description with every report from the server. When your client application receives a report from the server indicating the keyboard description has changed, you can determine the set of changes by passing the event to an Xkb function that notes event information in the corresponding changes data structure. These note changes functions are defined for all major Xkb components, and their names have the form XkbNote{Component}Changes, where Component is the name of a major Xkb component such as Map or Names. When you want to copy these changes from the server into a local copy of the keyboard description, use the corresponding XkbGet{Component}Changes function, passing it the changes structure. The function then retrieves only the changed structures from the server and copies the modified pieces into the local keyboard description. Freeing Data Structures For the same reasons you should not directly use malloc to allocate Xkb data structures, you should not free Xkb data structures or components directly using free or Xfree. Xkb provides functions to free the various data structures and their components. Always use the free functions supplied by Xkb. There is no guarantee that any particular field can be safely freed by free or Xfree. libX11-1.8.12/specs/XKB/ch04.xml0000644014310600000120000005662314763154126011362 Xkb Events events The primary way the X server communicates with clients is by sending X events to them. Some events are sent to all clients, while others are sent only to clients that have requested them. Some of the events that can be requested are associated with a particular window and are only sent to those clients who have both requested the event and specified the window in which the event occurred. The Xkb extension uses events to communicate the keyboard status to interested clients. These events are not associated with a particular window. Instead, all Xkb keyboard status events are reported to all interested clients, regardless of which window currently has the keyboard focus and regardless of the grab state of the keyboard.The one exception to this rule is the XkbExtensionDeviceNotify event report that is sent when a client attempts to use an unsupported feature of an X Input Extension device (see section 21.4). The X server reports the events defined by the Xkb extension to your client application only if you have requested them. You may request Xkb events by calling either XkbSelectEvents or XkbSelectEventDetails. XkbSelectEvents requests Xkb events by their event type and causes them to be reported to your client application under all circumstances. You can specify a finer granularity for event reporting by using XkbSelectEventDetails; in this case events are reported only when the specific detail conditions you specify have been met. Xkb Event Types The Xkb Extension adds new event types to the X protocol definition. An Xkb event type is defined by two fields in the X event data structure. One is the type field, containing the base event code. This base event code is a value the X server assigns to each X extension at runtime and that identifies the extension that generated the event; thus, the event code in the type field identifies the event as an Xkb extension event, rather than an event from another extension or a core X protocol event. You can obtain the base event code via a call to XkbQueryExtension or XkbOpenDisplay. The second field is the Xkb event type, which contains a value uniquely identifying each different Xkb event type. Possible values are defined by constants declared in the header file <X11/extensions/Xkb.h>. Table 4.1 lists the categories of events defined by Xkb and their associated event types, as defined in Xkb.h. Each event is described in more detail in the section referenced for that event. Xkb Event Types Event Type Conditions Generating Event Section XkbNewKeyboardNotify Keyboard geometry; keycode range change 19 XkbMapNotify Keyboard mapping change 14.4 XkbStateNotify Keyboard state change 5.4 XkbControlsNotify Keyboard controls state change 10.11 XkbIndicatorStateNotify Keyboard indicators state change 8.5 XkbIndicatorMapNotify Keyboard indicators map change 8.5 XkbNamesNotify Keyboard name change 18.5 XkbCompatMapNotify Keyboard compatibility map change 17.5 XkbBellNotify Keyboard bell generated 9.4 XkbActionMessage Keyboard action message 16.1.11 XkbAccessXNotify AccessX state change 10.6.4 XkbExtensionDeviceNotify Extension device change 21.6
Xkb Event Data Structures eventsXkbAnyEvent XkbAnyEvent Xkb reports each event it generates in a unique structure holding the data values needed to describe the conditions the event is reporting. However, all Xkb events have certain things in common. These common features are contained in the same fields at the beginning of all Xkb event structures and are described in the XkbAnyEvent structure: typedef struct { int type; /* Xkb extension base event code */ unsigned long serial; /* X server serial number for event */ Bool send_event; /* True ⇒ synthetically generated */ Display * display; /* server connection where event generated */ Time time; /* server time when event generated */ int xkb_type; /* Xkb minor event code */ unsigned int device; /* Xkb device ID, will not be XkbUseCoreKbd */ } XkbAnyEvent; For any Xkb event, the type field is set to the base event code for the Xkb extension, assigned by the server to all Xkb extension events. The serial, send_event, and display fields are as described for all X11 events. The time field is set to the time when the event was generated and is expressed in milliseconds. The xkb_type field contains the minor extension event code, which is the extension event type, and is one of the values listed in Table 4.1. The device field contains the keyboard device identifier associated with the event. This is never XkbUseCoreKbd, even if the request that generated the event specified a device of XkbUseCoreKbd. If the request that generated the event specified XkbUseCoreKbd, device contains a value assigned by the server to specify the core keyboard. If the request that generated the event specified an X input extension device, device contains that same identifier. Other data fields specific to individual Xkb events are described in subsequent chapters where the events are described. Selecting Xkb Events eventsmask maskevent Xkb events are selected using an event mask, much the same as normal core X events are selected. However, unlike selecting core X events, where you must specify the selection status (on or off) for all possible event types whenever you wish to change the selection criteria for any one event, Xkb allows you to restrict the specification to only the event types you wish to change. This means that you do not need to remember the event selection values for all possible types each time you want to change one of them. Many Xkb event types are generated under several different circumstances. When selecting to receive an Xkb event, you may specify either that you want it delivered under all circumstances, or that you want it delivered only for a subset of the possible circumstances. You can also deselect an event type that was previously selected for, using the same granularity. Xkb provides two functions to select and deselect delivery of Xkb events. XkbSelectEvents allows you to select or deselect delivery of more than one Xkb event type at once. Events selected using XkbSelectEvents are delivered to your program under all circumstances that generate the events. To restrict delivery of an event to a subset of the conditions under which it occurs, use XkbSelectEventDetails. XkbSelectEventDetails only allows you to change the selection conditions for a single event at a time, but it provides a means of fine-tuning the conditions under which the event is delivered. To select and / or deselect for delivery of one or more Xkb events and have them delivered under all conditions, use XkbSelectEvents. XkbSelectEvents Bool XkbSelectEvents Display *display unsigned int device_spec unsigned long int bits_to_change unsigned long int values_for_bits display connection to the X server device_spec device ID, or XkbUseCoreKbd bits_to_change determines events to be selected / deselected values_for_bits 1⇒select, 0→deselect; for events in bits_to_change This request changes the Xkb event selection mask for the keyboard specified by device_spec. Each Xkb event that can be selected is represented by a bit in the bits_to_change and values_for_bits masks. Only the event selection bits specified by the bits_to_change parameter are affected; any unspecified bits are left unchanged. To turn on event selection for an event, set the bit for the event in the bits_to_change parameter and set the corresponding bit in the values_for_bits parameter. To turn off event selection for an event, set the bit for the event in the bits_to_change parameter and do not set the corresponding bit in the values_for_bits parameter. The valid values for both of these parameters are an inclusive bitwise OR of the masks shown in Table 4.2. There is no interface to return your client’s current event selection mask. Clients cannot set other clients’ event selection masks. If a bit is not set in the bits_to_change parameter, but the corresponding bit is set in the values_for_bits parameter, a BadMatch protocol error results. If an undefined bit is set in either the bits_to_change or the values_for_bits parameter, a BadValue protocol error results. All event selection bits are initially zero for clients using the Xkb extension. Once you set some bits, they remain set for your client until you clear them via another call to XkbSelectEvents. XkbSelectEvents returns False if the Xkb extension has not been initialized and True otherwise. To select or deselect for a specific Xkb event and optionally place conditions on when events of that type are reported to your client, use XkbSelectEventDetails. This allows you to exercise a finer granularity of control over delivery of Xkb events with XkbSelectEvents. XkbSelectEventDetails Bool XkbSelectEventDetails Display *display unsigned int device_spec unsigned int event_type unsigned long int bits_to_change unsigned long int values_for_bits display connection to the X server device_spec device ID, or XkbUseCoreKbd event_type Xkb event type of interest bits_to_change event selection details values_for_bits values for bits selected by bits_to_change While XkbSelectEvents allows multiple events to be selected, XkbSelectEventDetails changes the selection criteria for a single type of Xkb event. The interpretation of the bits_to_change and values_for_bits masks depends on the event type in question. XkbSelectEventDetails changes the Xkb event selection mask for the keyboard specified by device_spec and the Xkb event specified by event_type. To turn on event selection for an event detail, set the bit for the detail in the bits_to_change parameter and set the corresponding bit in the values_for_bits parameter. To turn off event detail selection for a detail, set the bit for the detail in the bits_to_change parameter and do not set the corresponding bit in the values_for_bits parameter. If an invalid event type is specified, a BadValue protocol error results. If a bit is not set in the bits_to_change parameter, but the corresponding bit is set in the values_for_bits parameter, a BadMatch protocol error results. If an undefined bit is set in either the bits_to_change or the values_for_bits parameter, a BadValue protocol error results. For each type of Xkb event, the legal event details that you can specify in the XkbSelectEventDetails request are listed in the chapters that describe each event in detail. Event Masks The X server reports the events defined by Xkb to your client application only if you have requested them via a call to XkbSelectEvents or XkbSelectEventDetails. Specify the event types in which you are interested in a mask, as described in section 4.3. Table 4.2 lists the event mask constants that can be specified with the XkbSelectEvents request and the circumstances in which the mask should be specified. XkbSelectEvents Mask Constants Event Mask Value Notification Wanted XkbNewKeyboardNotifyMask (1L<<0) Keyboard geometry change XkbMapNotifyMask (1L<<1) Keyboard mapping change XkbStateNotifyMask (1L<<2) Keyboard state change XkbControlsNotifyMask (1L<<3) Keyboard control change XkbIndicatorStateNotifyMask (1L<<4) Keyboard indicator state change XkbIndicatorMapNotifyMask (1L<<5) Keyboard indicator map change XkbNamesNotifyMask (1L<<6) Keyboard name change XkbCompatMapNotifyMask (1L<<7) Keyboard compat map change XkbBellNotifyMask (1L<<8) Bell XkbActionMessageMask (1L<<9) Action message XkbAccessXNotifyMask (1L<<10) AccessX features XkbExtensionDeviceNotifyMask (1L<<11) Extension device XkbAllEventsMask (0xFFF) All Xkb events
Unified Xkb Event Type eventsXkbEvent XkbEvent The XkbEvent structure is a union of the individual structures declared for each Xkb event type and for the core protocol XEvent type. Given an XkbEvent structure, you may use the type field to determine if the event is an Xkb event (type equals the Xkb base event code; see section 2.4). If the event is an Xkb event, you may then use the any.xkb_type field to determine the type of Xkb event and thereafter access the event-dependent components using the union member corresponding to the particular Xkb event type. typedef union _XkbEvent { int type; XkbAnyEvent any; XkbStateNotifyEvent state; XkbMapNotifyEvent map; XkbControlsNotifyEvent ctrls; XkbIndicatorNotifyEvent indicators; XkbBellNotifyEvent bell; XkbAccessXNotifyEvent accessx; XkbNamesNotifyEvent names; XkbCompatMapNotifyEvent compat; XkbActionMessageEvent message; XkbExtensionDeviceNotifyEvent device; XkbNewKeyboardNotifyEvent new_kbd; XEvent core; } XkbEvent; This unified Xkb event type includes a normal XEvent as used by the core protocol, so it is straightforward for applications that use Xkb events to call the X library event functions without having to cast every reference. For example, to get the next event, you can simply declare a variable of type XkbEvent and call: XNextEvent(dpy,&xkbev.core);
libX11-1.8.12/specs/XKB/XKBlib-12.svg0000644014310600000120000007525214763154126012155 image/svg+xml XkbSelectionRec(s)(array) rows doodads bounds overlays . . . XkbBoundsRec . . . rows bounds section_under XkbOverlayRec(s)(array) XkbBoundsRec XkbOverlayKeyRec(s)(array) . . . keys row_under XkbOverlayRowRec(s)(array) . . . bounds keys XkbRowRec(s)(array) XkbSectionRec andXkbRowRecrepeated fromFigure 16.4 libX11-1.8.12/specs/XKB/XKBlib-15.svg0000644014310600000120000012052514763154126012152 image/svg+xml XkbClientMapRec size_types num_types types size_syms num_syms syms key_sym_map mod_map unsigned char(array) KeySym(s)(array) Atom(s)(array) XkbKTMapEntryRec(s)(array) kt_index[0] kt_index[1] kt_index[2] kt_index[3] group_info width offset XkbSymMapRec(s)(array) mods num_levels map_count map preserve name level_names XkbKeyTypeRec(s)(array) Key Code libX11-1.8.12/specs/XKB/ch15.xml0000644014310600000120000021352314763154126011356 Xkb Client Keyboard Mapping client map mapclient The Xkb client map for a keyboard is the collection of information a client needs to interpret key events from the keyboard. It contains a global list of key types and an array of key symbol maps, each of which describes the symbols bound to a key and the rules to be used to interpret those symbols. Figure 15.1 shows the relationships between elements in the client map:
Xkb Client Map
The XkbClientMapRec Structure XkbClientMapRec The map field of the complete Xkb keyboard description (see section 6.1) is a pointer to the Xkb client map, which is of type XkbClientMapRec: typedef struct { /* Client Map */ unsigned char size_types; /* # occupied entries in types */ unsigned char num_types; /* # entries in types */ XkbKeyTypePtr types; /* vector of key types used by this keymap */ unsigned short size_syms; /* length of the syms array */ unsigned short num_syms; /* # entries in syms */ KeySym * syms; /* linear 2d tables of keysyms, 1 per key */ XkbSymMapPtr key_sym_map; /* 1 per keycode, maps keycode to syms */ unsigned char * modmap; /* 1 per keycode, real mods bound to key */ } XkbClientMapRec, *XkbClientMapPtr; The following sections describe each of the elements of the XkbClientMapRec structure in more detail. Key Types XkbKeyTypeRec XkbKTMapEntryRec Key types are used to determine the shift level of a key given the current state of the keyboard. The set of all possible key types for the Xkb keyboard description are held in the types field of the client map, whose total size is stored in size_types, and whose total number of valid entries is stored in num_types. Key types are defined using the following structures: typedef struct { /* Key Type */ XkbModsRec mods; /* modifiers used to compute shift level */ unsigned char num_levels; /* total # shift levels, do not modify directly */ unsigned char map_count; /* # entries in map, preserve (if non-NULL) */ XkbKTMapEntryPtr map; /* vector of modifiers for each shift level */ XkbModsPtr preserve; /* mods to preserve for corresponding map entry */ Atom name; /* name of key type */ Atom * level_names; /* array of names of each shift level */ } XkbKeyTypeRec, *XkbKeyTypePtr; typedef struct { /* Modifiers for a key type */ Bool active; /* True ⇒ entry active when determining shift level */ unsigned char level; /* shift level if modifiers match mods */ XkbModsRec mods; /* mods needed for this level to be selected */ } XkbKTMapEntryRec, *XkbKTMapEntryPtr; The mods field of a key type is an XkbModsRec (see section 7.2) specifying the modifiers the key type uses when calculating the shift level, and can be composed of both the core modifiers and virtual modifiers. To set the modifiers associated with a key type, modify the real_mods and vmods fields of the mods XkbModsRec accordingly. The mask field of the XkbModsRec is reserved for use by Xkb and is calculated from the real_mods and vmods fields. The num_levels field holds the total number of shift levels for the key type. Xkb uses num_levels to ensure the array of symbols bound to a key is large enough. Do not modify num_levels directly to change the number if shift levels for a key type. Instead, use XkbResizeKeyType (see section 15.2.3). The map field is a vector of XkbKTMapEntryRec structures, with map_count entries, that specify the modifier combinations for each possible shift level. Each map entry contains an active field, a mods field, and a level field. The active field determines whether the modifier combination listed in the mods field should be considered when determining shift level. If active is False, this map entry is ignored. If active is True, the level field of the map entry specifies the shift level to use when the current modifier combination matches the combination specified in the mods field of the map entry. Any combination of modifiers not explicitly listed somewhere in the map yields shift level one. In addition, map entries specifying unbound virtual modifiers are not considered. Any modifiers specified in mods are normally consumed by XkbTranslateKeyCode (see section 12.1.3). For those rare occasions a modifier should be considered despite having been used to look up a symbol, key types include an optional preserve field. If a preserve member of a key type is not NULL, it represents a list of modifiers where each entry corresponds directly to one of the key type’s map. Each entry lists the modifiers that should not be consumed if the matching map entry is used to determine shift level. Each shift level has a name and these names are held in the level_names array, whose length is num_levels. The type itself also has a name, which is held in the name field. For example, consider how the server handles the following possible symbolic description of a possible key type (note that the format used to specify keyboard mappings in the server database is not specified by the Xkb extension, although this format is one possible example): Example Key Type Symbolic Description Key Type Data Structure type "ALPHATHREE" { Xkb->map->types[i].name modifiers = Shift+Lock+LevelThree; Xkb->map->types[i].mods map[None]= Level1; Xkb->map->types[i].map[0] map[Lock]= Level1; Xkb->map->types[i].map[1] map[Shift]= Level2; Xkb->map->types[i].map[2] map[LevelThree]= Level3; Xkb->map->types[i].map[3] map[Shift+LevelThree]= Level3; Xkb->map->types[i].map[4] preserve[None]= None; Xkb->map->types[i].preserve[0] preserve[Lock]= Lock; Xkb->map->types[i].preserve[1] preserve[Shift]= None; Xkb->map->types[i].preserve[2] preserve[LevelThree]= None; Xkb->map->types[i].preserve[3] preserve[Shift+Level3]= None; Xkb->map->types[i].preserve[4] level_name[Level1]= "Base"; Xkb->map->types[i].level_names[0] level_name[Level2]= "Caps"; Xkb->map->types[i].level_names[1] level_name[Level3]= "Level3"; Xkb->map->types[i].level_names[2] };
The name of the example key type is "ALPHATHREE," and the modifiers it pays attention to are Shift, Lock, and the virtual modifier LevelThree. There are three shift levels. The name of shift level one is "Base," the name of shift level two is "Caps," and the name of shift level three is "Level3." Given the combination of the map and preserve specifications, there are five map entries. The first map entry specifies that shift level one is to be used if no modifiers are set. The second entry specifies the Lock modifier alone also yields shift level one. The third entry specifies the Shift modifier alone yields shift level two. The fourth and fifth entries specify that the virtual LevelThree modifier alone, or in combination with the Shift modifier, yields shift level three. Shift level three can be reached only if the virtual modifier LevelThree is bound to a real modifier (see section 16.4). If LevelThree is not bound to a real modifier, the map entries associated with it are ignored. Because the Lock modifier is to be preserved for further event processing, the preserve list is not NULL and parallels the map list. All preserve entries, except for the one corresponding to the map entry that specifies the Lock modifier, do not list any modifiers. For the map entry that specifies the Lock modifier, the corresponding preserve list entry lists the Lock modifier, meaning do not consume the Lock modifier. In this particular case, the preserved modifier is passed to Xlib translation functions and causes them to notice that the Lock modifier is set; consequently, the Xlib functions apply the appropriate capitalization rules to the symbol. Because this preserve entry is set only for a modifier that yields shift level one, the capitalization occurs only for level-one symbols. The Canonical Key Types Xkb allows up to XkbMaxKeyTypes (255) key types to be defined, but requires at least XkbNumRequiredTypes (4) predefined types to be in a key map. These predefined key types are referred to as the canonical key types and describe the types of keys available on most keyboards. The definitions for the canonical key types are held in the first XkbNumRequiredTypes entries of the types field of the client map and are indexed using the following constants: XkbOneLevelIndex XkbTwoLevelIndex XkbAlphabeticIndex XkbKeypadIndex ONE_LEVEL The ONE_LEVEL key type describes groups that have only one symbol. The default ONE_LEVEL key type has no map entries and does not pay attention to any modifiers. A symbolic representation of this key type could look like the following: type "ONE_LEVEL" { modifiers = None; map[None]= Level1; level_name[Level1]= "Any"; }; The description of the ONE_LEVEL key type is stored in the types [ XkbOneLevelIndex ] entry of the client key map. TWO_LEVEL The TWO_LEVEL key type describes groups that consist of two symbols but are neither alphabetic nor numeric keypad keys. The default TWO_LEVEL type uses only the Shift modifier. It returns shift level two if Shift is set, and level one if it is not. A symbolic representation of this key type could look like the following: type "TWO_LEVEL" { modifiers = Shift; map[Shift]= Level2; level_name[Level1]= "Base"; level_name[Level2]= "Shift"; }; The description of the TWO_LEVEL key type is stored in the types [ XkbTwoLevelIndex ] entry of the client key map. ALPHABETIC The ALPHABETIC key type describes groups consisting of two symbols: the lowercase form of a symbol followed by the uppercase form of the same symbol. The default ALPHABETIC type implements locale-sensitive Shift cancels CapsLock behavior using both the Shift and Lock modifiers as follows: If Shift and Lock are both set, the default ALPHABETIC type yields level one. If Shift alone is set, it yields level two. If Lock alone is set, it yields level one, but preserves the Lock modifier so Xlib notices and applies the appropriate capitalization rules. The Xlib functions are locale-sensitive and apply different capitalization rules for different locales. If neither Shift nor Lock is set, it yields level one. A symbolic representation of this key type could look like the following: type "ALPHABETIC" { modifiers = Shift+Lock; map[Shift]= Level2; preserve[Lock]= Lock; level_name[Level1]= "Base"; level_name[Level2]= "Caps"; }; The description of the ALPHABETIC key type is stored in the types [ XkbAlphabeticIndex ] entry of the client key map. KEYPAD The KEYPAD key type describes groups that consist of two symbols, at least one of which is a numeric keypad symbol. The numeric keypad symbol is assumed to reside at level two. The default KEYPAD key type implements Shift cancels NumLock behavior using the Shift modifier and the real modifier bound to the virtual modifier named NumLock, known as the NumLock modifier, as follows: If Shift and NumLock are both set, the default KEYPAD type yields level one. If Shift alone is set, it yields level two. If NumLock alone is set, it yields level two. If neither Shift nor NumLock is set, it yields level one. A symbolic representation of this key type could look like the following: type "KEYPAD" { modifiers = Shift+NumLock; map[None]= Level1; map[Shift]= Level2; map[NumLock]= Level2; map[Shift+NumLock]= Level1; level_name[Level1]= "Base"; level_name[Level2]= "Caps"; }; The description of the KEYPAD key type is stored in the types [ XkbKeypadIndex ] entry of the client key map. Initializing the Canonical Key Types in a New Client Map To set the definitions of the canonical key types in a client map to their default values, use XkbInitCanonicalKeyTypes. XkbInitCanonicalKeyTypes Status XkbInitCanonicalKeyTypes XkbDescPtr xkb unsigned int which int keypadVMod xkb keyboard description containing client map to initialize which mask of types to initialize keypadVMod index of NumLock virtual modifier XkbInitCanonicalKeyTypes initializes the first XkbNumRequiredTypes key types of the keyboard specified by the xkb parameter to their default values. The which parameter specifies what canonical key types to initialize and is a bitwise inclusive OR of the following masks: XkbOneLevelMask, XkbTwoLevelMask, XkbAlphabeticMask, and XkbKeypadMask. Only those canonical types specified by the which mask are initialized. If XkbKeypadMask is set in the which parameter, XkbInitCanonicalKeyTypes looks up the NumLock named virtual modifier to determine which virtual modifier to use when initializing the KEYPAD key type. If the NumLock virtual modifier does not exist, XkbInitCanonicalKeyTypes creates it. XkbInitCanonicalKeyTypes normally returns Success. It returns BadAccess if the Xkb extension has not been properly initialized, and BadAccess if the xkb parameter is not valid. Getting Key Types from the Server To obtain the list of available key types in the server’s keyboard mapping, use XkbGetKeyTypes. XkbGetKeyTypes Status XkbGetKeyTypes Display *dpy unsigned int first unsigned int num XkbDescPtr xkb dpy connection to X server first index to first type to get, 0 ⇒ 1st type num number of key types to be returned xkb keyboard description containing client map to update XkbGetKeyTypes is used to obtain descriptions of the key types themselves, not the key types bound to individual keys. To obtain the key types bound to an individual key, refer to the key_sym_map field of the client map (see section 15.3.1). XkbGetKeyTypes queries the server for the desired types, waits for a reply, and returns the desired types in the xkb->map->types. If successful, it returns Success. XkbGetKeyTypes returns BadAccess if the Xkb extension has not been properly initialized and BadValue if the combination of first and num results in numbers out of valid range. Changing the Number of Levels in a Key Type To change the number of levels in a key type, use XkbResizeKeyType. XkbResizeKeyType Status XkbResizeKeyType XkbDescPtr xkb int type_ndx int map_count Bool want_preserve int new_num_lvls xkb keyboard description containing client map to update type_ndx index in xkb->map->types of type to change map_count total # of map entries needed for the type want_preserve True ⇒ list of preserved modifiers is necessary new_num_lvls new max # of levels for type XkbResizeKeyType changes the type specified by xkb->map->types [ type_ndx ], and reallocates the symbols and actions bound to all keys that use the type, if necessary. XkbResizeKeyType updates only the local copy of the types in xkb; to update the server’s copy for the physical device, use XkbSetMap or XkbChangeMap after calling XkbResizeKeyType. The map_count parameter specifies the total number of map entries needed for the type, and can be zero or greater. If map_count is zero, XkbResizeKeyType frees the existing map and preserve entries for the type if they exist and sets them to NULL. The want_preserve parameter specifies whether a preserve list for the key should be created. If want_preserve is True, the preserve list with map_count entries is allocated or reallocated if it already exists. Otherwise, if want_preserve is False, the preserve field is freed if necessary and set to NULL. The new_num_lvls parameter specifies the new maximum number of shift levels for the type and is used to calculate and resize the symbols and actions bound to all keys that use the type. If type_ndx does not specify a legal type, new_num_lvls is less than 1, or the map_count is less than zero, XkbResizeKeyType returns BadValue. If XkbResizeKeyType encounters any problems with allocation, it returns BadAlloc. Otherwise, it returns Success. Copying Key Types Use XkbCopyKeyType and XkbCopyKeyTypes to copy one or more XkbKeyTypeRec structures. XkbCopyKeyType Status XkbCopyKeyType XkbKeyTypePtr from XkbKeyTypePtr into from pointer to XkbKeyTypeRec to be copied into pointer to XkbKeyTypeRec to be changed XkbCopyKeyType copies the key type specified by from to the key type specified by into. Both must point to legal XkbKeyTypeRec structures. Xkb assumes from and into point to different places. As a result, overlaps can be fatal. XkbCopyKeyType frees any existing map, preserve, and level_names in into prior to copying. If any allocation errors occur while copying from to into, XkbCopyKeyType returns BadAlloc. Otherwise, XkbCopyKeyType copies from to into and returns Success. XkbCopyKeyTypes Status XkbCopyKeyTypes XkbKeyTypePtr from XkbKeyTypePtr into int num_types from pointer to array of XkbKeyTypeRecs to copy into pointer to array of XkbKeyTypeRecs to change num_types number of types to copy XkbCopyKeyTypes copies num_types XkbKeyTypeRec structures from the array specified by from into the array specified by into. It is intended for copying between, rather than within, keyboard descriptions, so it doesn’t check for overlaps. The same rules that apply to the from and into parameters in XkbCopyKeyType apply to each entry of the from and into arrays of XkbCopyKeyTypes. If any allocation errors occur while copying from to into, XkbCopyKeyTypes returns BadAlloc. Otherwise, XkbCopyKeyTypes copies from to into and returns Success.
Key Symbol Map XkbSymMapRec The entire list of key symbols for the keyboard mapping is held in the syms field of the client map. Whereas the core keyboard mapping is a two-dimensional array of KeySyms whose rows are indexed by keycode, the syms field of Xkb is a linear list of KeySyms that needs to be indexed uniquely for each key. This section describes the key symbol map and the methods for determining the symbols bound to a key. The reason the syms field is a linear list of KeySyms is to reduce the memory consumption associated with a keymap; because Xkb allows individual keys to have multiple shift levels and a different number of groups per key, a single two-dimensional array of KeySyms would potentially be very large and sparse. Instead, Xkb provides a small two-dimensional array of KeySyms for each key. To store all of these individual arrays, Xkb concatenates each array together in the syms field of the client map. In order to determine which KeySyms in the syms field are associated with each keycode, the client map contains an array of key symbol mappings, held in the key_sym_map field. The key_sym_map field is an array of XkbSymMapRec structures indexed by keycode. The key_sym_map array has min_key_code unused entries at the start to allow direct indexing using a keycode. All keycodes falling between the minimum and maximum legal keycodes, inclusive, have key_sym_map arrays, whether or not any key actually yields that code. The KeySymMapRec structure is defined as follows: #define XkbNumKbdGroups 4 #define XkbMaxKbdGroup (XkbNumKbdGroups-1) typedef struct { /* map to keysyms for a single keycode */ unsigned char kt_index[XkbNumKbdGroups]; /* key type index for each group */ unsigned char group_info; /* # of groups and out of range group handling */ unsigned char width; /* max # of shift levels for key */ unsigned short offset; /* index to keysym table in syms array */ } XkbSymMapRec, *XkbSymMapPtr; These fields are described in detail in the following sections. Per-Key Key Type Indices The kt_index array of the XkbSymMapRec structure contains the indices of the key types (see section 15.2) for each possible group of symbols associated with the key. To obtain the index of a key type or the pointer to a key type, Xkb provides the following macros, to access the key types: The array of key types is of fixed width and is large enough to hold key types for the maximum legal number of groups (XkbNumKbdGroups, currently four); if a key has fewer than XkbNumKbdGroups groups, the extra key types are reported but ignored. XkbKeyKeyTypeIndex int XkbKeyKeyTypeIndex XkbDescPtr xkb KeyCode keycode int group xkb Xkb description of interest keycode keycode of interest group group index XkbKeyKeyTypeIndex computes an index into the types vector of the client map in xkb from the given keycode and group index. XkbKeyKeyType XkbKeyTypePtr XkbKeyKeyType XkbDescPtr xkb KeyCode keycode int group xkb Xkb description of interest keycode keycode of interest group group index XkbKeyKeyType returns a pointer to the key type in the types vector of the client map in xkb corresponding to the given keycode and group index. Per-Key Group Information The group_info field of an XkbSymMapRec is an encoded value containing the number of groups of symbols bound to the key as well as the specification of the treatment of out-of-range groups. It is legal for a key to have zero groups, in which case it also has zero symbols and all events from that key yield NoSymbol. To obtain the number of groups of symbols bound to the key, use XkbKeyNumGroups. To change the number of groups bound to a key, use XkbChangeTypesOfKey (see section 15.3.6). To obtain a mask that determines the treatment of out-of-range groups, use XkbKeyGroupInfo and XkbOutOfRangeGroupInfo. The keyboard controls (see ) contain a groups_wrap field specifying the handling of illegal groups on a global basis. That is, when the user performs an action causing the effective group to go out of the legal range, the groups_wrap field specifies how to normalize the effective keyboard group to a group that is legal for the keyboard as a whole, but there is no guarantee that the normalized group will be within the range of legal groups for any individual key. The per-key group_info field specifies how a key treats a legal effective group if the key does not have a type specified for the group of concern. For example, the Enter key usually has just one group defined. If the user performs an action causing the global keyboard group to change to Group2, the group_info field for the Enter key describes how to handle this situation. Out-of-range groups for individual keys are mapped to a legal group using the same options as are used for the overall keyboard group. The particular type of mapping used is controlled by the bits set in the group_info flag, as shown in Table 15.2. See section 10.7.1 for more details on the normalization methods in this table. group_info Range Normalization Bits set in group_info Normalization method XkbRedirectIntoRange XkbRedirectIntoRange XkbClampIntoRange XkbClampIntoRange none of the above XkbWrapIntoRange
Xkb provides the following macros to access group information: XkbKeyNumGroups int XkbKeyNumGroups XkbDescPtr xkb KeyCode keycode xkb Xkb description of interest keycode keycode of interest XkbKeyNumGroups returns the number of groups of symbols bound to the key corresponding to keycode. XkbKeyGroupInfo unsigned char XkbKeyGroupInfo XkbDescPtr xkb KeyCode keycode xkb Xkb description of interest keycode keycode of interest XkbKeyGroupInfo returns the group_info field from the XkbSymMapRec structure associated with the key corresponding to keycode. XkbOutOfRangeGroupInfo unsigned char XkbOutOfRangeGroupInfo unsigned char grp_inf grp_inf group_info field of XkbSymMapRec XkbOutOfRangeGroupInfo returns only the out-of-range processing information from the group_info field of an XkbSymMapRec structure. XkbOutOfRangeGroupNumber unsigned char XkbOutOfRangeGroupNumber unsigned char grp_inf grp_inf group_info field of XkbSymMapRec XkbOutOfRangeGroupNumber returns the out-of-range group number, represented as a group index, from the group_info field of an XkbSymMapRec structure.
Key Width The maximum number of shift levels for a type is also referred to as the width of a key type. The width field of the key_sym_map entry for a key contains the width of the widest type associated with the key. The width field cannot be explicitly changed; it is updated automatically whenever the symbols or set of types bound to a key are changed. Offset in to the Symbol Map The key width and number of groups associated with a key are used to form a small two-dimensional array of KeySyms for a key. This array may be different sizes for different keys. The array for a single key is stored as a linear list, in row-major order. The arrays for all of the keys are stored in the syms field of the client map. There is one row for each group associated with a key and one column for each level. The index corresponding to a given group and shift level is computed as: idx = group_index * key_width + shift_level The offset field of the key_sym_map entry for a key is used to access the beginning of the array. Xkb provides the following macros for accessing the width for individual keys, as well as macros for accessing the two-dimensional array of symbols bound to the key: XkbKeyGroupsWidth int XkbKeyGroupsWidth XkbDescPtr xkb KeyCode keycode xkb Xkb description of interest keycode keycode of interest XkbKeyGroupsWidth computes the maximum width associated with the key corresponding to keycode. XkbKeyGroupWidth int XkbKeyGroupWidth XkbDescPtr xkb KeyCode keycode int grp xkb Xkb description of interest keycode keycode of interest grp group of interest XkbKeyGroupWidth computes the width of the type associated with the group grp for the key corresponding to keycode. XkbKeyNumSyms int XkbKeyNumSyms XkbDescPtr xkb KeyCode keycode xkb Xkb description of interest keycode keycode of interest XkbKeyNumSyms returns the total number of keysyms for the key corresponding to keycode. XkbKeySymsPtr KeySym *XkbKeySymsPtr XkbDescPtr xkb KeyCode keycode xkb Xkb description of interest keycode keycode of interest XkbKeySymsPtr returns the pointer to the two-dimensional array of keysyms for the key corresponding to keycode. XkbKeySymEntry KeySym XkbKeySymEntry XkbDescPtr xkb KeyCode keycode int shift int grp xkb Xkb description of interest keycode keycode of interest shift shift level of interest grp group of interest XkbKeySymEntry returns the KeySym corresponding to shift level shift and group grp from the two-dimensional array of keysyms for the key corresponding to keycode Getting the Symbol Map for Keys from the Server To obtain the symbols for a subset of the keys in a keyboard description, use XkbGetKeySyms: XkbGetKeySyms Status XkbGetKeySyms Display *dpy unsigned int first unsigned int num XkbDescPtr xkb dpy connection to X server first keycode of first key to get num number of keycodes for which syms desired xkb Xkb description to be updated XkbGetKeySyms sends a request to the server to obtain the set of keysyms bound to num keys starting with the key whose keycode is first. It waits for a reply and returns the keysyms in the map.syms field of xkb. If successful, XkbGetKeySyms returns Success. The xkb parameter must be a pointer to a valid Xkb keyboard description. If the client map in the xkb parameter has not been allocated, XkbGetKeySyms allocates and initializes it before obtaining the symbols. If a compatible version of Xkb is not available in the server or the Xkb extension has not been properly initialized, XkbGetKeySyms returns BadAccess. If num is less than 1 or greater than XkbMaxKeyCount, XkbGetKeySyms returns BadValue. If any allocation errors occur, XkbGetKeySyms returns BadAlloc. Changing the Number of Groups and Types Bound to a Key To change the number of groups and the types bound to a key, use XkbChangeTypesOfKey. XkbChangeTypesOfKey Status XkbChangeTypesOfKey XkbDescPtr xkb int key int n_groups unsigned int groups int *new_types_in XkbMapChangesPtr p_changes xkb keyboard description to be changed key keycode for key of interest n_groups new number of groups for key groups mask indicating groups to change new_types_in indices for new groups specified in groups p_changes notes changes made to xkb XkbChangeTypesOfKey reallocates the symbols and actions bound to the key, if necessary, and initializes any new symbols or actions to NoSymbol or NoAction, as appropriate. If the p_changes parameter is not NULL, XkbChangeTypesOfKey adds the XkbKeySymsMask to the changes field of p_changes and modifies the first_key_sym and num_key_syms fields of p_changes to include the key that was changed. See section 14.3.1 for more information on the XkbMapChangesPtr structure. If successful, XkbChangeTypesOfKey returns Success. The n_groups parameter specifies the new number of groups for the key. The groups parameter is a mask specifying the groups for which new types are supplied and is a bitwise inclusive OR of the following masks: XkbGroup1Mask, XkbGroup2Mask, XkbGroup3Mask, and XkbGroup4Mask. The new_types_in parameter is an integer array of length n_groups. Each entry represents the type to use for the associated group and is an index into xkb->map->types. The new_types_in array is indexed by group index; if n_groups is four and groups only has XkbGroup1Mask and XkbGroup3Mask set, new_types_in looks like this: new_types_in[0] = type for Group1 new_types_in[1] = ignored new_types_in[2] = type for Group3 new_types_in[3] = ignored For convenience, Xkb provides the following constants to use as indices to the groups: Group Index Constants Constant Name Value XkbGroup1Index 0 XkbGroup2Index 1 XkbGroup3Index 2 XkbGroup4Index 3
If the Xkb extension has not been properly initialized, XkbChangeTypesOfKey returns BadAccess. If the xkb parameter it not valid (that is, it is NULL or it does not contain a valid client map), XkbChangeTypesOfKey returns BadMatch. If the key is not a valid keycode, n_groups is greater than XkbNumKbdGroups, or the groups mask does not contain any of the valid group mask bits, XkbChangeTypesOfKey returns BadValue. If it is necessary to resize the key symbols or key actions arrays and any allocation errors occur, XkbChangeTypesOfKey returns BadAlloc.
Changing the Number of Symbols Bound to a Key To change the number of symbols bound to a key, use XkbResizeKeySyms. XkbResizeKeySyms KeySym *XkbResizeKeySyms XkbDescRec *xkb int key int needed xkb keyboard description to be changed key keycode for key to modify needed new number of keysyms required for key XkbResizeKeySyms reserves the space needed for needed keysyms and returns a pointer to the beginning of the new array that holds the keysyms. It adjusts the offset field of the key_sym_map entry for the key if necessary and can also change the syms, num_syms, and size_syms fields of xkb->map if it is necessary to reallocate the syms array. XkbResizeKeySyms does not modify either the width or number of groups associated with the key. If needed is greater than the current number of keysyms for the key, XkbResizeKeySyms initializes all new keysyms in the array to NoSymbol. Because the number of symbols needed by a key is normally computed as width * number of groups, and XkbResizeKeySyms does not modify either the width or number of groups for the key, a discrepancy exists upon return from XkbResizeKeySyms between the space allocated for the keysyms and the number required. The unused entries in the list of symbols returned by XkbResizeKeySyms are not preserved across future calls to any of the map editing functions, so you must update the key symbol mapping (which updates the width and number of groups for the key) before calling another allocator function. A call to XkbChangeTypesOfKey will update the mapping. If any allocation errors occur while resizing the number of symbols bound to the key, XkbResizeKeySyms returns NULL. A change to the number of symbols bound to a key should be accompanied by a change in the number of actions bound to a key. Refer to section 16.1.16 for more information on changing the number of actions bound to a key.
The Per-Key Modifier Map The modmap entry of the client map is an array, indexed by keycode, specifying the real modifiers bound to a key. Each entry is a mask composed of a bitwise inclusive OR of the legal real modifiers: ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, and Mod5Mask. If a bit is set in a modmap entry, the corresponding key is bound to that modifier. Pressing or releasing the key bound to a modifier changes the modifier set and unset state. The particular manner in which the modifier set and unset state changes is determined by the behavior and actions assigned to the key (see ). Getting the Per-Key Modifier Map from the Server To update the modifier map for one or more of the keys in a keyboard description, use XkbGetKeyModifierMap. XkbGetKeyModifierMap Status XkbGetKeyModifierMap Display *dpy unsigned int first unsigned int num XkbDescPtr xkb dpy connection to X server first keycode of first key to get num number of keys for which information is desired xkb keyboard description to update XkbGetKeyModifierMap sends a request to the server for the modifier mappings for num keys starting with the key whose keycode is first. It waits for a reply and places the results in the xkb->map->modmap array. If successful, XkbGetKeyModifierMap returns Success. If the map component of the xkb parameter has not been allocated, XkbGetKeyModifierMap allocates and initializes it. If a compatible version of Xkb is not available in the server or the Xkb extension has not been properly initialized, XkbGetKeySyms returns BadAccess. If any allocation errors occur while obtaining the modifier map, XkbGetKeyModifierMap returns BadAlloc.
libX11-1.8.12/specs/XKB/ch12.xml0000644014310600000120000006420414763154126011353 Interpreting Key Events Xkb provides functions to help developers interpret key events without having to directly interpret Xkb data structures. Xkb also modifies the behavior of several core X library functions. Effects of Xkb on the Core X Library When support for Xkb is built into the X library, the XOpenDisplay function looks for a compatible version of Xkb on the server. If it finds a compatible version, it initializes the extension and enables implicit support for Xkb in a number of X library functions. This makes it possible for clients to take advantage of nearly all Xkb features without having to be rewritten or even recompiled, if they are built with shared libraries. This implicit support is invisible to most clients, but it can have side effects, so the extension includes ways to control or disable it. Effects of Xkb on Event State Because XOpenDisplay initializes Xkb, some events contain an Xkb description of the keyboard state instead of that normally used by the core protocol. See section 17.1.1 for more information about the differences between Xkb keyboard state and that reported by the core protocol. Effects of Xkb on MappingNotify Events eventsMappingNotify When Xkb is missing or disabled, the X library tracks changes to the keyboard mapping using MappingNotify events. Whenever the keyboard mapping is changed, the server sends all clients a MappingNotify event to report the change. When a client receives a MappingNotify event, it is supposed to call XRefreshKeyboardMapping to update the keyboard description used internally by the X library. The X Keyboard Extension uses XkbMapNotify and XkbNewKeyboardNotify events to track changes to the keyboard mapping. When an Xkb-aware client receives either event, it should call XkbRefreshKeyboardMapping to update the keyboard description used internally by the X library. To avoid duplicate events, the X server does not send core protocol MappingNotify events to a client that has selected for XkbMapNotify events. The implicit support for Xkb selects for XkbMapNotify events. This means that clients that do not explicitly use Xkb but that are using a version of the X library that has implicit support for Xkb do not receive MappingNotify events over the wire. Clients that were not written with Xkb in mind do not recognize or properly handle the new Xkb events, so the implicit support converts them to MappingNotify events that report approximately the same information, unless the client has explicitly selected for the Xkb version of the event. An Xkb-capable X server does not send events from keys that fall outside the legal range of keycodes expected by that client. Once the server sends a client an XkbNewKeyboardNotify event, it reports events from all keys because it assumes that any client that has received an XkbNewKeyboardNotify event expects key events from the new range of keycodes. The implicit support for Xkb asks for XkbNewKeyboardNotify events, so the range of keycodes reported to the client might vary without the client’s knowledge. Most clients don’t really care about the range of legal keycodes, but some clients maintain information about each key and might have problems with events that come from unexpected keys. Such clients can set the XkbLC_IgnoreNewKeyboards library control (see section 11.3.1) to prevent the implicit support from requesting notification of changes to the legal range of keycodes. X Library Functions Affected by Xkb The following X library functions are modified by Xkb: XKeycodeToKeysym XKeysymToKeycode XLookupKeysym XLookupString XRefreshKeyboardMapping XRebindKeysym The implicit support for Xkb replaces a number of X library functions with versions that understand and use the X Keyboard Extension. In most cases, the semantics of the new versions are identical to those of the old, but there are occasional visible differences. This section lists all of the functions that are affected and the differences in behavior, if any, that are visible to clients. The XKeycodeToKeysym XKeycodeToKeysym function reports the keysym associated with a particular index for a single key. The index specifies a column of symbols in the core keyboard mapping (that is, as reported by the core protocol GetKeyboardMapping request). The order of the symbols in the core mapping does not necessarily correspond to the order of the symbols used by Xkb; section 17.1.3 describes the differences. The XKeysymToKeycode XKeysymToKeycode function reports a keycode to which a particular keysym is bound. When Xkb is missing or disabled, this function looks in each column of the core keyboard mapping in turn and returns the lowest numbered key that matches in the lowest numbered group. When Xkb is present, this function uses the Xkb ordering for symbols instead. The XLookupKeysym XLookupKeysym function reports the symbol in a specific column of the key associated with an event. Whether or not Xkb is present, the column specifies an index into the core symbol mapping. The XLookupString XLookupString function reports the symbol and string associated with a key event, taking into account the keycode and keyboard state as reported in the event. When Xkb is disabled or missing, XLookupString uses the rules specified by the core protocol and reports only ISO Latin-1 characters. When Xkb is present, XLookupString uses the explicit keyboard group, key types, and rules specified by Xkb. When Xkb is present, XLookupString is allowed, but not required, to return strings in character sets other than ISO Latin-1, depending on the current locale. If any key bindings are defined, XLookupString does not use any consumed modifiers (see section 11.1.2 and section 15.2) to determine matching bindings. The XRefreshKeyboardMapping XRefreshKeyboardMapping function updates the X library’s internal representation of the keyboard to reflect changes reported via MappingNotify events. When Xkb is missing or disabled, this function reloads the entire modifier map or keyboard mapping. When Xkb is present, the implicit Xkb support keeps track of the changed components reported by each XkbMapNotify event and updates only those pieces of the keyboard description that have changed. If the implicit support has not noted any keyboard mapping changes, XRefreshKeyboardMapping updates the entire keyboard description. The XRebindKeysym XRebindKeysym function associates a string with a keysym and a set of modifiers. Xkb does not directly change this function, but it does affect the way that the state reported in the event is compared to the state specified to XRebindKeysym. When Xkb is missing or disabled, XLookupString returns the specified string if the modifiers in the event exactly match the modifiers from this call. When Xkb is present, any modifiers used to determine the keysym are consumed and are not used to look up the string. Xkb Event and Keymap Functions To find the keysym bound to a particular key at a specified group and shift level, use XkbKeycodeToKeysym. XkbKeycodeToKeysym KeySym XkbKeycodeToKeysym Display *dpy KeyCode kc unsigned int group unsigned int level dpy connection to X server kc key of interest group group of interest level shift level of interest XkbKeycodeToKeysym returns the keysym bound to a particular group and shift level for a particular key on the core keyboard. If kc is not a legal keycode for the core keyboard, or if group or level are out of range for the specified key, XkbKeycodeToKeysym returns NoSymbol. To find the set of modifiers bound to a particular keysym on the core keyboard, use XkbKeysymToModifiers. XkbKeysymToModifiers unsigned int XkbKeysymToModifiers Display *dpy KeySym ks dpy connection to X server ks keysym of interest XkbKeysymToModifiers finds the set of modifiers currently bound to the keysym ks on the core keyboard. The value returned is the mask of modifiers bound to the keysym ks. If no modifiers are bound to the keysym, XkbKeysymToModifiers returns zero; otherwise, it returns the inclusive OR of zero or more of the following: ShiftMask, ControlMask, LockMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, and Mod5Mask. Use XkbLookupKeySym to find the symbol associated with a key for a particular state. XkbLookupKeySym Bool XkbLookupKeySym Display *dpy KeyCode key unsigned int state unsigned int *mods_rtrn KeySym *sym_rtrn dpy connection to X server key key for which symbols are to be found state state for which symbol should be found mods_rtrn backfilled with consumed modifiers sym_rtrn backfilled with symbol associated with key + state XkbLookupKeySym is the equivalent of the core XLookupKeySym function. For the core keyboard, given a keycode key and an Xkb state state, XkbLookupKeySym returns the symbol associated with the key in sym_rtrn and the list of modifiers that should still be applied in mods_rtrn. The state parameter is the state from a KeyPress or KeyRelease event. XkbLookupKeySym returns True if it succeeds. Use XkbLookupKeyBinding to find the string bound to a key by XRebindKeysym. XkbLookupKeyBinding is the equivalent of the core XLookupString function. XkbLookupKeyBinding int XkbLookupKeyBinding Display *dpy KeySym sym unsigned int state char *buf int nbytes int *extra_rtrn dpy connection to server sym symbol to be looked up state state for which string is to be looked up buf buffer into which returned string is written nbytes size of buffer in bytes extra_rtrn backfilled with number bytes overflow XRebindKeysym binds an ASCII string to a specified keysym, so that the string and keysym are returned when the key is pressed and a specified list of modifiers are also being held down. XkbLookupKeyBinding returns in buf the string associated with the keysym sym and modifier state state. buf is NULL terminated unless there’s an overflow. If the string returned is larger than nbytes, a count of bytes that does not fit into the buffer is returned in extra_rtrn. XkbTranslateKeySym returns the number of bytes that it placed into buf. To find the string and symbol associated with a keysym for a given keyboard state, use XkbTranslateKeySym. XkbTranslateKeySym int XkbTranslateKeySym Display *dpy KeySym *sym_inout unsigned int mods char *buf int nbytes int *extra_rtrn dpy connection to X server sym_inout symbol to be translated; result of translation mods modifiers to apply to sym_inout buf buffer into which returned string is written nbytes size of buffer in bytes extra_rtrn number of bytes overflow XkbTranslateKeySym applies the transformations specified in mods to the symbol specified by sym_inout. It returns in buf the string, if any, associated with the keysym for the current locale. If the transformations in mods changes the keysym, sym_inout is updated accordingly. If the string returned is larger than nbytes, a count of bytes that does not fit into the buffer is returned in extra_rtrn. XkbTranslateKeySym returns the number of bytes it placed into buf. To update the keyboard description that is internal to the X library, use XkbRefreshKeyboardMapping. XkbRefreshKeyboardMapping Status XkbRefreshKeyboardMapping XkbMapNotifyEvent *event event event initiating remapping XkbRefreshKeyboardMapping is the Xkb equivalent of the core XRefreshKeyboardMapping function. It requests that the X server send the current key mapping information to this client. A client usually invokes XkbRefreshKeyboardMapping after receiving an XkbMapNotify event. XkbRefreshKeyboardMapping returns Success if it succeeds and BadMatch if the event is not an Xkb event. The XkbMapNotify event can be generated when some client calls XkbSetMap, XkbChangeMap, XkbGetKeyboardByName, or any of the standard X library functions that change the keyboard mapping or modifier mapping. To translate a keycode to a key symbol and modifiers, use XkbTranslateKeyCode. XkbTranslateKeyCode Bool XkbTranslateKeyCode XkbDescPtr xkb KeyCode key unsigned int mods unsigned int *mods_rtrn KeySym *keysym_rtrn xkb keyboard description to use for translation key keycode to translate mods modifiers to apply when translating key mods_rtrn backfilled with consumed modifiers keysym_rtrn keysym resulting from translation mods_rtrn is backfilled with the modifiers consumed by the translation process. mods is a bitwise inclusive OR of the legal modifier masks: ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask. The AlwaysConsumeShiftAndLock library control (see section 11.1.3), if enabled, causes XkbTranslateKeyCode to consume shift and lock. XkbTranslateKeyCode returns True if the translation resulted in a keysym, and False if it resulted in NoSymbol. libX11-1.8.12/specs/XKB/XKBlib-7.svg0000644014310600000120000003163014763154126012071 image/svg+xml Rotated Sections libX11-1.8.12/specs/XKB/ch20.xml0000644014310600000120000010743614763154126011357 Server Database of Keyboard Components The X server maintains a database of keyboard components, identified by component type. The database contains all the information necessary to build a complete keyboard description for a particular device, as well as to assemble partial descriptions. Table 20.1 identifies the component types and the type of information they contain. Server Database Keyboard Components Component Type Component Primary Contents May also contain Keymap Complete keyboard description Normally assembled using a complete component from each of the other types Keycodes Symbolic name for each key Minimum and maximum legal keycodes Aliases for some keys Symbolic names for indicators Description of indicators physically present Types Key types Real modifier bindings and symbolic names for some virtual modifiers Compatibility Rules used to assign actions to keysyms Maps for some indicators Real modifier bindings and symbolic names for some virtual modifiers Symbols Symbol mapping for keyboard keys Modifier mapping Symbolic names for groups Explicit actions and behaviors for some keys Real modifier bindings and symbolic names for some virtual modifiers Geometry Layout of the keyboard Aliases for some keys; overrides keycodes component aliases Symbolic names for some indicators Description of indicators physically present
While a keymap is a database entry for a complete keyboard description, and therefore logically different from the individual component database entries, the rules for processing keymap entries are identical to those for the individual components. In the discussion that follows, the term component is used to refer to either individual components or a keymap. There may be multiple entries for each of the component types. An entry may be either complete or partial. Partial entries describe only a piece of the corresponding keyboard component and are designed to be combined with other entries of the same type to form a complete entry. For example, a partial symbols map might describe the differences between a common ASCII keyboard and some national layout. Such a partial map is not useful on its own because it does not include those symbols that are the same on both the ASCII and national layouts (such as function keys). On the other hand, this partial map can be used to configure any ASCII keyboard to use a national layout. When a keyboard description is built, the components are processed in the order in which they appear in Table 20.1; later definitions override earlier ones. Component Names Component names have the form “class(member)” where class describes a subset of the available components for a particular type and the optional member identifies a specific component from that subset. For example, the name "atlantis(acme)" for a symbols component might specify the symbols used for the atlantis national keyboard layout by the vendor "acme." Each class has an optional default member — references that specify a class but not a member refer to the default member of the class, if one exists. Xkb places no constraints on the interpretation of the class and member names used in component names. The class and member names are both specified using characters from the Latin-1 character set. Xkb implementations must accept all alphanumeric characters, minus (‘-’) and underscore (‘_’) in class or member names, and must not accept parentheses, plus, vertical bar, percent sign, asterisk, question mark, or white space. The use of other characters is implementation-dependent. Listing the Known Keyboard Components You may ask the server for a list of components for one or more component types. The request takes the form of a set of patterns, one pattern for each of the component types, including a pattern for the complete keyboard description. To obtain this list, use XkbListComponents. XkbListComponents XkbComponentListPtr XkbListComponents Display *dpy unsigned int device_spec XkbComponentNamesPtr ptrns int *max_inout dpy connection to X server device_spec device ID, or XkbUseCoreKbd ptrns namelist for components of interest max_inout max # returned names, # left over XkbListComponents queries the server for a list of component names matching the patterns specified in ptrns. It waits for a reply and returns the matching component names in an XkbComponentListRec structure. When you are done using the structure, you should free it using XkbFreeComponentList. device_spec indicates a particular device in which the caller is interested. A server is allowed (but not required) to restrict its reply to portions of the database that are relevant for that particular device. ptrns is a pointer to an XkbComponentNamesRec, described below. Each of the fields in ptrns contains a pattern naming the components of interest. Each of the patterns is composed of characters from the ISO Latin1 encoding, but can contain only parentheses, the wildcard characters ‘?’ and ‘*’, and characters permitted in a component class or member name (see section 20.1). A pattern may be NULL, in which case no components for that type is returned. Pattern matches with component names are case sensitive. The ‘?’ wildcard matches any single character, except a left or right parenthesis; the ‘*’ wildcard matches any number of characters, except a left or right parenthesis. If an implementation allows additional characters in a component class or member name other than those required by the Xkb extension (see section 20.1), the result of comparing one of the additional characters to either of the wildcard characters is implementation-dependent. If a pattern contains illegal characters, the illegal characters are ignored. The matching process is carried out as if the illegal characters were omitted from the pattern. max_inout is used to throttle the amount of data passed to and from the server. On input, it specifies the maximum number of names to be returned (the total number of names in all component categories). Upon return from XkbListComponents, max_inout contains the number of names that matched the request but were not returned because of the limit. XkbComponentNamesRec The component name patterns used to describe the request are passed to XkbListComponents using an XkbComponentNamesRec structure. This structure has no special allocation constraints or interrelationships with other structures; allocate and free this structure using standard malloc and free calls or their equivalent: typedef struct _XkbComponentNames { char * keymap; /* keymap names */ char * keycodes; /* keycode names */ char * types; /* type names */ char * compat; /* compatibility map names */ char * symbols; /* symbol names */ char * geometry; /* geometry names */ } XkbComponentNamesRec, *XkbComponentNamesPtr; XkbComponentListRec XkbComponentNameRec XkbListComponents returns a pointer to an XkbComponentListRec: typedef struct _XkbComponentList { int num_keymaps; /* number of entries in keymap */ int num_keycodes; /* number of entries in keycodes */ int num_types; /* number of entries in types */ int num_compat; /* number of entries in compat */ int num_symbols; /* number of entries in symbols */ int num_geometry; /* number of entries in geometry; XkbComponentNamePtr keymap; /* keymap names */ XkbComponentNamePtr keycodes; /* keycode names */ XkbComponentNamePtr types; /* type names */ XkbComponentNamePtr compat; /* compatibility map names */ XkbComponentNamePtr symbols; /* symbol names */ XkbComponentNamePtr geometry; /* geometry names */ } XkbComponentListRec, *XkbComponentListPtr; typedef struct _XkbComponentName { unsigned short flags; /* hints regarding component name */ char * name; /* name of component */ } XkbComponentNameRec, *XkbComponentNamePtr; Note that the structure used to specify patterns on input is an XkbComponentNamesRec, and that used to hold the individual component names upon return is an XkbComponentNameRec (no trailing ‘s’ in Name). When you are done using the structure returned by XkbListComponents, free it using XkbFreeComponentList. XkbFreeComponentList void XkbFreeComponentList XkbComponentListPtr list list pointer to XkbComponentListRec to free Component Hints A set of flags is associated with each component; these flags provide additional hints about the component’s use. These hints are designated by bit masks in the flags field of the XkbComponentNameRec structures contained in the XkbComponentListRec returned from XkbListComponents. The least significant byte of the flags field has the same meaning for all types of keyboard components; the interpretation of the most significant byte is dependent on the type of component. The flags bits are defined in Table 20.2. The symbols hints in Table 20.2 apply only to partial symbols components (those with XkbLC_Partial also set); full symbols components are assumed to specify all of the pieces. The alphanumeric, modifier, keypad or function keys symbols hints should describe the primary intent of the component designer and should not be simply an exhaustive list of the kinds of keys that are affected. For example, national keyboard layouts affect primarily alphanumeric keys, but many affect a few modifier keys as well; such mappings should set only the XkbLC_AlphanumericKeys hint. In general, symbols components should set only one of the four flags ( XkbLC_AlternateGroup may be combined with any of the other flags). XkbComponentNameRec Flags Bits Component Type Component Hints (flags) Meaning Value All Components XkbLC_Hidden Do not present to user (1L<<0) XkbLC_Default Default member of class (1L<<1) XkbLC_Partial Partial component (1L<<2) Keymap none Keycodes none Types none Compatibility none Symbols XkbLC_AlphanumericKeys Bindings primarily for alphanumeric keyboard section (1L<<8) XkbLC_ModifierKeys Bindings primarily for modifier keys (1L<<9) XkbLC_KeypadKeys Bindings primarily for numeric keypad keys (1L<<10) XkbLC_FunctionKeys Bindings primarily for function keys (1L<<11) XkbLC_AlternateGroup Bindings for an alternate group (1L<<12) Geometry none
Building a Keyboard Description Using the Server Database A client may request that the server fetch one or more components from its database and use those components to build a new server keyboard description. The new keyboard description may be built from scratch, or it may be built starting with the current keyboard description for a particular device. Once the keyboard description is built, all or part of it may be returned to the client. The parts returned to the client need not include all of the parts used to build the description. At the time it requests the server to build a new keyboard description, a client may also request that the server use the new description internally to replace the current keyboard description for a specific device, in which case the behavior of the device changes accordingly. To build a new keyboard description from a set of named components, and to optionally have the server use the resulting description to replace an active one, use XkbGetKeyboardByName. XkbGetKeyboardByName XkbDescPtr XkbGetKeyboardByName Display *dpy unsigned int device_spec XkbComponentNamesPtr names unsigned int want unsigned int need Bool load dpy connection to X server device_spec device ID, or XkbUseCoreKbd names names of components to fetch want desired structures in returned record need mandatory structures in returned record load True ⇒ load into device_spec names contains a set of expressions describing the keyboard components the server should use to build the new keyboard description. want and need are bit fields describing the parts of the resulting keyboard description that should be present in the returned XkbDescRec. The individual fields in names are component expressions composed of keyboard component names (no wildcarding as may be used in XkbListComponents), the special component name symbol ‘%’, and the special operator characters ‘+’ and ‘|’. A component expression is parsed left to right, as follows: The special component name “computed” may be used in keycodes component expressions and refers to a component consisting of a set of keycodes computed automatically by the server as needed. The special component name “canonical” may be used in types component expressions and refers to a partial component defining the four standard key types: ALPHABETIC, ONE_LEVEL, TWO_LEVEL, and KEYPAD. The special component name ‘%’ refers to the keyboard description for the device specified in device_spec or the keymap names component. If a keymap names component is specified that does not begin with ‘+’ or ‘|’ and does not contain ‘%’, then ‘%’ refers to the description generated by the keymap names component. Otherwise, it refers to the keyboard description for device_spec. The ‘+’ operator specifies that the following component should override the currently assembled description; any definitions that are present in both components are taken from the second. The ‘|’ operator specifies that the next specified component should augment the currently assembled description; any definitions that are present in both components are taken from the first. If the component expression begins with an operator, a leading ‘%’ is implied. If any unknown or illegal characters appear anywhere in the expression, the entire expression is invalid and is ignored. For example, if names->symbols contained the expression "+de", it specifies that the default member of the "de" class of symbols should be applied to the current keyboard mapping, overriding any existing definitions (it could also be written "+de(default)"). Here is a slightly more involved example: the expression "acme(ascii)+de(basic)|iso9995-3" constructs a German (de) mapping for the ASCII keyboard supplied by the "acme" vendor. The new definition begins with the symbols for the ASCII keyboard for Acme (acme(ascii)), overrides them with definitions for the basic German keyboard (de(basic)), and then applies the definitions from the default iso9995-3 keyboard ( iso9995-3) to any undefined keys or groups of keys (part three of the iso9995 standard defines a common set of bindings for the secondary group, but allows national layouts to override those definitions where necessary). The interpretation of the above expression components (acme, ascii, de, basic, iso9995-3) is not defined by Xkb; only the operations and their ordering are. Note that the presence of a keymap names component that does not contain ‘%’ (either explicit or implied by virtue of an expression starting with an operator) indicates a description that is independent of the keyboard description for the device specified in device_spec. The same is true of requests in which the keymap names component is empty and all five other names components contain expressions void of references to ‘%’. Requests of this form allow you to deal with keyboard definitions independent of any actual device. The server parses all non- NULL fields in names and uses them to build a keyboard description. However, before parsing the expressions in names, the server ORs the bits in want and need together and examines the result in relationship to the expressions in names. Table 20.3 identifies the components that are required for each of the possible bits in want or need. If a required component has not been specified in the names structure (the corresponding field is NULL), the server substitutes the expression “%”, resulting in the component values being taken from device_spec. In addition, if load is True, the server modifies names if necessary (again using a “%” entry) to ensure all of the following fields are non- NULL: types, keycodes, symbols, and compat. Want and Need Mask Bits and Required Names Components want or need mask bit Required names Components value XkbGBN_TypesMask Types (1L<<0) XkbGBN_CompatMapMask Compat (1L<<1) XkbGBN_ClientSymbolsMask Types + Symbols + Keycodes (1L<<2) XkbGBN_ServerSymbolsMask Types + Symbols + Keycodes (1L<<3) XkbGBN_SymbolsMask Symbols (1L<<1) XkbGBN_IndicatorMapMask Compat (1L<<4) XkbGBN_KeyNamesMask Keycodes (1L<<5) XkbGBN_GeometryMask Geometry (1L<<6) XkbGBN_OtherNamesMask Types + Symbols + Keycodes + Compat + Geometry (1L<<7) XkbGBN_AllComponentsMask (0xff)
need specifies a set of keyboard components that the server must be able to resolve in order for XkbGetKeyboardByName to succeed; if any of the components specified in need cannot be successfully resolved, XkbGetKeyboardByName fails. want specifies a set of keyboard components that the server should attempt to resolve, but that are not mandatory. If the server is unable to resolve any of these components, XkbGetKeyboardByName still succeeds. Bits specified in want that are also specified in need have no effect in the context of want. If load is True, the server updates its keyboard description for device_spec to match the result of the keyboard description just built. If load is False, the server’s description for device device_spec is not updated. In all cases, the parts specified by want and need from the just-built keyboard description are returned. The names structure in an XkbDescRec keyboard description record (see ) contains one field for each of the five component types used to build a keyboard description. When a keyboard description is built from a set of database components, the corresponding fields in this names structure are set to match the expressions used to build the component. The entire process of building a new keyboard description from the server database of components and returning all or part of it is diagrammed in Figure 20.1:
Building a New Keyboard Description from the Server Database
The information returned to the client in the XkbDescRec is essentially the result of a series of calls to extract information from a fictitious device whose description matches the one just built. The calls corresponding to each of the mask bits are summarized in Table 20.4, together with the XkbDescRec components that are filled in. XkbDescRec Components Returned for Values of Want & Needs Request (want+need) Fills in Xkb components Equivalent Function Call XkbGBN_TypesMask map.types XkbGetUpdatedMap(dpy, XkbTypesMask, Xkb) XkbGBN_ServerSymbolsMask server XkbGetUpdatedMap(dpy, XkbAllClientInfoMask, Xkb) XkbGBN_ClientSymbolsMask map, including map.types XkbGetUpdatedMap(dpy, XkbAllServerInfoMask, Xkb) XkbGBN_IndicatorMaps indicators XkbGetIndicatorMap(dpy, XkbAllIndicators, Xkb) XkbGBN_CompatMapMask compat XkbGetCompatMap(dpy, XkbAllCompatMask, Xkb) XkbGBN_GeometryMask geom XkbGetGeometry(dpy, Xkb) XkbGBN_KeyNamesMask names.keys names.key_aliases XkbGetNames(dpy, XkbKeyNamesMask | XkbKeyAliasesMask, Xkb) XkbGBN_OtherNamesMask names.keycodes names.geometry names.symbols names.types map.types[*].lvl_names[*] names.compat names.vmods names.indicators names.groups names.radio_groups names.phys_symbols XkbGetNames(dpy, XkbAllNamesMask & ~(XkbKeyNamesMask | XkbKeyAliasesMask), Xkb)
There is no way to determine which components specified in want (but not in need) were actually fetched, other than breaking the call into successive calls to XkbGetKeyboardByName and specifying individual components. XkbGetKeyboardByName always sets min_key_code and max_key_code in the returned XkbDescRec structure. XkbGetKeyboardByName is synchronous; it sends the request to the server to build a new keyboard description and waits for the reply. If successful, the return value is non-NULL. XkbGetKeyboardByName generates a BadMatch protocol error if errors are encountered when building the keyboard description. If you simply want to obtain information about the current keyboard device, rather than generating a new keyboard description from elements in the server database, use XkbGetKeyboard (see section 6.2). XkbGetKeyboard XkbDescPtr XkbGetKeyboard Display *dpy unsigned int which unsigned int device_spec dpy connection to X server which mask of components of XkbDescRec of interest device_spec device ID XkbGetKeyboard is used to read the current description for one or more components of a keyboard device. It calls XkbGetKeyboardByName as follows: XkbGetKeyboardByName ( dpy, device_spec, NULL, which, which, False).
libX11-1.8.12/specs/XKB/XKBlib-20.svg0000644014310600000120000004224614763154126012151 image/svg+xml XkbDescRec compat XkbCompMapRec sym_interpret groups[0] groups[1] groups[2] groups[3] num_si size_si XkbSymInterpretRec(s) num_si - 1 size_si - 1 0 Groupcompatibilitymaps libX11-1.8.12/specs/XKB/XKBlib-9.svg0000644014310600000120000022513514763154126012100 image/svg+xml Row 5 Row 4 Row 2 Row 1 Row 3 libX11-1.8.12/specs/i18n/0000755014310600000120000000000014763154171010301 5libX11-1.8.12/specs/i18n/compose/0000755014310600000120000000000014763154171011746 5libX11-1.8.12/specs/i18n/compose/compose-chart.pl0000755014310600000120000002356214763154126015002 #! /usr/bin/perl # # Copyright (c) 2009, 2010, Oracle and/or its affiliates. # # 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. # # # Make a DocBook chart showing compose combinations for a locale # # See perldoc at end (or run with --help or --man options) for details # of command-line options. # # Compose file grammar is defined in modules/im/ximcp/imLcPrs.c use strict; use warnings; use Getopt::Long; use Pod::Usage; my $error_count = 0; my $charset; my $locale_name; my $output_filename = '-'; my $man = 0; my $help = 0; my $make_index = 0; GetOptions ('charset:s' => \$charset, 'locale=s' => \$locale_name, 'output=s' => \$output_filename, 'index' => \$make_index, 'help|?' => \$help, 'man' => \$man) or pod2usage(2); pod2usage(1) if $help; pod2usage(-exitstatus => 0, -verbose => 2) if $man; if (!defined($charset) || ($charset eq "")) { if (defined($locale_name)) { my $guessed_charset = $locale_name; $guessed_charset =~ s{^.*\.}{}; if ($guessed_charset =~ m{^(utf-8|gbk|gb18030)$}i) { $charset = $1; } elsif ($guessed_charset =~ m{iso8859-(\d+)}i) { $charset = "iso-8859-$1"; } elsif ($guessed_charset =~ m{^microsoft-cp(125\d)$}) { $charset = "windows-$1"; } } if (!defined($charset) || ($charset eq "")) { $charset = "utf-8"; } } if ($make_index) { # Print Docbook output open my $OUTPUT, '>', $output_filename or die "Could not create $output_filename: $!"; print $OUTPUT join ("\n", qq(), q(), q(
), q( ), q( Xlib Compose Key Charts), q( ), ( map { qq( \
$_
\
) } @ARGV ), q(
), "\n" ); close $OUTPUT or die "Couldn't write $output_filename: $!"; exit(0); } foreach my $a (@ARGV) { $error_count += make_compose_chart($a); } exit($error_count); sub make_compose_chart { my ($filename) = @_; my $errors = 0; my @compose_table = (); my @included_files = (); my $line = 0; my $pre_file = ($filename =~ m{\.pre$}) ? 1 : 0; my $in_c_comment = 0; my $in_comment = 0; my $keyseq_count = 0; open my $COMPOSE, '<', $filename or die "Could not open $filename: $!"; COMPOSE_LINE: while (my $cl = <$COMPOSE>) { $line++; chomp($cl); my $original_line = $cl; # Special handling for changes cpp makes to .pre files if ($pre_file == 1) { if ($in_c_comment) { # Look for end of multi-line C comment if ($cl =~ m{\*/(.*)$}) { $cl = $1; $in_c_comment = 0; } else { next; } } $cl =~ s{/\*.\**/}{}; # Remove single line C comments if ($cl =~ m{^(.*)/\*}) { # Start of a multi-line C comment $cl = $1; $in_c_comment = 1; } $cl =~ s{^\s*XCOMM}{#}; # Translate pre-processing comments } chomp($cl); if ($cl =~ m{^\s*#\s*(.*)$}) { # Comment only lines # Combine comment blocks my $comment = $1; if ($in_comment) { my $prev_comment = pop @compose_table; $comment = join(' ', $prev_comment->{-comment}, $comment); } else { $in_comment = 1; } push @compose_table, { -type => 'comment', -comment => $comment }; next COMPOSE_LINE; } $in_comment = 0; if ($cl =~ m{^\s*$}) { # Skip blank lines next COMPOSE_LINE; } elsif ($cl =~ m{^(STATE\s+|END_STATE)}) { # Sun extension to compose file syntax next COMPOSE_LINE; } elsif ($cl =~ m{^([^:]+)\s*:\s*(.+)$}) { my ($seq, $action) = ($1, $2); $seq =~ s{\s+$}{}; my @keys = grep { $_ !~ m/^\s*$/ } split /[\s\<\>]+/, $seq; push @compose_table, { -type => 'keyseq', -keys => [ @keys ], -action => $action }; $keyseq_count++; next COMPOSE_LINE; } elsif ($cl =~ m{^(STATE_TYPE:|\@StartDeadKeyMap|\@EndDeadKeyMap)}) { # ignore next COMPOSE_LINE; } elsif ($cl =~ m{^include "(.*)"}) { my $incpath = $1; $incpath =~ s{^X11_LOCALEDATADIR/(.*)/Compose}{the $1 compose table}; push @included_files, $incpath; next COMPOSE_LINE; } else { print STDERR ('Unrecognized pattern in ', $filename, ' on line #', $line, ":\n ", $cl, "\n"); } } close $COMPOSE; if ($errors > 0) { return $errors; } # Print Docbook output open my $OUTPUT, '>', $output_filename or die "Could not create $output_filename: $!"; print $OUTPUT join ("\n", qq(), q(), qq(
), qq(Xlib Compose Keys for $locale_name), q(Applications using Xlib input handling should recognize), q( these compose key sequences in locales using the), qq( $locale_name compose table.), "\n" ); if (@included_files) { print $OUTPUT q(This compose table includes the non-conflicting), q( entries from: ), join(',', @included_files), q(. Those entries are not shown here - see those charts for the), q( included key sequences.), "\n"; } my @pretable_comments = (); if ($keyseq_count == 0) { @pretable_comments = @compose_table; } elsif ($compose_table[0]->{-type} eq 'comment') { push @pretable_comments, shift @compose_table; } foreach my $comment_ref (@pretable_comments) { print $OUTPUT qq(), xml_escape($comment_ref->{-comment}), qq(\n); } if ($keyseq_count > 0) { start_table($OUTPUT); my $row_count = 0; foreach my $cr (@compose_table) { if ($row_count++ > 750) { # Break tables every 750 rows to avoid overflowing # xmlto/xsltproc limits on the largest tables end_table($OUTPUT); start_table($OUTPUT); $row_count = 0; } if ($cr->{-type} eq 'comment') { print $OUTPUT qq(), xml_escape($cr->{-comment}), qq(\n); } elsif ($cr->{-type} eq 'keyseq') { my $action = join(" ", xml_escape($cr->{-action})); if ($action =~ m{^\s*"\\([0-7]+)"}) { my $char = oct($1); if ($char >= 32) { $action =~ s{^\s*"\\[0-7]+"}{"&#$char;"}; } } $action =~ s{^\s*"(.+)"}{"$1"}; print $OUTPUT qq(), qq(), (map { qq($_) } xml_escape(@{$cr->{-keys}})), qq(), qq(), $action, qq(\n); } } end_table($OUTPUT); } else { print $OUTPUT qq(), qq(This compose table defines no sequences of its own.), qq(\n); } print $OUTPUT "
\n"; close $OUTPUT or die "Couldn't write $output_filename: $!"; return $errors; } sub xml_escape { my @output; foreach my $l (@_) { $l =~ s{\&}{&}g; $l =~ s{\<}{<}g; $l =~ s{\>}{>}g; push @output, $l; } return @output; } sub start_table { my ($OUTPUT) = @_; print $OUTPUT join("\n", qq(Compose Key Sequences for $locale_name), qq(), qq( ), qq( ), qq( Key SequenceAction), qq( ), qq( \n), ); } sub end_table { my ($OUTPUT) = @_; print $OUTPUT "\n\n
\n"; } __END__ =head1 NAME compose-chart - Make DocBook/XML charts of compose table entries =head1 SYNOPSIS compose-chart [options] [file ...] Options: --charset[=] character set to specify in XML doctype --locale= name of locale to display in chart --output= filename to output chart to --index make index of charts instead of individual chart --help brief help message --man full documentation =head1 OPTIONS =over 8 =item B<--charset>[=I] Specify a character set to list in the doctype declaration in the XML output. If not specified, attempts to guess from the locale name, else default to "utf-8". =item B<--locale>=I Specify the locale name to use in the chart titles and introductory text. =item B<--output>=I Specify the output file to write the DocBook output to. =item B<--index> Generate an index of the listed locale charts instead of a chart for a specific locale. =item B<--help> Print a brief help message and exit. =item B<--man> Print the manual page and exit. =back =head1 DESCRIPTION This program will read the given compose table file(s) and generate DocBook/XML charts listing the available characters for end-user reference. =cut libX11-1.8.12/specs/i18n/compose/docbook-nl.am0000644014310600000120000001004714763154126014236 # # Generate output formats for a single DocBook/XML with/without chapters # # This version of docbook.am handles cases where XML source is generated # and the html to be produced must be in chunks, one per chapter. # The generated source must be cleaned, installed but not distributed # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # # DocBook/XML generated output formats to be installed shelf_DATA = $(chapters) $(docbook) # Generated DocBook/XML source files using a perl script %.xml: $(top_builddir)/nls/%/Compose $(AM_V_GEN)$(PERL) $(srcdir)/compose-chart.pl \ --locale="$(@:.xml=)" --output="$@" $< libX11-keys.xml: $(locales:%=%.xml) $(AM_V_GEN)$(PERL) $(srcdir)/compose-chart.pl \ --index --output="$@" $(locales) if HAVE_XMLTO if HAVE_STYLESHEETS XMLTO_SEARCHPATH_FLAGS = \ --searchpath "$(XORG_SGML_PATH)/X11" \ --searchpath "$(abs_top_builddir)" XMLTO_HTML_OLINK_FLAGS = \ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ --stringparam current.docid="$(<:.xml=)" XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-chunk.xsl XMLTO_TXT_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl XMLTO_HTML_CHUNKING_FLAGS = \ --stringparam root.filename="$(<:.xml=)" XMLTO_HTML_FLAGS = \ $(XMLTO_SEARCHPATH_FLAGS) \ $(XMLTO_HTML_STYLESHEET_FLAGS) \ $(XMLTO_HTML_CHUNKING_FLAGS) \ $(XMLTO_HTML_OLINK_FLAGS) XMLTO_TXT_FLAGS = \ $(XMLTO_SEARCHPATH_FLAGS) \ $(XMLTO_TXT_STYLESHEET_FLAGS) \ $(XMLTO_HTML_OLINK_FLAGS) shelf_DATA += $(docbook:.xml=.html) $(chapters:.xml=.html) %.html: %.xml $(chapters) $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml $< if HAVE_XMLTO_TEXT shelf_DATA += $(docbook:.xml=.txt) %.txt: %.xml $(chapters) $(AM_V_GEN)$(XMLTO) $(XMLTO_TXT_FLAGS) txt $< endif HAVE_XMLTO_TEXT if HAVE_FOP XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl XMLTO_PDF_OLINK_FLAGS = \ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ --stringparam current.docid="$(<:.xml=)" XMLTO_FO_FLAGS = \ $(XMLTO_SEARCHPATH_FLAGS) \ $(XMLTO_FO_STYLESHEET_FLAGS) \ $(XMLTO_FO_IMAGEPATH_FLAGS) \ $(XMLTO_PDF_OLINK_FLAGS) shelf_DATA += $(docbook:.xml=.pdf) %.pdf: %.xml $(chapters) $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< shelf_DATA += $(docbook:.xml=.ps) %.ps: %.xml $(chapters) $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< endif HAVE_FOP # Generate documents cross-reference target databases if HAVE_XSLTPROC XSLT_SEARCHPATH_FLAGS = \ --path "$(XORG_SGML_PATH)/X11" \ --path "$(abs_top_builddir)" XSLT_OLINK_FLAGS = \ --stringparam targets.filename "$@" \ --stringparam collect.xref.targets "only" XSLT_FO_OLINK_FLAGS = \ --stringparam olink.base.uri "$(@:.db=)" XSLT_HTML_CHUNKING_FLAGS = \ --stringparam root.filename "$(<:.xml=)" XSLT_HTML_FLAGS = \ $(XSLT_SEARCHPATH_FLAGS) \ $(XSLT_HTML_CHUNKING_FLAGS) \ $(XSLT_OLINK_FLAGS) \ --nonet --xinclude \ $(STYLESHEET_SRCDIR)/xorg-chunk.xsl XSLT_PDF_FLAGS = \ $(XSLT_SEARCHPATH_FLAGS) \ $(XSLT_OLINK_FLAGS) \ $(XSLT_FO_OLINK_FLAGS) \ --nonet --xinclude \ $(STYLESHEET_SRCDIR)/xorg-fo.xsl shelf_DATA += $(docbook:.xml=.html.db) %.html.db: %.xml $(chapters) $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< shelf_DATA += $(docbook:.xml=.pdf.db) %.pdf.db: %.xml $(chapters) $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< endif HAVE_XSLTPROC endif HAVE_STYLESHEETS endif HAVE_XMLTO CLEANFILES = $(shelf_DATA) libX11-1.8.12/specs/i18n/compose/Makefile.in0000644014310600000120000006607414763154147013753 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # This version of docbook.am handles cases where XML source is generated # and the html to be produced must be in chunks, one per chapter. # The generated source must be cleaned, installed but not distributed # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) $(chapters:.xml=.html) @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = specs/i18n/compose ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" DATA = $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/docbook-nl.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@docbook = libX11-keys.xml # Included chapters, appendix, images @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@chapters = $(locales:%=%.xml) # The location where the DocBook/XML generated formats are installed @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@shelfdir = $(docdir)/i18n/compose # DocBook/XML generated output formats to be installed @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@shelf_DATA = $(chapters) $(docbook) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@ $(am__append_1) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@ $(am__append_2) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@ $(am__append_3) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@ $(am__append_4) @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-chunk.xsl @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_TXT_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_CHUNKING_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam root.filename="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_CHUNKING_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_TXT_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_TXT_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_FO_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_CHUNKING_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam root.filename "$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_HTML_CHUNKING_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-chunk.xsl @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_FO_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@CLEANFILES = $(shelf_DATA) # Generate DocBook/XML output formats with or without stylesheets # The XML source is generated and cleaned but not distributed EXTRA_DIST = compose-chart.pl all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/docbook-nl.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/i18n/compose/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/i18n/compose/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(srcdir)/docbook-nl.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-shelfDATA install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-shelfDATA .PRECIOUS: Makefile # Generated DocBook/XML source files using a perl script @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@%.xml: $(top_builddir)/nls/%/Compose @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@ $(AM_V_GEN)$(PERL) $(srcdir)/compose-chart.pl \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@ --locale="$(@:.xml=)" --output="$@" $< @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@libX11-keys.xml: $(locales:%=%.xml) @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@ $(AM_V_GEN)$(PERL) $(srcdir)/compose-chart.pl \ @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@ --index --output="$@" $(locales) @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml $< @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_TXT_FLAGS) txt $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_PERL_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/specs/i18n/compose/Makefile.am0000644014310600000120000000075014763154126013724 if ENABLE_SPECS if HAVE_PERL # Main DocBook/XML files (DOCTYPE book) docbook = libX11-keys.xml # Included chapters, appendix, images chapters = $(locales:%=%.xml) # The location where the DocBook/XML generated formats are installed shelfdir = $(docdir)/i18n/compose # Generate DocBook/XML output formats with or without stylesheets # The XML source is generated and cleaned but not distributed include docbook-nl.am endif HAVE_PERL endif ENABLE_SPECS EXTRA_DIST = compose-chart.pl libX11-1.8.12/specs/i18n/framework/0000755014310600000120000000000014763154171012276 5libX11-1.8.12/specs/i18n/framework/framework.svg0000644014310600000120000006121314763154126014737 image/svg+xml Application <<ANSI/MSE API>>(X Contrib) <<XLib API>>(X Core) <<ANSI/MSE API>>(X Contrib) InputMethod OutputMethod <Locl. Serv. API>X Locale Object C Library ANSI impl XLC_XLOCALE- MB_CUR_MAXcodeset infoo char/charseto conv/charset XLC_FONTSET- fontset info- charset info- font/charset- XLFD,GL/GR localedef DB- MB_CUR_MAX- codset infoo char/charseto conv/charset Locale Library non-ANSI impl. XLocale Source (X Core) System Locale Source libX11-1.8.12/specs/i18n/framework/Makefile.in0000644014310600000120000006150314763154147014273 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = specs/i18n/framework ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = framework.xml framework.svg am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_SPECS_TRUE@docbook = framework.xml # Included chapters, appendix, images @ENABLE_SPECS_TRUE@chapters = framework.svg # The location where the DocBook/XML files and their generated formats are installed @ENABLE_SPECS_TRUE@shelfdir = $(docdir)/i18n/framework # DocBook/XML generated output formats to be installed @ENABLE_SPECS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_SPECS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_SPECS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/i18n/framework/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/i18n/framework/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_shelfDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-shelfDATA install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-dist_shelfDATA uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/specs/i18n/framework/framework.xml0000644014310600000120000014612514763154126014746 %defs; ]> X11R6 Sample Implementation Frame Work X Version 11, Release &fullrelvers; KatsuhisaYano TOSHIBA Corporation YoshioHoriuchi IBM Japan 1994 TOSHIBA Corporation IBM Corporation Permission to use, copy, modify, and distribute this documentation for any purpose and without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. TOSHIBA Corporation and IBM Corporation make no representations about the suitability for any purpose of the information in this document. This documentation is provided as is without express or implied warranty. Copyright © 1994 X Consortium Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from X Consortium. X Window System is a trademark of The Open Group. Framework Preface This document proposes to define the structures, methods and their signatures that are expected to be common to all locale dependent functions within the Xlib sample implementation. The following illustration (Fig.1) is proposed to outline the separating of the components within the sample implementation. Preface drawing. Frame work of Locale Service API Proposal Generally speaking, the internationalized portion of Xlib (Locale Dependent X, LDX) consists of three objects; locale (LC) , input method (IM) and output method (OM). The LC provides a set of information that depends on user's language environment. The IM manages text inputing, and the OM manages text drawing. Both IM and OM highly depend on LC data. In X11R5, there are two sample implementations, Ximp and Xsi, for Xlib internationalization. But in both implementations, IM and OM actually refer the private extension of LC. It breaks coexistence of these two sample implementations. For example, if a user creates a new OM for special purpose as a part of Ximp, it will not work with Xsi. As a solution of this problem, we propose to define the standard APIs between these three objects, and define the structure that are common to these objects. Objective Explain the current X11R6 sample implementation Document the common set of locale dependent interfaces Provide more flexible pluggable layer Locale Object Binding Functions This chapter describes functions related locale object binding for implementing the pluggable layer. A locale loader is an entry point for locale object, which instantiates XLCd object and binds locale methods with specified locale name. The behavior of loader is implementation dependent. And, what kind of loaders are available is also implementation dependent. The loader is called in _XOpenLC, but caller of does not need to care about its inside. For example, if the loader is implemented with dynamic load functions, and the dynamic module is expected to be unloaded when the corresponding XLCd is freed, close methods of XLCdMethods should handle unloading. Initializing a locale loader list void _XlcInitLoader The _XlcInitLoader function initializes the locale loader list with vendor specific manner. Each loader is registered with calling _XlcAddLoader. The number of loaders and their order in the loader list is implementation dependent. Add a loader typedef XLCd (*XLCdLoadProc)(name); char *name; typedef int XlcPosition; #define XlcHead #define XlcTail Bool _XlcAddLoader XLCdLoadProc proc XlcPosition position The function registers the specified locale loader "proc" to the internal loader list. The position specifies that the loader "proc" should be placed in the top of the loader list(XlcHead) or last(XlcTail). The object loader is called from the top of the loader list in order, when calling time. Remove a loader void _XlcRemoveLoader XLCdLoadProc proc The function removes the locale loader specified by "proc" from the loader list. Current implementation provides following locale loaders; _XlcDefaultLoader _XlcGenericLoader _XlcUtfLoader _XaixOsDynamicLoad Locale Method Interface This chapter describes the locale method API, which is a set of accessible functions from both IM and OM parts. The locale method API provides the functionalities; obtaining locale dependent information, handling charset, converting text, etc. As a result of using these APIs instead of accessing vendor private extension of the locale object, we can keep locale, IM and OM independently each other. Locale Method Functions Open a Locale Method XLCd _XOpenLC char *name The function opens a locale method which corresponds to the specified locale name. calls a locale object loader, which is registered via _XlcAddLoader into the internal loader list. If the called loader is valid and successfully opens a locale, returns the XLCd. If the loader is invalid or failed to open a locale, calls the next loader. If all registered loaders cannot open a locale, returns NULL. XLCd _XlcCurrentLC The _XlcCurrentLC function returns an XLCd that are bound to current locale. Close a Locale Method void _XCloseLC XLCd lcd The function close a locale method the specified lcd. Obtain Locale Method values char *_XGetLCValues XLCd lcd The function returns NULL if no error occurred; otherwise, it returns the name of the first argument that could not be obtained. The following values are defined as standard arguments. Other values are implementation dependent. Name Type Description XlcNCodeset char* codeset part of locale name XlcNDefaultString char* XDefaultString() XlcNEncodingName char* encoding name XlcNLanguage char* language part of locale name XlcNMbCurMax int ANSI C MB_CUR_MAX XlcNStateDependentEncoding Bool is state-dependent encoding or not XlcNTerritory char* territory part of locale name Charset functions The XlcCharSet is an identifier which represents a subset of characters (character set) in the locale object. typedef enum { XlcUnknown, XlcC0, XlcGL, XlcC1, XlcGR, XlcGLGR, XlcOther } XlcSide; typedef struct _XlcCharSetRec *XlcCharSet; typedef struct { char *name; XPointer value; } XlcArg, *XlcArgList; typedef char* (*XlcGetCSValuesProc)(charset, args, num_args); XlcCharSet charset; XlcArgList args; int num_args; typedef struct _XlcCharSetRec { char *name; XrmQuark xrm_name; char *encoding_name; XrmQuark xrm_encoding_name; XlcSide side; int char_size; int set_size; char *ct_sequence; XlcGetCSValuesProc get_values; } XlcCharSetRec; Get an XlcCharSet XlcCharSet _XlcGetCharSet char *name The function gets an XlcCharSet which corresponds to the charset name specified by "name". returns NULL, if no XlcCharSet bound to specified "name". The following character sets are pre-registered. Name Description ISO8859-1:GL 7-bit ASCII graphics (ANSI X3.4-1968), Left half of ISO 8859 sets JISX0201.1976-0:GL Left half of JIS X0201-1976 (reaffirmed 1984), 8-Bit Alphanumeric-Katakana Code ISO8859-1:GR Right half of ISO 8859-1, Latin alphabet No. 1 ISO8859-2:GR Right half of ISO 8859-2, Latin alphabet No. 2 ISO8859-3:GR Right half of ISO 8859-3, Latin alphabet No. 3 ISO8859-4:GR Right half of ISO 8859-4, Latin alphabet No. 4 ISO8859-7:GR Right half of ISO 8859-7, Latin/Greek alphabet ISO8859-6:GR Right half of ISO 8859-6, Latin/Arabic alphabet ISO8859-8:GR Right half of ISO 8859-8, Latin/Hebrew alphabet ISO8859-5:GR Right half of ISO 8859-5, Latin/Cyrillic alphabet ISO8859-9:GR Right half of ISO 8859-9, Latin alphabet No. 5 JISX0201.1976-0:GR Right half of JIS X0201-1976 (reaffirmed 1984), 8-Bit Alphanumeric-Katakana Code GB2312.1980-0:GL GB2312-1980, China (PRC) Hanzi defined as GL GB2312.1980-0:GR GB2312-1980, China (PRC) Hanzi defined as GR JISX0208.1983-0:GL JIS X0208-1983, Japanese Graphic Character Set defined as GL JISX0208.1983-0:GR JIS X0208-1983, Japanese Graphic Character Set defined as GR KSC5601.1987-0:GL KS C5601-1987, Korean Graphic Character Set defined as GL KSC5601.1987-0:GR KS C5601-1987, Korean Graphic Character Set defined as GR JISX0212.1990-0:GL JIS X0212-1990, Japanese Graphic Character Set defined as GL JISX0212.1990-0:GR JIS X0212-1990, Japanese Graphic Character Set defined as GR Add an XlcCharSet Bool _XlcAddCharSet XlcCharSet charset The function registers XlcCharSet specified by "charset". Obtain Character Set values char * _XlcGetCSValues XlcCharSet charset ... The function returns NULL if no error occurred; otherwise, it returns the name of the first argument that could not be obtained. The following values are defined as standard arguments. Other values are implementation dependent. Name Type Description XlcNName char* charset name XlcNEncodingName char* XLFD CharSet Registry and Encoding XlcNSide XlcSide charset side (GL, GR, ...) XlcNCharSize int number of octets per character XlcNSetSize int number of character sets XlcNControlSequence char* control sequence of Compound Text Converter Functions We provide a set of the common converter APIs, that are independent from both of source and destination text type. typedef struct _XlcConvRec *XlcConv; typedef void (*XlcCloseConverterProc)(conv); XlcConv conv; typedef int (*XlcConvertProc)(conv, from, from_left, to, to_left, args, num_args); XlcConv conv; XPointer *from; int *from_left; XPointer *to; int *to_left; XPointer *args; int num_args; typedef void (*XlcResetConverterProc)(conv); XlcConv conv; typedef struct _XlcConvMethodsRec { XlcCloseConverterProc close; XlcConvertProc convert; XlcResetConverterProc reset; } XlcConvMethodsRec, *XlcConvMethods; typedef struct _XlcConvRec { XlcConvMethods methods; XPointer state; } XlcConvRec; Open a converter XlcConv _XlcOpenConverter XLCd from_lcd char *from_type XLCd to_lcd char *to_type function opens the converter which converts a text from specified "from_type" to specified "to_type" encoding. If the function cannot find proper converter or cannot open a corresponding converter, it returns NULL. Otherwise, it returns the conversion descriptor. The following types are pre-defined. Other types are implementation dependent. Name Type Description Arguments XlcNMultiByte char * multibyte - XlcNWideChar wchar_t * wide character - XlcNCompoundText char * COMPOUND_TEXT - XlcNString char * STRING - XlcNCharSet char * per charset XlcCharSet XlcNChar char * per character XlcCharSet Close a converter void _XlcCloseConverter XlcConv conv The function closes the specified converter "conv". Code conversion int _XlcConvert XlcConv conv XPointer *from int *from_left XPointer *to int *to_left XPointer *args int num_args The function converts a sequence of characters from one type, in the array specified by "from", into a sequence of corresponding characters in another type, in the array specified by "to". The types are those specified in the _XlcOpenConverter() call that returned the conversion descriptor, "conv". The arguments "from", "from_left", "to" and "to_left" have the same specification of XPG4 iconv function. For state-dependent encodings, the conversion descriptor "conv" is placed into its initial shift state by a call for which "from" is a NULL pointer, or for which "from" points to a null pointer. The following 2 converters prepared by locale returns appropriate charset (XlcCharSet) in an area pointed by args[0]. From To Description XlcNMultiByte XlcNCharSet Segmentation (Decomposing) XlcNWideChar XlcNCharSet Segmentation (Decomposing) The conversion, from XlcNMultiByte/XlcNWideChar to XlcNCharSet, extracts a segment which has same charset encoding characters. More than one segment cannot be converted in a call. Reset a converter void _XlcResetConverter XlcConv conv The function reset the specified converter "conv". Register a converter typedef XlcConv (*XlcOpenConverterProc)(from_lcd, from_type, to_lcd, to_type); XLCd from_lcd; char *from_type; XLCd to_lcd; char *to_type; Bool _XlcSetConverter XLCd from_lcd char *from XLCd to_lcd char *to XlcOpenConverterProc converter The XlcSetConverter function registers a converter which convert from "from_type" to "to_type" into the converter list (in the specified XLCd). X Locale Database functions X Locale Database contains the subset of user's environment that depends on language. The following APIs are provided for accessing X Locale Database and other locale relative files. For more detail about X Locale Database, please refer X Locale Database Definition document. Get a resource from database void _XlcGetResource XLCd lcd char *category char *class char ***value int *count The function obtains a locale dependent data which is associated with the locale of specified "lcd". The locale data is provided by system locale or by X Locale Database file, and what kind of data is available is implementation dependent. The specified "category" and "class" are used for finding out the objective locale data. The returned value is returned in value argument in string list form, and the returned count shows the number of strings in the value. The returned value is owned by locale method, and should not be modified or freed by caller. Get a locale relative file name char *_XlcFileName XLCd lcd char *category The functions returns a file name which is bound to the specified "lcd" and "category", as a null-terminated string. If no file name can be found, or there is no readable file for the found file name, returns NULL. The returned file name should be freed by caller. The rule for searching a file name is implementation dependent. In current implementation, uses "{category}.dir" file as mapping table, which has pairs of strings, a full locale name and a corresponding file name. Utility Functions Compare Latin-1 strings int _XlcCompareISOLatin1 char*str1, *str2 int _XlcNCompareISOLatin1 char*str1, *str2 int len The _XlcCompareIsoLatin1 function to compares two ISO-8859-1 strings. Bytes representing ASCII lower case letters are converted to upper case before making the comparison. The value returned is an integer less than, equal to, or greater than zero, depending on whether "str1" is lexicographicly less than, equal to, or greater than "str2". The _XlcNCompareIsoLatin1 function is identical to _XlcCompareISOLatin1, except that at most "len" bytes are compared. Resource Utility int XlcNumber ArrayType array Similar to XtNumber. void _XlcCopyFromArg char *src char *dst int size void _XlcCopyToArg char *src char **dst int size Similar to _XtCopyFromArg and _XtCopyToArg. void _XlcCountVaList va_list var int *count_ret Similar to _XtCountVaList. void _XlcVaToArgList va_list var int count XlcArgList *args_ret Similar to _XtVaToArgList. typedef struct _XlcResource { char *name; XrmQuark xrm_name; int size; int offset; unsigned long mask; } XlcResource, *XlcResourceList; #define XlcCreateMask (1L<<0) #define XlcDefaultMask (1L<<1) #define XlcGetMask (1L<<2) #define XlcSetMask (1L<<3) #define XlcIgnoreMask (1L<<4) void _XlcCompileResourceList XlcResourceList resources int num_resources Similar to _XtCompileResourceList. char * _XlcGetValues XPointer base XlcResourceList resources int num_resources XlcArgList args int num_args unsignedlong mask Similar to XtGetSubvalues. char * _XlcSetValues XPointer base XlcResourceList resources int num_resources XlcArgList args int num_args unsignedlong mask Similar to XtSetSubvalues. ANSI C Compatible Functions The following are ANSI C/MSE Compatible Functions for non-ANSI C environment. int _Xmblen char *str int len The function returns the number of characters pointed to by "str". Only "len" bytes in "str" are used in determining the character count returned. "Str" may point at characters from any valid codeset in the current locale. The call is equivalent to _Xmbtowc(_Xmbtowc((wchar_t*)NULL, str, len)) int _Xmbtowc wchar_t *wstr char *str int len The function converts the character(s) pointed to by "str" to their wide character representation(s) pointed to by "wstr". "Len" is the number of bytes in "str" to be converted. The return value is the number of characters converted. The call is equivalent to _Xlcmbtowc((XLCd)NULL, wstr, str, len) int _Xlcmbtowc XLCd lcd wchar_t *wstr char *str int len The function is identical to _Xmbtowc, except that it requires the "lcd" argument. If "lcd" is (XLCd) NULL, _Xlcmbtowc, calls _XlcCurrentLC to determine the current locale. int _Xwctomb char *str wchar_t wc The function converts a single wide character pointed to by "wc" to its multibyte representation pointed to by "str". On success, the return value is 1. The call is equivalent to _Xlcwctomb((XLCd)NULL, str, wstr) int _Xlcwctomb XLCd lcd char *str wchar_t wc The function is identical to _Xwctomb, except that it requires the "lcd" argument. If "lcd" is (XLCd) NULL, _Xlcwctomb, calls _XlcCurrentLC to determine the current locale. int _Xmbstowcs wchar_t *wstr char *str int len The function converts the NULL-terminated string pointed to by "str" to its wide character string representation pointed to by "wstr". "Len" is the number of characters in "str" to be converted. The call is equivalent to _Xlcmbstowcs((XLCd)NULL, wstr, str, len) int _Xlcmbstowcs XLCd lcd wchar_t *wstr char *str int len The function is identical to _Xmbstowcs, except that it requires the "lcd" argument. If "lcd" is (XLCd) NULL, _Xlcmbstowcs, calls _XlcCurrentLC to determine the current locale. int _Xwcstombs char *str wchar_t *wstr int len The function converts the (wchar_t) NULL terminated wide character string pointed to by "wstr" to the NULL terminated multibyte string pointed to by "str". The call is equivalent to _Xlcwcstombs((XLCd)NULL, str, wstr, len) int _Xlcwcstombs XLCd lcd char *str wchar_t *wstr int len The function is identical to _Xwcstombs, except that it requires the "lcd" argument. If "lcd" is (XLCd) NULL, _Xlcwcstombs, calls _XlcCurrentLC to determine the current locale. int _Xwcslen wchar_t *wstr The function returns the count of wide characters in the (wchar_t) NULL terminated wide character string pointed to by "wstr". wchar_t * _Xwcscpy wchar_t *wstr1 wchar_t *wstr2 wchar_t * _Xwcsncpy wchar_t *wstr1 wchar_t *wstr2 int len The function copies the (wchar_t) NULL terminated wide character string pointed to by "wstr2" to the object pointed at by "wstr1". "Wstr1" is (wchar_t) NULL terminated. The return value is a pointer to "wstr1". The function is identical to _Xwcscpy, except that it copies "len" wide characters from the object pointed to by "wstr2" to the object pointed to "wstr1". int _Xwcscmp wchar_t*wstr1, *wstr2 int _Xwcsncmp wchar_t*wstr1, *wstr2 int len The function compares two (wchar_t) NULL terminated wide character strings. The value returned is an integer less than, equal to, or greater than zero, depending on whether "wstr1" is lexicographicly less then, equal to, or greater than "str2". The function is identical to _XlcCompareISOLatin1, except that at most "len" wide characters are compared. libX11-1.8.12/specs/i18n/framework/Makefile.am0000644014310600000120000000060414763154126014252 if ENABLE_SPECS # Main DocBook/XML files (DOCTYPE book) docbook = framework.xml # Included chapters, appendix, images chapters = framework.svg # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/i18n/framework # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_SPECS libX11-1.8.12/specs/i18n/localedb/0000755014310600000120000000000014763154171012046 5libX11-1.8.12/specs/i18n/localedb/Makefile.in0000644014310600000120000006133414763154147014045 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = specs/i18n/localedb ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = localedb.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_SPECS_TRUE@docbook = localedb.xml # The location where the DocBook/XML files and their generated formats are installed @ENABLE_SPECS_TRUE@shelfdir = $(docdir)/i18n/localedb # DocBook/XML generated output formats to be installed @ENABLE_SPECS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_SPECS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_SPECS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/i18n/localedb/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/i18n/localedb/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_shelfDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-shelfDATA install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-dist_shelfDATA uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/specs/i18n/localedb/Makefile.am0000644014310600000120000000050214763154126014017 if ENABLE_SPECS # Main DocBook/XML files (DOCTYPE book) docbook = localedb.xml # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/i18n/localedb # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_SPECS libX11-1.8.12/specs/i18n/localedb/localedb.xml0000644014310600000120000005273314763154126014267 %defs; ]> X Locale Database Specification X Version 11, Release &fullrelvers; YoshioHoriuchi IBM Japan 1994IBM Corporation License to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of IBM not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS, IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Copyright © 1994 X Consortium Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. X Window System is a trademark of The Open Group. LocaleDB General An X Locale Database contains the subset of a user's environment that depends on language, in X Window System. It is made up from one or more categories. Each category consists of some classes and sub-classes. It is provided as a plain ASCII text file, so a user can change its contents easily. It allows a user to customize the behavior of internationalized portion of Xlib without changing Xlib itself. This document describes; Database Format Definition Contents of Database in sample implementation Since it is hard to define the set of required information for all platforms, only the flexible database format is defined. The available entries in database are implementation dependent. Database Format Definition The X Locale Database contains one or more category definitions. This section describes the format of each category definition. The category definition consists of one or more class definitions. Each class definition has a pair of class name and class value, or has several subclasses which are enclosed by the left brace ({) and the right brace (}). Comments can be placed by using the number sign character (#). Putting the number sign character on the top of the line indicates that the entire line is comment. Also, putting any whitespace character followed by the number sign character indicates that a part of the line (from the number sign to the end of the line) is comment. A line can be continued by placing backslash (\) character as the last character on the line; this continuation character will be discarded from the input. Comment lines cannot be continued on a subsequent line using an escaped new line character. X Locale Database only accepts XPCS, the X Portable Character Set. The reserved symbols are; the quotation mark("), the number sign (#), the semicolon(;), the backslash(\), the left brace({) and the right brace(}). The format of category definition is; CategoryDefinition ::= CategoryHeader CategorySpec CategoryTrailer CategoryHeader ::= CategoryName NL CategorySpec ::= { ClassSpec } CategoryTrailer ::= "END" Delimiter CategoryName NL CategoryName ::= String ClassSpec ::= ClassName Delimiter ClassValue NL ClassName ::= String ClassValue ::= ValueList | "{" NL { ClassSpec } "}" ValueList ::= Value | Value ";" ValueList Value ::= ValuePiece | ValuePiece Value ValuePiece ::= String | QuotedString | NumericString String ::= Char { Char } QuotedString ::= """ QuotedChar { QuotedChar } """ NumericString ::= "\\o" OctDigit { OctDigit } | "\\d" DecDigit { DecDigit } | "\\x" HexDigit { HexDigit } Char ::= <XPCS except NL, Space or unescaped reserved symbols> QuotedChar ::= <XPCS except unescaped """> OctDigit ::= <character in the range of "0" - "7"> DecDigit ::= <character in the range of "0" - "9"> HexDigit ::= <character in the range of "0" - "9", "a" - "f", "A" - "F"> Delimiter ::= Space { Space } Space ::= <space> | <horizontal tab> NL ::= <newline> Elements separated by vertical bar (|) are alternatives. Curly braces ({...}) indicate zero or more repetitions of the enclosed elements. Square brackets ([...]) indicate that the enclosed element is optional. Quotes ("...") are used around literal characters. The backslash, which is not the top character of the NumericString, is recognized as an escape character, so that the next one character is treated as a literal character. For example, the two-character sequence, ""\"""(the backslash followed by the quotation mark) is recognized and replaced with a quotation mark character. Any whitespace character, that is not the Delimiter, unquoted and unescaped, is ignored. Contents of Database The available categories and classes depend on implementation, because different platform will require different information set. For example, some platform have system locale but some platform don't. Furthermore, there might be a difference in functionality even if the platform has system locale. In current sample implementation, categories listed below are available. XLC_FONTSET:XFontSet relative information XLC_XLOCALE:Character classification and conversion information XLC_FONTSET Category The XLC_FONTSET category defines the XFontSet relative information. It contains the CHARSET_REGISTRY-CHARSET_ENCODING name and character mapping side (GL, GR, etc), and is used in Output Method (OM). class super class description fsN Nth fontset (N=0,1,2, ...) charset fsN list of encoding name font fsN list of font encoding name fsN Includes an encoding information for Nth charset, where N is the index number (0,1,2,...). If there are 4 charsets available in current locale, 4 fontsets, fs0, fs1, fs2 and fs3, should be defined. This class has two subclasses, 'charset' and 'font'. charset Specifies an encoding information to be used internally in Xlib for this fontset. The format of value is; EncodingInfo ::= EncodingName [ ":" EncodingSide ] EncodingName ::= CHARSET_REGISTRY-CHARSET_ENCODING EncodingSide ::= "GL" | "GR" For detail definition of CHARSET_REGISTRY-CHARSET_ENCODING, refer to the X Logical Font Description Conventions document. example: ISO8859-1:GL font Specifies a list of encoding information which is used for searching appropriate font for this fontset. The left most entry has highest priority. XLC_XLOCALE Category The XLC_XLOCALE category defines character classification, conversion and other character attributes. class super class description encoding_name codeset name mb_cur_max MB_CUR_MAX state_depend_encoding state dependent or not wc_encoding_mask for parsing wc string wc_shift_bits for conversion between wc and mb csN Nth charset (N=0,1,2,...) side csN mapping side (GL, etc) length csN length of a character mb_encoding csN for parsing mb string wc_encoding csN for parsing wc string ct_encoding csN list of encoding name for ct encoding_name Specifies a codeset name of current locale. mb_cur_max Specifies a maximum allowable number of bytes in a multi-byte character. It is corresponding to MB_CUR_MAX of "ISO/IEC 9899:1990 C Language Standard". state_depend_encoding Indicates a current locale is state dependent. The value should be specified "True" or "False". wc_encoding_mask Specifies a bit-mask for parsing wide-char string. Each wide character is applied bit-and operation with this bit-mask, then is classified into the unique charset, by using 'wc_encoding'. wc_shift_bits Specifies a number of bit to be shifted for converting from a multi-byte character to a wide character, and vice-versa. csN Includes a character set information for Nth charset, where N is the index number (0,1,2,...). If there are 4 charsets available in current locale, cs0, cs1, cs2 and cs3 should be defined. This class has five subclasses, 'side', 'length', 'mb_encoding' 'wc_encoding' and 'ct_encoding'. side Specifies a mapping side of this charset. The format of this value is; Side ::= EncodingSide[":Default"] The suffix ":Default" can be specified. It indicates that a character belongs to the specified side is mapped to this charset in initial state. length Specifies a number of bytes of a multi-byte character of this charset. It should not contain the length of any single-shift sequence. mb_encoding Specifies a list of shift sequence for parsing multi-byte string. The format of this value is; MBEncoding ::= ShiftType ShiftSequence | ShiftType ShiftSequence ";" MBEncoding ShiftType ::= "<SS>"|"<LSL>"|"<LSR>" ShiftSequence ::= SequenceValue|SequenceValue ShiftSequence SequenceValue ::= NumericString example: <LSL> \x1b \x28 \x4a; <LSL> \x1b \x28 \x42 wc_encoding Specifies an integer value for parsing wide-char string. It is used to determine the charset for each wide character, after applying bit-and operation using 'wc_encoding_mask'. This value should be unique in all csN classes. ct_encoding Specifies a list of encoding information that can be used for Compound Text. Sample of X Locale Database The following is sample X Locale Database file. # XLocale Database Sample for ja_JP.euc # # # XLC_FONTSET category # XLC_FONTSET # fs0 class (7 bit ASCII) fs0 { charset ISO8859-1:GL font ISO8859-1:GL; JISX0201.1976-0:GL } # fs1 class (Kanji) fs1 { charset JISX0208.1983-0:GL font JISX0208.1983-0:GL } # fs2 class (Half Kana) fs2 { charset JISX0201.1976-0:GR font JISX0201.1976-0:GR } # fs3 class (User Defined Character) # fs3 { # charset JISX0212.1990-0:GL # font JISX0212.1990-0:GL # } END XLC_FONTSET # # XLC_XLOCALE category # XLC_XLOCALE encoding_name ja.euc mb_cur_max 3 state_depend_encoding False wc_encoding_mask \x00008080 wc_shift_bits 8 # cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL } # cs1 class cs1 { side GR:Default length 2 wc_encoding \x00008080 ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\ JISX0208.1983-1:GL; JISX0208.1983-1:GR } # cs2 class cs2 { side GR length 1 mb_encoding <SS> \x8e wc_encoding \x00000080 ct_encoding JISX0201.1976-0:GR } # cs3 class # cs3 { # side GL # length 2 # mb_encoding <SS> \x8f # #if HasWChar32 # wc_encoding \x20000000 # #else # wc_encoding \x00008000 # #endif # ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR # } END XLC_XLOCALE Reference [1] ISO/IEC 9899:1990 C Language Standard [2] X Logical Font Description Conventions libX11-1.8.12/specs/i18n/Makefile.in0000644014310600000120000005275614763154147012310 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Copyright (c) 2010, Oracle and/or its affiliates. # # 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. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = specs/i18n ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = compose framework localedb trans all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/i18n/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/i18n/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/specs/i18n/trans/0000755014310600000120000000000014763154171011430 5libX11-1.8.12/specs/i18n/trans/Makefile.in0000644014310600000120000006131214763154147013423 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = specs/i18n/trans ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = trans.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_SPECS_TRUE@docbook = trans.xml # The location where the DocBook/XML files and their generated formats are installed @ENABLE_SPECS_TRUE@shelfdir = $(docdir)/i18n/trans # DocBook/XML generated output formats to be installed @ENABLE_SPECS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_SPECS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_SPECS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/i18n/trans/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/i18n/trans/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_shelfDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-shelfDATA install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-dist_shelfDATA uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/specs/i18n/trans/Makefile.am0000644014310600000120000000047414763154126013411 if ENABLE_SPECS # Main DocBook/XML files (DOCTYPE book) docbook = trans.xml # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/i18n/trans # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_SPECS libX11-1.8.12/specs/i18n/trans/trans.xml0000644014310600000120000015030714763154126013227 %defs; ]> The XIM Transport Specification Revision 0.1 X Version 11, Release &fullrelvers; TakashiFujiwara FUJITSU LIMITED 1994FUJITSU LIMITED Abstract This specification describes the transport layer interfaces between Xlib and IM Server, which makes various channels usable such as X protocol or TCP/IP, DECnet and etc. Permission to use, copy, modify, and distribute this documentation for any purpose and without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. Fujitsu makes no representations about the suitability for any purpose of the information in this document. This documentation is provided as is without express or implied warranty. Copyright © 1994 X Consortium Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. X Window System is a trademark of The Open Group. X Transport Specification Introduction The Xlib XIM implementation is layered into three functions, a protocol layer, an interface layer and a transport layer. The purpose of this layering is to make the protocol independent of transport implementation. Each function of these layers are: The protocol layer implements overall function of XIM and calls the interface layer functions when it needs to communicate to IM Server. The interface layer separates the implementation of the transport layer from the protocol layer, in other words, it provides implementation independent hook for the transport layer functions. The transport layer handles actual data communication with IM Server. It is done by a set of several functions named transporters. This specification describes the interface layer and the transport layer, which makes various communication channels usable such as X protocol or, TCP/IP, DECnet, STREAM, etc., and provides the information needed for adding another new transport layer. In addition, sample implementations for the transporter using the X connection is described in section 4. Initialization Registering structure to initialize The structure typed as TransportSW contains the list of the transport layer the specific implementations supports. typedef struct { char *transport_name; Bool (*config); } TransportSW; transport_name name of transportRefer to "The Input Method Protocol: Appendix B config initial configuration function A sample entry for the Xlib supporting transporters is shown below: TransportSW _XimTransportRec[] = { /* char *: * transport_name, Bool (*config)() */ "X", _XimXConf, "tcp", _XimTransConf, "local", _XimTransConf, "decnet", _XimTransConf, "streams", _XimTransConf, (char *)NULL, (Bool (*)())NULL, }; Initialization function The following function will be called once when Xlib configures the transporter functions. Bool (*config) XIM im char *transport_data im Specifies XIM structure address. transport_data Specifies the data specific to the transporter, in IM Server address.Refer to "The Input Method Protocol: Appendix B This function must setup the transporter function pointers. The actual config function will be chosen by IM Server at the pre-connection time, matching by the transport_name specified in the _XimTransportRec array; The specific members of XimProto structure listed below must be initialized so that point they appropriate transporter functions. If the specified transporter has been configured successfully, this function returns True. There is no Alternative Entry for config function itself. The structure XimProto contains the following function pointers: Bool (*connect)(); /* Open connection */ Bool (*shutdown)(); /* Close connection */ Bool (*write)(); /* Write data */ Bool (*read)(); /* Read data */ Bool (*flush)(); /* Flush data buffer */ Bool (*register_dispatcher)(); /* Register asynchronous data handler */ Bool (*call_dispatcher)(); /* Call dispatcher */ These functions are called when Xlib needs to communicate the IM Server. These functions must process the appropriate procedure described below. The interface/transport layer functions Following functions are used for the transport interface. The Transport Layer Functions Alternate Entry (Interface Layer) XimProto member (Transport Layer) Section _XimConnect connect 3.1 _XimShutdown shutdown 3.2 _XimWrite write 3.3 _XimRead read 3.4 _XimFlush flush 3.5 _XimRegisterDispatcher register_dispatcher 3.6 _XimCallDispatcher call_dispatcher 3.7
The Protocol layer calls the above functions using the Alternative Entry in the left column. The transport implementation defines XimProto member function in the right column. The Alternative Entry is provided so as to make easier to implement the Protocol Layer. Opening connection When XOpenIM is called, the following function is called to connect with the IM Server. Bool (*connect) XIM im im Specifies XIM structure address. This function must establishes the connection to the IM Server. If the connection is established successfully, this function returns True. The Alternative Entry for this function is: Bool _XimConnect XIM im im Specifies XIM structure address. Closing connection When XCloseIM is called, the following function is called to disconnect the connection with the IM Server. The Alternative Entry for this function is: Bool (*shutdown) XIM im im Specifies XIM structure address. This function must close connection with the IM Server. If the connection is closed successfully, this function returns True. The Alternative Entry for this function is: Bool _XimShutdown XIM im im Specifies XIM structure address. Writing data The following function is called, when Xlib needs to write data to the IM Server. Bool _XimWrite XIM im INT16 len XPointer data im Specifies XIM structure address. len Specifies the length of writing data. data Specifies the writing data. This function writes the data to the IM Server, regardless of the contents. The number of bytes is passed to len. The writing data is passed to data. If data is sent successfully, the function returns True. Refer to "The Input Method Protocol" for the contents of the writing data. The Alternative Entry for this function is: Bool _XimWrite XIM im INT16 len XPointer data im Specifies XIM structure address. len Specifies the length of writing data. data Specifies the writing data. Reading data The following function is called when Xlib waits for response from IM server synchronously. Bool _XimRead XIM im XPointer read_buf int buf_len int *ret_len im Specifies XIM structure address. read_buf Specifies the buffer to store data. buf_len Specifies the size of the buffer ret_len Specifies the length of stored data. This function stores the read data in read_buf, which size is specified as buf_len. The size of data is set to ret_len. This function return True, if the data is read normally or reading data is completed. The Alternative Entry for this function is: Bool _XimRead XIM im INT16 *ret_len XPointer buf int buf_len Bool (*predicate)() XPointer predicate_arg im Specifies XIM structure address. ret_len Specifies the size of the data buffer. buf Specifies the buffer to store data. buf_len Specifies the length of buffer. predicate Specifies the predicate for the XIM data. predicate_arg Specifies the predicate specific data. The predicate procedure indicates whether the data is for the XIM or not. len This function stores the read data in buf, which size is specified as buf_len. The size of data is set to ret_len. If preedicate() returns True, this function returns True. If not, it calls the registered callback function. The procedure and its arguments are: void (*predicate) XIM im INT16 len XPointer data XPointer predicate_arg im Specifies XIM structure address. len Specifies the size of the data buffer. data Specifies the buffer to store data. predicate_arg Specifies the predicate specific data. Flushing buffer The following function is called when Xlib needs to flush the data. void (*flush) XIM im im Specifies XIM structure address. This function must flush the data stored in internal buffer on the transport layer. If data transfer is completed, the function returns True. The Alternative Entry for this function is: void _XimFlush XIM im im Specifies XIM structure address. Registering asynchronous data handler Xlib needs to handle asynchronous response from IM Server. This is because some of the XIM data occur asynchronously to X events. Those data will be handled in the Filter, and the Filter will call asynchronous data handler in the protocol layer. Then it calls dispatchers in the transport layer. The dispatchers are implemented by the protocol layer. This function must store the information and prepare for later call of the dispatchers using . When multiple dispatchers are registered, they will be called sequentially in order of registration, on arrival of asynchronous data. The register_dispatcher is declared as following: Bool (*register_dispatcher) XIM im Bool (*dispatcher)() XPointer call_data im Specifies XIM structure address. dispatcher Specifies the dispatcher function to register. call_data Specifies a parameter for the dispatcher. The dispatcher is a function of the following type: Bool (*dispatcher) XIM im INT16 len XPointer data XPointer call_data im Specifies XIM structure address. len Specifies the size of the data buffer. data Specifies the buffer to store data. call_data Specifies a parameter passed to the register_dispatcher. The dispatcher is provided by the protocol layer. They are called once for every asynchronous data, in order of registration. If the data is used, it must return True. otherwise, it must return False. If the dispatcher function returns True, the Transport Layer assume that the data has been processed by the upper layer. The Alternative Entry for this function is: Bool _XimRegisterDispatcher XIM im Bool (*dispatcher)() XPointer call_data im Specifies XIM structure address. dispatcher Specifies the dispatcher function to register. call_data Specifies a parameter for the dispatcher. Calling dispatcher The following function is used to call the registered dispatcher function, when the asynchronous response from IM Server has arrived. Bool (*call_dispatcher) XIM im INT16 len XPointer data im Specifies XIM structure address. len Specifies the size of data buffer. data Specifies the buffer to store data. The call_dispatcher must call the dispatcher function, in order of their registration. len and data are the data passed to register_dispatcher. The return values are checked at each invocation, and if it finds True, it immediately return with true for its return value. It is depend on the upper layer whether the read data is XIM Protocol packet unit or not. The Alternative Entry for this function is: Bool _XimCallDispatcher XIM im INT16 len XPointer call_data
Sample implementations for the Transport Layer Sample implementations for the transporter using the X connection is described here. X Transport At the beginning of the X Transport connection for the XIM transport mechanism, two different windows must be created either in an Xlib XIM or in an IM Server, with which the Xlib and the IM Server exchange the XIM transports by using the ClientMessage events and Window Properties. In the following, the window created by the Xlib is referred as the "client communication window", and on the other hand, the window created by the IM Server is referred as the "IMS communication window". Connection In order to establish a connection, a communication window is created. A ClientMessage in the following event's format is sent to the owner window of XIM_SERVER selection, which the IM Server has created. Refer to "The Input Method Protocol" for the XIM_SERVER atom. The ClientMessage sent to the IMS window. Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window IMS Window ID Atom message_type XInternAtom(display, "_XIM_CONNECT", false) int format 32 long data.1[0] client communication window ID long data.1[1] client-major-transport-version(*1) long data.1[2] client-major-transport-version(*1)
In order to establish the connection (to notify the IM Server communication window), the IM Server sends a ClientMessage in the following event's format to the client communication window. The ClientMessage sent by IM Server. Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window IMS Window ID Atom message_type XInternAtom(display, "_XIM_CONNECT", false) int format 32 long data.1[0] client communication window ID long data.1[1] client-major-transport-version(*1) long data.1[2] client-major-transport-version(*1) long data.1[3] dividing size between ClientMessage and Property(*2)
(*1) major/minor-transport-version The read/write method is decided by the combination of major/minor-transport-version, as follows: The read/write method and the major/minor-transport-version Transport-version read/write major minor 0 0 only-CM & Property-with-CM 1 only-CM & multi-CM 2 only-CM & multi-CM & Property-with-CM 1 0 PropertyNotify 2 0 only-CM & PropertyNotify 1 only-CM & multi-CM & PropertyNotify
only-CM : data is sent via a ClientMessage multi-CM : data is sent via multiple ClientMessages Property-with-CM : data is written in Property, and its Atom is send via ClientMessage PropertyNotify : data is written in Property, and its Atom is send via PropertyNotify The method to decide major/minor-transport-version is as follows: The client sends 0 as major/minor-transport-version to the IM Server. The client must support all methods in Table 4-3. The client may send another number as major/minor-transport-version to use other method than the above in the future. The IM Server sends its major/minor-transport-version number to the client. The client sends data using the method specified by the IM Server. If major/minor-transport-version number is not available, it is regarded as 0. (*2) dividing size between ClientMessage and Property If data is sent via both of multi-CM and Property, specify the dividing size between ClientMessage and Property. The data, which is smaller than this size, is sent via multi-CM (or only-CM), and the data, which is lager than this size, is sent via Property.
read/write The data is transferred via either ClientMessage or Window Property in the X Window System. Format for the data from the Client to the IM Server ClientMessage If data is sent via ClientMessage event, the format is as follows: The ClientMessage event's format (first or middle) Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window IMS Window ID Atom message_type XInternAtom(display, "_XIM_MOREDATA", False) int format 8 char data.b[20] (read/write DATA : 20 byte)
The ClientMessage event's format (only or last) Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window IMS Window ID Atom message_type XInternAtom(display, "_XIM_PROTOCOL", False) int format 8 char data.b[20] (read/write DATA : MAX 20 byte) If the data is smaller than 20 bytes, all data other than available data must be 0.
Property In the case of large data, data will be sent via the Window Property for the efficiency. There are the following two methods to notify Property, and transport-version is decided which method is used. The XChangeProperty function is used to store data in the client communication window, and Atom of the stored data is notified to the IM Server via ClientMessage event. The XChangeProperty function is used to store data in the client communication window, and Atom of the stored data is notified to the IM Server via PropertyNotify event. The arguments of the XChangeProperty are as follows: The XChangeProperty event's format Argument Contents Display *display The display to which connects Window window IMS communication window ID Atom property read/write property Atom (*1) int format 8 int mode PropModeAppend u_char *data read/write DATA int nelements length of DATA
(*1) The read/write property ATOM allocates the following strings by XInternAtom. "_clientXXX" The client changes the property with the mode of PropModeAppend and the IM Server will read it with the delete mode i.e. (delete = True). If Atom is notified via ClientMessage event, the format of the ClientMessage is as follows: The ClientMessage event's format to send Atom of property Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window IMS Window ID Atom message_type XInternAtom(display, "_XIM_PROTOCOL", False) int format 8 long data.1[0] length of read/write property Atom long data.1[1] read/write property Atom
Format for the data from the IM Server to the Client ClientMessage The format of the ClientMessage is as follows: The ClientMessage event's format (first or middle) Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window IMS Window ID Atom message_type XInternAtom(display, "_XIM_MOREDATA", False) int format 8 char data.b[20] (read/write DATA : 20 byte)
The ClientMessage event's format (only or last) Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window IMS Window ID Atom message_type XInternAtom(display, "_XIM_PROTOCOL", False) int format 8 char data.b[20] (read/write DATA : MAX 20 byte) (*1)
(*1) If the data size is smaller than 20 bytes, all data other than available data must be 0. Property In the case of large data, data will be sent via the Window Property for the efficiency. There are the following two methods to notify Property, and transport-version is decided which method is used. The XChangeProperty function is used to store data in the IMS communication window, and Atom of the property is sent via the ClientMessage event. The XChangeProperty function is used to store data in the IMS communication window, and Atom of the property is sent via PropertyNotify event. The arguments of the XChangeProperty are as follows: The XChangeProperty event's format Argument Contents Display *display The display to which connects Window window IMS communication window ID Atom property read/write property Atom (*1) int format 8 int mode PropModeAppend u_char *data read/write DATA int nelements length of DATA
(*1) The read/write property ATOM allocates some strings, which are not allocated by the client, by XInternAtom. The IM Server changes the property with the mode of PropModeAppend and the client reads it with the delete mode, i.e. (delete = True). If Atom is notified via ClientMessage event, the format of the ClientMessage is as follows: The ClientMessage event's format to send Atom of property Structure Member Contents int type ClientMessage u_long serial Set by the X Window System Bool send_event Set by the X Window System Display *display The display to which connects Window window IMS Window ID Atom message_type XInternAtom(display, "_XIM_PROTOCOL", False) int format 8 long data.1[0] length of read/write property Atom long data.1[1] read/write property Atom
Closing Connection If the client disconnect with the IM Server, shutdown function should free the communication window properties and etc..
References [1] Masahiko Narita and Hideki Hiura, "The Input Method Protocol"
libX11-1.8.12/specs/i18n/Makefile.am0000644014310600000120000000224514763154126012260 # # Copyright (c) 2010, Oracle and/or its affiliates. # # 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. # SUBDIRS=compose framework localedb trans libX11-1.8.12/specs/libX11/0000755014310600000120000000000014763154171010562 5libX11-1.8.12/specs/libX11/CH07.xml0000644014310600000120000026511514763154126011677 Graphics Context Functions A number of resources are used when performing graphics operations in X. Most information about performing graphics (for example, foreground color, background color, line style, and so on) is stored in resources called graphics contexts (GCs). Most graphics operations (see chapter 8) take a GC as an argument. Although in theory the X protocol permits sharing of GCs between applications, it is expected that applications will use their own GCs when performing operations. Sharing of GCs is highly discouraged because the library may cache GC state. Graphics operations can be performed to either windows or pixmaps, which collectively are called drawables. Each drawable exists on a single screen. A GC is created for a specific screen and drawable depth and can only be used with drawables of matching screen and depth. This chapter discusses how to: Manipulate graphics context/state Use graphics context convenience functions Manipulating Graphics Context/State Most attributes of graphics operations are stored in GCs. These include line width, line style, plane mask, foreground, background, tile, stipple, clipping region, end style, join style, and so on. Graphics operations (for example, drawing lines) use these values to determine the actual drawing operation. Extensions to X may add additional components to GCs. The contents of a GC are private to Xlib. Xlib implements a write-back cache for all elements of a GC that are not resource IDs to allow Xlib to implement the transparent coalescing of changes to GCs. For example, a call to of a GC followed by a call to results in only a single-change GC protocol request to the server. GCs are neither expected nor encouraged to be shared between client applications, so this write-back caching should present no problems. Applications cannot share GCs without external synchronization. Therefore, sharing GCs between applications is highly discouraged. To set an attribute of a GC, set the appropriate member of the XGCValues structure and OR in the corresponding value bitmask in your subsequent calls to . The symbols for the value mask bits and the XGCValues structure are: /* GC attribute value mask bits */ #define GCFunction (1L<<0) #define GCPlaneMask (1L<<1) #define GCForeground (1L<<2) #define GCBackground (1L<<3) #define GCLineWidth (1L<<4) #define GCLineStyle (1L<<5) #define GCCapStyle (1L<<6) #define GCJoinStyle (1L<<7) #define GCFillStyle (1L<<8) #define GCFillRule (1L<<9) #define GCTile (1L<<10) #define GCStipple (1L<<11) #define GCTileStipXOrigin (1L<<12) #define GCTileStipYOrigin (1L<<13) #define GCFont (1L<<14) #define GCSubwindowMode (1L<<15) #define GCGraphicsExposures (1L<<16) #define GCClipXOrigin (1L<<17) #define GCClipYOrigin (1L<<18) #define GCClipMask (1L<<19) #define GCDashOffset (1L<<20) #define GCDashList (1L<<21) #define GCArcMode (1L<<22) /* Values */ typedef struct { int function; /* logical operation */ unsigned long plane_mask; /* plane mask */ unsigned long foreground; /* foreground pixel */ unsigned long background; /* background pixel */ int line_width; /* line width (in pixels) */ int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */ int cap_style; /* CapNotLast, CapButt, CapRound, CapProjecting */ int join_style; /* JoinMiter, JoinRound, JoinBevel */ int fill_style; /* FillSolid, FillTiled, FillStippled FillOpaqueStippled*/ int fill_rule; /* EvenOddRule, WindingRule */ int arc_mode; /* ArcChord, ArcPieSlice */ Pixmap tile; /* tile pixmap for tiling operations */ Pixmap stipple; /* stipple 1 plane pixmap for stippling */ int ts_x_origin; /* offset for tile or stipple operations */ int ts_y_origin Font font; /* default text font for text operations */ int subwindow_mode; /* ClipByChildren, IncludeInferiors */ Bool graphics_exposures; /* boolean, should exposures be generated */ int clip_x_origin; /* origin for clipping */ int clip_y_origin; Pixmap clip_mask; /* bitmap clipping; other calls for rects */ int dash_offset; /* patterned/dashed line information */ char dashes; } XGCValues; The default GC values are: Component Default function GXcopy plane_mask All ones foreground 0 background 1 line_width 0 line_style LineSolid cap_style CapButt join_style JoinMiter fill_style FillSolid fill_rule EvenOddRule arc_mode ArcPieSlice tile Pixmap of unspecified size filled with foreground pixel (that is, client specified pixel if any, else 0) (subsequent changes to foreground do not affect this pixmap) stipple Pixmap of unspecified size filled with ones ts_x_origin 0 ts_y_origin 0 font <implementation dependent> subwindow_mode ClipByChildren graphics_exposures True clip_x_origin 0 clip_y_origin 0 clip_mask None dash_offset 0 dashes 4 (that is, the list [4, 4]) Note that foreground and background are not set to any values likely to be useful in a window. Display Functions Source Destination The function attributes of a GC are used when you update a section of a drawable (the destination) with bits from somewhere else (the source). The function in a GC defines how the new destination bits are to be computed from the source bits and the old destination bits. GXcopy is typically the most useful because it will work on a color display, but special applications may use other functions, particularly in concert with particular planes of a color display. The 16 GC functions, defined in <X11/X.h>, X11/X.h Files<X11/X.h> Headers<X11/X.h> are: Function Name Value Operation GXclear 0x0 0 GXand 0x1 src AND dst GXandReverse 0x2 src AND NOT dst GXcopy 0x3 src GXandInverted 0x4 (NOT src) AND dst GXnoop 0x5 dst GXxor 0x6 src XOR dst GXor 0x7 src OR dst GXnor 0x8 (NOT src) AND (NOT dst) GXequiv 0x9 (NOT src) XOR dst GXinvert 0xa NOT dst GXorReverse 0xb src OR (NOT dst) GXcopyInverted 0xc NOT src GXorInverted 0xd (NOT src) OR dst GXnand 0xe (NOT src) OR (NOT dst) GXset 0xf 1 Many graphics operations depend on either pixel values or planes in a GC. Pixel value The planes attribute is of type long, and it specifies which planes of the destination are to be modified, one bit per plane. Planemask A monochrome display has only one plane and will be the least significant bit of the word. As planes are added to the display hardware, they will occupy more significant bits in the plane mask. In graphics operations, given a source and destination pixel, the result is computed bitwise on corresponding bits of the pixels. That is, a Boolean operation is performed in each bit plane. The plane_mask restricts the operation to a subset of planes. A macro constant AllPlanes can be used to refer to all planes of the screen simultaneously. The result is computed by the following: ((src FUNC dst) AND plane-mask) OR (dst AND (NOT plane-mask)) Range checking is not performed on the values for foreground, background, or plane_mask. They are simply truncated to the appropriate number of bits. The line-width is measured in pixels and either can be greater than or equal to one (wide line) or can be the special value zero (thin line). Wide lines are drawn centered on the path described by the graphics request. Unless otherwise specified by the join-style or cap-style, the bounding box of a wide line with endpoints [x1, y1], [x2, y2] and width w is a rectangle with vertices at the following real coordinates: [x1-(w*sn/2), y1+(w*cs/2)], [x1+(w*sn/2), y1-(w*cs/2)], [x2-(w*sn/2), y2+(w*cs/2)], [x2+(w*sn/2), y2-(w*cs/2)] Here sn is the sine of the angle of the line, and cs is the cosine of the angle of the line. A pixel is part of the line and so is drawn if the center of the pixel is fully inside the bounding box (which is viewed as having infinitely thin edges). If the center of the pixel is exactly on the bounding box, it is part of the line if and only if the interior is immediately to its right (x increasing direction). Pixels with centers on a horizontal edge are a special case and are part of the line if and only if the interior or the boundary is immediately below (y increasing direction) and the interior or the boundary is immediately to the right (x increasing direction). Thin lines (zero line-width) are one-pixel-wide lines drawn using an unspecified, device-dependent algorithm. There are only two constraints on this algorithm. If a line is drawn unclipped from [x1,y1] to [x2,y2] and if another line is drawn unclipped from [x1+dx,y1+dy] to [x2+dx,y2+dy], a point [x,y] is touched by drawing the first line if and only if the point [x+dx,y+dy] is touched by drawing the second line. The effective set of points comprising a line cannot be affected by clipping. That is, a point is touched in a clipped line if and only if the point lies inside the clipping region and the point would be touched by the line when drawn unclipped. A wide line drawn from [x1,y1] to [x2,y2] always draws the same pixels as a wide line drawn from [x2,y2] to [x1,y1], not counting cap-style and join-style. It is recommended that this property be true for thin lines, but this is not required. A line-width of zero may differ from a line-width of one in which pixels are drawn. This permits the use of many manufacturers' line drawing hardware, which may run many times faster than the more precisely specified wide lines. In general, drawing a thin line will be faster than drawing a wide line of width one. However, because of their different drawing algorithms, thin lines may not mix well aesthetically with wide lines. If it is desirable to obtain precise and uniform results across all displays, a client should always use a line-width of one rather than a line-width of zero. The line-style defines which sections of a line are drawn: LineSolid The full path of the line is drawn. LineDoubleDash The full path of the line is drawn, but the even dashes are filled differently from the odd dashes (see fill-style) with CapButt style used where even and odd dashes meet. LineOnOffDash Only the even dashes are drawn, and cap-style applies to all internal ends of the individual dashes, except CapNotLast is treated as CapButt. The cap-style defines how the endpoints of a path are drawn: CapNotLast This is equivalent to CapButt except that for a line-width of zero the final endpoint is not drawn. CapButt The line is square at the endpoint (perpendicular to the slope of the line) with no projection beyond. CapRound The line has a circular arc with the diameter equal to the line-width, centered on the endpoint. (This is equivalent to CapButt for line-width of zero). CapProjecting The line is square at the end, but the path continues beyond the endpoint for a distance equal to half the line-width. (This is equivalent to CapButt for line-width of zero). The join-style defines how corners are drawn for wide lines: JoinMiter The outer edges of two lines extend to meet at an angle. However, if the angle is less than 11 degrees, then a JoinBevel join-style is used instead. JoinRound The corner is a circular arc with the diameter equal to the line-width, centered on the joinpoint. JoinBevel The corner has CapButt endpoint styles with the triangular notch filled. For a line with coincident endpoints (x1=x2, y1=y2), when the cap-style is applied to both endpoints, the semantics depends on the line-width and the cap-style: CapNotLast thin The results are device dependent, but the desired effect is that nothing is drawn. CapButt thin The results are device dependent, but the desired effect is that a single pixel is drawn. CapRound thin The results are the same as for CapButt /thin. CapProjecting thin The results are the same as for CapButt /thin. CapButt wide Nothing is drawn. CapRound wide The closed path is a circle, centered at the endpoint, and with the diameter equal to the line-width. CapProjecting wide The closed path is a square, aligned with the coordinate axes, centered at the endpoint, and with the sides equal to the line-width. For a line with coincident endpoints (x1=x2, y1=y2), when the join-style is applied at one or both endpoints, the effect is as if the line was removed from the overall path. However, if the total path consists of or is reduced to a single point joined with itself, the effect is the same as when the cap-style is applied at both endpoints. The tile/stipple represents an infinite two-dimensional plane, with the tile/stipple replicated in all dimensions. When that plane is superimposed on the drawable for use in a graphics operation, the upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable specified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the origin of whatever destination drawable is specified in a graphics request. The tile pixmap must have the same root and depth as the GC, or a BadMatch error results. The stipple pixmap must have depth one and must have the same root as the GC, or a BadMatch error results. For stipple operations where the fill-style is FillStippled but not FillOpaqueStippled, the stipple pattern is tiled in a single plane and acts as an additional clip mask to be ANDed with the clip-mask. Although some sizes may be faster to use than others, any size pixmap can be used for tiling or stippling. The fill-style defines the contents of the source for line, text, and fill requests. For all text and fill requests (for example, , , , , and ); for line requests with line-style LineSolid (for example, , , , ); and for the even dashes for line requests with line-style LineOnOffDash or LineDoubleDash, the following apply: FillSolid Foreground FillTiled Tile FillOpaqueStippled A tile with the same width and height as stipple, but with background everywhere stipple has a zero and with foreground everywhere stipple has a one FillStippled Foreground masked by stipple When drawing lines with line-style LineDoubleDash, the odd dashes are controlled by the fill-style in the following manner: FillSolid Background FillTiled Same as for even dashes FillOpaqueStippled Same as for even dashes FillStippled Background masked by stipple Storing a pixmap in a GC might or might not result in a copy being made. If the pixmap is later used as the destination for a graphics request, the change might or might not be reflected in the GC. If the pixmap is used simultaneously in a graphics request both as a destination and as a tile or stipple, the results are undefined. For optimum performance, you should draw as much as possible with the same GC (without changing its components). The costs of changing GC components relative to using different GCs depend on the display hardware and the server implementation. It is quite likely that some amount of GC information will be cached in display hardware and that such hardware can only cache a small number of GCs. The dashes value is actually a simplified form of the more general patterns that can be set with . Specifying a value of N is equivalent to specifying the two-element list [N, N] in . The value must be nonzero, or a BadValue error results. The clip-mask restricts writes to the destination drawable. If the clip-mask is set to a pixmap, it must have depth one and have the same root as the GC, or a BadMatch error results. If clip-mask is set to None, the pixels are always drawn regardless of the clip origin. The clip-mask also can be set by calling the or functions. Only pixels where the clip-mask has a bit set to 1 are drawn. Pixels are not drawn outside the area covered by the clip-mask or where the clip-mask has a bit set to 0. The clip-mask affects all graphics requests. The clip-mask does not clip sources. The clip-mask origin is interpreted relative to the origin of whatever destination drawable is specified in a graphics request. You can set the subwindow-mode to ClipByChildren or IncludeInferiors. For ClipByChildren, both source and destination windows are additionally clipped by all viewable InputOutput children. For IncludeInferiors, neither source nor destination window is clipped by inferiors. This will result in including subwindow contents in the source and drawing through subwindow boundaries of the destination. The use of IncludeInferiors on a window of one depth with mapped inferiors of differing depth is not illegal, but the semantics are undefined by the core protocol. The fill-rule defines what pixels are inside (drawn) for paths given in requests and can be set to EvenOddRule or WindingRule. For EvenOddRule, a point is inside if an infinite ray with the point as origin crosses the path an odd number of times. For WindingRule, a point is inside if an infinite ray with the point as origin crosses an unequal number of clockwise and counterclockwise directed path segments. A clockwise directed path segment is one that crosses the ray from left to right as observed from the point. A counterclockwise segment is one that crosses the ray from right to left as observed from the point. The case where a directed line segment is coincident with the ray is uninteresting because you can simply choose a different ray that is not coincident with a segment. For both EvenOddRule and WindingRule, a point is infinitely small, and the path is an infinitely thin line. A pixel is inside if the center point of the pixel is inside and the center point is not on the boundary. If the center point is on the boundary, the pixel is inside if and only if the polygon interior is immediately to its right (x increasing direction). Pixels with centers on a horizontal edge are a special case and are inside if and only if the polygon interior is immediately below (y increasing direction). The arc-mode controls filling in the function and can be set to ArcPieSlice or ArcChord. For ArcPieSlice, the arcs are pie-slice filled. For ArcChord, the arcs are chord filled. The graphics-exposure flag controls GraphicsExpose event generation for and requests (and any similar requests defined by extensions). To create a new GC that is usable on a given screen with a depth of drawable, use . Graphics contextinitializing XCreateGC GC XCreateGC Display *display Drawable d unsigned long valuemask XGCValues *values display Specifies the connection to the X server. d Specifies the drawable. valuemask Specifies which components in the GC are to be set using the information in the specified values structure. This argument is the bitwise inclusive OR of zero or more of the valid GC component mask bits. values Specifies any values as specified by the valuemask. The function creates a graphics context and returns a GC. The GC can be used with any destination drawable having the same root and depth as the specified drawable. Use with other drawables results in a BadMatch error. can generate BadAlloc, BadDrawable, BadFont, BadMatch, BadPixmap, and BadValue errors. To copy components from a source GC to a destination GC, use . XCopyGC XCopyGC Display *display GC src GC dest unsigned long valuemask display Specifies the connection to the X server. src Specifies the components of the source GC. valuemask Specifies which components in the GC are to be copied to the destination GC. This argument is the bitwise inclusive OR of zero or more of the valid GC component mask bits. dest Specifies the destination GC. The function copies the specified components from the source GC to the destination GC. The source and destination GCs must have the same root and depth, or a BadMatch error results. The valuemask specifies which component to copy, as for . can generate BadAlloc, BadGC, and BadMatch errors. To change the components in a given GC, use . XChangeGC XChangeGC Display *display GC gc unsigned long valuemask XGCValues *values display Specifies the connection to the X server. gc Specifies the GC. valuemask Specifies which components in the GC are to be changed using information in the specified values structure. This argument is the bitwise inclusive OR of zero or more of the valid GC component mask bits. values Specifies any values as specified by the valuemask. The function changes the components specified by valuemask for the specified GC. The values argument contains the values to be set. The values and restrictions are the same as for . Changing the clip-mask overrides any previous request on the context. Changing the dash-offset or dash-list overrides any previous request on the context. The order in which components are verified and altered is server dependent. If an error is generated, a subset of the components may have been altered. can generate BadAlloc, BadFont, BadGC, BadMatch, BadPixmap, and BadValue errors. To obtain components of a given GC, use . XGetGCValues Status XGetGCValues Display *display GC gc unsigned long valuemask XGCValues *values_return display Specifies the connection to the X server. gc Specifies the GC. valuemask Specifies which components in the GC are to be returned in the values_return argument. This argument is the bitwise inclusive OR of zero or more of the valid GC component mask bits. values_return Returns the GC values in the specified XGCValues structure. The function returns the components specified by valuemask for the specified GC. If the valuemask contains a valid set of GC mask bits (GCFunction, GCPlaneMask, GCForeground, GCBackground, GCLineWidth, GCLineStyle, GCCapStyle, GCJoinStyle, GCFillStyle, GCFillRule, GCTile, GCStipple, GCTileStipXOrigin, GCTileStipYOrigin, GCFont, GCSubwindowMode, GCGraphicsExposures, GCClipXOrigin, GCClipYOrigin, GCDashOffset, or GCArcMode) and no error occurs, sets the requested components in values_return and returns a nonzero status. Otherwise, it returns a zero status. Note that the clip-mask and dash-list (represented by the GCClipMask and GCDashList bits, respectively, in the valuemask) cannot be requested. Also note that an invalid resource ID (with one or more of the three most significant bits set to 1) will be returned for GCFont, GCTile, and GCStipple if the component has never been explicitly set by the client. To free a given GC, use . XFreeGC XFreeGC Display *display GC gc display Specifies the connection to the X server. gc Specifies the GC. The function destroys the specified GC as well as all the associated storage. can generate a BadGC error. To obtain the GContext resource ID for a given GC, use . XGContextFromGC GContext XGContextFromGC GC gc gc Specifies the GC for which you want the resource ID. Xlib usually defers sending changes to the components of a GC to the server until a graphics function is actually called with that GC. This permits batching of component changes into a single server request. In some circumstances, however, it may be necessary for the client to explicitly force sending the changes to the server. An example might be when a protocol extension uses the GC indirectly, in such a way that the extension interface cannot know what GC will be used. To force sending GC component changes, use . XFlushGC void XFlushGC Display *display GC gc display Specifies the connection to the X server. gc Specifies the GC. Using Graphics Context Convenience Routines This section discusses how to set the: Foreground, background, plane mask, or function components Line attributes and dashes components Fill style and fill rule components Fill tile and stipple components Font component Clip region component Arc mode, subwindow mode, and graphics exposure components Setting the Foreground, Background, Function, or Plane Mask To set the foreground, background, plane mask, and function components for a given GC, use . XSetState XSetState Display *display GC gc unsigned long foreground unsigned long background int function unsigned long plane_mask display Specifies the connection to the X server. gc Specifies the GC. foreground Specifies the foreground you want to set for the specified GC. background Specifies the background you want to set for the specified GC. function Specifies the function you want to set for the specified GC. plane_mask Specifies the plane mask. can generate BadAlloc, BadGC, and BadValue errors. To set the foreground of a given GC, use . XSetForeground XSetForeground Display *display GC gc unsigned long foreground display Specifies the connection to the X server. gc Specifies the GC. foreground Specifies the foreground you want to set for the specified GC. can generate BadAlloc and BadGC errors. To set the background of a given GC, use . XSetBackground XSetBackground Display *display GC gc unsigned long background display Specifies the connection to the X server. gc Specifies the GC. background Specifies the background you want to set for the specified GC. can generate BadAlloc and BadGC errors. To set the display function in a given GC, use . XSetFunction XSetFunction Display *display GC gc int function display Specifies the connection to the X server. gc Specifies the GC. function Specifies the function you want to set for the specified GC. can generate BadAlloc, BadGC, and BadValue errors. To set the plane mask of a given GC, use . XSetPlaneMask XSetPlaneMask Display *display GC gc unsigned long plane_mask display Specifies the connection to the X server. gc Specifies the GC. plane_mask Specifies the plane mask. can generate BadAlloc and BadGC errors. Setting the Line Attributes and Dashes To set the line drawing components of a given GC, use . XSetLineAttributes XSetLineAttributes Display *display GC gc unsigned int line_width int line_style int cap_style int join_style display Specifies the connection to the X server. gc Specifies the GC. line_width Specifies the line-width you want to set for the specified GC. line_style Specifies the line-style you want to set for the specified GC. You can pass LineSolid, LineOnOffDash, or LineDoubleDash. cap_style Specifies the line-style and cap-style you want to set for the specified GC. You can pass CapNotLast, CapButt, CapRound, or CapProjecting. join_style Specifies the line join-style you want to set for the specified GC. You can pass JoinMiter, JoinRound, or JoinBevel. can generate BadAlloc, BadGC, and BadValue errors. To set the dash-offset and dash-list for dashed line styles of a given GC, use . XSetDashes XSetDashes Display *display GC gc int dash_offset char dash_list[] int n display Specifies the connection to the X server. gc Specifies the GC. dash_offset Specifies the phase of the pattern for the dashed line-style you want to set for the specified GC. dash_list Specifies the dash-list for the dashed line-style you want to set for the specified GC. n Specifies the number of elements in dash_list. The function sets the dash-offset and dash-list attributes for dashed line styles in the specified GC. There must be at least one element in the specified dash_list, or a BadValue error results. The initial and alternating elements (second, fourth, and so on) of the dash_list are the even dashes, and the others are the odd dashes. Each element specifies a dash length in pixels. All of the elements must be nonzero, or a BadValue error results. Specifying an odd-length list is equivalent to specifying the same list concatenated with itself to produce an even-length list. The dash-offset defines the phase of the pattern, specifying how many pixels into the dash-list the pattern should actually begin in any single graphics request. Dashing is continuous through path elements combined with a join-style but is reset to the dash-offset between each sequence of joined lines. The unit of measure for dashes is the same for the ordinary coordinate system. Ideally, a dash length is measured along the slope of the line, but implementations are only required to match this ideal for horizontal and vertical lines. Failing the ideal semantics, it is suggested that the length be measured along the major axis of the line. The major axis is defined as the x axis for lines drawn at an angle of between −45 and +45 degrees or between 135 and 225 degrees from the x axis. For all other lines, the major axis is the y axis. can generate BadAlloc, BadGC, and BadValue errors. Setting the Fill Style and Fill Rule To set the fill-style of a given GC, use . XSetFillStyle XSetFillStyle Display *display GC gc int fill_style display Specifies the connection to the X server. gc Specifies the GC. fill_style Specifies the fill-style you want to set for the specified GC. You can pass FillSolid, FillTiled, FillStippled, or FillOpaqueStippled. can generate BadAlloc, BadGC, and BadValue errors. To set the fill-rule of a given GC, use . XSetFillRule XSetFillRule Display *display GC gc int fill_rule display Specifies the connection to the X server. gc Specifies the GC. fill_rule Specifies the fill-rule you want to set for the specified GC. You can pass EvenOddRule or WindingRule. can generate BadAlloc, BadGC, and BadValue errors. Setting the Fill Tile and Stipple Some displays have hardware support for tiling or stippling with patterns of specific sizes. Tiling and stippling operations that restrict themselves to those specific sizes run much faster than such operations with arbitrary size patterns. Xlib provides functions that you can use to determine the best size, tile, or stipple for the display as well as to set the tile or stipple shape and the tile or stipple origin. To obtain the best size of a tile, stipple, or cursor, use . XQueryBestSize Status XQueryBestSize Display *display int class Drawable which_screen unsigned int width unsigned int height unsigned int *width_return unsigned int *height_return display Specifies the connection to the X server. class Specifies the class that you are interested in. You can pass TileShape, CursorShape, or StippleShape. which_screen Specifies any drawable on the screen. width height Specify the width and height. width_return height_return Return the width and height of the object best supported by the display hardware. The function returns the best or closest size to the specified size. For CursorShape, this is the largest size that can be fully displayed on the screen specified by which_screen. For TileShape, this is the size that can be tiled fastest. For StippleShape, this is the size that can be stippled fastest. For CursorShape, the drawable indicates the desired screen. For TileShape and StippleShape, the drawable indicates the screen and possibly the window class and depth. An InputOnly window cannot be used as the drawable for TileShape or StippleShape, or a BadMatch error results. can generate BadDrawable, BadMatch, and BadValue errors. To obtain the best fill tile shape, use . XQueryBestTile Status XQueryBestTile Display *display Drawable which_screen unsigned int width unsigned int height unsigned int *width_return unsigned int *height_return display Specifies the connection to the X server. which_screen Specifies any drawable on the screen. width height Specify the width and height. width_return height_return Return the width and height of the object best supported by the display hardware. The function returns the best or closest size, that is, the size that can be tiled fastest on the screen specified by which_screen. The drawable indicates the screen and possibly the window class and depth. If an InputOnly window is used as the drawable, a BadMatch error results. can generate BadDrawable and BadMatch errors. To obtain the best stipple shape, use . XQueryBestStipple Status XQueryBestStipple Display *display Drawable which_screen unsigned int width unsigned int height unsigned int *width_return unsigned int *height_return display Specifies the connection to the X server. which_screen Specifies any drawable on the screen. width height Specify the width and height. width_return height_return Return the width and height of the object best supported by the display hardware. The function returns the best or closest size, that is, the size that can be stippled fastest on the screen specified by which_screen. The drawable indicates the screen and possibly the window class and depth. If an InputOnly window is used as the drawable, a BadMatch error results. can generate BadDrawable and BadMatch errors. To set the fill tile of a given GC, use . XSetTile XSetTile Display *display GC gc Pixmap tile display Specifies the connection to the X server. gc Specifies the GC. tile Specifies the fill tile you want to set for the specified GC. The tile and GC must have the same depth, or a BadMatch error results. can generate BadAlloc, BadGC, BadMatch, and BadPixmap errors. To set the stipple of a given GC, use . XSetStipple XSetStipple Display *display GC gc Pixmap stipple display Specifies the connection to the X server. gc Specifies the GC. stipple Specifies the stipple you want to set for the specified GC. The stipple must have a depth of one, or a BadMatch error results. can generate BadAlloc, BadGC, BadMatch, and BadPixmap errors. To set the tile or stipple origin of a given GC, use . XSetTSOrigin XSetTSOrigin Display *display GC gc int ts_x_origin int ts_y_origin display Specifies the connection to the X server. gc Specifies the GC. ts_x_origin ts_y_origin Specify the x and y coordinates of the tile and stipple origin. When graphics requests call for tiling or stippling, the parent's origin will be interpreted relative to whatever destination drawable is specified in the graphics request. can generate BadAlloc and BadGC errors. Setting the Current Font To set the current font of a given GC, use . XSetFont XSetFont Display *display GC gc Font font display Specifies the connection to the X server. gc Specifies the GC. font Specifies the font. can generate BadAlloc, BadFont, and BadGC errors. Setting the Clip Region Xlib provides functions that you can use to set the clip-origin and the clip-mask or set the clip-mask to a list of rectangles. To set the clip-origin of a given GC, use . XSetClipOrigin XSetClipOrigin Display *display GC gc int clip_x_origin int clip_y_origin display Specifies the connection to the X server. gc Specifies the GC. clip_x_origin clip_y_origin Specify the x and y coordinates of the clip-mask origin. The clip-mask origin is interpreted relative to the origin of whatever destination drawable is specified in the graphics request. can generate BadAlloc and BadGC errors. To set the clip-mask of a given GC to the specified pixmap, use . XSetClipMask XSetClipMask Display *display GC gc Pixmap pixmap display Specifies the connection to the X server. gc Specifies the GC. pixmap Specifies the pixmap or None. If the clip-mask is set to None, the pixels are always drawn (regardless of the clip-origin). can generate BadAlloc, BadGC, BadMatch, and BadPixmap errors. To set the clip-mask of a given GC to the specified list of rectangles, use . XSetClipRectangles XSetClipRectangles Display *display GC gc int clip_x_origin int clip_y_origin XRectangle rectangles[] int n int ordering display Specifies the connection to the X server. gc Specifies the GC. clip_x_origin clip_y_origin Specify the x and y coordinates of the clip-mask origin. rectangles Specifies an array of rectangles that define the clip-mask. n Specifies the number of rectangles. ordering Specifies the ordering relations on the rectangles. You can pass Unsorted, YSorted, YXSorted, or YXBanded. The function changes the clip-mask in the specified GC to the specified list of rectangles and sets the clip origin. The output is clipped to remain contained within the rectangles. The clip-origin is interpreted relative to the origin of whatever destination drawable is specified in a graphics request. The rectangle coordinates are interpreted relative to the clip-origin. The rectangles should be nonintersecting, or the graphics results will be undefined. Note that the list of rectangles can be empty, which effectively disables output. This is the opposite of passing None as the clip-mask in , , and . If known by the client, ordering relations on the rectangles can be specified with the ordering argument. This may provide faster operation by the server. If an incorrect ordering is specified, the X server may generate a BadMatch error, but it is not required to do so. If no error is generated, the graphics results are undefined. Unsorted means the rectangles are in arbitrary order. YSorted means that the rectangles are nondecreasing in their Y origin. YXSorted additionally constrains YSorted order in that all rectangles with an equal Y origin are nondecreasing in their X origin. YXBanded additionally constrains YXSorted by requiring that, for every possible Y scanline, all rectangles that include that scanline have an identical Y origins and Y extents. can generate BadAlloc, BadGC, BadMatch, and BadValue errors. Xlib provides a set of basic functions for performing region arithmetic. For information about these functions, see section 16.5. Setting the Arc Mode, Subwindow Mode, and Graphics Exposure To set the arc mode of a given GC, use . XSetArcMode XSetArcMode Display *display GC gc int arc_mode display Specifies the connection to the X server. gc Specifies the GC. arc_mode Specifies the arc mode. You can pass ArcChord or ArcPieSlice. can generate BadAlloc, BadGC, and BadValue errors. To set the subwindow mode of a given GC, use . XSetSubwindowMode XSetSubwindowMode Display *display GC gc int subwindow_mode display Specifies the connection to the X server. gc Specifies the GC. subwindow_mode Specifies the subwindow mode. You can pass ClipByChildren or IncludeInferiors. can generate BadAlloc, BadGC, and BadValue errors. To set the graphics-exposures flag of a given GC, use . XSetGraphicsExposures XSetGraphicsExposures Display *display GC gc Bool graphics_exposures display Specifies the connection to the X server. gc Specifies the GC. graphics_exposures Specifies a Boolean value that indicates whether you want GraphicsExpose and NoExpose events to be reported when calling and with this GC. can generate BadAlloc, BadGC, and BadValue errors. libX11-1.8.12/specs/libX11/CH09.xml0000644014310600000120000015575514763154126011711 Window and Session Manager Functions Although it is difficult to categorize functions as exclusively for an application, a window manager, or a session manager, the functions in this chapter are most often used by window managers and session managers. It is not expected that these functions will be used by most application programs. Xlib provides management functions to: Change the parent of a window Control the lifetime of a window Manage installed colormaps Set and retrieve the font search path Grab the server Kill a client Control the screen saver Control host access Changing the Parent of a Window To change a window's parent to another window on the same screen, use . There is no way to move a window between screens. XReparentWindow XReparentWindow Display *display Window w Window parent int x int y display Specifies the connection to the X server. w Specifies the window. parent Specifies the parent window. x y Specify the x and y coordinates of the position in the new parent window. If the specified window is mapped, automatically performs an UnmapWindow request on it, removes it from its current position in the hierarchy, and inserts it as the child of the specified parent. The window is placed in the stacking order on top with respect to sibling windows. After reparenting the specified window, causes the X server to generate a ReparentNotify event. The override_redirect member returned in this event is set to the window's corresponding attribute. Window manager clients usually should ignore this window if this member is set to True. Finally, if the specified window was originally mapped, the X server automatically performs a MapWindow request on it. The X server performs normal exposure processing on formerly obscured windows. The X server might not generate Expose events for regions from the initial UnmapWindow request that are immediately obscured by the final MapWindow request. A BadMatch error results if: The new parent window is not on the same screen as the old parent window. The new parent window is the specified window or an inferior of the specified window. The new parent is InputOnly, and the window is not. The specified window has a ParentRelative background, and the new parent window is not the same depth as the specified window. can generate BadMatch and BadWindow errors. Controlling the Lifetime of a Window The save-set of a client is a list of other clients' windows that, if they are inferiors of one of the client's windows at connection close, should not be destroyed and should be remapped if they are unmapped. For further information about close-connection processing, see section 2.6. To allow an application's window to survive when a window manager that has reparented a window fails, Xlib provides the save-set functions that you can use to control the longevity of subwindows that are normally destroyed when the parent is destroyed. For example, a window manager that wants to add decoration to a window by adding a frame might reparent an application's window. When the frame is destroyed, the application's window should not be destroyed but be returned to its previous place in the window hierarchy. The X server automatically removes windows from the save-set when they are destroyed. To add or remove a window from the client's save-set, use . XChangeSaveSet XChangeSaveSet Display *display Window w int change_mode display Specifies the connection to the X server. w Specifies the window that you want to add to or delete from the client's save-set. change_mode Specifies the mode. You can pass SetModeInsert or SetModeDelete. Depending on the specified mode, either inserts or deletes the specified window from the client's save-set. The specified window must have been created by some other client, or a BadMatch error results. can generate BadMatch, BadValue, and BadWindow errors. To add a window to the client's save-set, use . XAddToSaveSet XAddToSaveSet Display *display Window w display Specifies the connection to the X server. w Specifies the window that you want to add to the client's save-set. The function adds the specified window to the client's save-set. The specified window must have been created by some other client, or a BadMatch error results. can generate BadMatch and BadWindow errors. To remove a window from the client's save-set, use . XRemoveFromSaveSet XRemoveFromSaveSet Display *display Window w display Specifies the connection to the X server. w Specifies the window that you want to delete from the client's save-set. The function removes the specified window from the client's save-set. The specified window must have been created by some other client, or a BadMatch error results. can generate BadMatch and BadWindow errors. Managing Installed Colormaps The X server maintains a list of installed colormaps. Windows using these colormaps are guaranteed to display with correct colors; windows using other colormaps may or may not display with correct colors. Xlib provides functions that you can use to install a colormap, uninstall a colormap, and obtain a list of installed colormaps. At any time, there is a subset of the installed maps that is viewed as an ordered list and is called the required list. The length of the required list is at most M, where M is the minimum number of installed colormaps specified for the screen in the connection setup. The required list is maintained as follows. When a colormap is specified to , it is added to the head of the list; the list is truncated at the tail, if necessary, to keep its length to at most M. When a colormap is specified to and it is in the required list, it is removed from the list. A colormap is not added to the required list when it is implicitly installed by the X server, and the X server cannot implicitly uninstall a colormap that is in the required list. To install a colormap, use . XInstallColormap XInstallColormap Display *display Colormap colormap display Specifies the connection to the X server. colormap Specifies the colormap. The function installs the specified colormap for its associated screen. All windows associated with this colormap immediately display with true colors. You associated the windows with this colormap when you created them by calling , , , or . If the specified colormap is not already an installed colormap, the X server generates a ColormapNotify event on each window that has that colormap. In addition, for every other colormap that is installed as a result of a call to , the X server generates a ColormapNotify event on each window that has that colormap. can generate a BadColor error. To uninstall a colormap, use . XUninstallColormap XUninstallColormap Display *display Colormap colormap display Specifies the connection to the X server. colormap Specifies the colormap. The function removes the specified colormap from the required list for its screen. As a result, the specified colormap might be uninstalled, and the X server might implicitly install or uninstall additional colormaps. Which colormaps get installed or uninstalled is server dependent except that the required list must remain installed. If the specified colormap becomes uninstalled, the X server generates a ColormapNotify event on each window that has that colormap. In addition, for every other colormap that is installed or uninstalled as a result of a call to , the X server generates a ColormapNotify event on each window that has that colormap. can generate a BadColor error. To obtain a list of the currently installed colormaps for a given screen, use . XListInstalledColormaps Colormap *XListInstalledColormaps Display *display Window w int *num_return display Specifies the connection to the X server. w Specifies the window that determines the screen. num_return Returns the number of currently installed colormaps. The function returns a list of the currently installed colormaps for the screen of the specified window. The order of the colormaps in the list is not significant and is no explicit indication of the required list. When the allocated list is no longer needed, free it by using . can generate a BadWindow error. Setting and Retrieving the Font Search Path The set of fonts available from a server depends on a font search path. Xlib provides functions to set and retrieve the search path for a server. To set the font search path, use . XSetFontPath XSetFontPath Display *display char **directories int ndirs display Specifies the connection to the X server. directories Specifies the directory path used to look for a font. Setting the path to the empty list restores the default path defined for the X server. ndirs Specifies the number of directories in the path. The function defines the directory search path for font lookup. There is only one search path per X server, not one per client. The encoding and interpretation of the strings are implementation-dependent, but typically they specify directories or font servers to be searched in the order listed. An X server is permitted to cache font information internally; for example, it might cache an entire font from a file and not check on subsequent opens of that font to see if the underlying font file has changed. However, when the font path is changed, the X server is guaranteed to flush all cached information about fonts for which there currently are no explicit resource IDs allocated. The meaning of an error from this request is implementation-dependent. can generate a BadValue error. To get the current font search path, use . XGetFontPath char **XGetFontPath Display *display int *npaths_return display Specifies the connection to the X server. npaths_return Returns the number of strings in the font path array. The function allocates and returns an array of strings containing the search path. The contents of these strings are implementation-dependent and are not intended to be interpreted by client applications. When it is no longer needed, the data in the font path should be freed by using . To free data returned by , use . XFreeFontPath XFreeFontPath char **list list Specifies the array of strings you want to free. The function frees the data allocated by . Grabbing the Server Xlib provides functions that you can use to grab and ungrab the server. These functions can be used to control processing of output on other connections by the window system server. While the server is grabbed, no processing of requests or close downs on any other connection will occur. A client closing its connection automatically ungrabs the server. Menus Windowmanagers Although grabbing the server is highly discouraged, it is sometimes necessary. To grab the server, use . Servergrabbing Grabbingserver XGrabServer XGrabServer Display *display display Specifies the connection to the X server. The function disables processing of requests and close downs on all other connections than the one this request arrived on. You should not grab the X server any more than is absolutely necessary. To ungrab the server, use . XUngrabServer XUngrabServer Display *display display Specifies the connection to the X server. The function restarts processing of requests and close downs on other connections. You should avoid grabbing the X server as much as possible. Killing Clients Xlib provides a function to cause the connection to a client to be closed and its resources to be destroyed. To destroy a client, use . XKillClient XKillClient Display *display XID resource display Specifies the connection to the X server. resource Specifies any resource associated with the client that you want to destroy or AllTemporary. The function forces a close down of the client that created the resource if a valid resource is specified. If the client has already terminated in either RetainPermanent or RetainTemporary mode, all of the client's resources are destroyed. If AllTemporary is specified, the resources of all clients that have terminated in RetainTemporary are destroyed (see section 2.5). This permits implementation of window manager facilities that aid debugging. A client can set its close-down mode to RetainTemporary. If the client then crashes, its windows would not be destroyed. The programmer can then inspect the application's window tree and use the window manager to destroy the zombie windows. can generate a BadValue error. Controlling the Screen Saver Xlib provides functions that you can use to set or reset the mode of the screen saver, to force or activate the screen saver, or to obtain the current screen saver values. To set the screen saver mode, use . XSetScreenSaver XSetScreenSaver Display *display int timeout int interval int prefer_blanking int allow_exposures display Specifies the connection to the X server. timeout Specifies the timeout, in seconds, until the screen saver turns on. interval Specifies the interval, in seconds, between screen saver alterations. prefer_blanking Specifies how to enable screen blanking. You can pass DontPreferBlanking, PreferBlanking, or DefaultBlanking. allow_exposures Specifies the screen save control values. You can pass DontAllowExposures, AllowExposures, or DefaultExposures. Timeout and interval are specified in seconds. A timeout of 0 disables the screen saver (but an activated screen saver is not deactivated), and a timeout of −1 restores the default. Other negative values generate a BadValue error. If the timeout value is nonzero, enables the screen saver. An interval of 0 disables the random-pattern motion. If no input from devices (keyboard, mouse, and so on) is generated for the specified number of timeout seconds once the screen saver is enabled, the screen saver is activated. For each screen, if blanking is preferred and the hardware supports video blanking, the screen simply goes blank. Otherwise, if either exposures are allowed or the screen can be regenerated without sending Expose events to clients, the screen is tiled with the root window background tile randomly re-origined each interval seconds. Otherwise, the screens' state do not change, and the screen saver is not activated. The screen saver is deactivated, and all screen states are restored at the next keyboard or pointer input or at the next call to with mode ScreenSaverReset. If the server-dependent screen saver method supports periodic change, the interval argument serves as a hint about how long the change period should be, and zero hints that no periodic change should be made. Examples of ways to change the screen include scrambling the colormap periodically, moving an icon image around the screen periodically, or tiling the screen with the root window background tile, randomly re-origined periodically. can generate a BadValue error. To force the screen saver on or off, use . XForceScreenSaver XForceScreenSaver Display *display int mode display Specifies the connection to the X server. mode Specifies the mode that is to be applied. You can pass ScreenSaverActive or ScreenSaverReset. If the specified mode is ScreenSaverActive and the screen saver currently is deactivated, activates the screen saver even if the screen saver had been disabled with a timeout of zero. If the specified mode is ScreenSaverReset and the screen saver currently is enabled, deactivates the screen saver if it was activated, and the activation timer is reset to its initial state (as if device input had been received). can generate a BadValue error. To activate the screen saver, use . XActivateScreenSaver XActivateScreenSaver Display *display display Specifies the connection to the X server. To reset the screen saver, use . XResetScreenSaver XResetScreenSaver Display *display display Specifies the connection to the X server. To get the current screen saver values, use . XGetScreenSaver XGetScreenSaver Display *display int *timeout_return int *interval_return int *prefer_blanking_return int *allow_exposures_return display Specifies the connection to the X server. timeout_return Returns the timeout, in seconds, until the screen saver turns on. interval_return Returns the interval between screen saver invocations. prefer_blanking_return Returns the current screen blanking preference (DontPreferBlanking, PreferBlanking, or DefaultBlanking). allow_exposures_return Returns the current screen save control value (DontAllowExposures, AllowExposures, or DefaultExposures). Controlling Host Access This section discusses how to: Add, get, or remove hosts from the access control list Change, enable, or disable access Access control list Authentication X does not provide any protection on a per-window basis. If you find out the resource ID of a resource, you can manipulate it. To provide some minimal level of protection, however, connections are permitted only from machines you trust. This is adequate on single-user workstations but obviously breaks down on timesharing machines. Although provisions exist in the X protocol for proper connection authentication, the lack of a standard authentication server leaves host-level access control as the only common mechanism. Default Protection The initial set of hosts allowed to open connections typically consists of: The host the window system is running on. On POSIX-conformant systems, each host listed in the /etc/X?.hosts file. The ? indicates the number of the display. Files/etc/X?.hosts This file should consist of host names separated by newlines. DECnet nodes must terminate in :: to distinguish them from Internet hosts. If a host is not in the access control list when the access control mechanism is enabled and if the host attempts to establish a connection, the server refuses the connection. To change the access list, the client must reside on the same host as the server and/or must have been granted permission in the initial authorization at connection setup. Servers also can implement other access control policies in addition to or in place of this host access facility. For further information about other access control implementations, see X Window System Protocol. Adding, Getting, or Removing Hosts Xlib provides functions that you can use to add, get, or remove hosts from the access control list. All the host access control functions use the XHostAddress structure, which contains: XHostAddress typedef struct { int family; /* for example FamilyInternet */ int length; /* length of address, in bytes */ char *address; /* pointer to where to find the address */ } XHostAddress; The family member specifies which protocol address family to use (for example, TCP/IP or DECnet) and can be FamilyInternet, FamilyInternet6, FamilyServerInterpreted, FamilyDECnet, or FamilyChaos. The length member specifies the length of the address in bytes. The address member specifies a pointer to the address. For TCP/IP, the address should be in network byte order. For IP version 4 addresses, the family should be FamilyInternet and the length should be 4 bytes. For IP version 6 addresses, the family should be FamilyInternet6 and the length should be 16 bytes. For the DECnet family, the server performs no automatic swapping on the address bytes. A Phase IV address is 2 bytes long. The first byte contains the least significant 8 bits of the node number. The second byte contains the most significant 2 bits of the node number in the least significant 2 bits of the byte and the area in the most significant 6 bits of the byte. For the ServerInterpreted family, the length is ignored and the address member is a pointer to a XServerInterpretedAddress structure, which contains: XServerInterpretedAddress typedef struct { int typelength; /* length of type string, in bytes */ int valuelength; /* length of value string, in bytes */ char *type; /* pointer to where to find the type string */ char *value; /* pointer to where to find the address */ } XServerInterpretedAddress; The type and value members point to strings representing the type and value of the server interpreted entry. These strings may not be NULL-terminated so care should be used when accessing them. The typelength and valuelength members specify the length in byte of the type and value strings. To add a single host, use . XAddHost XAddHost Display *display XHostAddress *host display Specifies the connection to the X server. host Specifies the host that is to be added. The function adds the specified host to the access control list for that display. The server must be on the same host as the client issuing the command, or a BadAccess error results. can generate BadAccess and BadValue errors. To add multiple hosts at one time, use . XAddHosts XAddHosts Display *display XHostAddress *hosts int num_hosts display Specifies the connection to the X server. hosts Specifies each host that is to be added. num_hosts Specifies the number of hosts. The function adds each specified host to the access control list for that display. The server must be on the same host as the client issuing the command, or a BadAccess error results. can generate BadAccess and BadValue errors. To obtain a host list, use . XListHosts XHostAddress *XListHosts Display *display int *nhosts_return Bool *state_return display Specifies the connection to the X server. nhosts_return Returns the number of hosts currently in the access control list. state_return Returns the state of the access control. The function returns the current access control list as well as whether the use of the list at connection setup was enabled or disabled. allows a program to find out what machines can make connections. It also returns a pointer to a list of host structures that were allocated by the function. When no longer needed, this memory should be freed by calling . To remove a single host, use . XRemoveHost XRemoveHost Display *display XHostAddress *host display Specifies the connection to the X server. host Specifies the host that is to be removed. The function removes the specified host from the access control list for that display. The server must be on the same host as the client process, or a BadAccess error results. If you remove your machine from the access list, you can no longer connect to that server, and this operation cannot be reversed unless you reset the server. can generate BadAccess and BadValue errors. To remove multiple hosts at one time, use . XRemoveHosts XRemoveHosts Display *display XHostAddress *hosts int num_hosts display Specifies the connection to the X server. hosts Specifies each host that is to be removed. num_hosts Specifies the number of hosts. The function removes each specified host from the access control list for that display. The X server must be on the same host as the client process, or a BadAccess error results. If you remove your machine from the access list, you can no longer connect to that server, and this operation cannot be reversed unless you reset the server. can generate BadAccess and BadValue errors. Changing, Enabling, or Disabling Access Control Xlib provides functions that you can use to enable, disable, or change access control. For these functions to execute successfully, the client application must reside on the same host as the X server and/or have been given permission in the initial authorization at connection setup. To change access control, use . XSetAccessControl XSetAccessControl Display *display int mode display Specifies the connection to the X server. mode Specifies the mode. You can pass EnableAccess or DisableAccess. The function either enables or disables the use of the access control list at each connection setup. can generate BadAccess and BadValue errors. To enable access control, use . XEnableAccessControl XEnableAccessControl Display *display display Specifies the connection to the X server. The function enables the use of the access control list at each connection setup. can generate a BadAccess error. To disable access control, use . XDisableAccessControl XDisableAccessControl Display *display display Specifies the connection to the X server. The function disables the use of the access control list at each connection setup. can generate a BadAccess error. libX11-1.8.12/specs/libX11/Makefile.in0000644014310600000120000006321114763154147012555 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = specs/libX11 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = libX11.xml AppA.xml AppB.xml AppC.xml \ AppD.xml CH01.xml CH02.xml CH03.xml CH04.xml CH05.xml CH06.xml \ CH07.xml CH08.xml CH09.xml CH10.xml CH11.xml CH12.xml CH13.xml \ CH14.xml CH15.xml CH16.xml credits.xml glossary.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_SPECS_TRUE@docbook = libX11.xml # Included chapters, appendix, images @ENABLE_SPECS_TRUE@chapters = \ @ENABLE_SPECS_TRUE@ AppA.xml \ @ENABLE_SPECS_TRUE@ AppB.xml \ @ENABLE_SPECS_TRUE@ AppC.xml \ @ENABLE_SPECS_TRUE@ AppD.xml \ @ENABLE_SPECS_TRUE@ CH01.xml \ @ENABLE_SPECS_TRUE@ CH02.xml \ @ENABLE_SPECS_TRUE@ CH03.xml \ @ENABLE_SPECS_TRUE@ CH04.xml \ @ENABLE_SPECS_TRUE@ CH05.xml \ @ENABLE_SPECS_TRUE@ CH06.xml \ @ENABLE_SPECS_TRUE@ CH07.xml \ @ENABLE_SPECS_TRUE@ CH08.xml \ @ENABLE_SPECS_TRUE@ CH09.xml \ @ENABLE_SPECS_TRUE@ CH10.xml \ @ENABLE_SPECS_TRUE@ CH11.xml \ @ENABLE_SPECS_TRUE@ CH12.xml \ @ENABLE_SPECS_TRUE@ CH13.xml \ @ENABLE_SPECS_TRUE@ CH14.xml \ @ENABLE_SPECS_TRUE@ CH15.xml \ @ENABLE_SPECS_TRUE@ CH16.xml \ @ENABLE_SPECS_TRUE@ credits.xml \ @ENABLE_SPECS_TRUE@ glossary.xml # The location where the DocBook/XML files and their generated formats are installed @ENABLE_SPECS_TRUE@shelfdir = $(docdir)/libX11 # DocBook/XML generated output formats to be installed @ENABLE_SPECS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_SPECS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_SPECS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/libX11/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/libX11/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_shelfDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-shelfDATA install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-dist_shelfDATA uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/specs/libX11/CH16.xml0000644014310600000120000033262514763154126011700 Application Utility Functions Once you have initialized the X system, you can use the Xlib utility functions to: Use keyboard utility functions Use Latin-1 keyboard event functions Allocate permanent storage Parse the window geometry Manipulate regions Use cut buffers Determine the appropriate visual type Manipulate images Manipulate bitmaps Use the context manager As a group, the functions discussed in this chapter provide the functionality that is frequently needed and that spans toolkits. Many of these functions do not generate actual protocol requests to the server. Using Keyboard Utility Functions This section discusses mapping between KeyCodes and KeySyms, classifying KeySyms, and mapping between KeySyms and string names. The first three functions in this section operate on a cached copy of the server keyboard mapping. The first four KeySyms for each KeyCode are modified according to the rules given in section 12.7. To obtain the untransformed KeySyms defined for a key, use the functions described in section 12.7. To obtain a KeySym for the KeyCode of an event, use . XLookupKeysym KeySym XLookupKeysym XKeyEvent *key_event int index key_event Specifies the KeyPress or KeyRelease event. index Specifies the index into the KeySyms list for the event's KeyCode. The function uses a given keyboard event and the index you specified to return the KeySym from the list that corresponds to the KeyCode member in the XKeyPressedEvent or XKeyReleasedEvent structure. If no KeySym is defined for the KeyCode of the event, returns NoSymbol. To obtain a KeySym for a specific KeyCode, use . XKeycodeToKeysym KeySym XKeycodeToKeysym Display *display KeyCode keycode int index display Specifies the connection to the X server. keycode Specifies the KeyCode. index Specifies the element of KeyCode vector. The function uses internal Xlib tables and returns the KeySym defined for the specified KeyCode and the element of the KeyCode vector. If no symbol is defined, returns NoSymbol. To obtain a KeyCode for a key having a specific KeySym, use . XKeysymToKeycode KeyCode XKeysymToKeycode Display *display KeySym keysym display Specifies the connection to the X server. keysym Specifies the KeySym that is to be searched for. If the specified KeySym is not defined for any KeyCode, returns zero. The mapping between KeyCodes and KeySyms is cached internal to Xlib. When this information is changed at the server, an Xlib function must be called to refresh the cache. To refresh the stored modifier and keymap information, use . XRefreshKeyboardMapping XRefreshKeyboardMapping XMappingEvent *event_map event_map Specifies the mapping event that is to be used. The function refreshes the stored modifier and keymap information. You usually call this function when a MappingNotify event with a request member of MappingKeyboard or MappingModifier occurs. The result is to update Xlib's knowledge of the keyboard. To obtain the uppercase and lowercase forms of a KeySym, use . XConvertCase void XConvertCase KeySym keysym KeySym *lower_return KeySym *upper_return keysym Specifies the KeySym that is to be converted. lower_return Returns the lowercase form of keysym, or keysym. upper_return Returns the uppercase form of keysym, or keysym. The function returns the uppercase and lowercase forms of the specified Keysym, if the KeySym is subject to case conversion; otherwise, the specified KeySym is returned to both lower_return and upper_return. Support for conversion of other than Latin and Cyrillic KeySyms is implementation-dependent. KeySyms have string names as well as numeric codes. To convert the name of the KeySym to the KeySym code, use . XStringToKeysym KeySym XStringToKeysym char *string string Specifies the name of the KeySym that is to be converted. Standard KeySym names are obtained from <X11/keysymdef.h> X11/keysymdef.h Files<X11/keysymdef.h> Headers<X11/keysymdef.h> by removing the XK_ prefix from each name. KeySyms that are not part of the Xlib standard also may be obtained with this function. The set of KeySyms that are available in this manner and the mechanisms by which Xlib obtains them is implementation-dependent. If the KeySym name is not in the Host Portable Character Encoding, the result is implementation-dependent. If the specified string does not match a valid KeySym, returns NoSymbol. To convert a KeySym code to the name of the KeySym, use . XKeysymToString char *XKeysymToString KeySym keysym keysym Specifies the KeySym that is to be converted. The returned string is in a static area and must not be modified. The returned string is in the Host Portable Character Encoding. If the specified KeySym is not defined, returns a NULL. KeySym Classification Macros You may want to test if a KeySym is, for example, on the keypad or on one of the function keys. You can use KeySym macros to perform the following tests. IsCursorKey(keysym) keysym Specifies the KeySym that is to be tested. IsCursorKey Returns True if the specified KeySym is a cursor key. IsFunctionKey(keysym) keysym Specifies the KeySym that is to be tested. IsFunctionKey Returns True if the specified KeySym is a function key. IsKeypadKey(keysym) keysym Specifies the KeySym that is to be tested. IsKeypadKey Returns True if the specified KeySym is a standard keypad key. IsPrivateKeypadKey(keysym) keysym Specifies the KeySym that is to be tested. IsPrivateKeypadKey Returns True if the specified KeySym is a vendor-private keypad key. IsMiscFunctionKey(keysym) keysym Specifies the KeySym that is to be tested. IsMiscFunctionKey Returns True if the specified KeySym is a miscellaneous function key. IsModifierKey(keysym) keysym Specifies the KeySym that is to be tested. IsModifierKey Returns True if the specified KeySym is a modifier key. IsPFKey(keysym) keysym Specifies the KeySym that is to be tested. IsPFKey Returns True if the specified KeySym is a PF key. Using Latin-1 Keyboard Event Functions Chapter 13 describes internationalized text input facilities, but sometimes it is expedient to write an application that only deals with Latin-1 characters and ASCII controls, so Xlib provides a simple function for that purpose. handles the standard modifier semantics described in section 12.7. This function does not use any of the input method facilities described in chapter 13 and does not depend on the current locale. To map a key event to an ISO Latin-1 string, use . XLookupString int XLookupString XKeyEvent *event_struct char *buffer_return int bytes_buffer KeySym *keysym_return XComposeStatus *status_in_out event_struct Specifies the key event structure to be used. You can pass XKeyPressedEvent or XKeyReleasedEvent. buffer_return Returns the translated characters. bytes_buffer Specifies the length of the buffer. No more than bytes_buffer of translation are returned. keysym_return Returns the KeySym computed from the event if this argument is not NULL. status_in_out Specifies or returns the XComposeStatus structure or NULL. The function translates a key event to a KeySym and a string. The KeySym is obtained by using the standard interpretation of the Shift, Lock, group, and numlock modifiers as defined in the X Protocol specification. If the KeySym has been rebound (see ), the bound string will be stored in the buffer. Otherwise, the KeySym is mapped, if possible, to an ISO Latin-1 character or (if the Control modifier is on) to an ASCII control character, and that character is stored in the buffer. returns the number of characters that are stored in the buffer. If present (non-NULL), the XComposeStatus structure records the state, which is private to Xlib, that needs preservation across calls to to implement compose processing. The creation of XComposeStatus structures is implementation-dependent; a portable program must pass NULL for this argument. depends on the cached keyboard information mentioned in the previous section, so it is necessary to use to keep this information up-to-date. To rebind the meaning of a KeySym for , use . XRebindKeysym XRebindKeysym Display *display KeySym keysym KeySym list[ ] int mod_count unsignedchar *string int num_bytes display Specifies the connection to the X server. keysym Specifies the KeySym that is to be rebound. list Specifies the KeySyms to be used as modifiers. mod_count Specifies the number of modifiers in the modifier list. string Specifies the string that is copied and will be returned by . num_bytes Specifies the number of bytes in the string argument. The function can be used to rebind the meaning of a KeySym for the client. It does not redefine any key in the X server but merely provides an easy way for long strings to be attached to keys. returns this string when the appropriate set of modifier keys are pressed and when the KeySym would have been used for the translation. No text conversions are performed; the client is responsible for supplying appropriately encoded strings. Note that you can rebind a KeySym that may not exist. Allocating Permanent Storage To allocate some memory you will never give back, use . Xpermalloc char *Xpermalloc unsigned int size The function allocates storage that can never be freed for the life of the program. The memory is allocated with alignment for the C type double. This function may provide some performance and space savings over the standard operating system memory allocator. Parsing the Window Geometry To parse standard window geometry strings, use . Windowdetermining location XParseGeometry int XParseGeometry char *parsestring int *x_return int *y_return unsigned int *width_return unsigned int *height_return parsestring Specifies the string you want to parse. x_return y_return Return the x and y offsets. width_return height_return Return the width and height determined. By convention, X applications use a standard string to indicate window size and placement. makes it easier to conform to this standard because it allows you to parse the standard window geometry. Specifically, this function lets you parse strings of the form: [=][<width>{xX}<height>][{+-}<xoffset>{+-}<yoffset>] The fields map into the arguments associated with this function. (Items enclosed in < > are integers, items in [ ] are optional, and items enclosed in { } indicate ``choose one of.'' Note that the brackets should not appear in the actual string.) If the string is not in the Host Portable Character Encoding, the result is implementation-dependent. The function returns a bitmask that indicates which of the four values (width, height, xoffset, and yoffset) were actually found in the string and whether the x and y values are negative. By convention, −0 is not equal to +0, because the user needs to be able to say ``position the window relative to the right or bottom edge.'' For each value found, the corresponding argument is updated. For each value not found, the argument is left unchanged. The bits are represented by XValue, YValue, WidthValue, HeightValue, XNegative, or YNegative and are defined in <X11/Xutil.h>. X11/Xutil.h Files<X11/Xutil.h> Headers<X11/Xutil.h> They will be set whenever one of the values is defined or one of the signs is set. If the function returns either the XValue or YValue flag, you should place the window at the requested position. To construct a window's geometry information, use . XWMGeometry int XWMGeometry Display *display int screen char *user_geom char *def_geom unsigned int bwidth XSizeHints *hints int *x_return int *y_return int *width_return int *height_return int *gravity_return display Specifies the connection to the X server. screen Specifies the screen. user_geom Specifies the user-specified geometry or NULL. def_geom Specifies the application's default geometry or NULL. bwidth Specifies the border width. hints Specifies the size hints for the window in its normal state. x_return y_return Return the x and y offsets. width_return height_return Return the width and height determined. gravity_return Returns the window gravity. The function combines any geometry information (given in the format used by ) specified by the user and by the calling program with size hints (usually the ones to be stored in WM_NORMAL_HINTS) and returns the position, size, and gravity (NorthWestGravity, NorthEastGravity, SouthEastGravity, or SouthWestGravity) that describe the window. If the base size is not set in the XSizeHints structure, the minimum size is used if set. Otherwise, a base size of zero is assumed. If no minimum size is set in the hints structure, the base size is used. A mask (in the form returned by ) that describes which values came from the user specification and whether or not the position coordinates are relative to the right and bottom edges is returned. Note that these coordinates will have already been accounted for in the x_return and y_return values. Note that invalid geometry specifications can cause a width or height of zero to be returned. The caller may pass the address of the hints win_gravity field as gravity_return to update the hints directly. Manipulating Regions Regions are arbitrary sets of pixel locations. Xlib provides functions for manipulating regions. The opaque type Region is defined in <X11/Xutil.h>. X11/Xutil.h Files<X11/Xutil.h> Headers<X11/Xutil.h> Xlib provides functions that you can use to manipulate regions. This section discusses how to: Create, copy, or destroy regions Move or shrink regions Compute with regions Determine if regions are empty or equal Locate a point or rectangle in a region Creating, Copying, or Destroying Regions To create a new empty region, use XCreateRegion. Region XCreateRegion To generate a region from a polygon, use . XPolygonRegion Region XPolygonRegion XPoint points[] int n int fill_rule points Specifies an array of points. n Specifies the number of points in the polygon. fill_rule Specifies the fill-rule you want to set for the specified GC. You can pass EvenOddRule or WindingRule. The function returns a region for the polygon defined by the points array. For an explanation of fill_rule, see . To set the clip-mask of a GC to a region, use . XSetRegion XSetRegion Display *display GC gc Region r display Specifies the connection to the X server. gc Specifies the GC. r Specifies the region. The function sets the clip-mask in the GC to the specified region. The region is specified relative to the drawable's origin. The resulting GC clip origin is implementation-dependent. Once it is set in the GC, the region can be destroyed. To deallocate the storage associated with a specified region, use . XDestroyRegion XDestroyRegion Region r r Specifies the region. Moving or Shrinking Regions To move a region by a specified amount, use . XOffsetRegion XOffsetRegion Region r int dx int dy r Specifies the region. dx dy Specify the x and y coordinates, which define the amount you want to move the specified region. To reduce a region by a specified amount, use . XShrinkRegion XShrinkRegion Region r int dx int dy r Specifies the region. dx dy Specify the x and y coordinates, which define the amount you want to shrink the specified region. Positive values shrink the size of the region, and negative values expand the region. Computing with Regions To generate the smallest rectangle enclosing a region, use . XClipBox XClipBox Region r XRectangle *rect_return r Specifies the region. rect_return Returns the smallest enclosing rectangle. The function returns the smallest rectangle enclosing the specified region. To compute the intersection of two regions, use . XIntersectRegion XIntersectRegion Region sra Region srb Region dr_return sra srb Specify the two regions with which you want to perform the computation. dr_return Returns the result of the computation. To compute the union of two regions, use . XUnionRegion XUnionRegion Region sra Region srb Region dr_return sra srb Specify the two regions with which you want to perform the computation. dr_return Returns the result of the computation. To create a union of a source region and a rectangle, use . XUnionRectWithRegion XUnionRectWithRegion XRectangle *rectangle Region src_region Region dest_region_return rectangle Specifies the rectangle. src_region Specifies the source region to be used. dest_region_return Returns the destination region. The function updates the destination region from a union of the specified rectangle and the specified source region. To subtract two regions, use . XSubtractRegion XSubtractRegion Region sra Region srb Region dr_return sra srb Specify the two regions with which you want to perform the computation. dr_return Returns the result of the computation. The function subtracts srb from sra and stores the results in dr_return. To calculate the difference between the union and intersection of two regions, use . XXorRegion XXorRegion Region sra Region srb Region dr_return sra srb Specify the two regions with which you want to perform the computation. dr_return Returns the result of the computation. Determining if Regions Are Empty or Equal To determine if the specified region is empty, use . XEmptyRegion Bool XEmptyRegion Region r r Specifies the region. The function returns True if the region is empty. To determine if two regions have the same offset, size, and shape, use . XEqualRegion Bool XEqualRegion Region r1 Region r2 r1 r2 Specify the two regions. The function returns True if the two regions have the same offset, size, and shape. Locating a Point or a Rectangle in a Region To determine if a specified point resides in a specified region, use . XPointInRegion Bool XPointInRegion Region r int x int y r Specifies the region. x y Specify the x and y coordinates, which define the point. The function returns True if the point (x, y) is contained in the region r. To determine if a specified rectangle is inside a region, use . XRectInRegion int XRectInRegion Region r int x int y unsigned int width unsigned int height r Specifies the region. x y Specify the x and y coordinates, which define the coordinates of the upper-left corner of the rectangle. width height Specify the width and height, which define the rectangle. The function returns RectangleIn if the rectangle is entirely in the specified region, RectangleOut if the rectangle is entirely out of the specified region, and RectanglePart if the rectangle is partially in the specified region. Using Cut Buffers Cut Buffers Xlib provides functions to manipulate cut buffers, a very simple form of cut-and-paste inter-client communication. Selections are a much more powerful and useful mechanism for interchanging data between client (see section 4.5) and generally should be used instead of cut buffers. Cut buffers are implemented as properties on the first root window of the display. The buffers can only contain text, in the STRING encoding. The text encoding is not changed by Xlib when fetching or storing. Eight buffers are provided and can be accessed as a ring or as explicit buffers (numbered 0 through 7). To store data in cut buffer 0, use . XStoreBytes XStoreBytes Display *display char *bytes int nbytes display Specifies the connection to the X server. bytes Specifies the bytes, which are not necessarily ASCII or null-terminated. nbytes Specifies the number of bytes to be stored. The data can have embedded null characters and need not be null-terminated. The cut buffer's contents can be retrieved later by any client calling . can generate a BadAlloc error. To store data in a specified cut buffer, use . XStoreBuffer XStoreBuffer Display *display char *bytes int nbytes int buffer display Specifies the connection to the X server. bytes Specifies the bytes, which are not necessarily ASCII or null-terminated. nbytes Specifies the number of bytes to be stored. buffer Specifies the buffer in which you want to store the bytes. If an invalid buffer is specified, the call has no effect. The data can have embedded null characters and need not be null-terminated. can generate a BadAlloc error. To return data from cut buffer 0, use . XFetchBytes char *XFetchBytes Display *display int *nbytes_return display Specifies the connection to the X server. nbytes_return Returns the number of bytes in the buffer. The function returns the number of bytes in the nbytes_return argument, if the buffer contains data. Otherwise, the function returns NULL and sets nbytes to 0. The appropriate amount of storage is allocated and the pointer returned. The client must free this storage when finished with it by calling . To return data from a specified cut buffer, use . XFetchBuffer char *XFetchBuffer Display *display int *nbytes_return int buffer display Specifies the connection to the X server. nbytes_return Returns the number of bytes in the buffer. buffer Specifies the buffer from which you want the stored data returned. The function returns zero to the nbytes_return argument if there is no data in the buffer or if an invalid buffer is specified. To rotate the cut buffers, use . XRotateBuffers XRotateBuffers Display *display int rotate display Specifies the connection to the X server. rotate Specifies how much to rotate the cut buffers. The function rotates the cut buffers, such that buffer 0 becomes buffer n, buffer 1 becomes n + 1 mod 8, and so on. This cut buffer numbering is global to the display. Note that generates BadMatch errors if any of the eight buffers have not been created. Determining the Appropriate Visual Type A single display can support multiple screens. Each screen can have several different visual types supported at different depths. You can use the functions described in this section to determine which visual to use for your application. The functions in this section use the visual information masks and the XVisualInfo structure, which is defined in <X11/Xutil.h> X11/Xutil.h Files<X11/Xutil.h> Headers<X11/Xutil.h> and contains: /* Visual information mask bits */ #define VisualNoMask 0x0 #define VisualIDMask 0x1 #define VisualScreenMask 0x2 #define VisualDepthMask 0x4 #define VisualClassMask 0x8 #define VisualRedMaskMask 0x10 #define VisualGreenMaskMask 0x20 #define VisualBlueMaskMask 0x40 #define VisualColormapSizeMask 0x80 #define VisualBitsPerRGBMask 0x100 #define VisualAllMask 0x1FF /* Values */ typedef struct { Visual *visual; VisualID visualid; int screen; unsigned int depth; int class; unsigned long red_mask; unsigned long green_mask; unsigned long blue_mask; int colormap_size; int bits_per_rgb; } XVisualInfo; To obtain a list of visual information structures that match a specified template, use . XGetVisualInfo XVisualInfo *XGetVisualInfo Display *display long vinfo_mask XVisualInfo *vinfo_template int *nitems_return display Specifies the connection to the X server. vinfo_mask Specifies the visual mask value. vinfo_template Specifies the visual attributes that are to be used in matching the visual structures. nitems_return Returns the number of matching visual structures. The function returns a list of visual structures that have attributes equal to the attributes specified by vinfo_template. If no visual structures match the template using the specified vinfo_mask, returns a NULL. To free the data returned by this function, use . To obtain the visual information that matches the specified depth and class of the screen, use . XMatchVisualInfo Status XMatchVisualInfo Display *display int screen int depth int class XVisualInfo *vinfo_return display Specifies the connection to the X server. screen Specifies the screen. depth Specifies the depth of the screen. class Specifies the class of the screen. vinfo_return Returns the matched visual information. The function returns the visual information for a visual that matches the specified depth and class for a screen. Because multiple visuals that match the specified depth and class can exist, the exact visual chosen is undefined. If a visual is found, returns nonzero and the information on the visual to vinfo_return. Otherwise, when a visual is not found, returns zero. Manipulating Images Xlib provides several functions that perform basic operations on images. All operations on images are defined using an XImage structure, as defined in <X11/Xlib.h>. X11/Xlib.h Files<X11/Xlib.h> Headers<X11/Xlib.h> Because the number of different types of image formats can be very large, this hides details of image storage properly from applications. This section describes the functions for generic operations on images. Manufacturers can provide very fast implementations of these for the formats frequently encountered on their hardware. These functions are neither sufficient nor desirable to use for general image processing. Rather, they are here to provide minimal functions on screen format images. The basic operations for getting and putting images are and . Note that no functions have been defined, as yet, to read and write images to and from disk files. The XImage structure describes an image as it exists in the client's memory. The user can request that some of the members such as height, width, and xoffset be changed when the image is sent to the server. Note that bytes_per_line in concert with offset can be used to extract a subset of the image. Other members (for example, byte order, bitmap_unit, and so forth) are characteristics of both the image and the server. If these members differ between the image and the server, makes the appropriate conversions. The first byte of the first line of plane n must be located at the address (data + (n * height * bytes_per_line)). For a description of the XImage structure, see section 8.7. To allocate an XImage structure and initialize it with image format values from a display, use . XCreateImage XImage *XCreateImage Display *display Visual *visual unsigned int depth int format int offset char *data unsigned int width unsigned int height int bitmap_pad int bytes_per_line display Specifies the connection to the X server. visual Specifies the Visual structure. depth Specifies the depth of the image. format Specifies the format for the image. You can pass XYBitmap, XYPixmap, or ZPixmap. offset Specifies the number of pixels to ignore at the beginning of the scanline. data Specifies the image data. width Specifies the width of the image, in pixels. height Specifies the height of the image, in pixels. bitmap_pad Specifies the quantum of a scanline (8, 16, or 32). In other words, the start of one scanline is separated in client memory from the start of the next scanline by an integer multiple of this many bits. bytes_per_line Specifies the number of bytes in the client image between the start of one scanline and the start of the next. The function allocates the memory needed for an XImage structure for the specified display but does not allocate space for the image itself. Rather, it initializes the structure byte-order, bit-order, and bitmap-unit values from the display and returns a pointer to the XImage structure. The red, green, and blue mask values are defined for Z format images only and are derived from the Visual structure passed in. Other values also are passed in. The offset permits the rapid displaying of the image without requiring each scanline to be shifted into position. If you pass a zero value in bytes_per_line, Xlib assumes that the scanlines are contiguous in memory and calculates the value of bytes_per_line itself. Note that when the image is created using , , or , the destroy procedure that the function calls frees both the image structure and the data pointed to by the image structure. The basic functions used to get a pixel, set a pixel, create a subimage, and add a constant value to an image are defined in the image object. The functions in this section are really macro invocations of the functions in the image object and are defined in <X11/Xutil.h>. X11/Xutil.h Files<X11/Xutil.h> Headers<X11/Xutil.h> To obtain a pixel value in an image, use . XGetPixel unsigned long XGetPixel XImage *ximage int x int y ximage Specifies the image. x y Specify the x and y coordinates. The function returns the specified pixel from the named image. The pixel value is returned in normalized format (that is, the least significant byte of the long is the least significant byte of the pixel). The image must contain the x and y coordinates. To set a pixel value in an image, use . XPutPixel XPutPixel XImage *ximage int x int y unsigned long pixel ximage Specifies the image. x y Specify the x and y coordinates. pixel Specifies the new pixel value. The function overwrites the pixel in the named image with the specified pixel value. The input pixel value must be in normalized format (that is, the least significant byte of the long is the least significant byte of the pixel). The image must contain the x and y coordinates. To create a subimage, use . XSubImage XImage *XSubImage XImage *ximage int x int y unsigned int subimage_width unsigned int subimage_height ximage Specifies the image. x y Specify the x and y coordinates. subimage_width Specifies the width of the new subimage, in pixels. subimage_height Specifies the height of the new subimage, in pixels. The function creates a new image that is a subsection of an existing one. It allocates the memory necessary for the new XImage structure and returns a pointer to the new image. The data is copied from the source image, and the image must contain the rectangle defined by x, y, subimage_width, and subimage_height. To increment each pixel in an image by a constant value, use . XAddPixel XAddPixel XImage *ximage long value ximage Specifies the image. value Specifies the constant value that is to be added. The function adds a constant value to every pixel in an image. It is useful when you have a base pixel value from allocating color resources and need to manipulate the image to that form. To deallocate the memory allocated in a previous call to , use . XDestroyImage XDestroyImage XImage *ximage ximage Specifies the image. The function deallocates the memory associated with the XImage structure. Note that when the image is created using , , or , the destroy procedure that this macro calls frees both the image structure and the data pointed to by the image structure. Manipulating Bitmaps Xlib provides functions that you can use to read a bitmap from a file, save a bitmap to a file, or create a bitmap. This section describes those functions that transfer bitmaps to and from the client's file system, thus allowing their reuse in a later connection (for example, from an entirely different client or to a different display or server). The X version 11 bitmap file format is: #define name_width width #define name_height height #define name_x_hot x #define name_y_hot y static unsigned char name_bits[] = { 0xNN,... } The lines for the variables ending with _x_hot and _y_hot suffixes are optional because they are present only if a hotspot has been defined for this bitmap. The lines for the other variables are required. The word ``unsigned'' is optional; that is, the type of the _bits array can be ``char'' or ``unsigned char''. The _bits array must be large enough to contain the size bitmap. The bitmap unit is 8. To read a bitmap from a file and store it in a pixmap, use . XReadBitmapFile int XReadBitmapFile Display *display Drawable d char *filename unsigned int *width_return unsigned int *height_return Pixmap *bitmap_return int *x_hot_return int *y_hot_return display Specifies the connection to the X server. d Specifies the drawable that indicates the screen. filename Specifies the file name to use. The format of the file name is operating-system dependent. width_return height_return Return the width and height values of the read in bitmap file. bitmap_return Returns the bitmap that is created. x_hot_return y_hot_return Return the hotspot coordinates. The function reads in a file containing a bitmap. The file is parsed in the encoding of the current locale. The ability to read other than the standard format is implementation-dependent. If the file cannot be opened, returns BitmapOpenFailed. If the file can be opened but does not contain valid bitmap data, it returns BitmapFileInvalid. If insufficient working storage is allocated, it returns BitmapNoMemory. If the file is readable and valid, it returns BitmapSuccess. returns the bitmap's height and width, as read from the file, to width_return and height_return. It then creates a pixmap of the appropriate size, reads the bitmap data from the file into the pixmap, and assigns the pixmap to the caller's variable bitmap. The caller must free the bitmap using when finished. If name_x_hot and name_y_hot exist, returns them to x_hot_return and y_hot_return; otherwise, it returns −1,−1. can generate BadAlloc, BadDrawable, and BadGC errors. To read a bitmap from a file and return it as data, use . XReadBitmapFileData int XReadBitmapFileData char *filename unsigned int *width_return unsigned int *height_return unsignedchar *data_return int *x_hot_return int *y_hot_return filename Specifies the file name to use. The format of the file name is operating-system dependent. width_return height_return Return the width and height values of the read in bitmap file. data_return Returns the bitmap data. x_hot_return y_hot_return Return the hotspot coordinates. The function reads in a file containing a bitmap, in the same manner as , but returns the data directly rather than creating a pixmap in the server. The bitmap data is returned in data_return; the client must free this storage when finished with it by calling . The status and other return values are the same as for . To write out a bitmap from a pixmap to a file, use . XWriteBitmapFile int XWriteBitmapFile Display *display char *filename Pixmap bitmap unsigned int width unsigned int height int x_hot int y_hot display Specifies the connection to the X server. filename Specifies the file name to use. The format of the file name is operating-system dependent. bitmap Specifies the bitmap. width height Specify the width and height. x_hot y_hot Specify where to place the hotspot coordinates (or −1,−1 if none are present) in the file. The function writes a bitmap out to a file in the X Version 11 format. The name used in the output file is derived from the file name by deleting the directory prefix. The file is written in the encoding of the current locale. If the file cannot be opened for writing, it returns BitmapOpenFailed. If insufficient memory is allocated, returns BitmapNoMemory; otherwise, on no error, it returns BitmapSuccess. If x_hot and y_hot are not −1, −1, writes them out as the hotspot coordinates for the bitmap. can generate BadDrawable and BadMatch errors. To create a pixmap and then store bitmap-format data into it, use . XCreatePixmapFromBitmapData Pixmap XCreatePixmapFromBitmapData Display *display Drawable d char *data unsigned int width unsigned int height unsigned long fg unsigned long bg unsigned int depth display Specifies the connection to the X server. d Specifies the drawable that indicates the screen. data Specifies the data in bitmap format. width height Specify the width and height. fg bg Specify the foreground and background pixel values to use. depth Specifies the depth of the pixmap. The function creates a pixmap of the given depth and then does a bitmap-format of the data into it. The depth must be supported by the screen of the specified drawable, or a BadMatch error results. can generate BadAlloc, BadDrawable, BadGC, and BadValue errors. To include a bitmap written out by XWriteBitmapFile in a program directly, as opposed to reading it in every time at run time, use . XCreateBitmapFromData Pixmap XCreateBitmapFromData Display *display Drawable d char *data unsigned int width unsigned int height display Specifies the connection to the X server. d Specifies the drawable that indicates the screen. data Specifies the location of the bitmap data. width height Specify the width and height. The function allows you to include in your C program (using #include) a bitmap file that was written out by (X version 11 format only) without reading in the bitmap file. The following example creates a gray bitmap: #include "gray.bitmap" Pixmap bitmap; bitmap = XCreateBitmapFromData(display, window, gray_bits, gray_width, gray_height); If insufficient working storage was allocated, returns None. It is your responsibility to free the bitmap using when finished. can generate BadAlloc and BadGC errors. Using the Context Manager The context manager provides a way of associating data with an X resource ID (mostly typically a window) in your program. Note that this is local to your program; the data is not stored in the server on a property list. Any amount of data in any number of pieces can be associated with a resource ID, and each piece of data has a type associated with it. The context manager requires knowledge of the resource ID and type to store or retrieve data. Essentially, the context manager can be viewed as a two-dimensional, sparse array: one dimension is subscripted by the X resource ID and the other by a context type field. Each entry in the array contains a pointer to the data. Xlib provides context management functions with which you can save data values, get data values, delete entries, and create a unique context type. The symbols used are in <X11/Xutil.h>. X11/Xutil.h Files<X11/Xutil.h> Headers<X11/Xutil.h> To save a data value that corresponds to a resource ID and context type, use . XSaveContext int XSaveContext Display *display XID rid XContext context XPointer data display Specifies the connection to the X server. rid Specifies the resource ID with which the data is associated. context Specifies the context type to which the data belongs. data Specifies the data to be associated with the window and type. If an entry with the specified resource ID and type already exists, overrides it with the specified context. The function returns a nonzero error code if an error has occurred and zero otherwise. Possible errors are XCNOMEM (out of memory). To get the data associated with a resource ID and type, use . XFindContext int XFindContext Display *display XID rid XContext context XPointer *data_return display Specifies the connection to the X server. rid Specifies the resource ID with which the data is associated. context Specifies the context type to which the data belongs. data_return Returns the data. Because it is a return value, the data is a pointer. The function returns a nonzero error code if an error has occurred and zero otherwise. Possible errors are XCNOENT (context-not-found). To delete an entry for a given resource ID and type, use . XDeleteContext int XDeleteContext Display *display XID rid XContext context display Specifies the connection to the X server. rid Specifies the resource ID with which the data is associated. context Specifies the context type to which the data belongs. The function deletes the entry for the given resource ID and type from the data structure. This function returns the same error codes that returns if called with the same arguments. does not free the data whose address was saved. To create a unique context type that may be used in subsequent calls to and , use XUniqueContext. XContext XUniqueContext libX11-1.8.12/specs/libX11/CH11.xml0000644014310600000120000022101614763154126011662 Event Handling Functions This chapter discusses the Xlib functions you can use to: Select events Handle the output buffer and the event queue Select events from the event queue Send and get events Handle protocol errors Some toolkits use their own event-handling functions and do not allow you to interchange these event-handling functions with those in Xlib. For further information, see the documentation supplied with the toolkit. Most applications simply are event loops: they wait for an event, decide what to do with it, execute some amount of code that results in changes to the display, and then wait for the next event. Selecting Events There are two ways to select the events you want reported to your client application. One way is to set the event_mask member of the XSetWindowAttributes structure when you call and . Another way is to use . XSelectInput XSelectInput Display *display Window w long event_mask display Specifies the connection to the X server. w Specifies the window whose events you are interested in. event_mask Specifies the event mask. The function requests that the X server report the events associated with the specified event mask. Initially, X will not report any of these events. Events are reported relative to a window. If a window is not interested in a device event, it usually propagates to the closest ancestor that is interested, unless the do_not_propagate mask prohibits it. Eventpropagation Setting the event-mask attribute of a window overrides any previous call for the same window but not for other clients. Multiple clients can select for the same events on the same window with the following restrictions: Multiple clients can select events on the same window because their event masks are disjoint. When the X server generates an event, it reports it to all interested clients. Only one client at a time can select CirculateRequest, ConfigureRequest, or MapRequest events, which are associated with the event mask SubstructureRedirectMask. Only one client at a time can select a ResizeRequest event, which is associated with the event mask ResizeRedirectMask. Only one client at a time can select a ButtonPress event, which is associated with the event mask ButtonPressMask. The server reports the event to all interested clients. can generate a BadWindow error. Handling the Output Buffer The output buffer is an area used by Xlib to store requests. The functions described in this section flush the output buffer if the function would block or not return an event. That is, all requests residing in the output buffer that have not yet been sent are transmitted to the X server. These functions differ in the additional tasks they might perform. To flush the output buffer, use . XFlush XFlush Display *display display Specifies the connection to the X server. The function flushes the output buffer. Most client applications need not use this function because the output buffer is automatically flushed as needed by calls to , , and . XPending XNextEvent XWindowEvent Events generated by the server may be enqueued into the library's event queue. To flush the output buffer and then wait until all requests have been processed, use . XSync XSync Display *display Bool discard display Specifies the connection to the X server. discard Specifies a Boolean value that indicates whether discards all events on the event queue. The function flushes the output buffer and then waits until all requests have been received and processed by the X server. Any errors generated must be handled by the error handler. For each protocol error received by Xlib, calls the client application's error handling routine (see section 11.8.2). Any events generated by the server are enqueued into the library's event queue. Finally, if you passed False, does not discard the events in the queue. If you passed True, discards all events in the queue, including those events that were on the queue before was called. Client applications seldom need to call . Event Queue Management Xlib maintains an event queue. However, the operating system also may be buffering data in its network connection that is not yet read into the event queue. To check the number of events in the event queue, use . XEventsQueued int XEventsQueued Display *display int mode display Specifies the connection to the X server. mode Specifies the mode. You can pass QueuedAlready, QueuedAfterFlush, or QueuedAfterReading. If mode is QueuedAlready, returns the number of events already in the event queue (and never performs a system call). If mode is QueuedAfterFlush, returns the number of events already in the queue if the number is nonzero. If there are no events in the queue, flushes the output buffer, attempts to read more events out of the application's connection, and returns the number read. If mode is QueuedAfterReading, returns the number of events already in the queue if the number is nonzero. If there are no events in the queue, attempts to read more events out of the application's connection without flushing the output buffer and returns the number read. always returns immediately without I/O if there are events already in the queue. with mode QueuedAfterFlush is identical in behavior to . with mode QueuedAlready is identical to the function. To return the number of events that are pending, use . XPending int XPending Display *display display Specifies the connection to the X server. The function returns the number of events that have been received from the X server but have not been removed from the event queue. is identical to with the mode QueuedAfterFlush specified. Manipulating the Event Queue Xlib provides functions that let you manipulate the event queue. This section discusses how to: Obtain events, in order, and remove them from the queue Peek at events in the queue without removing them Obtain events that match the event mask or the arbitrary predicate procedures that you provide Returning the Next Event To get the next event and remove it from the queue, use . XNextEvent XNextEvent Display *display XEvent *event_return display Specifies the connection to the X server. event_return Returns the next event in the queue. The function copies the first event from the event queue into the specified XEvent structure and then removes it from the queue. If the event queue is empty, flushes the output buffer and blocks until an event is received. To peek at the event queue, use . XPeekEvent XPeekEvent Display *display XEvent *event_return display Specifies the connection to the X server. event_return Returns a copy of the matched event's associated structure. The function returns the first event from the event queue, but it does not remove the event from the queue. If the queue is empty, flushes the output buffer and blocks until an event is received. It then copies the event into the client-supplied XEvent structure without removing it from the event queue. Selecting Events Using a Predicate Procedure Each of the functions discussed in this section requires you to pass a predicate procedure that determines if an event matches what you want. Your predicate procedure must decide if the event is useful without calling any Xlib functions. If the predicate directly or indirectly causes the state of the event queue to change, the result is not defined. If Xlib has been initialized for threads, the predicate is called with the display locked and the result of a call by the predicate to any Xlib function that locks the display is not defined unless the caller has first called XLockDisplay. The predicate procedure and its associated arguments are: Bool Display *display XEvent *event XPointer arg display Specifies the connection to the X server. event Specifies the XEvent structure. arg Specifies the argument passed in from the , , or function. The predicate procedure is called once for each event in the queue until it finds a match. After finding a match, the predicate procedure must return True. If it did not find a match, it must return False. To check the event queue for a matching event and, if found, remove the event from the queue, use . XIfEvent XIfEvent Display *display XEvent *event_return Bool (*predicate)() XPointer arg display Specifies the connection to the X server. event_return Returns the matched event's associated structure. predicate Specifies the procedure that is to be called to determine if the next event in the queue matches what you want. arg Specifies the user-supplied argument that will be passed to the predicate procedure. The function completes only when the specified predicate procedure returns True for an event, which indicates an event in the queue matches. flushes the output buffer if it blocks waiting for additional events. removes the matching event from the queue and copies the structure into the client-supplied XEvent structure. To check the event queue for a matching event without blocking, use . XCheckIfEvent Bool XCheckIfEvent Display *display XEvent *event_return Bool (*predicate)() XPointer arg display Specifies the connection to the X server. event_return Returns a copy of the matched event's associated structure. predicate Specifies the procedure that is to be called to determine if the next event in the queue matches what you want. arg Specifies the user-supplied argument that will be passed to the predicate procedure. When the predicate procedure finds a match, copies the matched event into the client-supplied XEvent structure and returns True. (This event is removed from the queue.) If the predicate procedure finds no match, returns False, and the output buffer will have been flushed. All earlier events stored in the queue are not discarded. To check the event queue for a matching event without removing the event from the queue, use . XPeekIfEvent XPeekIfEvent Display *display XEvent *event_return Bool (*predicate)() XPointer arg display Specifies the connection to the X server. event_return Returns a copy of the matched event's associated structure. predicate Specifies the procedure that is to be called to determine if the next event in the queue matches what you want. arg Specifies the user-supplied argument that will be passed to the predicate procedure. The function returns only when the specified predicate procedure returns True for an event. After the predicate procedure finds a match, copies the matched event into the client-supplied XEvent structure without removing the event from the queue. flushes the output buffer if it blocks waiting for additional events. Selecting Events Using a Window or Event Mask The functions discussed in this section let you select events by window or event types, allowing you to process events out of order. To remove the next event that matches both a window and an event mask, use . XWindowEvent XWindowEvent Display *display Window w long event_mask XEvent *event_return display Specifies the connection to the X server. w Specifies the window whose events you are interested in. event_mask Specifies the event mask. event_return Returns the matched event's associated structure. The function searches the event queue for an event that matches both the specified window and event mask. When it finds a match, removes that event from the queue and copies it into the specified XEvent structure. The other events stored in the queue are not discarded. If a matching event is not in the queue, flushes the output buffer and blocks until one is received. To remove the next event that matches both a window and an event mask (if any), use . XCheckWindowEvent This function is similar to except that it never blocks and it returns a Bool indicating if the event was returned. XCheckWindowEvent Bool XCheckWindowEvent Display *display Window w long event_mask XEvent *event_return display Specifies the connection to the X server. w Specifies the window whose events you are interested in. event_mask Specifies the event mask. event_return Returns the matched event's associated structure. The function searches the event queue and then the events available on the server connection for the first event that matches the specified window and event mask. If it finds a match, removes that event, copies it into the specified XEvent structure, and returns True. The other events stored in the queue are not discarded. If the event you requested is not available, returns False, and the output buffer will have been flushed. To remove the next event that matches an event mask, use . XMaskEvent XMaskEvent Display *display long event_mask XEvent *event_return display Specifies the connection to the X server. event_mask Specifies the event mask. event_return Returns the matched event's associated structure. The function searches the event queue for the events associated with the specified mask. When it finds a match, removes that event and copies it into the specified XEvent structure. The other events stored in the queue are not discarded. If the event you requested is not in the queue, flushes the output buffer and blocks until one is received. To return and remove the next event that matches an event mask (if any), use . This function is similar to except that it never blocks and it returns a Bool indicating if the event was returned. XCheckMaskEvent Bool XCheckMaskEvent Display *display long event_mask XEvent *event_return display Specifies the connection to the X server. event_mask Specifies the event mask. event_return Returns the matched event's associated structure. The function searches the event queue and then any events available on the server connection for the first event that matches the specified mask. If it finds a match, removes that event, copies it into the specified XEvent structure, and returns True. The other events stored in the queue are not discarded. If the event you requested is not available, returns False, and the output buffer will have been flushed. To return and remove the next event in the queue that matches an event type, use . XCheckTypedEvent Bool XCheckTypedEvent Display *display int event_type XEvent *event_return display Specifies the connection to the X server. event_type Specifies the event type to be compared. event_return Returns the matched event's associated structure. The function searches the event queue and then any events available on the server connection for the first event that matches the specified type. If it finds a match, removes that event, copies it into the specified XEvent structure, and returns True. The other events in the queue are not discarded. If the event is not available, returns False, and the output buffer will have been flushed. To return and remove the next event in the queue that matches an event type and a window, use . XCheckTypedWindowEvent Bool XCheckTypedWindowEvent Display *display Window w int event_type XEvent *event_return display Specifies the connection to the X server. w Specifies the window. event_type Specifies the event type to be compared. event_return Returns the matched event's associated structure. The function searches the event queue and then any events available on the server connection for the first event that matches the specified type and window. If it finds a match, removes the event from the queue, copies it into the specified XEvent structure, and returns True. The other events in the queue are not discarded. If the event is not available, returns False, and the output buffer will have been flushed. Putting an Event Back into the Queue To push an event back into the event queue, use . XPutBackEvent XPutBackEvent Display *display XEvent *event display Specifies the connection to the X server. event Specifies the event. The function pushes an event back onto the head of the display's event queue by copying the event into the queue. This can be useful if you read an event and then decide that you would rather deal with it later. There is no limit to the number of times in succession that you can call . Sending Events to Other Applications To send an event to a specified window, use . XSendEvent This function is often used in selection processing. For example, the owner of a selection should use to send a SelectionNotify event to a requestor when a selection has been converted and stored as a property. XSendEvent Status XSendEvent Display *display Window w Bool propagate long event_mask XEvent *event_send display Specifies the connection to the X server. w Specifies the window the event is to be sent to, or PointerWindow, or InputFocus. propagate Specifies a Boolean value. event_mask Specifies the event mask. event_send Specifies the event that is to be sent. The function identifies the destination window, determines which clients should receive the specified events, and ignores any active grabs. This function requires you to pass an event mask. For a discussion of the valid event mask names, see section 10.3. This function uses the w argument to identify the destination window as follows: If w is PointerWindow, the destination window is the window that contains the pointer. If w is InputFocus and if the focus window contains the pointer, the destination window is the window that contains the pointer; otherwise, the destination window is the focus window. To determine which clients should receive the specified events, uses the propagate argument as follows: If event_mask is the empty set, the event is sent to the client that created the destination window. If that client no longer exists, no event is sent. If propagate is False, the event is sent to every client selecting on destination any of the event types in the event_mask argument. If propagate is True and no clients have selected on destination any of the event types in event-mask, the destination is replaced with the closest ancestor of destination for which some client has selected a type in event-mask and for which no intervening window has that type in its do-not-propagate-mask. If no such window exists or if the window is an ancestor of the focus window and InputFocus was originally specified as the destination, the event is not sent to any clients. Otherwise, the event is reported to every client selecting on the final destination any of the types specified in event_mask. The event in the XEvent structure must be one of the core events or one of the events defined by an extension (or a BadValue error results) so that the X server can correctly byte-swap the contents as necessary. The contents of the event are otherwise unaltered and unchecked by the X server except to force send_event to True in the forwarded event and to set the serial number in the event correctly; therefore these fields and the display field are ignored by . returns zero if the conversion to wire protocol format failed and returns nonzero otherwise. can generate BadValue and BadWindow errors. Getting Pointer Motion History Some X server implementations will maintain a more complete history of pointer motion than is reported by event notification. The pointer position at each pointer hardware interrupt may be stored in a buffer for later retrieval. This buffer is called the motion history buffer. For example, a few applications, such as paint programs, want to have a precise history of where the pointer traveled. However, this historical information is highly excessive for most applications. To determine the approximate maximum number of elements in the motion buffer, use XDisplayMotionBufferSize. XDisplayMotionBufferSize unsigned long Display *display display Specifies the connection to the X server. The server may retain the recent history of the pointer motion and do so to a finer granularity than is reported by MotionNotify events. The function makes this history available. To get the motion history for a specified window and time, use . XGetMotionEvents XTimeCoord *XGetMotionEvents Display *display Window w Time start Time stop int *nevents_return display Specifies the connection to the X server. w Specifies the window. start stop Specify the time interval in which the events are returned from the motion history buffer. You can pass a timestamp or CurrentTime. nevents_return Returns the number of events from the motion history buffer. The function returns all events in the motion history buffer that fall between the specified start and stop times, inclusive, and that have coordinates that lie within the specified window (including its borders) at its present placement. If the server does not support motion history, if the start time is later than the stop time, or if the start time is in the future, no events are returned; returns NULL. If the stop time is in the future, it is equivalent to specifying CurrentTime. The return type for this function is a structure defined as follows: XTimeCoord typedef struct { Time time; short x, y; } XTimeCoord; The time member is set to the time, in milliseconds. The x and y members are set to the coordinates of the pointer and are reported relative to the origin of the specified window. To free the data returned from this call, use . can generate a BadWindow error. Handling Protocol Errors Xlib provides functions that you can use to enable or disable synchronization and to use the default error handlers. Enabling or Disabling Synchronization When debugging X applications, it often is very convenient to require Xlib to behave synchronously so that errors are reported as they occur. The following function lets you disable or enable synchronous behavior. Note that graphics may occur 30 or more times more slowly when synchronization is enabled. _Xdebug On POSIX-conformant systems, there is also a global variable _Xdebug that, if set to nonzero before starting a program under a debugger, will force synchronous library behavior. After completing their work, all Xlib functions that generate protocol requests call what is known as an after function. sets which function is to be called. XSetAfterFunction int Display *display int (*procedure)() display Specifies the connection to the X server. procedure Specifies the procedure to be called. The specified procedure is called with only a display pointer. returns the previous after function. To enable or disable synchronization, use XSynchronize. Debuggingsynchronous mode XSynchronize int Display *display Bool onoff display Specifies the connection to the X server. onoff Specifies a Boolean value that indicates whether to enable or disable synchronization. The XSynchronize function returns the previous after function. If onoff is True, XSynchronize turns on synchronous behavior. If onoff is False, XSynchronize turns off synchronous behavior. Using the Default Error Handlers Debuggingerror handlers Errorhandlers There are two default error handlers in Xlib: one to handle typically fatal conditions (for example, the connection to a display server dying because a machine crashed) and one to handle protocol errors from the X server. These error handlers can be changed to user-supplied routines if you prefer your own error handling and can be changed as often as you like. If either function is passed a NULL pointer, it will reinvoke the default handler. The action of the default handlers is to print an explanatory message and exit. To set the error handler, use . XSetErrorHandler int *XSetErrorHandler int *handler handler Specifies the program's supplied error handler. Xlib generally calls the program's supplied error handler whenever an error is received. It is not called on BadName errors from OpenFont, LookupColor, or AllocNamedColor protocol requests or on BadFont errors from a QueryFont protocol request. These errors generally are reflected back to the program through the procedural interface. Because this condition is not assumed to be fatal, it is acceptable for your error handler to return; the returned value is ignored. However, the error handler should not call any functions (directly or indirectly) on the display that will generate protocol requests or that will look for input events. The previous error handler is returned. The XErrorEvent structure contains: Debuggingerror event XErrorEvent typedef struct { int type; Display *display; /* Display the event was read from */ unsigned long serial; /* serial number of failed request */ unsigned char error_code; /* error code of failed request */ unsigned char request_code; /* Major op-code of failed request */ unsigned char minor_code; /* Minor op-code of failed request */ XID resourceid; /* resource id */ } XErrorEvent; Serial Number The serial member is the number of requests, starting from one, sent over the network connection since it was opened. It is the number that was the value of NextRequest immediately before the failing call was made. The request_code member is a protocol request of the procedure that failed, as defined in <X11/Xproto.h>. The following error codes can be returned by the functions described in this chapter: Debuggingerror numbers Errorcodes BadAccess BadAlloc BadAtom BadColor BadCursor BadDrawable BadFont BadGC BadIDChoice Error Code Description BadAccess A client attempts to grab a key/button combination already grabbed by another client. A client attempts to free a colormap entry that it had not already allocated or to free an entry in a colormap that was created with all entries writable. A client attempts to store into a read-only or unallocated colormap entry. A client attempts to modify the access control list from other than the local (or otherwise authorized) host. A client attempts to select an event type that another client has already selected. BadAlloc The server fails to allocate the requested resource. Note that the explicit listing of BadAlloc errors in requests only covers allocation errors at a very coarse level and is not intended to (nor can it in practice hope to) cover all cases of a server running out of allocation space in the middle of service. The semantics when a server runs out of allocation space are left unspecified, but a server may generate a BadAlloc error on any request for this reason, and clients should be prepared to receive such errors and handle or discard them. BadAtom A value for an atom argument does not name a defined atom. BadColor A value for a colormap argument does not name a defined colormap. BadCursor A value for a cursor argument does not name a defined cursor. BadDrawable A value for a drawable argument does not name a defined window or pixmap. BadFont A value for a font argument does not name a defined font (or, in some cases, GContext). BadGC A value for a GContext argument does not name a defined GContext. BadIDChoice The value chosen for a resource identifier either is not included in the range assigned to the client or is already in use. Under normal circumstances, this cannot occur and should be considered a server or Xlib error. BadImplementation The server does not implement some aspect of the request. A server that generates this error for a core request is deficient. As such, this error is not listed for any of the requests, but clients should be prepared to receive such errors and handle or discard them. BadLength The length of a request is shorter or longer than that required to contain the arguments. This is an internal Xlib or server error. The length of a request exceeds the maximum length accepted by the server. BadMatch In a graphics request, the root and depth of the graphics context do not match those of the drawable. An InputOnly window is used as a drawable. Some argument or pair of arguments has the correct type and range, but it fails to match in some other way required by the request. An InputOnly window lacks this attribute. BadName A font or color of the specified name does not exist. BadPixmap A value for a pixmap argument does not name a defined pixmap. BadRequest The major or minor opcode does not specify a valid request. This usually is an Xlib or server error. BadValue Some numeric value falls outside of the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives typically can generate this error (due to the encoding). BadWindow A value for a window argument does not name a defined window. BadImplementation BadLength BadMatch BadName BadPixmap BadRequest BadValue BadWindow The BadAtom, BadColor, BadCursor, BadDrawable, BadFont, BadGC, BadPixmap, and BadWindow errors are also used when the argument type is extended by a set of fixed alternatives. To obtain textual descriptions of the specified error code, use . XGetErrorText Debuggingerror message strings XGetErrorText Display *display int code char *buffer_return int length display Specifies the connection to the X server. code Specifies the error code for which you want to obtain a description. buffer_return Returns the error description. length Specifies the size of the buffer. The function copies a null-terminated string describing the specified error code into the specified buffer. The returned text is in the encoding of the current locale. It is recommended that you use this function to obtain an error description because extensions to Xlib may define their own error codes and error strings. To obtain error messages from the error database, use . XGetErrorDatabaseText XGetErrorDatabaseText Display *display char *name char *message char *default_string char *buffer_return int length display Specifies the connection to the X server. name Specifies the name of the application. message Specifies the type of the error message. default_string Specifies the default error message if none is found in the database. buffer_return Returns the error description. length Specifies the size of the buffer. The function returns a null-terminated message (or the default message) from the error message database. Xlib uses this function internally to look up its error messages. The text in the default_string argument is assumed to be in the encoding of the current locale, and the text stored in the buffer_return argument is in the encoding of the current locale. The name argument should generally be the name of your application. The message argument should indicate which type of error message you want. If the name and message are not in the Host Portable Character Encoding, the result is implementation-dependent. Xlib uses three predefined ``application names'' to report errors. In these names, uppercase and lowercase matter. XProtoError The protocol error number is used as a string for the message argument. XlibMessage These are the message strings that are used internally by the library. XRequest For a core protocol request, the major request protocol number is used for the message argument. For an extension request, the extension name (as given by InitExtension) followed by a period (.) and the minor request protocol number is used for the message argument. If no string is found in the error database, the default_string is returned to the buffer argument. To report an error to the user when the requested display does not exist, use . XDisplayName char *XDisplayName char *string string Specifies the character string. The function returns the name of the display that would attempt to use. If a NULL string is specified, looks in the environment for the display and returns the display name that would attempt to use. This makes it easier to report to the user precisely which display the program attempted to open when the initial connection attempt failed. To handle fatal I/O errors, use XSetIOErrorHandler. XSetIOErrorHandler int int(*handler)(Display *) handler Specifies the program's supplied error handler. The XSetIOErrorHandler sets the fatal I/O error handler. Xlib calls the program's supplied error handler if any sort of system call error occurs (for example, the connection to the server was lost). This is assumed to be a fatal condition, and the called routine should not return. If the I/O error handler does return, the client process exits. Note that the previous error handler is returned. libX11-1.8.12/specs/libX11/CH08.xml0000644014310600000120000047517314763154126011707 Graphics Functions Once you have established a connection to a display, you can use the Xlib graphics functions to: Clear and copy areas Draw points, lines, rectangles, and arcs Fill areas Manipulate fonts Draw text Transfer images between clients and the server If the same drawable and GC is used for each call, Xlib batches back-to-back calls to XDrawPoint, XDrawLine, XDrawRectangle, XFillArc, and XFillRectangle. Note that this reduces the total number of requests sent to the server. Clearing Areas Xlib provides functions that you can use to clear an area or the entire window. Because pixmaps do not have defined backgrounds, they cannot be filled by using the functions described in this section. Instead, to accomplish an analogous operation on a pixmap, you should use , which sets the pixmap to a known value. To clear a rectangular area of a given window, use . Areasclearing Clearingareas XClearArea XClearArea Display *display Window w int x int y unsigned int width unsigned int height Bool exposures display Specifies the connection to the X server. w Specifies the window. x y Specify the x and y coordinates, which are relative to the origin of the window and specify the upper-left corner of the rectangle. width height Specify the width and height, which are the dimensions of the rectangle. exposures Specifies a Boolean value that indicates if Expose events are to be generated. The function paints a rectangular area in the specified window according to the specified dimensions with the window's background pixel or pixmap. The subwindow-mode effectively is ClipByChildren. If width is zero, it is replaced with the current width of the window minus x. If height is zero, it is replaced with the current height of the window minus y. If the window has a defined background tile, the rectangle clipped by any children is filled with this tile. If the window has background None, the contents of the window are not changed. In either case, if exposures is True, one or more Expose events are generated for regions of the rectangle that are either visible or are being retained in a backing store. If you specify a window whose class is InputOnly, a BadMatch error results. can generate BadMatch, BadValue, and BadWindow errors. To clear the entire area in a given window, use . Windowclearing Clearingwindows XClearWindow XClearWindow Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function clears the entire area in the specified window and is equivalent to (display, w, 0, 0, 0, 0, False). If the window has a defined background tile, the rectangle is tiled with a plane-mask of all ones and GXcopy function. If the window has background None, the contents of the window are not changed. If you specify a window whose class is InputOnly, a BadMatch error results. can generate BadMatch and BadWindow errors. Copying Areas Xlib provides functions that you can use to copy an area or a bit plane. To copy an area between drawables of the same root and depth, use . Areascopying Copyingareas XCopyArea XCopyArea Display *display Drawable src Drawable dest GC gc int src_x int src_y unsigned int width unsigned int height int dest_x int dest_y display Specifies the connection to the X server. src dest Specify the source and destination rectangles to be combined. gc Specifies the GC. src_x src_y Specify the x and y coordinates, which are relative to the origin of the source rectangle and specify its upper-left corner. width height Specify the width and height, which are the dimensions of both the source and destination rectangles. dest_x dest_y Specify the x and y coordinates, which are relative to the origin of the destination rectangle and specify its upper-left corner. The function combines the specified rectangle of src with the specified rectangle of dest. The drawables must have the same root and depth, or a BadMatch error results. If regions of the source rectangle are obscured and have not been retained in backing store or if regions outside the boundaries of the source drawable are specified, those regions are not copied. Instead, the following occurs on all corresponding destination regions that are either visible or are retained in backing store. If the destination is a window with a background other than None, corresponding regions of the destination are tiled with that background (with plane-mask of all ones and GXcopy function). Regardless of tiling or whether the destination is a window or a pixmap, if graphics-exposures is True, then GraphicsExpose events for all corresponding destination regions are generated. If graphics-exposures is True but no GraphicsExpose events are generated, a NoExpose event is generated. Note that by default graphics-exposures is True in new GCs. This function uses these GC components: function, plane-mask, subwindow-mode, graphics-exposures, clip-x-origin, clip-y-origin, and clip-mask. can generate BadDrawable, BadGC, and BadMatch errors. To copy a single bit plane of a given drawable, use . Planecopying Copyingplanes XCopyPlane XCopyPlane Display *display Drawable src Drawable dest GC gc int src_x int src_y unsigned int width unsigned int height int dest_x int dest_y unsigned long plane display Specifies the connection to the X server. src dest Specify the source and destination rectangles to be combined. gc Specifies the GC. src_x src_y Specify the x and y coordinates, which are relative to the origin of the source rectangle and specify its upper-left corner. width height Specify the width and height, which are the dimensions of both the source and destination rectangles. dest_x dest_y Specify the x and y coordinates, which are relative to the origin of the destination rectangle and specify its upper-left corner. plane Specifies the bit plane. You must set exactly one bit to 1. The function uses a single bit plane of the specified source rectangle combined with the specified GC to modify the specified rectangle of dest. The drawables must have the same root but need not have the same depth. If the drawables do not have the same root, a BadMatch error results. If plane does not have exactly one bit set to 1 and the value of plane is not less than %2 sup n%, where n is the depth of src, a BadValue error results. Effectively, forms a pixmap of the same depth as the rectangle of dest and with a size specified by the source region. It uses the foreground/background pixels in the GC (foreground everywhere the bit plane in src contains a bit set to 1, background everywhere the bit plane in src contains a bit set to 0) and the equivalent of a CopyArea protocol request is performed with all the same exposure semantics. This can also be thought of as using the specified region of the source bit plane as a stipple with a fill-style of FillOpaqueStippled for filling a rectangular area of the destination. This function uses these GC components: function, plane-mask, foreground, background, subwindow-mode, graphics-exposures, clip-x-origin, clip-y-origin, and clip-mask. can generate BadDrawable, BadGC, BadMatch, and BadValue errors. Drawing Points, Lines, Rectangles, and Arcs Xlib provides functions that you can use to draw: A single point or multiple points A single line or multiple lines A single rectangle or multiple rectangles A single arc or multiple arcs Some of the functions described in the following sections use these structures: XSegment typedef struct { short x1, y1, x2, y2; } XSegment; XPoint typedef struct { short x, y; } XPoint; XRectangle typedef struct { short x, y; unsigned short width, height; } XRectangle; XArc typedef struct { short x, y; unsigned short width, height; short angle1, angle2; /* Degrees * 64 */ } XArc; All x and y members are signed integers. The width and height members are 16-bit unsigned integers. You should be careful not to generate coordinates and sizes out of the 16-bit ranges, because the protocol only has 16-bit fields for these values. Drawing Single and Multiple Points Pointsdrawing Drawingpoints XDrawPoints XDrawPoint To draw a single point in a given drawable, use . XDrawPoint XDrawPoint Display *display Drawable d GC gc int x int y display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x y Specify the x and y coordinates where you want the point drawn. To draw multiple points in a given drawable, use . XDrawPoints XDrawPoints Display *display Drawable d GC gc XPoint *points int npoints int mode display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. points Specifies an array of points. npoints Specifies the number of points in the array. mode Specifies the coordinate mode. You can pass CoordModeOrigin or CoordModePrevious. The function uses the foreground pixel and function components of the GC to draw a single point into the specified drawable; draws multiple points this way. CoordModeOrigin treats all coordinates as relative to the origin, and CoordModePrevious treats all coordinates after the first as relative to the previous point. draws the points in the order listed in the array. Both functions use these GC components: function, plane-mask, foreground, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. can generate BadDrawable, BadGC, and BadMatch errors. can generate BadDrawable, BadGC, BadMatch, and BadValue errors. Drawing Single and Multiple Lines Linesdrawing Drawinglines XDrawLine XDrawLines Polygonsdrawing Drawingpolygons XDrawSegments To draw a single line between two points in a given drawable, use . XDrawLine XDrawLine Display *display Drawable d GC gc int x1 int y1 int x2 int y2 display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x1 y1 x2 y2 Specify the points (x1, y1) and (x2, y2) to be connected. To draw multiple lines in a given drawable, use . XDrawLines XDrawLines Display *display Drawable d GC gc XPoint *points int npoints int mode display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. points Specifies an array of points. npoints Specifies the number of points in the array. mode Specifies the coordinate mode. You can pass CoordModeOrigin or CoordModePrevious. To draw multiple, unconnected lines in a given drawable, use . XDrawSegments XDrawSegments Display *display Drawable d GC gc XSegment *segments int nsegments display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. segments Specifies an array of segments. nsegments Specifies the number of segments in the array. The function uses the components of the specified GC to draw a line between the specified set of points (x1, y1) and (x2, y2). It does not perform joining at coincident endpoints. For any given line, does not draw a pixel more than once. If lines intersect, the intersecting pixels are drawn multiple times. The function uses the components of the specified GC to draw npoints-1 lines between each pair of points (point[i], point[i+1]) in the array of XPoint structures. It draws the lines in the order listed in the array. The lines join correctly at all intermediate points, and if the first and last points coincide, the first and last lines also join correctly. For any given line, does not draw a pixel more than once. If thin (zero line-width) lines intersect, the intersecting pixels are drawn multiple times. If wide lines intersect, the intersecting pixels are drawn only once, as though the entire PolyLine protocol request were a single, filled shape. CoordModeOrigin treats all coordinates as relative to the origin, and CoordModePrevious treats all coordinates after the first as relative to the previous point. The function draws multiple, unconnected lines. For each segment, draws a line between (x1, y1) and (x2, y2). It draws the lines in the order listed in the array of XSegment structures and does not perform joining at coincident endpoints. For any given line, does not draw a pixel more than once. If lines intersect, the intersecting pixels are drawn multiple times. All three functions use these GC components: function, plane-mask, line-width, line-style, cap-style, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. The function also uses the join-style GC component. All three functions also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, and dash-list. , , and can generate BadDrawable, BadGC, and BadMatch errors. also can generate BadValue errors. Drawing Single and Multiple Rectangles Rectanglesdrawing Drawingrectangles XDrawRectangle XDrawRectangles To draw the outline of a single rectangle in a given drawable, use . XDrawRectangle XDrawRectangle Display *display Drawable d GC gc int x int y unsigned int width unsigned int height display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x y Specify the x and y coordinates, which specify the upper-left corner of the rectangle. width height Specify the width and height, which specify the dimensions of the rectangle. To draw the outline of multiple rectangles in a given drawable, use . XDrawRectangles XDrawRectangles Display *display Drawable d GC gc XRectangle rectangles[] int nrectangles display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. rectangles Specifies an array of rectangles. nrectangles Specifies the number of rectangles in the array. The and functions draw the outlines of the specified rectangle or rectangles as if a five-point PolyLine protocol request were specified for each rectangle: [x,y] [x+width,y] [x+width,y+height] [x,y+height] [x,y] For the specified rectangle or rectangles, these functions do not draw a pixel more than once. draws the rectangles in the order listed in the array. If rectangles intersect, the intersecting pixels are drawn multiple times. Both functions use these GC components: function, plane-mask, line-width, line-style, cap-style, join-style, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, and dash-list. and can generate BadDrawable, BadGC, and BadMatch errors. Drawing Single and Multiple Arcs Drawingarcs XDrawArc Arcsdrawing XDrawArcs To draw a single arc in a given drawable, use . XDrawArc XDrawArc Display *display Drawable d GC gc int x int y unsigned int width unsigned int height int angle1 int angle2 display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x y Specify the x and y coordinates, which are relative to the origin of the drawable and specify the upper-left corner of the bounding rectangle. width height Specify the width and height, which are the major and minor axes of the arc. angle1 Specifies the start of the arc relative to the three-o'clock position from the center, in units of degrees * 64. angle2 Specifies the path and extent of the arc relative to the start of the arc, in units of degrees * 64. To draw multiple arcs in a given drawable, use . XDrawArcs XDrawArcs Display *display Drawable d GC gc XArc *arcs int narcs display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. arcs Specifies an array of arcs. narcs Specifies the number of arcs in the array. delim %% draws a single circular or elliptical arc, and draws multiple circular or elliptical arcs. Each arc is specified by a rectangle and two angles. The center of the circle or ellipse is the center of the rectangle, and the major and minor axes are specified by the width and height. Positive angles indicate counterclockwise motion, and negative angles indicate clockwise motion. If the magnitude of angle2 is greater than 360 degrees, or truncates it to 360 degrees. For an arc specified as %[ ~x, ~y, ~width , ~height, ~angle1, ~angle2 ]%, the origin of the major and minor axes is at % [ x +^ {width over 2} , ~y +^ {height over 2} ]%, and the infinitely thin path describing the entire circle or ellipse intersects the horizontal axis at % [ x, ~y +^ {height over 2} ]% and % [ x +^ width , ~y +^ { height over 2 }] % and intersects the vertical axis at % [ x +^ { width over 2 } , ~y ]% and % [ x +^ { width over 2 }, ~y +^ height ]%. These coordinates can be fractional and so are not truncated to discrete coordinates. The path should be defined by the ideal mathematical path. For a wide line with line-width lw, the bounding outlines for filling are given by the two infinitely thin paths consisting of all points whose perpendicular distance from the path of the circle/ellipse is equal to lw/2 (which may be a fractional value). The cap-style and join-style are applied the same as for a line corresponding to the tangent of the circle/ellipse at the endpoint. For an arc specified as % [ ~x, ~y, ~width, ~height, ~angle1, ~angle2 ]%, the angles must be specified in the effectively skewed coordinate system of the ellipse (for a circle, the angles and coordinate systems are identical). The relationship between these angles and angles expressed in the normal coordinate system of the screen (as measured with a protractor) is as follows: % roman "skewed-angle" ~ = ~ atan left ( tan ( roman "normal-angle" ) * width over height right ) +^ adjust% The skewed-angle and normal-angle are expressed in radians (rather than in degrees scaled by 64) in the range % [ 0 , ~2 pi ]% and where atan returns a value in the range % [ - pi over 2 , ~pi over 2 ] % and adjust is: %0% for normal-angle in the range % [ 0 , ~pi over 2 ]% %pi% for normal-angle in the range % [ pi over 2 , ~{3 pi} over 2 ]% %2 pi% for normal-angle in the range % [ {3 pi} over 2 , ~2 pi ]% For any given arc, and do not draw a pixel more than once. If two arcs join correctly and if the line-width is greater than zero and the arcs intersect, and do not draw a pixel more than once. Otherwise, the intersecting pixels of intersecting arcs are drawn multiple times. Specifying an arc with one endpoint and a clockwise extent draws the same pixels as specifying the other endpoint and an equivalent counterclockwise extent, except as it affects joins. If the last point in one arc coincides with the first point in the following arc, the two arcs will join correctly. If the first point in the first arc coincides with the last point in the last arc, the two arcs will join correctly. By specifying one axis to be zero, a horizontal or vertical line can be drawn. Angles are computed based solely on the coordinate system and ignore the aspect ratio. Both functions use these GC components: function, plane-mask, line-width, line-style, cap-style, join-style, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, and dash-list. and can generate BadDrawable, BadGC, and BadMatch errors. Filling Areas Xlib provides functions that you can use to fill: A single rectangle or multiple rectangles A single polygon A single arc or multiple arcs Filling Single and Multiple Rectangles Fillingrectangles XFillRectangle Rectanglefilling XFillRectangles To fill a single rectangular area in a given drawable, use . XFillRectangle XFillRectangle Display *display Drawable d GC gc int x int y unsigned int width unsigned int height display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x y Specify the x and y coordinates, which are relative to the origin of the drawable and specify the upper-left corner of the rectangle. width height Specify the width and height, which are the dimensions of the rectangle to be filled. To fill multiple rectangular areas in a given drawable, use . XFillRectangles XFillRectangles Display *display Drawable d GC gc XRectangle *rectangles int nrectangles display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. rectangles Specifies an array of rectangles. nrectangles Specifies the number of rectangles in the array. The and functions fill the specified rectangle or rectangles as if a four-point FillPolygon protocol request were specified for each rectangle: [x,y] [x+width,y] [x+width,y+height] [x,y+height] Each function uses the x and y coordinates, width and height dimensions, and GC you specify. fills the rectangles in the order listed in the array. For any given rectangle, and do not draw a pixel more than once. If rectangles intersect, the intersecting pixels are drawn multiple times. Both functions use these GC components: function, plane-mask, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, and tile-stipple-y-origin. and can generate BadDrawable, BadGC, and BadMatch errors. Filling a Single Polygon To fill a polygon area in a given drawable, use . Polygonsfilling Fillingpolygon XFillPolygon XFillPolygon Display *display Drawable d GC gc XPoint *points int npoints int shape int mode display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. points Specifies an array of points. npoints Specifies the number of points in the array. shape Specifies a shape that helps the server to improve performance. You can pass Complex, Convex, or Nonconvex. mode Specifies the coordinate mode. You can pass CoordModeOrigin or CoordModePrevious. fills the region closed by the specified path. The path is closed automatically if the last point in the list does not coincide with the first point. does not draw a pixel of the region more than once. CoordModeOrigin treats all coordinates as relative to the origin, and CoordModePrevious treats all coordinates after the first as relative to the previous point. Depending on the specified shape, the following occurs: If shape is Complex, the path may self-intersect. Note that contiguous coincident points in the path are not treated as self-intersection. If shape is Convex, for every pair of points inside the polygon, the line segment connecting them does not intersect the path. If known by the client, specifying Convex can improve performance. If you specify Convex for a path that is not convex, the graphics results are undefined. If shape is Nonconvex, the path does not self-intersect, but the shape is not wholly convex. If known by the client, specifying Nonconvex instead of Complex may improve performance. If you specify Nonconvex for a self-intersecting path, the graphics results are undefined. The fill-rule of the GC controls the filling behavior of self-intersecting polygons. This function uses these GC components: function, plane-mask, fill-style, fill-rule, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. It also uses these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, and tile-stipple-y-origin. can generate BadDrawable, BadGC, BadMatch, and BadValue errors. Filling Single and Multiple Arcs XFillArc Arcsfilling Fillingarcs To fill a single arc in a given drawable, use . XFillArc XFillArc Display *display Drawable d GC gc int x int y unsigned int width unsigned int height int angle1 int angle2 display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x y Specify the x and y coordinates, which are relative to the origin of the drawable and specify the upper-left corner of the bounding rectangle. width height Specify the width and height, which are the major and minor axes of the arc. angle1 Specifies the start of the arc relative to the three-o'clock position from the center, in units of degrees * 64. angle2 Specifies the path and extent of the arc relative to the start of the arc, in units of degrees * 64. To fill multiple arcs in a given drawable, use . XFillArcs XFillArcs Display *display Drawable d GC gc XArc *arcs int narcs display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. arcs Specifies an array of arcs. narcs Specifies the number of arcs in the array. For each arc, or fills the region closed by the infinitely thin path described by the specified arc and, depending on the arc-mode specified in the GC, one or two line segments. For ArcChord, the single line segment joining the endpoints of the arc is used. For ArcPieSlice, the two line segments joining the endpoints of the arc with the center point are used. fills the arcs in the order listed in the array. For any given arc, and do not draw a pixel more than once. If regions intersect, the intersecting pixels are drawn multiple times. Both functions use these GC components: function, plane-mask, fill-style, arc-mode, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, and tile-stipple-y-origin. and can generate BadDrawable, BadGC, and BadMatch errors. Font Metrics Font A font is a graphical description of a set of characters that are used to increase efficiency whenever a set of small, similar sized patterns are repeatedly used. This section discusses how to: Load and free fonts Obtain and free font names Compute character string sizes Compute logical extents Query character string sizes The X server loads fonts whenever a program requests a new font. The server can cache fonts for quick lookup. Fonts are global across all screens in a server. Several levels are possible when dealing with fonts. Most applications simply use to load a font and query the font metrics. Characters in fonts are regarded as masks. Except for image text requests, the only pixels modified are those in which bits are set to 1 in the character. This means that it makes sense to draw text using stipples or tiles (for example, many menus gray-out unusable entries). The XFontStruct structure contains all of the information for the font and consists of the font-specific information as well as a pointer to an array of XCharStruct structures for the characters contained in the font. The XFontStruct, XFontProp, and XCharStruct structures contain: XCharStruct typedef struct { short lbearing; /* origin to left edge of raster */ short rbearing; /* origin to right edge of raster */ short width; /* advance to next char's origin */ short ascent; /* baseline to top edge of raster */ short descent; /* baseline to bottom edge of raster */ unsigned short attributes; /* per char flags (not predefined) */ } XCharStruct; XFontProp typedef struct { Atom name; unsigned long card32; } XFontProp; XChar2b typedef struct { /* normal 16 bit characters are two bytes */ unsigned char byte1; unsigned char byte2; } XChar2b; XFontStruct typedef struct { XExtData *ext_data; /* hook for extension to hang data */ Font fid; /* Font id for this font */ unsigned direction; /* hint about the direction font is painted */ unsigned min_char_or_byte2; /* first character */ unsigned max_char_or_byte2; /* last character */ unsigned min_byte1; /* first row that exists */ unsigned max_byte1; /* last row that exists */ Bool all_chars_exist; /* flag if all characters have nonzero size */ unsigned default_char; /* char to print for undefined character */ int n_properties; /* how many properties there are */ XFontProp *properties; /* pointer to array of additional properties */ XCharStruct min_bounds; /* minimum bounds over all existing char */ XCharStruct max_bounds; /* maximum bounds over all existing char */ XCharStruct *per_char; /* first_char to last_char information */ int ascent; /* logical extent above baseline for spacing */ int descent; /* logical descent below baseline for spacing */ } XFontStruct; X supports single byte/character, two bytes/character matrix, and 16-bit character text operations. Note that any of these forms can be used with a font, but a single byte/character text request can only specify a single byte (that is, the first row of a 2-byte font). You should view 2-byte fonts as a two-dimensional matrix of defined characters: byte1 specifies the range of defined rows and byte2 defines the range of defined columns of the font. Single byte/character fonts have one row defined, and the byte2 range specified in the structure defines a range of characters. The bounding box of a character is defined by the XCharStruct of that character. When characters are absent from a font, the default_char is used. When fonts have all characters of the same size, only the information in the XFontStruct min and max bounds are used. The members of the XFontStruct have the following semantics: The direction member can be either FontLeftToRight or FontRightToLeft. It is just a hint as to whether most XCharStruct elements have a positive (FontLeftToRight) or a negative (FontRightToLeft) character width metric. The core protocol defines no support for vertical text. If the min_byte1 and max_byte1 members are both zero, min_char_or_byte2 specifies the linear character index corresponding to the first element of the per_char array, and max_char_or_byte2 specifies the linear character index of the last element. If either min_byte1 or max_byte1 are nonzero, both min_char_or_byte2 and max_char_or_byte2 are less than 256, and the 2-byte character index values corresponding to the per_char array element N (counting from 0) are: byte1 = N/D + min_byte1 byte2 = N\\D + min_char_or_byte2 where: D = max_char_or_byte2 - min_char_or_byte2 + 1 / = integer division \\ = integer modulus If the per_char pointer is NULL, all glyphs between the first and last character indexes inclusive have the same information, as given by both min_bounds and max_bounds. If all_chars_exist is True, all characters in the per_char array have nonzero bounding boxes. The default_char member specifies the character that will be used when an undefined or nonexistent character is printed. The default_char is a 16-bit character (not a 2-byte character). For a font using 2-byte matrix format, the default_char has byte1 in the most-significant byte and byte2 in the least significant byte. If the default_char itself specifies an undefined or nonexistent character, no printing is performed for an undefined or nonexistent character. The min_bounds and max_bounds members contain the most extreme values of each individual XCharStruct component over all elements of this array (and ignore nonexistent characters). The bounding box of the font (the smallest rectangle enclosing the shape obtained by superimposing all of the characters at the same origin [x,y]) has its upper-left coordinate at: [x + min_bounds.lbearing, y - max_bounds.ascent] Its width is: max_bounds.rbearing - min_bounds.lbearing Its height is: max_bounds.ascent + max_bounds.descent The ascent member is the logical extent of the font above the baseline that is used for determining line spacing. Specific characters may extend beyond this. The descent member is the logical extent of the font at or below the baseline that is used for determining line spacing. Specific characters may extend beyond this. If the baseline is at Y-coordinate y, the logical extent of the font is inclusive between the Y-coordinate values (y - font.ascent) and (y + font.descent - 1). Typically, the minimum interline spacing between rows of text is given by ascent + descent. For a character origin at [x,y], the bounding box of a character (that is, the smallest rectangle that encloses the character's shape) described in terms of XCharStruct components is a rectangle with its upper-left corner at: [x + lbearing, y - ascent] Its width is: rbearing - lbearing Its height is: ascent + descent The origin for the next character is defined to be: [x + width, y] The lbearing member defines the extent of the left edge of the character ink from the origin. The rbearing member defines the extent of the right edge of the character ink from the origin. The ascent member defines the extent of the top edge of the character ink from the origin. The descent member defines the extent of the bottom edge of the character ink from the origin. The width member defines the logical width of the character. Note that the baseline (the y position of the character origin) is logically viewed as being the scanline just below nondescending characters. When descent is zero, only pixels with Y-coordinates less than y are drawn, and the origin is logically viewed as being coincident with the left edge of a nonkerned character. When lbearing is zero, no pixels with X-coordinate less than x are drawn. Any of the XCharStruct metric members could be negative. If the width is negative, the next character will be placed to the left of the current origin. The X protocol does not define the interpretation of the attributes member in the XCharStruct structure. A nonexistent character is represented with all members of its XCharStruct set to zero. A font is not guaranteed to have any properties. The interpretation of the property value (for example, long or unsigned long) must be derived from a priori knowledge of the property. A basic set of font properties is specified in the X Consortium standard X Logical Font Description Conventions. Loading and Freeing Fonts Xlib provides functions that you can use to load fonts, get font information, unload fonts, and free font information. Fontsgetting information Fontsunloading Fontsfreeing font information A few font functions use a GContext resource ID or a font ID interchangeably. To load a given font, use . XLoadFont Font XLoadFont Display *display char *name display Specifies the connection to the X server. name Specifies the name of the font, which is a null-terminated string. The function loads the specified font and returns its associated font ID. If the font name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. When the characters ``?'' and ``*'' are used in a font name, a pattern match is performed and any matching font is used. In the pattern, the ``?'' character will match any single character, and the ``*'' character will match any number of characters. A structured format for font names is specified in the X Consortium standard X Logical Font Description Conventions. If was unsuccessful at loading the specified font, a BadName error results. Fonts are not associated with a particular screen and can be stored as a component of any GC. When the font is no longer needed, call . can generate BadAlloc and BadName errors. To return information about an available font, use . XQueryFont XFontStruct *XQueryFont Display *display XID font_ID display Specifies the connection to the X server. font_ID Specifies the font ID or the GContext ID. The function returns a pointer to the XFontStruct structure, which contains information associated with the font. You can query a font or the font stored in a GC. The font ID stored in the XFontStruct structure will be the GContext ID, and you need to be careful when using this ID in other functions (see ). If the font does not exist, returns NULL. To free this data, use . To perform a and in a single operation, use . XLoadQueryFont XFontStruct *XLoadQueryFont Display *display char *name display Specifies the connection to the X server. name Specifies the name of the font, which is a null-terminated string. The function provides the most common way for accessing a font. both opens (loads) the specified font and returns a pointer to the appropriate XFontStruct structure. If the font name is not in the Host Portable Character Encoding, the result is implementation-dependent. If the font does not exist, returns NULL. can generate a BadAlloc error. To unload the font and free the storage used by the font structure that was allocated by or , use . XFreeFont XFreeFont Display *display XFontStruct *font_struct display Specifies the connection to the X server. font_struct Specifies the storage associated with the font. The function deletes the association between the font resource ID and the specified font and frees the XFontStruct structure. The font itself will be freed when no other resource references it. The data and the font should not be referenced again. can generate a BadFont error. To return a given font property, use . XGetFontProperty Bool XGetFontProperty XFontStruct *font_struct Atom atom unsigned long *value_return font_struct Specifies the storage associated with the font. atom Specifies the atom for the property name you want returned. value_return Returns the value of the font property. Given the atom for that property, the function returns the value of the specified font property. also returns False if the property was not defined or True if it was defined. A set of predefined atoms exists for font properties, which can be found in <X11/Xatom.h>. X11/Xatom.h Files<X11/Xatom.h> Headers<X11/Xatom.h> This set contains the standard properties associated with a font. Although it is not guaranteed, it is likely that the predefined font properties will be present. To unload a font that was loaded by , use . XUnloadFont XUnloadFont Display *display Font font display Specifies the connection to the X server. font Specifies the font. The function deletes the association between the font resource ID and the specified font. The font itself will be freed when no other resource references it. The font should not be referenced again. can generate a BadFont error. Obtaining and Freeing Font Names and Information You obtain font names and information by matching a wildcard specification when querying a font type for a list of available sizes and so on. To return a list of the available font names, use . XListFonts char **XListFonts Display *display char *pattern int maxnames int *actual_count_return display Specifies the connection to the X server. pattern Specifies the null-terminated pattern string that can contain wildcard characters. maxnames Specifies the maximum number of names to be returned. actual_count_return Returns the actual number of font names. The function returns an array of available font names (as controlled by the font search path; see ) that match the string you passed to the pattern argument. The pattern string can contain any characters, but each asterisk (*) is a wildcard for any number of characters, and each question mark (?) is a wildcard for a single character. If the pattern string is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. Each returned string is null-terminated. If the data returned by the server is in the Latin Portable Character Encoding, then the returned strings are in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. If there are no matching font names, returns NULL. The client should call when finished with the result to free the memory. To free a font name array, use . XFreeFontNames XFreeFontNames char *list[] list Specifies the array of strings you want to free. The function frees the array and strings returned by or . To obtain the names and information about available fonts, use . XListFontsWithInfo char **XListFontsWithInfo Display *display char *pattern int maxnames int *count_return XFontStruct **info_return display Specifies the connection to the X server. pattern Specifies the null-terminated pattern string that can contain wildcard characters. maxnames Specifies the maximum number of names to be returned. count_return Returns the actual number of matched font names. info_return Returns the font information. The function returns a list of font names that match the specified pattern and their associated font information. The list of names is limited to size specified by maxnames. The information returned for each font is identical to what would return except that the per-character metrics are not returned. The pattern string can contain any characters, but each asterisk (*) is a wildcard for any number of characters, and each question mark (?) is a wildcard for a single character. If the pattern string is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. Each returned string is null-terminated. If the data returned by the server is in the Latin Portable Character Encoding, then the returned strings are in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. If there are no matching font names, returns NULL. To free only the allocated name array, the client should call . To free both the name array and the font information array or to free just the font information array, the client should call . To free font structures and font names, use . XFreeFontInfo XFreeFontInfo char **names XFontStruct *free_info int actual_count names Specifies the list of font names. free_info Specifies the font information. actual_count Specifies the actual number of font names. The function frees a font structure or an array of font structures and optionally an array of font names. If NULL is passed for names, no font names are freed. If a font structure for an open font (returned by ) is passed, the structure is freed, but the font is not closed; use to close the font. Computing Character String Sizes Xlib provides functions that you can use to compute the width, the logical extents, and the server information about 8-bit and 2-byte text strings. XTextWidth XTextWidth16 The width is computed by adding the character widths of all the characters. It does not matter if the font is an 8-bit or 2-byte font. These functions return the sum of the character metrics in pixels. To determine the width of an 8-bit character string, use . XTextWidth int XTextWidth XFontStruct *font_struct char *string int count font_struct Specifies the font used for the width computation. string Specifies the character string. count Specifies the character count in the specified string. To determine the width of a 2-byte character string, use . XTextWidth16 int XTextWidth16 XFontStruct *font_struct XChar2b *string int count font_struct Specifies the font used for the width computation. string Specifies the character string. count Specifies the character count in the specified string. Computing Logical Extents To compute the bounding box of an 8-bit character string in a given font, use . XTextExtents XTextExtents XFontStruct *font_struct char *string int nchars int *direction_return int *font_ascent_return int *font_descent_return XCharStruct *overall_return font_struct Specifies the XFontStruct structure. string Specifies the character string. nchars Specifies the number of characters in the character string. direction_return Returns the value of the direction hint (FontLeftToRight or FontRightToLeft). font_ascent_return Returns the font ascent. font_descent_return Returns the font descent. overall_return Returns the overall size in the specified XCharStruct structure. To compute the bounding box of a 2-byte character string in a given font, use . XTextExtents16 XTextExtents16 XFontStruct *font_struct XChar2b *string int nchars int *direction_return int *font_ascent_return int *font_descent_return XCharStruct *overall_return font_struct Specifies the XFontStruct structure. string Specifies the character string. nchars Specifies the number of characters in the character string. direction_return Returns the value of the direction hint (FontLeftToRight or FontRightToLeft). font_ascent_return Returns the font ascent. font_descent_return Returns the font descent. overall_return Returns the overall size in the specified XCharStruct structure. The and functions perform the size computation locally and, thereby, avoid the round-trip overhead of and . Both functions return an XCharStruct structure, whose members are set to the values as follows. The ascent member is set to the maximum of the ascent metrics of all characters in the string. The descent member is set to the maximum of the descent metrics. The width member is set to the sum of the character-width metrics of all characters in the string. For each character in the string, let W be the sum of the character-width metrics of all characters preceding it in the string. Let L be the left-side-bearing metric of the character plus W. Let R be the right-side-bearing metric of the character plus W. The lbearing member is set to the minimum L of all characters in the string. The rbearing member is set to the maximum R. For fonts defined with linear indexing rather than 2-byte matrix indexing, each XChar2b structure is interpreted as a 16-bit number with byte1 as the most significant byte. If the font has no defined default character, undefined characters in the string are taken to have all zero metrics. Querying Character String Sizes To query the server for the bounding box of an 8-bit character string in a given font, use . XQueryTextExtents XQueryTextExtents Display *display XID font_ID char *string int nchars int *direction_return int *font_ascent_return int *font_descent_return XCharStruct *overall_return display Specifies the connection to the X server. font_ID Specifies either the font ID or the GContext ID that contains the font. string Specifies the character string. nchars Specifies the number of characters in the character string. direction_return Returns the value of the direction hint (FontLeftToRight or FontRightToLeft). font_ascent_return Returns the font ascent. font_descent_return Returns the font descent. overall_return Returns the overall size in the specified XCharStruct structure. To query the server for the bounding box of a 2-byte character string in a given font, use . XQueryTextExtents16 XQueryTextExtents16 Display *display XID font_ID XChar2b *string int nchars int *direction_return int *font_ascent_return int *font_descent_return XCharStruct *overall_return display Specifies the connection to the X server. font_ID Specifies either the font ID or the GContext ID that contains the font. string Specifies the character string. nchars Specifies the number of characters in the character string. direction_return Returns the value of the direction hint (FontLeftToRight or FontRightToLeft). font_ascent_return Returns the font ascent. font_descent_return Returns the font descent. overall_return Returns the overall size in the specified XCharStruct structure. The and functions return the bounding box of the specified 8-bit and 16-bit character string in the specified font or the font contained in the specified GC. These functions query the X server and, therefore, suffer the round-trip overhead that is avoided by and . Both functions return a XCharStruct structure, whose members are set to the values as follows. The ascent member is set to the maximum of the ascent metrics of all characters in the string. The descent member is set to the maximum of the descent metrics. The width member is set to the sum of the character-width metrics of all characters in the string. For each character in the string, let W be the sum of the character-width metrics of all characters preceding it in the string. Let L be the left-side-bearing metric of the character plus W. Let R be the right-side-bearing metric of the character plus W. The lbearing member is set to the minimum L of all characters in the string. The rbearing member is set to the maximum R. For fonts defined with linear indexing rather than 2-byte matrix indexing, each XChar2b structure is interpreted as a 16-bit number with byte1 as the most significant byte. If the font has no defined default character, undefined characters in the string are taken to have all zero metrics. Characters with all zero metrics are ignored. If the font has no defined default_char, the undefined characters in the string are also ignored. and can generate BadFont and BadGC errors. Drawing Text This section discusses how to draw: Complex text Text characters Image text characters The fundamental text functions and use the following structures: XTextItem typedef struct { char *chars; /* pointer to string */ int nchars; /* number of characters */ int delta; /* delta between strings */ Font font; /* Font to print it in, None don't change */ } XTextItem; XTextItem16 typedef struct { XChar2b *chars; /* pointer to two-byte characters */ int nchars; /* number of characters */ int delta; /* delta between strings */ Font font; /* font to print it in, None don't change */ } XTextItem16; If the font member is not None, the font is changed before printing and also is stored in the GC. If an error was generated during text drawing, the previous items may have been drawn. The baseline of the characters are drawn starting at the x and y coordinates that you pass in the text drawing functions. For example, consider the background rectangle drawn by . If you want the upper-left corner of the background rectangle to be at pixel coordinate (x,y), pass the (x,y + ascent) as the baseline origin coordinates to the text functions. The ascent is the font ascent, as given in the XFontStruct structure. If you want the lower-left corner of the background rectangle to be at pixel coordinate (x,y), pass the (x,y - descent + 1) as the baseline origin coordinates to the text functions. The descent is the font descent, as given in the XFontStruct structure. Drawing Complex Text Textdrawing Drawingtext items To draw 8-bit characters in a given drawable, use . XDrawText XDrawText Display *display Drawable d GC gc int x int y XTextItem *items int nitems display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x y Specify the x and y coordinates, which are relative to the origin of the specified drawable and define the origin of the first character. items Specifies an array of text items. nitems Specifies the number of text items in the array. To draw 2-byte characters in a given drawable, use . XDrawText16 XDrawText16 Display *display Drawable d GC gc int x int y XTextItem16 *items int nitems display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x y Specify the x and y coordinates, which are relative to the origin of the specified drawable and define the origin of the first character. items Specifies an array of text items. nitems Specifies the number of text items in the array. The function is similar to except that it uses 2-byte or 16-bit characters. Both functions allow complex spacing and font shifts between counted strings. Each text item is processed in turn. A font member other than None in an item causes the font to be stored in the GC and used for subsequent text. A text element delta specifies an additional change in the position along the x axis before the string is drawn. The delta is always added to the character origin and is not dependent on any characteristics of the font. Each character image, as defined by the font in the GC, is treated as an additional mask for a fill operation on the drawable. The drawable is modified only where the font character has a bit set to 1. If a text item generates a BadFont error, the previous text items may have been drawn. For fonts defined with linear indexing rather than 2-byte matrix indexing, each XChar2b structure is interpreted as a 16-bit number with byte1 as the most significant byte. Both functions use these GC components: function, plane-mask, fill-style, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, and tile-stipple-y-origin. and can generate BadDrawable, BadFont, BadGC, and BadMatch errors. Drawing Text Characters Stringsdrawing Drawingstrings To draw 8-bit characters in a given drawable, use . XDrawString XDrawString Display *display Drawable d GC gc int x int y char *string int length display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x y Specify the x and y coordinates, which are relative to the origin of the specified drawable and define the origin of the first character. string Specifies the character string. length Specifies the number of characters in the string argument. To draw 2-byte characters in a given drawable, use . XDrawString16 XDrawString16 Display *display Drawable d GC gc int x int y XChar2b *string int length display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x y Specify the x and y coordinates, which are relative to the origin of the specified drawable and define the origin of the first character. string Specifies the character string. length Specifies the number of characters in the string argument. Each character image, as defined by the font in the GC, is treated as an additional mask for a fill operation on the drawable. The drawable is modified only where the font character has a bit set to 1. For fonts defined with 2-byte matrix indexing and used with , each byte is used as a byte2 with a byte1 of zero. Both functions use these GC components: function, plane-mask, fill-style, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, and tile-stipple-y-origin. and can generate BadDrawable, BadGC, and BadMatch errors. Drawing Image Text Characters Image textdrawing Drawingimage text Some applications, in particular terminal emulators, need to print image text in which both the foreground and background bits of each character are painted. This prevents annoying flicker on many displays. XDrawImageString XDrawImageString16 To draw 8-bit image text characters in a given drawable, use . XDrawImageString XDrawImageString Display *display Drawable d GC gc int x int y char *string int length display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x y Specify the x and y coordinates, which are relative to the origin of the specified drawable and define the origin of the first character. string Specifies the character string. length Specifies the number of characters in the string argument. To draw 2-byte image text characters in a given drawable, use . XDrawImageString16 XDrawImageString16 Display *display Drawable d GC gc int x int y XChar2b *string int length display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x y Specify the x and y coordinates, which are relative to the origin of the specified drawable and define the origin of the first character. string Specifies the character string. length Specifies the number of characters in the string argument. The function is similar to except that it uses 2-byte or 16-bit characters. Both functions also use both the foreground and background pixels of the GC in the destination. The effect is first to fill a destination rectangle with the background pixel defined in the GC and then to paint the text with the foreground pixel. The upper-left corner of the filled rectangle is at: [x, y - font-ascent] The width is: overall-width The height is: font-ascent + font-descent The overall-width, font-ascent, and font-descent are as would be returned by using gc and string. The function and fill-style defined in the GC are ignored for these functions. The effective function is GXcopy, and the effective fill-style is FillSolid. For fonts defined with 2-byte matrix indexing and used with , each byte is used as a byte2 with a byte1 of zero. Both functions use these GC components: plane-mask, foreground, background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. and can generate BadDrawable, BadGC, and BadMatch errors. Transferring Images between Client and Server Xlib provides functions that you can use to transfer images between a client and the server. Because the server may require diverse data formats, Xlib provides an image object that fully describes the data in memory and that provides for basic operations on that data. You should reference the data through the image object rather than referencing the data directly. However, some implementations of the Xlib library may efficiently deal with frequently used data formats by replacing functions in the procedure vector with special case functions. Supported operations include destroying the image, getting a pixel, storing a pixel, extracting a subimage of an image, and adding a constant to an image (see section 16.8). All the image manipulation functions discussed in this section make use of the XImage structure, which describes an image as it exists in the client's memory. XImage typedef struct _XImage { int width, height; /* size of image */ int xoffset; /* number of pixels offset in X direction */ int format; /* XYBitmap, XYPixmap, ZPixmap */ char *data; /* pointer to image data */ int byte_order; /* data byte order, LSBFirst, MSBFirst */ int bitmap_unit; /* quant. of scanline 8, 16, 32 */ int bitmap_bit_order; /* LSBFirst, MSBFirst */ int bitmap_pad; /* 8, 16, 32 either XY or ZPixmap */ int depth; /* depth of image */ int bytes_per_line; /* accelerator to next scanline */ int bits_per_pixel; /* bits per pixel (ZPixmap) */ unsigned long red_mask; /* bits in z arrangement */ unsigned long green_mask; unsigned long blue_mask; XPointer obdata; /* hook for the object routines to hang on */ struct funcs { /* image manipulation routines */ struct _XImage *(*create_image)(); int (*destroy_image)(); unsigned long (*get_pixel)(); int (*put_pixel)(); struct _XImage *(*sub_image)(); int (*add_pixel)(); } f; } XImage; To initialize the image manipulation routines of an image structure, use . XInitImage Status XInitImage XImage *image ximage Specifies the image. The function initializes the internal image manipulation routines of an image structure, based on the values of the various structure members. All fields other than the manipulation routines must already be initialized. If the bytes_per_line member is zero, will assume the image data is contiguous in memory and set the bytes_per_line member to an appropriate value based on the other members; otherwise, the value of bytes_per_line is not changed. All of the manipulation routines are initialized to functions that other Xlib image manipulation functions need to operate on the type of image specified by the rest of the structure. This function must be called for any image constructed by the client before passing it to any other Xlib function. Image structures created or returned by Xlib do not need to be initialized in this fashion. This function returns a nonzero status if initialization of the structure is successful. It returns zero if it detected some error or inconsistency in the structure, in which case the image is not changed. To combine an image with a rectangle of a drawable on the display, use . XPutImage XPutImage Display *display Drawable d GC gc XImage *image int src_x int src_y int dest_x int dest_y unsigned int width unsigned int height display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. image Specifies the image you want combined with the rectangle. src_x Specifies the offset in X from the left edge of the image defined by the XImage structure. src_y Specifies the offset in Y from the top edge of the image defined by the XImage structure. dest_x dest_y Specify the x and y coordinates, which are relative to the origin of the drawable and are the coordinates of the subimage. width height Specify the width and height of the subimage, which define the dimensions of the rectangle. The function combines an image with a rectangle of the specified drawable. The section of the image defined by the src_x, src_y, width, and height arguments is drawn on the specified part of the drawable. If XYBitmap format is used, the depth of the image must be one, or a BadMatch error results. The foreground pixel in the GC defines the source for the one bits in the image, and the background pixel defines the source for the zero bits. For XYPixmap and ZPixmap, the depth of the image must match the depth of the drawable, or a BadMatch error results. If the characteristics of the image (for example, byte_order and bitmap_unit) differ from what the server requires, automatically makes the appropriate conversions. This function uses these GC components: function, plane-mask, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. It also uses these GC mode-dependent components: foreground and background. can generate BadDrawable, BadGC, BadMatch, and BadValue errors. To return the contents of a rectangle in a given drawable on the display, use . This function specifically supports rudimentary screen dumps. XGetImage XImage *XGetImage Display *display Drawable d int x int y unsigned int width unsigned int height unsigned long plane_mask int format display Specifies the connection to the X server. d Specifies the drawable. x y Specify the x and y coordinates, which are relative to the origin of the drawable and define the upper-left corner of the rectangle. width height Specify the width and height of the subimage, which define the dimensions of the rectangle. plane_mask Specifies the plane mask. format Specifies the format for the image. You can pass XYPixmap or ZPixmap. The function returns a pointer to an XImage structure. This structure provides you with the contents of the specified rectangle of the drawable in the format you specify. If the format argument is XYPixmap, the image contains only the bit planes you passed to the plane_mask argument. If the plane_mask argument only requests a subset of the planes of the display, the depth of the returned image will be the number of planes requested. If the format argument is ZPixmap, returns as zero the bits in all planes not specified in the plane_mask argument. The function performs no range checking on the values in plane_mask and ignores extraneous bits. returns the depth of the image to the depth member of the XImage structure. The depth of the image is as specified when the drawable was created, except when getting a subset of the planes in XYPixmap format, when the depth is given by the number of bits set to 1 in plane_mask. If the drawable is a pixmap, the given rectangle must be wholly contained within the pixmap, or a BadMatch error results. If the drawable is a window, the window must be viewable, and it must be the case that if there were no inferiors or overlapping windows, the specified rectangle of the window would be fully visible on the screen and wholly contained within the outside edges of the window, or a BadMatch error results. Note that the borders of the window can be included and read with this request. If the window has backing-store, the backing-store contents are returned for regions of the window that are obscured by noninferior windows. If the window does not have backing-store, the returned contents of such obscured regions are undefined. The returned contents of visible regions of inferiors of a different depth than the specified window's depth are also undefined. The pointer cursor image is not included in the returned contents. If a problem occurs, returns NULL. can generate BadDrawable, BadMatch, and BadValue errors. To copy the contents of a rectangle on the display to a location within a preexisting image structure, use . XGetSubImage XImage *XGetSubImage Display *display Drawable d int x int y unsigned int width unsigned int height unsigned long plane_mask int format XImage *dest_image int dest_x int dest_y display Specifies the connection to the X server. d Specifies the drawable. x y Specify the x and y coordinates, which are relative to the origin of the drawable and define the upper-left corner of the rectangle. width height Specify the width and height of the subimage, which define the dimensions of the rectangle. plane_mask Specifies the plane mask. format Specifies the format for the image. You can pass XYPixmap or ZPixmap. dest_image Specifies the destination image. dest_x dest_y Specify the x and y coordinates, which are relative to the origin of the destination rectangle, specify its upper-left corner, and determine where the subimage is placed in the destination image. The function updates dest_image with the specified subimage in the same manner as . If the format argument is XYPixmap, the image contains only the bit planes you passed to the plane_mask argument. If the format argument is ZPixmap, returns as zero the bits in all planes not specified in the plane_mask argument. The function performs no range checking on the values in plane_mask and ignores extraneous bits. As a convenience, returns a pointer to the same XImage structure specified by dest_image. The depth of the destination XImage structure must be the same as that of the drawable. If the specified subimage does not fit at the specified location on the destination image, the right and bottom edges are clipped. If the drawable is a pixmap, the given rectangle must be wholly contained within the pixmap, or a BadMatch error results. If the drawable is a window, the window must be viewable, and it must be the case that if there were no inferiors or overlapping windows, the specified rectangle of the window would be fully visible on the screen and wholly contained within the outside edges of the window, or a BadMatch error results. If the window has backing-store, then the backing-store contents are returned for regions of the window that are obscured by noninferior windows. If the window does not have backing-store, the returned contents of such obscured regions are undefined. The returned contents of visible regions of inferiors of a different depth than the specified window's depth are also undefined. If a problem occurs, returns NULL. can generate BadDrawable, BadGC, BadMatch, and BadValue errors. libX11-1.8.12/specs/libX11/CH06.xml0000644014310600000120000066333414763154126011703 Color Management Functions Each X window always has an associated colormap that provides a level of indirection between pixel values and colors displayed on the screen. Xlib provides functions that you can use to manipulate a colormap. The X protocol defines colors using values in the RGB color space. The RGB color space is device dependent; rendering an RGB value on differing output devices typically results in different colors. Xlib also provides a means for clients to specify color using device-independent color spaces for consistent results across devices. Xlib supports device-independent color spaces derivable from the CIE XYZ color space. This includes the CIE XYZ, xyY, L*u*v*, and L*a*b* color spaces as well as the TekHVC color space. This chapter discusses how to: Create, copy, and destroy a colormap Specify colors by name or value Allocate, modify, and free color cells Read entries in a colormap Convert between color spaces Control aspects of color conversion Query the color gamut of a screen Add new color spaces All functions, types, and symbols in this chapter with the prefix ``Xcms'' are defined in <X11/Xcms.h>. X11/Xcms.h Files<X11/Xcms.h> Headers<X11/Xcms.h> The remaining functions and types are defined in <X11/Xlib.h>. X11/Xlib.h Files<X11/Xlib.h> Headers<X11/Xlib.h> Functions in this chapter manipulate the representation of color on the screen. For each possible value that a pixel can take in a window, there is a color cell in the colormap. For example, if a window is 4 bits deep, pixel values 0 through 15 are defined. A colormap is a collection of color cells. A color cell consists of a triple of red, green, and blue (RGB) values. The hardware imposes limits on the number of significant bits in these values. As each pixel is read out of display memory, the pixel is looked up in a colormap. The RGB value of the cell determines what color is displayed on the screen. On a grayscale display with a black-and-white monitor, the values are combined to determine the brightness on the screen. Typically, an application allocates color cells or sets of color cells to obtain the desired colors. The client can allocate read-only cells. In which case, the pixel values for these colors can be shared among multiple applications, and the RGB value of the cell cannot be changed. If the client allocates read/write cells, they are exclusively owned by the client, and the color associated with the pixel value can be changed at will. Cells must be allocated (and, if read/write, initialized with an RGB value) by a client to obtain desired colors. The use of pixel value for an unallocated cell results in an undefined color. Because colormaps are associated with windows, X supports displays with multiple colormaps and, indeed, different types of colormaps. If there are insufficient colormap resources in the display, some windows will display in their true colors, and others will display with incorrect colors. A window manager usually controls which windows are displayed in their true colors if more than one colormap is required for the color resources the applications are using. At any time, there is a set of installed colormaps for a screen. Windows using one of the installed colormaps display with true colors, and windows using other colormaps generally display with incorrect colors. You can control the set of installed colormaps by using and . Colormaps are local to a particular screen. Screens always have a default colormap, and programs typically allocate cells out of this colormap. Generally, you should not write applications that monopolize color resources. Although some hardware supports multiple colormaps installed at one time, many of the hardware displays built today support only a single installed colormap, so the primitives are written to encourage sharing of colormap entries between applications. The DefaultColormap macro returns the default colormap. The DefaultVisual macro returns the default visual type for the specified screen. Color map Possible visual types are StaticGray, GrayScale, StaticColor, PseudoColor, TrueColor, or DirectColor (see section 3.1). Color Structures Functions that operate only on RGB color space values use an XColor structure, which contains: XColor typedef struct { unsigned long pixel; /* pixel value */ unsigned short red, green, blue; /* rgb values */ char flags; /* DoRed, DoGreen, DoBlue */ char pad; } XColor; The red, green, and blue values are always in the range 0 to 65535 inclusive, independent of the number of bits actually used in the display hardware. The server scales these values down to the range used by the hardware. Black is represented by (0,0,0), and white is represented by (65535,65535,65535). Color In some functions, the flags member controls which of the red, green, and blue members is used and can be the inclusive OR of zero or more of DoRed, DoGreen, and DoBlue. Functions that operate on all color space values use an XcmsColor structure. This structure contains a union of substructures, each supporting color specification encoding for a particular color space. Like the XColor structure, the XcmsColor structure contains pixel and color specification information (the spec member in the XcmsColor structure). XcmsColor typedef unsigned long XcmsColorFormat; /* Color Specification Format */ typedef struct { union { XcmsRGB RGB; XcmsRGBi RGBi; XcmsCIEXYZ CIEXYZ; XcmsCIEuvY CIEuvY; XcmsCIExyY CIExyY; XcmsCIELab CIELab; XcmsCIELuv CIELuv; XcmsTekHVC TekHVC; XcmsPad Pad; } spec; unsigned long pixel; XcmsColorFormat format; } XcmsColor; /* Xcms Color Structure */ Because the color specification can be encoded for the various color spaces, encoding for the spec member is identified by the format member, which is of type XcmsColorFormat. The following macros define standard formats. #define XcmsUndefinedFormat 0x00000000 #define XcmsCIEXYZFormat 0x00000001 /* CIE XYZ */ #define XcmsCIEuvYFormat 0x00000002 /* CIE u'v'Y */ #define XcmsCIExyYFormat 0x00000003 /* CIE xyY */ #define XcmsCIELabFormat 0x00000004 /* CIE L*a*b* */ #define XcmsCIELuvFormat 0x00000005 /* CIE L*u*v* */ #define XcmsTekHVCFormat 0x00000006 /* TekHVC */ #define XcmsRGBFormat 0x80000000 /* RGB Device */ #define XcmsRGBiFormat 0x80000001 /* RGB Intensity */ Formats for device-independent color spaces are distinguishable from those for device-dependent spaces by the 32nd bit. If this bit is set, it indicates that the color specification is in a device-dependent form; otherwise, it is in a device-independent form. If the 31st bit is set, this indicates that the color space has been added to Xlib at run time (see section 6.12.4). The format value for a color space added at run time may be different each time the program is executed. If references to such a color space must be made outside the client (for example, storing a color specification in a file), then reference should be made by color space string prefix (see and ). Data types that describe the color specification encoding for the various color spaces are defined as follows: XcmsRGB typedef double XcmsFloat; typedef struct { unsigned short red; /* 0x0000 to 0xffff */ unsigned short green; /* 0x0000 to 0xffff */ unsigned short blue; /* 0x0000 to 0xffff */ } XcmsRGB; /* RGB Device */ XcmsRGBi typedef struct { XcmsFloat red; /* 0.0 to 1.0 */ XcmsFloat green; /* 0.0 to 1.0 */ XcmsFloat blue; /* 0.0 to 1.0 */ } XcmsRGBi; /* RGB Intensity */ XcmsCIEXYZ typedef struct { XcmsFloat X; XcmsFloat Y; /* 0.0 to 1.0 */ XcmsFloat Z; } XcmsCIEXYZ; /* CIE XYZ */ XcmsCIEuvY typedef struct { XcmsFloat u_prime; /* 0.0 to ~0.6 */ XcmsFloat v_prime; /* 0.0 to ~0.6 */ XcmsFloat Y; /* 0.0 to 1.0 */ } XcmsCIEuvY; /* CIE u'v'Y */ XcmsCIExyY typedef struct { XcmsFloat x; /* 0.0 to ~.75 */ XcmsFloat y; /* 0.0 to ~.85 */ XcmsFloat Y; /* 0.0 to 1.0 */ } XcmsCIExyY; /* CIE xyY */ XcmsCIELab typedef struct { XcmsFloat L_star; /* 0.0 to 100.0 */ XcmsFloat a_star; XcmsFloat b_star; } XcmsCIELab; /* CIE L*a*b* */ XcmsCIELuv typedef struct { XcmsFloat L_star; /* 0.0 to 100.0 */ XcmsFloat u_star; XcmsFloat v_star; } XcmsCIELuv; /* CIE L*u*v* */ XcmsTekHVC typedef struct { XcmsFloat H; /* 0.0 to 360.0 */ XcmsFloat V; /* 0.0 to 100.0 */ XcmsFloat C; /* 0.0 to 100.0 */ } XcmsTekHVC; /* TekHVC */ XcmsPad typedef struct { XcmsFloat pad0; XcmsFloat pad1; XcmsFloat pad2; XcmsFloat pad3; } XcmsPad; /* four doubles */ The device-dependent formats provided allow color specification in: RGB Intensity (XcmsRGBi) Red, green, and blue linear intensity values, floating-point values from 0.0 to 1.0, where 1.0 indicates full intensity, 0.5 half intensity, and so on. RGB Device (XcmsRGB) Red, green, and blue values appropriate for the specified output device. XcmsRGB values are of type unsigned short, scaled from 0 to 65535 inclusive, and are interchangeable with the red, green, and blue values in an XColor structure. It is important to note that RGB Intensity values are not gamma corrected values. In contrast, RGB Device values generated as a result of converting color specifications are always gamma corrected, and RGB Device values acquired as a result of querying a colormap or passed in by the client are assumed by Xlib to be gamma corrected. The term RGB value in this manual always refers to an RGB Device value. Color Strings Xlib provides a mechanism for using string names for colors. A color string may either contain an abstract color name or a numerical color specification. Color strings are case-insensitive. Color strings are used in the following functions: Xlib supports the use of abstract color names, for example, red or blue. A value for this abstract name is obtained by searching one or more color name databases. Xlib first searches zero or more client-side databases; the number, location, and content of these databases is implementation-dependent and might depend on the current locale. If the name is not found, Xlib then looks for the color in the X server's database. If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. A numerical color specification consists of a color space name and a set of values in the following syntax: <color_space_name>:<value>/.../<value> The following are examples of valid color strings. "CIEXYZ:0.3227/0.28133/0.2493" "RGBi:1.0/0.0/0.0" "rgb:00/ff/00" "CIELuv:50.0/0.0/0.0" The syntax and semantics of numerical specifications are given for each standard color space in the following sections. <acronym>RGB</acronym> Device String Specification An RGB Device specification is identified by the prefix ``rgb:'' and conforms to the following syntax: rgb:<red>/<green>/<blue> <red>, <green>, <blue> := h | hh | hhh | hhhh h := single hexadecimal digits (case insignificant) Note that h indicates the value scaled in 4 bits, hh the value scaled in 8 bits, hhh the value scaled in 12 bits, and hhhh the value scaled in 16 bits, respectively. Typical examples are the strings ``rgb:ea/75/52'' and ``rgb:ccc/320/320'', but mixed numbers of hexadecimal digit strings (``rgb:ff/a5/0'' and ``rgb:ccc/32/0'') are also allowed. For backward compatibility, an older syntax for RGB Device is supported, but its continued use is not encouraged. The syntax is an initial sharp sign character followed by a numeric specification, in one of the following formats: #RGB (4 bits each) #RRGGBB (8 bits each) #RRRGGGBBB (12 bits each) #RRRRGGGGBBBB (16 bits each) The R, G, and B represent single hexadecimal digits. When fewer than 16 bits each are specified, they represent the most significant bits of the value (unlike the ``rgb:'' syntax, in which values are scaled). For example, the string ``#3a7'' is the same as ``#3000a0007000''. <acronym>RGB</acronym> Intensity String Specification An RGB intensity specification is identified by the prefix ``rgbi:'' and conforms to the following syntax: rgbi:<red>/<green>/<blue> Note that red, green, and blue are floating-point values between 0.0 and 1.0, inclusive. The input format for these values is an optional sign, a string of numbers possibly containing a decimal point, and an optional exponent field containing an E or e followed by a possibly signed integer string. Device-Independent String Specifications The standard device-independent string specifications have the following syntax: CIEXYZ:<X>/<Y>/<Z> CIEuvY:<u>/<v>/<Y> CIExyY:<x>/<y>/<Y> CIELab:<L>/<a>/<b> CIELuv:<L>/<u>/<v> TekHVC:<H>/<V>/<C> All of the values (C, H, V, X, Y, Z, a, b, u, v, y, x) are floating-point values. The syntax for these values is an optional plus or minus sign, a string of digits possibly containing a decimal point, and an optional exponent field consisting of an ``E'' or ``e'' followed by an optional plus or minus followed by a string of digits. Color Conversion Contexts and Gamut Mapping When Xlib converts device-independent color specifications into device-dependent specifications and vice versa, it uses knowledge about the color limitations of the screen hardware. This information, typically called the device profile, Device profile is available in a Color Conversion Context (CCC). Color Conversion Context CCC Because a specified color may be outside the color gamut of the target screen and the white point associated with the color specification may differ from the white point inherent to the screen, Xlib applies gamut mapping when it encounters certain conditions: White point Gamut compression occurs when conversion of device-independent color specifications to device-dependent color specifications results in a color out of the target screen's gamut. White adjustment occurs when the inherent white point of the screen differs from the white point assumed by the client. Gamut handling methods are stored as callbacks in the CCC, which in turn are used by the color space conversion routines. Client data is also stored in the CCC for each callback. The CCC also contains the white point the client assumes to be associated with color specifications (that is, the Client White Point). Client White Point Gamut compression Gamut handling White point adjustment The client can specify the gamut handling callbacks and client data as well as the Client White Point. Xlib does not preclude the X client from performing other forms of gamut handling (for example, gamut expansion); however, Xlib does not provide direct support for gamut handling other than white adjustment and gamut compression. Associated with each colormap is an initial CCC transparently generated by Xlib. Color Conversion Contextcreation Therefore, when you specify a colormap as an argument to an Xlib function, you are indirectly specifying a CCC. CCCof colormap Color Conversion Contextof colormap There is a default CCC associated with each screen. Newly created CCCs inherit attributes from the default CCC, so the default CCC attributes can be modified to affect new CCCs. CCCdefault Color Conversion Contextdefault Xcms functions in which gamut mapping can occur return Status and have specific status values defined for them, as follows: XcmsFailure indicates that the function failed. XcmsSuccess indicates that the function succeeded. In addition, if the function performed any color conversion, the colors did not need to be compressed. XcmsSuccessWithCompression indicates the function performed color conversion and at least one of the colors needed to be compressed. The gamut compression method is determined by the gamut compression procedure in the CCC that is specified directly as a function argument or in the CCC indirectly specified by means of the colormap argument. Creating, Copying, and Destroying Colormaps To create a colormap for a screen, use . XCreateColormap Colormap XCreateColormap Display *display Window w Visual *visual int alloc display Specifies the connection to the X server. w Specifies the window on whose screen you want to create a colormap. visual Specifies a visual type supported on the screen. If the visual type is not one supported by the screen, a BadMatch error results. alloc Specifies the colormap entries to be allocated. You can pass AllocNone or AllocAll. The function creates a colormap of the specified visual type for the screen on which the specified window resides and returns the colormap ID associated with it. Note that the specified window is only used to determine the screen. The initial values of the colormap entries are undefined for the visual classes GrayScale, PseudoColor, and DirectColor. For StaticGray, StaticColor, and TrueColor, the entries have defined values, but those values are specific to the visual and are not defined by X. For StaticGray, StaticColor, and TrueColor, alloc must be AllocNone, or a BadMatch error results. For the other visual classes, if alloc is AllocNone, the colormap initially has no allocated entries, and clients can allocate them. For information about the visual types, see section 3.1. If alloc is AllocAll, the entire colormap is allocated writable. The initial values of all allocated entries are undefined. For GrayScale and PseudoColor, the effect is as if an call returned all pixel values from zero to N - 1, where N is the colormap entries value in the specified visual. For DirectColor, the effect is as if an call returned a pixel value of zero and red_mask, green_mask, and blue_mask values containing the same bits as the corresponding masks in the specified visual. However, in all cases, none of these entries can be freed by using . can generate BadAlloc, BadMatch, BadValue, and BadWindow errors. To create a new colormap when the allocation out of a previously shared colormap has failed because of resource exhaustion, use . XCopyColormapAndFree Colormap XCopyColormapAndFree Display *display Colormap colormap display Specifies the connection to the X server. colormap Specifies the colormap. The function creates a colormap of the same visual type and for the same screen as the specified colormap and returns the new colormap ID. It also moves all of the client's existing allocation from the specified colormap to the new colormap with their color values intact and their read-only or writable characteristics intact and frees those entries in the specified colormap. Color values in other entries in the new colormap are undefined. If the specified colormap was created by the client with alloc set to AllocAll, the new colormap is also created with AllocAll, all color values for all entries are copied from the specified colormap, and then all entries in the specified colormap are freed. If the specified colormap was not created by the client with AllocAll, the allocations to be moved are all those pixels and planes that have been allocated by the client using , , , or and that have not been freed since they were allocated. can generate BadAlloc and BadColor errors. To destroy a colormap, use . XFreeColormap XFreeColormap Display *display Colormap colormap display Specifies the connection to the X server. colormap Specifies the colormap that you want to destroy. The function deletes the association between the colormap resource ID and the colormap and frees the colormap storage. However, this function has no effect on the default colormap for a screen. If the specified colormap is an installed map for a screen, it is uninstalled (see ). If the specified colormap is defined as the colormap for a window (by , , or ), changes the colormap associated with the window to None and generates a ColormapNotify event. X does not define the colors displayed for a window with a colormap of None. can generate a BadColor error. Mapping Color Names to Values To map a color name to an RGB value, use . Colornaming XLookupColor Status XLookupColor Display *display Colormap colormap char *color_name XColor *exact_def_return XColor *screen_def_return display Specifies the connection to the X server. colormap Specifies the colormap. color_name Specifies the color name string (for example, red) whose color definition structure you want returned. exact_def_return Returns the exact RGB values. screen_def_return Returns the closest RGB values provided by the hardware. The function looks up the string name of a color with respect to the screen associated with the specified colormap. It returns both the exact color values and the closest values provided by the screen with respect to the visual type of the specified colormap. If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. returns nonzero if the name is resolved; otherwise, it returns zero. can generate a BadColor error. To map a color name to the exact RGB value, use . Colornaming XParseColor Status XParseColor Display *display Colormap colormap char *spec XColor *exact_def_return display Specifies the connection to the X server. colormap Specifies the colormap. spec Specifies the color name string; case is ignored. exact_def_return Returns the exact color value for later use and sets the DoRed, DoGreen, and DoBlue flags. The function looks up the string name of a color with respect to the screen associated with the specified colormap. It returns the exact color value. If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. returns nonzero if the name is resolved; otherwise, it returns zero. can generate a BadColor error. To map a color name to a value in an arbitrary color space, use . Colornaming XcmsLookupColor Status XcmsLookupColor Display *display Colormap colormap char *color_string XcmsColor *color_exact_return XcmsColor *color_screen_return XcmsColorFormat result_format display Specifies the connection to the X server. colormap Specifies the colormap. color_string Specifies the color string(St. color_exact_return Returns the color specification parsed from the color string or parsed from the corresponding string found in a color-name database. color_screen_return Returns the color that can be reproduced on the screen. result_format Specifies the color format for the returned color specifications (color_screen_return and color_exact_return arguments). If the format is XcmsUndefinedFormat and the color string contains a numerical color specification, the specification is returned in the format used in that numerical color specification. If the format is XcmsUndefinedFormat and the color string contains a color name, the specification is returned in the format used to store the color in the database. The function looks up the string name of a color with respect to the screen associated with the specified colormap. It returns both the exact color values and the closest values provided by the screen with respect to the visual type of the specified colormap. The values are returned in the format specified by result_format. If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. returns XcmsSuccess or XcmsSuccessWithCompression if the name is resolved; otherwise, it returns XcmsFailure. If XcmsSuccessWithCompression is returned, the color specification returned in color_screen_return is the result of gamut compression. Allocating and Freeing Color Cells There are two ways of allocating color cells: explicitly as read-only entries, one pixel value at a time, or read/write, where you can allocate a number of color cells and planes simultaneously. Read-only colormap cells A read-only cell has its RGB value set by the server. Read/write colormap cells Read/write cells do not have defined colors initially; functions described in the next section must be used to store values into them. Although it is possible for any client to store values into a read/write cell allocated by another client, read/write cells normally should be considered private to the client that allocated them. Read-only colormap cells are shared among clients. The server counts each allocation and freeing of the cell by clients. When the last client frees a shared cell, the cell is finally deallocated. If a single client allocates the same read-only cell multiple times, the server counts each such allocation, not just the first one. To allocate a read-only color cell with an RGB value, use . Allocationread-only colormap cells Read-only colormap cellsallocating Colorallocation XAllocColor Status XAllocColor Display *display Colormap colormap XColor *screen_in_out display Specifies the connection to the X server. colormap Specifies the colormap. screen_in_out Specifies and returns the values actually used in the colormap. The function allocates a read-only colormap entry corresponding to the closest RGB value supported by the hardware. returns the pixel value of the color closest to the specified RGB elements supported by the hardware and returns the RGB value actually used. The corresponding colormap cell is read-only. In addition, returns nonzero if it succeeded or zero if it failed. Color map Colorallocation Allocationcolormap read-only colormap cells Multiple clients that request the same effective RGB value can be assigned the same read-only entry, thus allowing entries to be shared. When the last client deallocates a shared cell, it is deallocated. does not use or affect the flags in the XColor structure. can generate a BadColor error. delim %% To allocate a read-only color cell with a color in arbitrary format, use . Allocationread-only colormap cells Read-only colormap cellsallocating Colorallocation XcmsAllocColor Status XcmsAllocColor Display *display Colormap colormap XcmsColor *color_in_out XcmsColorFormat result_format display Specifies the connection to the X server. colormap Specifies the colormap. color_in_out Specifies the color to allocate and returns the pixel and color that is actually used in the colormap. result_format Specifies the color format for the returned color specification. The function is similar to except the color can be specified in any format. The function ultimately calls to allocate a read-only color cell (colormap entry) with the specified color. first converts the color specified to an RGB value and then passes this to . returns the pixel value of the color cell and the color specification actually allocated. This returned color specification is the result of converting the RGB value returned by into the format specified with the result_format argument. If there is no interest in a returned color specification, unnecessary computation can be bypassed if result_format is set to XcmsRGBFormat. The corresponding colormap cell is read-only. If this routine returns XcmsFailure, the color_in_out color specification is left unchanged. can generate a BadColor error. To allocate a read-only color cell using a color name and return the closest color supported by the hardware in RGB format, use . Allocationread-only colormap cells Read-only colormap cellsallocating Colornaming Colorallocation XAllocNamedColor Status XAllocNamedColor Display *display Colormap colormap char *color_name XColor *screen_def_return XColor *exact_def_return display Specifies the connection to the X server. colormap Specifies the colormap. color_name Specifies the color name string (for example, red) whose color definition structure you want returned. screen_def_return Returns the closest RGB values provided by the hardware. exact_def_return Returns the exact RGB values. The function looks up the named color with respect to the screen that is associated with the specified colormap. It returns both the exact database definition and the closest color supported by the screen. The allocated color cell is read-only. The pixel value is returned in screen_def_return. If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. If screen_def_return and exact_def_return point to the same structure, the pixel field will be set correctly, but the color values are undefined. returns nonzero if a cell is allocated; otherwise, it returns zero. can generate a BadColor error. To allocate a read-only color cell using a color name and return the closest color supported by the hardware in an arbitrary format, use . Allocationread-only colormap cells Read-only colormap cellsallocating Colornaming Colorallocation XcmsAllocNamedColor Status XcmsAllocNamedColor Display *display Colormap colormap char *color_string XcmsColor *color_screen_return XcmsColor *color_exact_return XcmsColorFormat result_format display Specifies the connection to the X server. colormap Specifies the colormap. color_string Specifies the color string whose color definition structure is to be returned. color_screen_return Returns the pixel value of the color cell and color specification that actually is stored for that cell. color_exact_return Returns the color specification parsed from the color string or parsed from the corresponding string found in a color-name database. result_format Specifies the color format for the returned color specifications (color_screen_return and color_exact_return arguments). If the format is XcmsUndefinedFormat and the color string contains a numerical color specification, the specification is returned in the format used in that numerical color specification. If the format is XcmsUndefinedFormat and the color string contains a color name, the specification is returned in the format used to store the color in the database. The function is similar to except that the color returned can be in any format specified. This function ultimately calls to allocate a read-only color cell with the color specified by a color string. The color string is parsed into an XcmsColor structure (see ), converted to an RGB value, and finally passed to . If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. This function returns both the color specification as a result of parsing (exact specification) and the actual color specification stored (screen specification). This screen specification is the result of converting the RGB value returned by into the format specified in result_format. If there is no interest in a returned color specification, unnecessary computation can be bypassed if result_format is set to XcmsRGBFormat. If color_screen_return and color_exact_return point to the same structure, the pixel field will be set correctly, but the color values are undefined. can generate a BadColor error. To allocate read/write color cell and color plane combinations for a PseudoColor model, use . Read/write colormap cellsallocating Allocationread/write colormap cells Colorallocation XAllocColorCells Status XAllocColorCells Display *display Colormap colormap Bool contig unsigned long plane_masks_return[] unsigned int nplanes unsigned long pixels_return[] unsigned int npixels display Specifies the connection to the X server. colormap Specifies the colormap. contig Specifies a Boolean value that indicates whether the planes must be contiguous. plane_mask_return Returns an array of plane masks. nplanes Specifies the number of plane masks that are to be returned in the plane masks array. pixels_return Returns an array of pixel values. npixels Specifies the number of pixel values that are to be returned in the pixels_return array. The function allocates read/write color cells. The number of colors must be positive and the number of planes nonnegative, or a BadValue error results. If ncolors and nplanes are requested, then ncolors pixels and nplane plane masks are returned. No mask will have any bits set to 1 in common with any other mask or with any of the pixels. By ORing together each pixel with zero or more masks, ncolors × 2nplanes distinct pixels can be produced. All of these are allocated writable by the request. For GrayScale or PseudoColor, each mask has exactly one bit set to 1. For DirectColor, each has exactly three bits set to 1. If contig is True and if all masks are ORed together, a single contiguous set of bits set to 1 will be formed for GrayScale or PseudoColor and three contiguous sets of bits set to 1 (one within each pixel subfield) for DirectColor. The RGB values of the allocated entries are undefined. returns nonzero if it succeeded or zero if it failed. can generate BadColor and BadValue errors. To allocate read/write color resources for a DirectColor model, use . Read/write colormap planesallocating Allocationread/write colormap planes Colorallocation XAllocColorPlanes Status XAllocColorPlanes Display *display Colormap colormap Bool contig unsigned long pixels_return[] int ncolors int nreds int ngreens int nblues unsigned long *rmask_return unsigned long *gmask_return unsigned long *bmask_return display Specifies the connection to the X server. colormap Specifies the colormap. contig Specifies a Boolean value that indicates whether the planes must be contiguous. pixels_return Returns an array of pixel values. returns the pixel values in this array. ncolors Specifies the number of pixel values that are to be returned in the pixels_return array. nreds ngreens nblues Specify the number of red, green, and blue planes. The value you pass must be nonnegative. rmask_return gmask_return bmask_return Return bit masks for the red, green, and blue planes. The specified ncolors must be positive; and nreds, ngreens, and nblues must be nonnegative, or a BadValue error results. If ncolors colors, nreds reds, ngreens greens, and nblues blues are requested, ncolors pixels are returned; and the masks have nreds, ngreens, and nblues bits set to 1, respectively. If contig is True, each mask will have a contiguous set of bits set to 1. No mask will have any bits set to 1 in common with any other mask or with any of the pixels. For DirectColor, each mask will lie within the corresponding pixel subfield. By ORing together subsets of masks with each pixel value, ncolors × 2(nreds+ngreens+nblues) distinct pixel values can be produced. All of these are allocated by the request. However, in the colormap, there are only ncolors × 2nreds independent red entries, ncolors × 2ngreens independent green entries, and ncolors × 2nblues independent blue entries. This is true even for PseudoColor. When the colormap entry of a pixel value is changed (using , , or ), the pixel is decomposed according to the masks, and the corresponding independent entries are updated. returns nonzero if it succeeded or zero if it failed. can generate BadColor and BadValue errors. Freeingcolors To free colormap cells, use . XFreeColors Colordeallocation XFreeColors Display *display Colormap colormap unsigned long pixels[] int npixels unsigned long planes display Specifies the connection to the X server. colormap Specifies the colormap. pixels Specifies an array of pixel values that map to the cells in the specified colormap. npixels Specifies the number of pixels. planes Specifies the planes you want to free. The function frees the cells represented by pixels whose values are in the pixels array. The planes argument should not have any bits set to 1 in common with any of the pixels. The set of all pixels is produced by ORing together subsets of the planes argument with the pixels. The request frees all of these pixels that were allocated by the client (using XAllocColor XAllocNamedColor XAllocColorCells XAllocColorPlanes , , , and ). Note that freeing an individual pixel obtained from may not actually allow it to be reused until all of its related pixels are also freed. Similarly, a read-only entry is not actually freed until it has been freed by all clients, and if a client allocates the same read-only entry multiple times, it must free the entry that many times before the entry is actually freed. All specified pixels that are allocated by the client in the colormap are freed, even if one or more pixels produce an error. If a specified pixel is not a valid index into the colormap, a BadValue error results. If a specified pixel is not allocated by the client (that is, is unallocated or is only allocated by another client) or if the colormap was created with all entries writable (by passing AllocAll to ), a BadAccess error results. If more than one pixel is in error, the one that gets reported is arbitrary. can generate BadAccess, BadColor, and BadValue errors. Modifying and Querying Colormap Cells To store an RGB value in a single colormap cell, use . Colorstoring XStoreColor XStoreColor Display *display Colormap colormap XColor *color display Specifies the connection to the X server. colormap Specifies the colormap. color Specifies the pixel and RGB values. The function changes the colormap entry of the pixel value specified in the pixel member of the XColor structure. You specified this value in the pixel member of the XColor structure. This pixel value must be a read/write cell and a valid index into the colormap. If a specified pixel is not a valid index into the colormap, a BadValue error results. also changes the red, green, and/or blue color components. You specify which color components are to be changed by setting DoRed, DoGreen, and/or DoBlue in the flags member of the XColor structure. If the colormap is an installed map for its screen, the changes are visible immediately. can generate BadAccess, BadColor, and BadValue errors. To store multiple RGB values in multiple colormap cells, use . Colorstoring XStoreColors XStoreColors Display *display Colormap colormap XColor color[] int ncolors display Specifies the connection to the X server. colormap Specifies the colormap. color Specifies an array of color definition structures to be stored. ncolors Specifies the number of XColor structures in the color definition array. The function changes the colormap entries of the pixel values specified in the pixel members of the XColor structures. You specify which color components are to be changed by setting DoRed, DoGreen, and/or DoBlue in the flags member of the XColor structures. If the colormap is an installed map for its screen, the changes are visible immediately. changes the specified pixels if they are allocated writable in the colormap by any client, even if one or more pixels generates an error. If a specified pixel is not a valid index into the colormap, a BadValue error results. If a specified pixel either is unallocated or is allocated read-only, a BadAccess error results. If more than one pixel is in error, the one that gets reported is arbitrary. can generate BadAccess, BadColor, and BadValue errors. To store a color of arbitrary format in a single colormap cell, use . Colorstoring XcmsStoreColor Status XcmsStoreColor Display *display Colormap colormap XcmsColor *color display Specifies the connection to the X server. colormap Specifies the colormap. color Specifies the color cell and the color to store. Values specified in this XcmsColor structure remain unchanged on return. The function converts the color specified in the XcmsColor structure into RGB values. It then uses this RGB specification in an XColor structure, whose three flags (DoRed, DoGreen, and DoBlue) are set, in a call to to change the color cell specified by the pixel member of the XcmsColor structure. This pixel value must be a valid index for the specified colormap, and the color cell specified by the pixel value must be a read/write cell. If the pixel value is not a valid index, a BadValue error results. If the color cell is unallocated or is allocated read-only, a BadAccess error results. If the colormap is an installed map for its screen, the changes are visible immediately. Note that has no return value; therefore, an XcmsSuccess return value from this function indicates that the conversion to RGB succeeded and the call to was made. To obtain the actual color stored, use . Because of the screen's hardware limitations or gamut compression, the color stored in the colormap may not be identical to the color specified. can generate BadAccess, BadColor, and BadValue errors. To store multiple colors of arbitrary format in multiple colormap cells, use . Colorstoring XcmsStoreColors Status XcmsStoreColors Display *display Colormap colormap XcmsColor colors[] int ncolors Bool compression_flags_return[] display Specifies the connection to the X server. colormap Specifies the colormap. colors Specifies the color specification array of XcmsColor structures, each specifying a color cell and the color to store in that cell. Values specified in the array remain unchanged upon return. ncolors Specifies the number of XcmsColor structures in the color-specification array. compression_flags_return Returns an array of Boolean values indicating compression status. If a non-NULL pointer is supplied, each element of the array is set to True if the corresponding color was compressed and False otherwise. Pass NULL if the compression status is not useful. The function converts the colors specified in the array of XcmsColor structures into RGB values and then uses these RGB specifications in XColor structures, whose three flags (DoRed, DoGreen, and DoBlue) are set, in a call to to change the color cells specified by the pixel member of the corresponding XcmsColor structure. Each pixel value must be a valid index for the specified colormap, and the color cell specified by each pixel value must be a read/write cell. If a pixel value is not a valid index, a BadValue error results. If a color cell is unallocated or is allocated read-only, a BadAccess error results. If more than one pixel is in error, the one that gets reported is arbitrary. If the colormap is an installed map for its screen, the changes are visible immediately. Note that has no return value; therefore, an XcmsSuccess return value from this function indicates that conversions to RGB succeeded and the call to was made. To obtain the actual colors stored, use . Because of the screen's hardware limitations or gamut compression, the colors stored in the colormap may not be identical to the colors specified. can generate BadAccess, BadColor, and BadValue errors. To store a color specified by name in a single colormap cell, use . Colorstoring Colornaming XStoreNamedColor XStoreNamedColor Display *display Colormap colormap char *color unsigned long pixel int flags display Specifies the connection to the X server. colormap Specifies the colormap. color Specifies the color name string (for example, red). pixel Specifies the entry in the colormap. flags Specifies which red, green, and blue components are set. The function looks up the named color with respect to the screen associated with the colormap and stores the result in the specified colormap. The pixel argument determines the entry in the colormap. The flags argument determines which of the red, green, and blue components are set. You can set this member to the bitwise inclusive OR of the bits DoRed, DoGreen, and DoBlue. If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. If the specified pixel is not a valid index into the colormap, a BadValue error results. If the specified pixel either is unallocated or is allocated read-only, a BadAccess error results. can generate BadAccess, BadColor, BadName, and BadValue errors. The and functions take pixel values in the pixel member of XColor structures and store in the structures the RGB values for those pixels from the specified colormap. The values returned for an unallocated entry are undefined. These functions also set the flags member in the XColor structure to all three colors. If a pixel is not a valid index into the specified colormap, a BadValue error results. If more than one pixel is in error, the one that gets reported is arbitrary. To query the RGB value of a single colormap cell, use . Colorquerying XQueryColor XQueryColor Display *display Colormap colormap XColor *def_in_out display Specifies the connection to the X server. colormap Specifies the colormap. def_in_out Specifies and returns the RGB values for the pixel specified in the structure. The function returns the current RGB value for the pixel in the XColor structure and sets the DoRed, DoGreen, and DoBlue flags. can generate BadColor and BadValue errors. To query the RGB values of multiple colormap cells, use . Colorquerying XQueryColors XQueryColors Display *display Colormap colormap XColor defs_in_out[] int ncolors display Specifies the connection to the X server. colormap Specifies the colormap. defs_in_out Specifies and returns an array of color definition structures for the pixel specified in the structure. ncolors Specifies the number of XColor structures in the color definition array. The function returns the RGB value for each pixel in each XColor structure and sets the DoRed, DoGreen, and DoBlue flags in each structure. can generate BadColor and BadValue errors. To query the color of a single colormap cell in an arbitrary format, use . Colorquerying XcmsQueryColor Status XcmsQueryColor Display *display Colormap colormap XcmsColor *color_in_out XcmsColorFormat result_format display Specifies the connection to the X server. colormap Specifies the colormap. color_in_out Specifies the pixel member that indicates the color cell to query. The color specification stored for the color cell is returned in this XcmsColor structure. result_format Specifies the color format for the returned color specification. The function obtains the RGB value for the pixel value in the pixel member of the specified XcmsColor structure and then converts the value to the target format as specified by the result_format argument. If the pixel is not a valid index in the specified colormap, a BadValue error results. can generate BadColor and BadValue errors. To query the color of multiple colormap cells in an arbitrary format, use . Colorquerying XcmsQueryColors Status XcmsQueryColors Display *display Colormap colormap XcmsColor colors_in_out[] unsigned int ncolors XcmsColorFormat result_format display Specifies the connection to the X server. colormap Specifies the colormap. colors_in_out Specifies an array of XcmsColor structures, each pixel member indicating the color cell to query. The color specifications for the color cells are returned in these structures. ncolors Specifies the number of XcmsColor structures in the color-specification array. result_format Specifies the color format for the returned color specification. The function obtains the RGB values for pixel values in the pixel members of XcmsColor structures and then converts the values to the target format as specified by the result_format argument. If a pixel is not a valid index into the specified colormap, a BadValue error results. If more than one pixel is in error, the one that gets reported is arbitrary. can generate BadColor and BadValue errors. Color Conversion Context Functions This section describes functions to create, modify, and query Color Conversion Contexts (CCCs). Associated with each colormap is an initial CCC transparently generated by Xlib. Color Conversion Contextcreation Therefore, when you specify a colormap as an argument to a function, you are indirectly specifying a CCC. CCCof colormap Color Conversion Contextof colormap The CCC attributes that can be modified by the X client are: Client White Point Gamut compression procedure and client data White point adjustment procedure and client data The initial values for these attributes are implementation specific. The CCC attributes for subsequently created CCCs can be defined by changing the CCC attributes of the default CCC. CCCdefault Color Conversion Contextdefault There is a default CCC associated with each screen. Getting and Setting the Color Conversion Context of a Colormap To obtain the CCC associated with a colormap, use . XcmsCCCOfColormap ColormapCCC of CCCof colormap Color Conversion Contextof colormap XcmsCCC XcmsCCCOfColormap Display *display Colormap colormap display Specifies the connection to the X server. colormap Specifies the colormap. The function returns the CCC associated with the specified colormap. Once obtained, the CCC attributes can be queried or modified. Unless the CCC associated with the specified colormap is changed with , this CCC is used when the specified colormap is used as an argument to color functions. To change the CCC associated with a colormap, use . XcmsSetCCCOfColormap ColormapCCC of CCCof colormap Color Conversion Contextof colormap XcmsCCC XcmsSetCCCOfColormap Display *display Colormap colormap XcmsCCC ccc display Specifies the connection to the X server. colormap Specifies the colormap. ccc Specifies the CCC. The function changes the CCC associated with the specified colormap. It returns the CCC previously associated with the colormap. If they are not used again in the application, CCCs should be freed by calling . Several colormaps may share the same CCC without restriction; this includes the CCCs generated by Xlib with each colormap. Xlib, however, creates a new CCC with each new colormap. Obtaining the Default Color Conversion Context You can change the default CCC attributes for subsequently created CCCs by changing the CCC attributes of the default CCC. CCCdefault Color Conversion Contextdefault A default CCC is associated with each screen. To obtain the default CCC for a screen, use . XcmsDefaultCCC Color Conversion Contextdefault CCCdefault XcmsCCC XcmsDefaultCCC Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. The function returns the default CCC for the specified screen. Its visual is the default visual of the screen. Its initial gamut compression and white point adjustment procedures as well as the associated client data are implementation specific. Color Conversion Context Macros Applications should not directly modify any part of the XcmsCCC. The following lists the C language macros, their corresponding function equivalents for other language bindings, and what data they both can return. DisplayOfCCC XcmsDisplayOfCCC DisplayOfCCC XcmsCCC ccc Display *XcmsDisplayOfCCC XcmsCCC ccc ccc Specifies the CCC. Both return the display associated with the specified CCC. VisualOfCCC XcmsVisualOfCCC VisualOfCCC XcmsCCC ccc Visual *XcmsVisualOfCCC XcmsCCC ccc ccc Specifies the CCC. Both return the visual associated with the specified CCC. ScreenNumberOfCCC XcmsScreenNumberOfCCC ScreenNumberOfCCC XcmsCCC ccc int XcmsScreenNumberOfCCC XcmsCCC ccc ccc Specifies the CCC. Both return the number of the screen associated with the specified CCC. ScreenWhitePointOfCCC XcmsScreenWhitePointOfCCC ScreenWhitePointOfCCC XcmsCCC ccc XcmsColor XcmsScreenWhitePointOfCCC XcmsCCC ccc ccc Specifies the CCC. Both return the white point of the screen associated with the specified CCC. ClientWhitePointOfCCC XcmsClientWhitePointOfCCC ClientWhitePointOfCCC XcmsCCC ccc XcmsColor *XcmsClientWhitePointOfCCC XcmsCCC ccc ccc Specifies the CCC. Both return the Client White Point of the specified CCC. Modifying Attributes of a Color Conversion Context To set the Client White Point in the CCC, use . XcmsSetWhitePoint Client White Pointof Color Conversion Context Status XcmsSetWhitePoint XcmsCCC ccc XcmsColor *color ccc Specifies the CCC. color Specifies the new Client White Point. The function changes the Client White Point in the specified CCC. Note that the pixel member is ignored and that the color specification is left unchanged upon return. The format for the new white point must be XcmsCIEXYZFormat, XcmsCIEuvYFormat, XcmsCIExyYFormat, or XcmsUndefinedFormat. If the color argument is NULL, this function sets the format component of the Client White Point specification to XcmsUndefinedFormat, indicating that the Client White Point is assumed to be the same as the Screen White Point. This function returns nonzero status if the format for the new white point is valid; otherwise, it returns zero. To set the gamut compression procedure and corresponding client data in a specified CCC, use . XcmsSetCompressionProc Gamut compressionsetting in Color Conversion Context Gamut compressionprocedure Gamut compressionclient data XcmsCompressionProc XcmsSetCompressionProc XcmsCCC ccc XcmsCompressionProc compression_proc XPointer client_data ccc Specifies the CCC. compression_proc Specifies the gamut compression procedure that is to be applied when a color lies outside the screen's color gamut. If NULL is specified and a function using this CCC must convert a color specification to a device-dependent format and encounters a color that lies outside the screen's color gamut, that function will return XcmsFailure. client_data Specifies client data for gamut compression procedure or NULL. The function first sets the gamut compression procedure and client data in the specified CCC with the newly specified procedure and client data and then returns the old procedure. To set the white point adjustment procedure and corresponding client data in a specified CCC, use . XcmsSetWhiteAdjustProc White point adjustmentsetting in Color Conversion Context White point adjustmentprocedure White point adjustmentclient data XcmsWhiteAdjustProc XcmsSetWhiteAdjustProc XcmsCCC ccc XcmsWhiteAdjustProc white_adjust_proc XPointer client_data ccc Specifies the CCC. white_adjust_proc Specifies the white point adjustment procedure. client_data Specifies client data for white point adjustment procedure or NULL. The function first sets the white point adjustment procedure and client data in the specified CCC with the newly specified procedure and client data and then returns the old procedure. Creating and Freeing a Color Conversion Context You can explicitly create a CCC within your application by calling . These created CCCs can then be used by those functions that explicitly call for a CCC argument. Old CCCs that will not be used by the application should be freed using . To create a CCC, use . XcmsCreateCCC Color Conversion Contextcreation CCCcreation XcmsCCC XcmsCreateCCC Display *display int screen_number Visual *visual XcmsColor *client_white_point XcmsCompressionProc compression_proc XPointer compression_client_data XcmsWhiteAdjustProc white_adjust_proc XPointer white_adjust_client_data display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. visual Specifies the visual type. client_white_point Specifies the Client White Point. If NULL is specified, the Client White Point is to be assumed to be the same as the Screen White Point. Note that the pixel member is ignored. compression_proc Specifies the gamut compression procedure that is to be applied when a color lies outside the screen's color gamut. If NULL is specified and a function using this CCC must convert a color specification to a device-dependent format and encounters a color that lies outside the screen's color gamut, that function will return XcmsFailure. compression_client_data Specifies client data for use by the gamut compression procedure or NULL. white_adjust_proc Specifies the white adjustment procedure that is to be applied when the Client White Point differs from the Screen White Point. NULL indicates that no white point adjustment is desired. white_adjust_client_data Specifies client data for use with the white point adjustment procedure or NULL. The function creates a CCC for the specified display, screen, and visual. To free a CCC, use . XcmsFreeCCC Color Conversion Contextfreeing CCCfreeing void XcmsFreeCCC XcmsCCC ccc ccc Specifies the CCC. The function frees the memory used for the specified CCC. Note that default CCCs and those currently associated with colormaps are ignored. Converting between Color Spaces To convert an array of color specifications in arbitrary color formats to a single destination format, use . Color conversion Colorconversion XcmsConvertColors Status XcmsConvertColors XcmsCCC ccc XcmsColor colors_in_out[] unsigned int ncolors XcmsColorFormat target_format Bool compression_flags_return[] ccc Specifies the CCC. If conversion is between device-independent color spaces only (for example, TekHVC to CIELuv), the CCC is necessary only to specify the Client White Point. colors_in_out Specifies an array of color specifications. Pixel members are ignored and remain unchanged upon return. ncolors Specifies the number of XcmsColor structures in the color-specification array. target_format Specifies the target color specification format. compression_flags_return Returns an array of Boolean values indicating compression status. If a non-NULL pointer is supplied, each element of the array is set to True if the corresponding color was compressed and False otherwise. Pass NULL if the compression status is not useful. The function converts the color specifications in the specified array of XcmsColor structures from their current format to a single target format, using the specified CCC. When the return value is XcmsFailure, the contents of the color specification array are left unchanged. The array may contain a mixture of color specification formats (for example, 3 CIE XYZ, 2 CIE Luv, and so on). When the array contains both device-independent and device-dependent color specifications and the target_format argument specifies a device-dependent format (for example, XcmsRGBiFormat, XcmsRGBFormat), all specifications are converted to CIE XYZ format and then to the target device-dependent format. Callback Functions This section describes the gamut compression and white point adjustment callbacks. The gamut compression procedure specified in the CCC is called when an attempt to convert a color specification from XcmsCIEXYZ to a device-dependent format (typically XcmsRGBi) results in a color that lies outside the screen's color gamut. If the gamut compression procedure requires client data, this data is passed via the gamut compression client data in the CCC. During color specification conversion between device-independent and device-dependent color spaces, if a white point adjustment procedure is specified in the CCC, it is triggered when the Client White Point and Screen White Point differ. If required, the client data is obtained from the CCC. Prototype Gamut Compression Procedure The gamut compression callback interface must adhere to the following: XcmsCompressionProc typedef Status(*XcmsCompressionProc) XcmsCCC ccc XcmsColor colors_in_out[] unsigned int ncolors unsigned int index Bool compression_flags_return[] ccc Specifies the CCC. colors_in_out Specifies an array of color specifications. Pixel members should be ignored and must remain unchanged upon return. ncolors Specifies the number of XcmsColor structures in the color-specification array. index Specifies the index into the array of XcmsColor structures for the encountered color specification that lies outside the screen's color gamut. Valid values are 0 (for the first element) to ncolors - 1. compression_flags_return Returns an array of Boolean values for indicating compression status. If a non-NULL pointer is supplied and a color at a given index is compressed, then True should be stored at the corresponding index in this array; otherwise, the array should not be modified. When implementing a gamut compression procedure, consider the following rules and assumptions: The gamut compression procedure can attempt to compress one or multiple specifications at a time. When called, elements 0 to index - 1 in the color specification array can be assumed to fall within the screen's color gamut. In addition, these color specifications are already in some device-dependent format (typically XcmsRGBi). If any modifications are made to these color specifications, they must be in their initial device-dependent format upon return. When called, the element in the color specification array specified by the index argument contains the color specification outside the screen's color gamut encountered by the calling routine. In addition, this color specification can be assumed to be in XcmsCIEXYZ. Upon return, this color specification must be in XcmsCIEXYZ. When called, elements from index to ncolors - 1 in the color specification array may or may not fall within the screen's color gamut. In addition, these color specifications can be assumed to be in XcmsCIEXYZ. If any modifications are made to these color specifications, they must be in XcmsCIEXYZ upon return. The color specifications passed to the gamut compression procedure have already been adjusted to the Screen White Point. This means that at this point the color specification's white point is the Screen White Point. If the gamut compression procedure uses a device-independent color space not initially accessible for use in the color management system, use to ensure that it is added. Supplied Gamut Compression Procedures The following equations are useful in describing gamut compression functions: delim %% %CIELab~Psychometric~Chroma ~=~ sqrt(a_star sup 2 ~+~ b_star sup 2 )% %CIELab~Psychometric~Hue ~=~ tan sup -1 left [ b_star over a_star right ]% %CIELuv~Psychometric~Chroma ~=~ sqrt(u_star sup 2 ~+~ v_star sup 2 )% %CIELuv~Psychometric~Hue ~=~ tan sup -1 left [ v_star over u_star right ]% The gamut compression callback procedures provided by Xlib are as follows: XcmsCIELabClipL This brings the encountered out-of-gamut color specification into the screen's color gamut by reducing or increasing CIE metric lightness (L*) in the CIE L*a*b* color space until the color is within the gamut. If the Psychometric Chroma of the color specification is beyond maximum for the Psychometric Hue Angle, then while maintaining the same Psychometric Hue Angle, the color will be clipped to the CIE L*a*b* coordinates of maximum Psychometric Chroma. See . No client data is necessary. XcmsCIELabClipab This brings the encountered out-of-gamut color specification into the screen's color gamut by reducing Psychometric Chroma, while maintaining Psychometric Hue Angle, until the color is within the gamut. No client data is necessary. XcmsCIELabClipLab This brings the encountered out-of-gamut color specification into the screen's color gamut by replacing it with CIE L*a*b* coordinates that fall within the color gamut while maintaining the original Psychometric Hue Angle and whose vector to the original coordinates is the shortest attainable. No client data is necessary. XcmsCIELuvClipL This brings the encountered out-of-gamut color specification into the screen's color gamut by reducing or increasing CIE metric lightness (L*) in the CIE L*u*v* color space until the color is within the gamut. If the Psychometric Chroma of the color specification is beyond maximum for the Psychometric Hue Angle, then, while maintaining the same Psychometric Hue Angle, the color will be clipped to the CIE L*u*v* coordinates of maximum Psychometric Chroma. See . No client data is necessary. XcmsCIELuvClipuv This brings the encountered out-of-gamut color specification into the screen's color gamut by reducing Psychometric Chroma, while maintaining Psychometric Hue Angle, until the color is within the gamut. No client data is necessary. XcmsCIELuvClipLuv This brings the encountered out-of-gamut color specification into the screen's color gamut by replacing it with CIE L*u*v* coordinates that fall within the color gamut while maintaining the original Psychometric Hue Angle and whose vector to the original coordinates is the shortest attainable. No client data is necessary. XcmsTekHVCClipV This brings the encountered out-of-gamut color specification into the screen's color gamut by reducing or increasing the Value dimension in the TekHVC color space until the color is within the gamut. If Chroma of the color specification is beyond maximum for the particular Hue, then, while maintaining the same Hue, the color will be clipped to the Value and Chroma coordinates that represent maximum Chroma for that particular Hue. No client data is necessary. XcmsTekHVCClipC This brings the encountered out-of-gamut color specification into the screen's color gamut by reducing the Chroma dimension in the TekHVC color space until the color is within the gamut. No client data is necessary. XcmsTekHVCClipVC This brings the encountered out-of-gamut color specification into the screen's color gamut by replacing it with TekHVC coordinates that fall within the color gamut while maintaining the original Hue and whose vector to the original coordinates is the shortest attainable. No client data is necessary. Prototype White Point Adjustment Procedure The white point adjustment procedure interface must adhere to the following: XcmsWhiteAdjustProc typedef Status (*XcmsWhiteAdjustProc) XcmsCCC ccc XcmsColor *initial_white_point XcmsColor *target_white_point XcmsColorFormat target_format XcmsColor colors_in_out[] unsigned int ncolors Bool compression_flags_return[] ccc Specifies the CCC. initial_white_point Specifies the initial white point. target_white_point Specifies the target white point. target_format Specifies the target color specification format. colors_in_out Specifies an array of color specifications. Pixel members should be ignored and must remain unchanged upon return. ncolors Specifies the number of XcmsColor structures in the color-specification array. compression_flags_return Returns an array of Boolean values for indicating compression status. If a non-NULL pointer is supplied and a color at a given index is compressed, then True should be stored at the corresponding index in this array; otherwise, the array should not be modified. Supplied White Point Adjustment Procedures White point adjustment procedures provided by Xlib are as follows: XcmsCIELabWhiteShiftColors This uses the CIE L*a*b* color space for adjusting the chromatic character of colors to compensate for the chromatic differences between the source and destination white points. This procedure simply converts the color specifications to XcmsCIELab using the source white point and then converts to the target specification format using the destination's white point. No client data is necessary. XcmsCIELuvWhiteShiftColors This uses the CIE L*u*v* color space for adjusting the chromatic character of colors to compensate for the chromatic differences between the source and destination white points. This procedure simply converts the color specifications to XcmsCIELuv using the source white point and then converts to the target specification format using the destination's white point. No client data is necessary. XcmsTekHVCWhiteShiftColors This uses the TekHVC color space for adjusting the chromatic character of colors to compensate for the chromatic differences between the source and destination white points. This procedure simply converts the color specifications to XcmsTekHVC using the source white point and then converts to the target specification format using the destination's white point. An advantage of this procedure over those previously described is an attempt to minimize hue shift. No client data is necessary. From an implementation point of view, these white point adjustment procedures convert the color specifications to a device-independent but white-point-dependent color space (for example, CIE L*u*v*, CIE L*a*b*, TekHVC) using one white point and then converting those specifications to the target color space using another white point. In other words, the specification goes in the color space with one white point but comes out with another white point, resulting in a chromatic shift based on the chromatic displacement between the initial white point and target white point. The CIE color spaces that are assumed to be white-point-independent are CIE u'v'Y, CIE XYZ, and CIE xyY. When developing a custom white point adjustment procedure that uses a device-independent color space not initially accessible for use in the color management system, use to ensure that it is added. As an example, if the CCC specifies a white point adjustment procedure and if the Client White Point and Screen White Point differ, the function will use the white point adjustment procedure twice: Once to convert to XcmsRGB A second time to convert from XcmsRGB For example, assume the specification is in XcmsCIEuvY and the adjustment procedure is XcmsCIELuvWhiteShiftColors. During conversion to XcmsRGB, the call to results in the following series of color specification conversions: From XcmsCIEuvY to XcmsCIELuv using the Client White Point From XcmsCIELuv to XcmsCIEuvY using the Screen White Point From XcmsCIEuvY to XcmsCIEXYZ (CIE u'v'Y and XYZ are white-point-independent color spaces) From XcmsCIEXYZ to XcmsRGBi From XcmsRGBi to XcmsRGB The resulting RGB specification is passed to , and the RGB specification returned by is converted back to XcmsCIEuvY by reversing the color conversion sequence. Gamut Querying Functions This section describes the gamut querying functions that Xlib provides. These functions allow the client to query the boundary of the screen's color gamut in terms of the CIE L*a*b*, CIE L*u*v*, and TekHVC color spaces. Gamut querying Functions are also provided that allow you to query the color specification of: White (full-intensity red, green, and blue) Red (full-intensity red while green and blue are zero) Green (full-intensity green while red and blue are zero) Blue (full-intensity blue while red and green are zero) Black (zero-intensity red, green, and blue) The white point associated with color specifications passed to and returned from these gamut querying functions is assumed to be the Screen White Point. Screen White Point This is a reasonable assumption, because the client is trying to query the screen's color gamut. The following naming convention is used for the Max and Min functions: Xcms<color_space>QueryMax<dimensions> Xcms<color_space>QueryMin<dimensions> The <dimensions> consists of a letter or letters that identify the dimensions of the color space that are not fixed. For example, is given a fixed Hue and Value for which maximum Chroma is found. Red, Green, and Blue Queries To obtain the color specification for black (zero-intensity red, green, and blue), use . XcmsQueryBlack Status XcmsQueryBlack XcmsCCC ccc XcmsColorFormat target_format XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. target_format Specifies the target color specification format. color_return Returns the color specification in the specified target format for zero-intensity red, green, and blue. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function returns the color specification in the specified target format for zero-intensity red, green, and blue. To obtain the color specification for blue (full-intensity blue while red and green are zero), use . XcmsQueryBlue Status XcmsQueryBlue XcmsCCC ccc XcmsColorFormat target_format XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. target_format Specifies the target color specification format. color_return Returns the color specification in the specified target format for full-intensity blue while red and green are zero. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function returns the color specification in the specified target format for full-intensity blue while red and green are zero. To obtain the color specification for green (full-intensity green while red and blue are zero), use . XcmsQueryGreen Status XcmsQueryGreen XcmsCCC ccc XcmsColorFormat target_format XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. target_format Specifies the target color specification format. color_return Returns the color specification in the specified target format for full-intensity green while red and blue are zero. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function returns the color specification in the specified target format for full-intensity green while red and blue are zero. To obtain the color specification for red (full-intensity red while green and blue are zero), use . XcmsQueryRed Status XcmsQueryRed XcmsCCC ccc XcmsColorFormat target_format XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. target_format Specifies the target color specification format. color_return Returns the color specification in the specified target format for full-intensity red while green and blue are zero. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function returns the color specification in the specified target format for full-intensity red while green and blue are zero. To obtain the color specification for white (full-intensity red, green, and blue), use . XcmsQueryWhite Status XcmsQueryWhite XcmsCCC ccc XcmsColorFormat target_format XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. target_format Specifies the target color specification format. color_return Returns the color specification in the specified target format for full-intensity red, green, and blue. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function returns the color specification in the specified target format for full-intensity red, green, and blue. CIELab Queries The following equations are useful in describing the CIELab query functions: delim %% Psychometric Hue Angle CIE metric lightness Psychometric Chroma Psychometric Chromamaximum %CIELab~Psychometric~Chroma ~=~ sqrt(a_star sup 2 ~+~ b_star sup 2 )% %CIELab~Psychometric~Hue ~=~ tan sup -1 left [ b_star over a_star right ]% To obtain the CIE L*a*b* coordinates of maximum Psychometric Chroma for a given Psychometric Hue Angle and CIE metric lightness (L*), use . XcmsCIELabQueryMaxC Status XcmsCIELabQueryMaxC XcmsCCC ccc XcmsFloat hue_angle XcmsFloat L_star XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue_angle Specifies the hue angle (in degrees) at which to find maximum chroma. L_star Specifies the lightness (L*) at which to find maximum chroma. color_return Returns the CIE L*a*b* coordinates of maximum chroma displayable by the screen for the given hue angle and lightness. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function, given a hue angle and lightness, finds the point of maximum chroma displayable by the screen. It returns this point in CIE L*a*b* coordinates. To obtain the CIE L*a*b* coordinates of maximum CIE metric lightness (L*) for a given Psychometric Hue Angle and Psychometric Chroma, use . Psychometric Hue Angle CIE metric lightness CIE metric lightnessmaximum XcmsCIELabQueryMaxL Status XcmsCIELabQueryMaxL XcmsCCC ccc XcmsFloat hue_angle XcmsFloat chroma XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue_angle Specifies the hue angle (in degrees) at which to find maximum lightness. chroma Specifies the chroma at which to find maximum lightness. color_return Returns the CIE L*a*b* coordinates of maximum lightness displayable by the screen for the given hue angle and chroma. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function, given a hue angle and chroma, finds the point in CIE L*a*b* color space of maximum lightness (L*) displayable by the screen. It returns this point in CIE L*a*b* coordinates. An XcmsFailure return value usually indicates that the given chroma is beyond maximum for the given hue angle. To obtain the CIE L*a*b* coordinates of maximum Psychometric Chroma for a given Psychometric Hue Angle, use . Psychometric Hue Angle Psychometric Chroma CIE metric lightness Psychometric Chromamaximum CIE metric lightnessmaximum XcmsCIELabQueryMaxLC Status XcmsCIELabQueryMaxLC XcmsCCC ccc XcmsFloat hue_angle XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue_angle Specifies the hue angle (in degrees) at which to find maximum chroma. color_return Returns the CIE L*a*b* coordinates of maximum chroma displayable by the screen for the given hue angle. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function, given a hue angle, finds the point of maximum chroma displayable by the screen. It returns this point in CIE L*a*b* coordinates. To obtain the CIE L*a*b* coordinates of minimum CIE metric lightness (L*) for a given Psychometric Hue Angle and Psychometric Chroma, use . Psychometric Hue Angle CIE metric lightness CIE metric lightnessminimum XcmsCIELabQueryMinL Status XcmsCIELabQueryMinL XcmsCCC ccc XcmsFloat hue_angle XcmsFloat chroma XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue_angle Specifies the hue angle (in degrees) at which to find minimum lightness. chroma Specifies the chroma at which to find minimum lightness. color_return Returns the CIE L*a*b* coordinates of minimum lightness displayable by the screen for the given hue angle and chroma. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function, given a hue angle and chroma, finds the point of minimum lightness (L*) displayable by the screen. It returns this point in CIE L*a*b* coordinates. An XcmsFailure return value usually indicates that the given chroma is beyond maximum for the given hue angle. CIELuv Queries The following equations are useful in describing the CIELuv query functions: delim %% Psychometric Hue Angle CIE metric lightness Psychometric Chroma Psychometric Chromamaximum %CIELuv~Psychometric~Chroma ~=~ sqrt(u_star sup 2 ~+~ v_star sup 2 )% %CIELuv~Psychometric~Hue ~=~ tan sup -1 left [ v_star over u_star right ]% To obtain the CIE L*u*v* coordinates of maximum Psychometric Chroma for a given Psychometric Hue Angle and CIE metric lightness (L*), use . XcmsCIELuvQueryMaxC Status XcmsCIELuvQueryMaxC XcmsCCC ccc XcmsFloat hue_angle XcmsFloat L_star XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue_angle Specifies the hue angle (in degrees) at which to find maximum chroma. L_star Specifies the lightness (L*) at which to find maximum chroma. color_return Returns the CIE L*u*v* coordinates of maximum chroma displayable by the screen for the given hue angle and lightness. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function, given a hue angle and lightness, finds the point of maximum chroma displayable by the screen. It returns this point in CIE L*u*v* coordinates. To obtain the CIE L*u*v* coordinates of maximum CIE metric lightness (L*) for a given Psychometric Hue Angle and Psychometric Chroma, use . Psychometric Hue Angle CIE metric lightness CIE metric lightnessmaximum XcmsCIELuvQueryMaxL Status XcmsCIELuvQueryMaxL XcmsCCC ccc XcmsFloat hue_angle XcmsFloat chroma XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue_angle Specifies the hue angle (in degrees) at which to find maximum lightness. L_star Specifies the lightness (L*) at which to find maximum lightness. color_return Returns the CIE L*u*v* coordinates of maximum lightness displayable by the screen for the given hue angle and chroma. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function, given a hue angle and chroma, finds the point in CIE L*u*v* color space of maximum lightness (L*) displayable by the screen. It returns this point in CIE L*u*v* coordinates. An XcmsFailure return value usually indicates that the given chroma is beyond maximum for the given hue angle. To obtain the CIE L*u*v* coordinates of maximum Psychometric Chroma for a given Psychometric Hue Angle, use . Psychometric Hue Angle Psychometric Chroma CIE metric lightness Psychometric Chromamaximum CIE metric lightnessmaximum XcmsCIELuvQueryMaxLC Status XcmsCIELuvQueryMaxLC XcmsCCC ccc XcmsFloat hue_angle XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue_angle Specifies the hue angle (in degrees) at which to find maximum chroma. color_return Returns the CIE L*u*v* coordinates of maximum chroma displayable by the screen for the given hue angle. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function, given a hue angle, finds the point of maximum chroma displayable by the screen. It returns this point in CIE L*u*v* coordinates. To obtain the CIE L*u*v* coordinates of minimum CIE metric lightness (L*) for a given Psychometric Hue Angle and Psychometric Chroma, use . Psychometric Hue Angle CIE metric lightness CIE metric lightnessminimum XcmsCIELuvQueryMinL Status XcmsCIELuvQueryMinL XcmsCCC ccc XcmsFloat hue_angle XcmsFloat chroma XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue_angle Specifies the hue angle (in degrees) at which to find minimum lightness. chroma Specifies the chroma at which to find minimum lightness. color_return Returns the CIE L*u*v* coordinates of minimum lightness displayable by the screen for the given hue angle and chroma. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function, given a hue angle and chroma, finds the point of minimum lightness (L*) displayable by the screen. It returns this point in CIE L*u*v* coordinates. An XcmsFailure return value usually indicates that the given chroma is beyond maximum for the given hue angle. TekHVC Queries To obtain the maximum Chroma for a given Hue and Value, use . Chroma Chromamaximum XcmsTekHVCQueryMaxC Status XcmsTekHVCQueryMaxC XcmsCCC ccc XcmsFloat hue XcmsFloat value XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue Specifies the Hue in which to find the maximum Chroma. value Specifies the Value in which to find the maximum Chroma. color_return Returns the maximum Chroma along with the actual Hue and Value at which the maximum Chroma was found. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function, given a Hue and Value, determines the maximum Chroma in TekHVC color space displayable by the screen. It returns the maximum Chroma along with the actual Hue and Value at which the maximum Chroma was found. To obtain the maximum Value for a given Hue and Chroma, use . Value Valuemaximum XcmsTekHVCQueryMaxV Status XcmsTekHVCQueryMaxV XcmsCCC ccc XcmsFloat hue XcmsFloat chroma XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue Specifies the Hue in which to find the maximum Value. chroma Specifies the chroma at which to find maximum Value. color_return Returns the maximum Value along with the Hue and Chroma at which the maximum Value was found. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function, given a Hue and Chroma, determines the maximum Value in TekHVC color space displayable by the screen. It returns the maximum Value and the actual Hue and Chroma at which the maximum Value was found. To obtain the maximum Chroma and Value at which it is reached for a specified Hue, use . Chroma Value Chromamaximum Valuemaximum XcmsTekHVCQueryMaxVC Status XcmsTekHVCQueryMaxVC XcmsCCC ccc XcmsFloat hue XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue Specifies the Hue in which to find the maximum Chroma. color_return Returns the color specification in XcmsTekHVC for the maximum Chroma, the Value at which that maximum Chroma is reached, and the actual Hue at which the maximum Chroma was found. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function, given a Hue, determines the maximum Chroma in TekHVC color space displayable by the screen and the Value at which that maximum Chroma is reached. It returns the maximum Chroma, the Value at which that maximum Chroma is reached, and the actual Hue for which the maximum Chroma was found. To obtain a specified number of TekHVC specifications such that they contain maximum Values for a specified Hue and the Chroma at which the maximum Values are reached, use . Chroma Value Chromamaximum Valuemaximum XcmsTekHVCQueryMaxVSamples Status XcmsTekHVCQueryMaxVSamples XcmsCCC ccc XcmsFloat hue XcmsColor colors_return[] unsigned int nsamples ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue Specifies the Hue for maximum Chroma/Value samples. nsamples Specifies the number of samples. colors_return Returns nsamples of color specifications in XcmsTekHVC such that the Chroma is the maximum attainable for the Value and Hue. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The returns nsamples of maximum Value, the Chroma at which that maximum Value is reached, and the actual Hue for which the maximum Chroma was found. These sample points may then be used to plot the maximum Value/Chroma boundary of the screen's color gamut for the specified Hue in TekHVC color space. To obtain the minimum Value for a given Hue and Chroma, use . Value Valueminimum XcmsTekHVCQueryMinV Status XcmsTekHVCQueryMinV XcmsCCC ccc XcmsFloat hue XcmsFloat chroma XcmsColor *color_return ccc Specifies the CCC. The CCC's Client White Point and white point adjustment procedures are ignored. hue Specifies the Hue in which to find the minimum Value. value Specifies the Value in which to find the minimum Value. color_return Returns the minimum Value and the actual Hue and Chroma at which the minimum Value was found. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. The function, given a Hue and Chroma, determines the minimum Value in TekHVC color space displayable by the screen. It returns the minimum Value and the actual Hue and Chroma at which the minimum Value was found. Color Management Extensions The Xlib color management facilities can be extended in two ways: Device-Independent Color Spaces Device-independent color spaces that are derivable to CIE XYZ space can be added using the function. Color Characterization Function Set A Color Characterization Function Set consists of device-dependent color spaces and their functions that convert between these color spaces and the CIE XYZ color space, bundled together for a specific class of output devices. A function set can be added using the function. Color Spaces The CIE XYZ color space serves as the hub for all conversions between device-independent and device-dependent color spaces. Therefore, the knowledge to convert an XcmsColor structure to and from CIE XYZ format is associated with each color space. For example, conversion from CIE L*u*v* to RGB requires the knowledge to convert from CIE L*u*v* to CIE XYZ and from CIE XYZ to RGB. This knowledge is stored as an array of functions that, when applied in series, will convert the XcmsColor structure to or from CIE XYZ format. This color specification conversion mechanism facilitates the addition of color spaces. Of course, when converting between only device-independent color spaces or only device-dependent color spaces, shortcuts are taken whenever possible. For example, conversion from TekHVC to CIE L*u*v* is performed by intermediate conversion to CIE u*v*Y and then to CIE L*u*v*, thus bypassing conversion between CIE u*v*Y and CIE XYZ. Adding Device-Independent Color Spaces To add a device-independent color space, use . XcmsAddColorSpace Status XcmsAddColorSpace XcmsColorSpace *color_space color_space Specifies the device-independent color space to add. The function makes a device-independent color space (actually an XcmsColorSpace structure) accessible by the color management system. Because format values for unregistered color spaces are assigned at run time, they should be treated as private to the client. If references to an unregistered color space must be made outside the client (for example, storing color specifications in a file using the unregistered color space), then reference should be made by color space prefix (see and ). If the XcmsColorSpace structure is already accessible in the color management system, returns XcmsSuccess. Note that added XcmsColorSpaces must be retained for reference by Xlib. Querying Color Space Format and Prefix To obtain the format associated with the color space associated with a specified color string prefix, use . XcmsFormatOfPrefix XcmsColorFormat XcmsFormatOfPrefix char *prefix prefix Specifies the string that contains the color space prefix. The function returns the format for the specified color space prefix (for example, the string ``CIEXYZ''). The prefix is case-insensitive. If the color space is not accessible in the color management system, returns XcmsUndefinedFormat. To obtain the color string prefix associated with the color space specified by a color format, use . XcmsPrefixOfFormat char *XcmsPrefixOfFormat XcmsColorFormat format format Specifies the color specification format. The function returns the string prefix associated with the color specification encoding specified by the format argument. Otherwise, if no encoding is found, it returns NULL. The returned string must be treated as read-only. Creating Additional Color Spaces Color space specific information necessary for color space conversion and color string parsing is stored in an XcmsColorSpace structure. Therefore, a new structure containing this information is required for each additional color space. In the case of device-independent color spaces, a handle to this new structure (that is, by means of a global variable) is usually made accessible to the client program for use with the function. If a new XcmsColorSpace structure specifies a color space not registered with the X Consortium, they should be treated as private to the client because format values for unregistered color spaces are assigned at run time. If references to an unregistered color space must be made outside the client (for example, storing color specifications in a file using the unregistered color space), then reference should be made by color space prefix (see and ). typedef (*XcmsConversionProc)(); typedef XcmsConversionProc *XcmsFuncListPtr; /* A NULL terminated list of function pointers*/ typedef struct _XcmsColorSpace { char *prefix; XcmsColorFormat format; XcmsParseStringProc parseString; XcmsFuncListPtr to_CIEXYZ; XcmsFuncListPtr from_CIEXYZ; int inverse_flag; } XcmsColorSpace; The prefix member specifies the prefix that indicates a color string is in this color space's string format. For example, the strings ``ciexyz'' or ``CIEXYZ'' for CIE XYZ, and ``rgb'' or ``RGB'' for RGB. The prefix is case insensitive. The format member specifies the color specification format. Formats for unregistered color spaces are assigned at run time. The parseString member contains a pointer to the function that can parse a color string into an XcmsColor structure. This function returns an integer (int): nonzero if it succeeded and zero otherwise. The to_CIEXYZ and from_CIEXYZ members contain pointers, each to a NULL terminated list of function pointers. When the list of functions is executed in series, it will convert the color specified in an XcmsColor structure from/to the current color space format to/from the CIE XYZ format. Each function returns an integer (int): nonzero if it succeeded and zero otherwise. The white point to be associated with the colors is specified explicitly, even though white points can be found in the CCC. The inverse_flag member, if nonzero, specifies that for each function listed in to_CIEXYZ, its inverse function can be found in from_CIEXYZ such that: Given: n = number of functions in each list for each i, such that 0 <= i < n from_CIEXYZ[n - i - 1] is the inverse of to_CIEXYZ[i]. This allows Xlib to use the shortest conversion path, thus bypassing CIE XYZ if possible (for example, TekHVC to CIE L*u*v*). Parse String Callback The callback in the XcmsColorSpace structure for parsing a color string for the particular color space must adhere to the following software interface specification: XcmsParseStringProc Status XcmsParseStringProc char *color_string XcmsColor *color_return color_string Specifies the color string to parse. color_return Returns the color specification in the color space's format. Color Specification Conversion Callback Callback functions in the XcmsColorSpace structure for converting a color specification between device-independent spaces must adhere to the following software interface specification: Status ConversionProc XcmsCCC ccc XcmsColor *white_point XcmsColor *colors_in_out unsigned int ncolors ccc Specifies the CCC. white_point Specifies the white point associated with color specifications. The pixel member should be ignored, and the entire structure remain unchanged upon return. colors_in_out Specifies an array of color specifications. Pixel members should be ignored and must remain unchanged upon return. ncolors Specifies the number of XcmsColor structures in the color-specification array. Callback functions in the XcmsColorSpace structure for converting a color specification to or from a device-dependent space must adhere to the following software interface specification: Status ConversionProc XcmsCCC ccc XcmsColor *colors_in_out unsigned int ncolors Bool compression_flags_return[] ccc Specifies the CCC. colors_in_out Specifies an array of color specifications. Pixel members should be ignored and must remain unchanged upon return. ncolors Specifies the number of XcmsColor structures in the color-specification array. compression_flags_return Returns an array of Boolean values for indicating compression status. If a non-NULL pointer is supplied and a color at a given index is compressed, then True should be stored at the corresponding index in this array; otherwise, the array should not be modified. Conversion functions are available globally for use by other color spaces. The conversion functions provided by Xlib are: Function Converts from Converts to XcmsCIELabToCIEXYZ XcmsCIELabFormat XcmsCIEXYZFormat XcmsCIELuvToCIEuvY XcmsCIELuvFormat XcmsCIEuvYFormat XcmsCIEXYZToCIELab XcmsCIEXYZFormat XcmsCIELabFormat XcmsCIEXYZToCIEuvY XcmsCIEXYZFormat XcmsCIEuvYFormat XcmsCIEXYZToCIExyY XcmsCIEXYZFormat XcmsCIExyYFormat XcmsCIEXYZToRGBi XcmsCIEXYZFormat XcmsRGBiFormat XcmsCIEuvYToCIELuv XcmsCIEuvYFormat XcmsCIELabFormat XcmsCIEuvYToCIEXYZ XcmsCIEuvYFormat XcmsCIEXYZFormat XcmsCIEuvYToTekHVC XcmsCIEuvYFormat XcmsTekHVCFormat XcmsCIExyYToCIEXYZ XcmsCIExyYFormat XcmsCIEXYZFormat XcmsRGBToRGBi XcmsRGBFormat XcmsRGBiFormat XcmsRGBiToCIEXYZ XcmsRGBiFormat XcmsCIEXYZFormat XcmsRGBiToRGB XcmsRGBiFormat XcmsRGBFormat XcmsTekHVCToCIEuvY XcmsTekHVCFormat XcmsCIEuvYFormat Function Sets Function set Function setLINEAR_RGB Functions to convert between device-dependent color spaces and CIE XYZ may differ for different classes of output devices (for example, color versus gray monitors). Therefore, the notion of a Color Characterization Function Set has been developed. A function set consists of device-dependent color spaces and the functions that convert color specifications between these device-dependent color spaces and the CIE XYZ color space appropriate for a particular class of output devices. The function set also contains a function that reads color characterization data off root window properties. It is this characterization data that will differ between devices within a class of output devices. Device Color Characterization For details about how color characterization data is stored in root window properties, see the section on Device Color Characterization in the Inter-Client Communication Conventions Manual. The LINEAR_RGB function set is provided by Xlib and will support most color monitors. Function sets may require data that differs from those needed for the LINEAR_RGB function set. In that case, its corresponding data may be stored on different root window properties. Adding Function Sets To add a function set, use . XcmsAddFunctionSet Status XcmsAddFunctionSet XcmsFunctionSet *function_set function_set Specifies the function set to add. The function adds a function set to the color management system. If the function set uses device-dependent XcmsColorSpace structures not accessible in the color management system, adds them. If an added XcmsColorSpace structure is for a device-dependent color space not registered with the X Consortium, they should be treated as private to the client because format values for unregistered color spaces are assigned at run time. If references to an unregistered color space must be made outside the client (for example, storing color specifications in a file using the unregistered color space), then reference should be made by color space prefix (see and ). Additional function sets should be added before any calls to other Xlib routines are made. If not, the XcmsPerScrnInfo member of a previously created XcmsCCC does not have the opportunity to initialize with the added function set. Creating Additional Function Sets The creation of additional function sets should be required only when an output device does not conform to existing function sets or when additional device-dependent color spaces are necessary. A function set consists primarily of a collection of device-dependent XcmsColorSpace structures and a means to read and store a screen's color characterization data. This data is stored in an XcmsFunctionSet structure. A handle to this structure (that is, by means of global variable) is usually made accessible to the client program for use with . If a function set uses new device-dependent XcmsColorSpace structures, they will be transparently processed into the color management system. Function sets can share an XcmsColorSpace structure for a device-dependent color space. In addition, multiple XcmsColorSpace structures are allowed for a device-dependent color space; however, a function set can reference only one of them. These XcmsColorSpace structures will differ in the functions to convert to and from CIE XYZ, thus tailored for the specific function set. typedef struct _XcmsFunctionSet { XcmsColorSpace **DDColorSpaces; XcmsScreenInitProc screenInitProc; XcmsScreenFreeProc screenFreeProc; } XcmsFunctionSet; The DDColorSpaces member is a pointer to a NULL terminated list of pointers to XcmsColorSpace structures for the device-dependent color spaces that are supported by the function set. The screenInitProc member is set to the callback procedure (see the following interface specification) that initializes the XcmsPerScrnInfo structure for a particular screen. The screen initialization callback must adhere to the following software interface specification: XcmsScreenInitProc typedef Status (*XcmsScreenInitProc) Display *display int screen_number ScmsPerScrnInfo *screen_info display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. screen_info Specifies the XcmsPerScrnInfo structure, which contains the per screen information. The screen initialization callback in the XcmsFunctionSet structure fetches the color characterization data (device profile) for the specified screen, typically off properties on the screen's root window. It then initializes the specified XcmsPerScrnInfo structure. Device profile Color Characterization Data If successful, the procedure fills in the XcmsPerScrnInfo structure as follows: It sets the screenData member to the address of the created device profile data structure (contents known only by the function set). It next sets the screenWhitePoint member. It next sets the functionSet member to the address of the XcmsFunctionSet structure. It then sets the state member to XcmsInitSuccess and finally returns XcmsSuccess. If unsuccessful, the procedure sets the state member to XcmsInitFailure and returns XcmsFailure. The XcmsPerScrnInfo structure contains: typedef struct _XcmsPerScrnInfo { XcmsColor screenWhitePoint; XPointer functionSet; XPointer screenData; unsigned char state; char pad[3]; } XcmsPerScrnInfo; The screenWhitePoint member specifies the white point inherent to the screen. The functionSet member specifies the appropriate function set. The screenData member specifies the device profile. The state member is set to one of the following: XcmsInitNone indicates initialization has not been previously attempted. XcmsInitFailure indicates initialization has been previously attempted but failed. XcmsInitSuccess indicates initialization has been previously attempted and succeeded. The screen free callback must adhere to the following software interface specification: typedef void (*XcmsScreenFreeProc) XPointer screenData screenData Specifies the data to be freed. This function is called to free the screenData stored in an XcmsPerScrnInfo structure. libX11-1.8.12/specs/libX11/CH01.xml0000644014310600000120000010341614763154126011664 Introduction to Xlib The X Window System is a network-transparent window system that was designed at MIT. X display servers run on computers with either monochrome or color bitmap display hardware. The server distributes user input to and accepts output requests from various client programs located either on the same machine or elsewhere in the network. Xlib is a C subroutine library that application programs (clients) use to interface with the window system by means of a stream connection. Although a client usually runs on the same machine as the X server it is talking to, this need not be the case. Xlib − C Language X Interface is a reference guide to the low-level C language interface to the X Window System protocol. It is neither a tutorial nor a user’s guide to programming the X Window System. Rather, it provides a detailed description of each function in the library as well as a discussion of the related background information. Xlib − C Language X Interface assumes a basic understanding of a graphics window system and of the C programming language. Other higher-level abstractions (for example, those provided by the toolkits for X) are built on top of the Xlib library. For further information about these higher-level libraries, see the appropriate toolkit documentation. The X Window System Protocol provides the definitive word on the behavior of X. Although additional information appears here, the protocol document is the ruling document. To provide an introduction to X programming, this chapter discusses: Overview of the X Window System Errors Standard header files Generic values and types Naming and argument conventions within Xlib Programming considerations Character sets and encodings Formatting conventions Overview of the X Window System Some of the terms used in this book are unique to X, and other terms that are common to other window systems have different meanings in X. You may find it helpful to refer to the glossary, which is located at the end of the book. The X Window System supports one or more screens containing overlapping windows or subwindows. Screen A screen is a physical monitor and hardware that can be color, grayscale, or monochrome. There can be multiple screens for each display or workstation. A single X server can provide display services for any number of screens. A set of screens for a single user with one keyboard and one pointer (usually a mouse) is called a display. All the windows in an X server are arranged in strict hierarchies. At the top of each hierarchy is a root window, which covers each of the display screens. Each root window is partially or completely covered by child windows. All windows, except for root windows, have parents. There is usually at least one window for each application program. Child window Parent Window Child windows may in turn have their own children. In this way, an application program can create an arbitrarily deep tree on each screen. X provides graphics, text, and raster operations for windows. A child window can be larger than its parent. That is, part or all of the child window can extend beyond the boundaries of the parent, but all output to a window is clipped by its parent. Stacking order If several children of a window have overlapping locations, one of the children is considered to be on top of or raised over the others, thus obscuring them. Output to areas covered by other windows is suppressed by the window system unless the window has backing store. If a window is obscured by a second window, the second window obscures only those ancestors of the second window that are also ancestors of the first window. Window A window has a border zero or more pixels in width, which can be any pattern (pixmap) or solid color you like. A window usually but not always has a background pattern, which will be repainted by the window system when uncovered. Child windows obscure their parents, and graphic operations in the parent window usually are clipped by the children. Each window and pixmap has its own coordinate system. The coordinate system has the X axis horizontal and the Y axis vertical with the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms of pixels, and coincide with pixel centers. For a window, the origin is inside the border at the inside, upper-left corner. X does not guarantee to preserve the contents of windows. When part or all of a window is hidden and then brought back onto the screen, its contents may be lost. The server then sends the client program an Expose event to notify it that part or all of the window needs to be repainted. Programs must be prepared to regenerate the contents of windows on demand. Pixmap Drawable Tile Bitmap X also provides off-screen storage of graphics objects, called pixmaps. Single plane (depth 1) pixmaps are sometimes referred to as bitmaps. Pixmaps can be used in most graphics functions interchangeably with windows and are used in various graphics operations to define patterns or tiles. Windows and pixmaps together are referred to as drawables. Most of the functions in Xlib just add requests to an output buffer. These requests later execute asynchronously on the X server. Functions that return values of information stored in the server do not return (that is, they block) until an explicit reply is received or an error occurs. You can provide an error handler, which will be called when the error is reported. XSync If a client does not want a request to execute asynchronously, it can follow the request with a call to , which blocks until all previously buffered asynchronous events have been sent and acted on. As an important side effect, the output buffer in Xlib is always flushed by a call to any function that returns a value from the server or waits for input. Resource IDs Resource IDsWindow Resource IDsFont Resource IDsPixmap Resource IDsColormap Resource IDsCursor Resource IDsGContext Many Xlib functions will return an integer resource ID, which allows you to refer to objects stored on the X server. These can be of type Window, Font, Pixmap, Colormap, Cursor, and GContext, as defined in the file <X11/X.h>. X11/X.h Files<X11/X.h> Headers<X11/X.h> These resources are created by requests and are destroyed (or freed) by requests or when connections are closed. Most of these resources are potentially shareable between applications, and in fact, windows are manipulated explicitly by window manager programs. Fonts and cursors are shared automatically across multiple screens. Fonts are loaded and unloaded as needed and are shared by multiple clients. Fonts are often cached in the server. Xlib provides no support for sharing graphics contexts between applications. Event Client programs are informed of events. Events may either be side effects of a request (for example, restacking windows generates Expose events) or completely asynchronous (for example, from the keyboard). A client program asks to be informed of events. Because other applications can send events to your application, programs must be prepared to handle (or ignore) events of all types. Input events (for example, a key pressed or the pointer moved) arrive asynchronously from the server and are queued until they are requested by an explicit call (for example, or ). In addition, some library functions (for example, ) generate Expose and ConfigureRequest events. These events also arrive asynchronously, but the client may XSync wish to explicitly wait for them by calling after calling a function that can cause the server to generate events. Errors Some functions return Status, an integer error indication. If the function fails, it returns a zero. If the function returns a status of zero, it has not updated the return arguments. Status Because C does not provide multiple return values, many functions must return their results by writing into client-passed storage. Errorhandling By default, errors are handled either by a standard library function or by one that you provide. Functions that return pointers to strings return NULL pointers if the string does not exist. The X server reports protocol errors at the time that it detects them. If more than one error could be generated for a given request, the server can report any of them. Because Xlib usually does not transmit requests to the server immediately (that is, it buffers them), errors can be reported much later than they actually occur. For debugging purposes, however, Xlib provides a mechanism for forcing synchronous behavior (see section 11.8.1). When synchronization is enabled, errors are reported as they are generated. When Xlib detects an error, it calls an error handler, which your program can provide. If you do not provide an error handler, the error is printed, and your program terminates. Standard Header Files The following include files are part of the Xlib standard: Headers <X11/Xlib.h> X11/Xlib.h Files<X11/Xlib.h> Headers<X11/Xlib.h> This is the main header file for Xlib. The majority of all Xlib symbols are declared by including this file. This file also contains the preprocessor symbol XlibSpecificationRelease. XlibSpecificationRelease This symbol is defined to have the 6 in this release of the standard. (Release 5 of Xlib was the first release to have this symbol.) <X11/X.h> X11/X.h Files<X11/X.h> Headers<X11/X.h> This file declares types and constants for the X protocol that are to be used by applications. It is included automatically from <X11/Xlib.h> so application code should never need to reference this file directly. <X11/Xcms.h> X11/Xcms.h Files<X11/Xcms.h> Headers<X11/Xcms.h> This file contains symbols for much of the color management facilities described in chapter 6. All functions, types, and symbols with the prefix "Xcms", plus the Color Conversion Contexts macros, are declared in this file. <X11/Xlib.h> must be included before including this file. <X11/Xutil.h> X11/Xutil.h Files<X11/Xutil.h> Headers<X11/Xutil.h> This file declares various functions, types, and symbols used for inter-client communication and application utility functions, which are described in chapters 14 and 16. <X11/Xlib.h> must be included before including this file. <X11/Xresource.h> X11/Xresource.h Files<X11/Xresource.h> Headers<X11/Xresource.h> This file declares all functions, types, and symbols for the resource manager facilities, which are described in chapter 15. <X11/Xlib.h> must be included before including this file. <X11/Xatom.h> X11/Xatom.h Files<X11/Xatom.h> Headers<X11/Xatom.h> This file declares all predefined atoms, which are symbols with the prefix "XA_". <X11/cursorfont.h> X11/cursorfont.h Files<X11/cursorfont.h> Headers<X11/cursorfont.h> This file declares the cursor symbols for the standard cursor font, which are listed in Appendix B. All cursor symbols have the prefix "XC_". <X11/keysymdef.h> X11/keysymdef.h Files<X11/keysymdef.h> Headers<X11/keysymdef.h> This file declares all standard KeySym values, which are symbols with the prefix "XK_". The KeySyms are arranged in groups, and a preprocessor symbol controls inclusion of each group. The preprocessor symbol must be defined prior to inclusion of the file to obtain the associated values. The preprocessor symbols are XK_MISCELLANY, XK_XKB_KEYS, XK_3270, XK_LATIN1, XK_LATIN2, XK_LATIN3, XK_LATIN4, XK_KATAKANA, XK_ARABIC, XK_CYRILLIC, XK_GREEK, XK_TECHNICAL, XK_SPECIAL, XK_PUBLISHING, XK_APL, XK_HEBREW, XK_THAI, and XK_KOREAN. <X11/keysym.h> X11/keysym.h Files<X11/keysym.h> Headers<X11/keysym.h> This file defines the preprocessor symbols XK_MISCELLANY, XK_XKB_KEYS, XK_LATIN1, XK_LATIN2, XK_LATIN3, XK_LATIN4, and XK_GREEK and then includes <X11/keysymdef.h>. <X11/Xlibint.h> X11/Xlibint.h Files<X11/Xlibint.h> Headers<X11/Xlibint.h> This file declares all the functions, types, and symbols used for extensions, which are described in Appendix C. This file automatically includes <X11/Xlib.h>. <X11/Xproto.h> X11/Xproto.h Files<X11/Xproto.h> Headers<X11/Xproto.h> This file declares types and symbols for the basic X protocol, for use in implementing extensions. It is included automatically from <X11/Xlibint.h>, so application and extension code should never need to reference this file directly. <X11/Xprotostr.h> X11/Xprotostr.h Files<X11/Xprotostr.h> Headers<X11/Xprotostr.h> This file declares types and symbols for the basic X protocol, for use in implementing extensions. It is included automatically from <X11/Xproto.h>, so application and extension code should never need to reference this file directly. <X11/X10.h> X11/X10.h Files<X11/X10.h> Headers<X11/X10.h> This file declares all the functions, types, and symbols used for the X10 compatibility functions, which are described in Appendix D. Generic Values and Types The following symbols are defined by Xlib and used throughout the manual: Bool True False Xlib defines the type Bool and the Boolean values True and False. None None is the universal null resource ID or atom. XID The type XID is used for generic resource IDs. XPointer The type XPointer is defined to be char * and is used as a generic opaque pointer to data. Naming and Argument Conventions within Xlib Xlib follows a number of conventions for the naming and syntax of the functions. Given that you remember what information the function requires, these conventions are intended to make the syntax of the functions more predictable. The major naming conventions are: To differentiate the X symbols from the other symbols, the library uses mixed case for external symbols. It leaves lowercase for variables and all uppercase for user macros, as per existing convention. All Xlib functions begin with a capital X. The beginnings of all function names and symbols are capitalized. All user-visible data structures begin with a capital X. More generally, anything that a user might dereference begins with a capital X. Macros and other symbols do not begin with a capital X. To distinguish them from all user symbols, each word in the macro is capitalized. All elements of or variables in a data structure are in lowercase. Compound words, where needed, are constructed with underscores (_). The display argument, where used, is always first in the argument list. All resource objects, where used, occur at the beginning of the argument list immediately after the display argument. When a graphics context is present together with another type of resource (most commonly, a drawable), the graphics context occurs in the argument list after the other resource. Drawables outrank all other resources. Source arguments always precede the destination arguments in the argument list. The x argument always precedes the y argument in the argument list. The width argument always precedes the height argument in the argument list. Where the x, y, width, and height arguments are used together, the x and y arguments always precede the width and height arguments. Where a mask is accompanied with a structure, the mask always precedes the pointer to the structure in the argument list. Programming Considerations The major programming considerations are: Coordinates and sizes in X are actually 16-bit quantities. This decision was made to minimize the bandwidth required for a given level of performance. Coordinates usually are declared as an int in the interface. Values larger than 16 bits are truncated silently. Sizes (width and height) are declared as unsigned quantities. Keyboards are the greatest variable between different manufacturers' workstations. If you want your program to be portable, you should be particularly conservative here. Many display systems have limited amounts of off-screen memory. If you can, you should minimize use of pixmaps and backing store. The user should have control of their screen real estate. Therefore, you should write your applications to react to window management rather than presume control of the entire screen. What you do inside of your top-level window, however, is up to your application. For further information, see chapter 14 and the Inter-Client Communication Conventions Manual. Character Sets and Encodings Some of the Xlib functions make reference to specific character sets and character encodings. The following are the most common: X Portable Character Set A basic set of 97 characters, which are assumed to exist in all locales supported by Xlib. This set contains the following characters: a..z A..Z 0..9 !"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ <space>, <tab>, and <newline> This set is the left/lower half of the graphic character set of ISO8859-1 plus space, tab, and newline. It is also the set of graphic characters in 7-bit ASCII plus the same three control characters. The actual encoding of these characters on the host is system dependent. Host Portable Character Encoding The encoding of the X Portable Character Set on the host. The encoding itself is not defined by this standard, but the encoding must be the same in all locales supported by Xlib on the host. If a string is said to be in the Host Portable Character Encoding, then it only contains characters from the X Portable Character Set, in the host encoding. Latin-1 The coded character set defined by the ISO8859-1 standard. Latin Portable Character Encoding The encoding of the X Portable Character Set using the Latin-1 codepoints plus ASCII control characters. If a string is said to be in the Latin Portable Character Encoding, then it only contains characters from the X Portable Character Set, not all of Latin-1. STRING Encoding Latin-1, plus tab and newline. POSIX Portable Filename Character Set The set of 65 characters, which can be used in naming files on a POSIX-compliant host, that are correctly processed in all locales. The set is: a..z A..Z 0..9 ._- Formatting Conventions Xlib − C Language X Interface uses the following conventions: Global symbols are printed in this special font. These can be either function names, symbols defined in include files, or structure names. When declared and defined, function arguments are printed in italics. In the explanatory text that follows, they usually are printed in regular type. Each function is introduced by a general discussion that distinguishes it from other functions. The function declaration itself follows, and each argument is specifically explained. Although ANSI C function prototype syntax is not used, Xlib header files normally declare functions using function prototypes in ANSI C environments. General discussion of the function, if any is required, follows the arguments. Where applicable, the last paragraph of the explanation lists the possible Xlib error codes that the function can generate. For a complete discussion of the Xlib error codes, see section 11.8.2. To eliminate any ambiguity between those arguments that you pass and those that a function returns to you, the explanations for all arguments that you pass start with the word specifies or, in the case of multiple arguments, the word specify. The explanations for all arguments that are returned to you start with the word returns or, in the case of multiple arguments, the word return. The explanations for all arguments that you can pass and are returned start with the words specifies and returns. Any pointer to a structure that is used to return a value is designated as such by the _return suffix as part of its name. All other pointers passed to these functions are used for reading only. A few arguments use pointers to structures that are used for both input and output and are indicated by using the _in_out suffix. libX11-1.8.12/specs/libX11/CH10.xml0000644014310600000120000043331314763154126011666 Events A client application communicates with the X server through the connection you establish with the XOpenDisplay function. A client application sends requests to the X server over this connection. These requests are made by the Xlib functions that are called in the client application. Many Xlib functions cause the X server to generate events, and the user’s typing or moving the pointer can generate events asynchronously. The X server returns events to the client on the same connection. This chapter discusses the following topics associated with events: Event types Event structures Event masks Event processing Functions for handling events are dealt with in the next chapter. Event Types Eventtypes An event is data generated asynchronously by the X server as a result of some device activity or as side effects of a request sent by an Xlib function. Event Device-related events propagate from the source window to ancestor windows until some client application has selected that event type or until the event is explicitly discarded. The X server generally sends an event to a client application only if the client has specifically asked to be informed of that event type, typically by setting the event-mask attribute of the window. The mask can also be set when you create a window or by changing the window's event-mask. You can also mask out events that would propagate to ancestor windows by manipulating the do-not-propagate mask of the window's attributes. However, MappingNotify events are always sent to all clients. Input Control Output Control An event type describes a specific event generated by the X server. For each event type, a corresponding constant name is defined in <X11/X.h>, X11/X.h Files<X11/X.h> Headers<X11/X.h> which is used when referring to an event type. Eventcategories The following table lists the event category and its associated event type or types. The processing associated with these events is discussed in section 10.5. Event Category Event Type Keyboard events KeyPress, KeyRelease Pointer events ButtonPress, ButtonRelease, MotionNotify Window crossing events EnterNotify, LeaveNotify Input focus events FocusIn, FocusOut Keymap state notification event KeymapNotify Exposure events Expose, GraphicsExpose, NoExpose Structure control events CirculateRequest, ConfigureRequest, MapRequest, ResizeRequest Window state notification events CirculateNotify, ConfigureNotify, CreateNotify, DestroyNotify, GravityNotify, MapNotify, MappingNotify, ReparentNotify, UnmapNotify, VisibilityNotify Colormap state notification event ColormapNotify Client communication events ClientMessage, PropertyNotify, SelectionClear, SelectionNotify, SelectionRequest Event Structures For each event type, a corresponding structure is declared in <X11/Xlib.h>. X11/Xlib.h Files<X11/Xlib.h> Headers<X11/Xlib.h> All the event structures have the following common members: XAnyEvent typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; } XAnyEvent; The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a GraphicsExpose event to a client application, it sends an XGraphicsExposeEvent structure with the type member set to GraphicsExpose. The display member is set to a pointer to the display the event was read on. The send_event member is set to True if the event came from a SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. The X server can send events at any time in the input stream. Xlib stores any events received while waiting for a reply in an event queue for later use. Xlib also provides functions that allow you to check events in the event queue (see section 11.3). In addition to the individual structures declared for each event type, the XEvent structure is a union of the individual structures declared for each event type. Depending on the type, you should access members of each event by using the XEvent union. XEvent typedef union _XEvent { int type; /* must not be changed */ XAnyEvent xany; XKeyEvent xkey; XButtonEvent xbutton; XMotionEvent xmotion; XCrossingEvent xcrossing; XFocusChangeEvent xfocus; XExposeEvent xexpose; XGraphicsExposeEvent xgraphicsexpose; XNoExposeEvent xnoexpose; XVisibilityEvent xvisibility; XCreateWindowEvent xcreatewindow; XDestroyWindowEvent xdestroywindow; XUnmapEvent xunmap; XMapEvent xmap; XMapRequestEvent xmaprequest; XReparentEvent xreparent; XConfigureEvent xconfigure; XGravityEvent xgravity; XResizeRequestEvent xresizerequest; XConfigureRequestEvent xconfigurerequest; XCirculateEvent xcirculate; XCirculateRequestEvent xcirculaterequest; XPropertyEvent xproperty; XSelectionClearEvent xselectionclear; XSelectionRequestEvent xselectionrequest; XSelectionEvent xselection; XColormapEvent xcolormap; XClientMessageEvent xclient; XMappingEvent xmapping; XErrorEvent xerror; XKeymapEvent xkeymap; long pad[24]; } XEvent; An XEvent structure's first entry always is the type member, which is set to the event type. The second member always is the serial number of the protocol request that generated the event. The third member always is send_event, which is a Bool that indicates if the event was sent by a different client. The fourth member always is a display, which is the display that the event was read from. Except for keymap events, the fifth member always is a window, which has been carefully selected to be useful to toolkit dispatchers. To avoid breaking toolkits, the order of these first five entries is not to change. Most events also contain a time member, which is the time at which an event occurred. In addition, a pointer to the generic event must be cast before it is used to access any other information in the structure. Event Masks Event mask Clients select event reporting of most events relative to a window. To do this, pass an event mask to an Xlib event-handling function that takes an event_mask argument. The bits of the event mask are defined in <X11/X.h>. X11/X.h Files<X11/X.h> Headers<X11/X.h> Each bit in the event mask maps to an event mask name, which describes the event or events you want the X server to return to a client application. Unless the client has specifically asked for them, most events are not reported to clients when they are generated. Unless the client suppresses them by setting graphics-exposures in the GC to False, GraphicsExpose and NoExpose are reported by default as a result of and . SelectionClear, SelectionRequest, SelectionNotify, or ClientMessage cannot be masked. Selection-related events are only sent to clients cooperating with selections (see section 4.5). When the keyboard or pointer mapping is changed, MappingNotify is always sent to clients. The following table lists the event mask constants you can pass to the event_mask argument and the circumstances in which you would want to specify the event mask: Event Mask Circumstances NoEventMask No events wanted KeyPressMask Keyboard down events wanted KeyReleaseMask Keyboard up events wanted ButtonPressMask Pointer button down events wanted ButtonReleaseMask Pointer button up events wanted EnterWindowMask Pointer window entry events wanted LeaveWindowMask Pointer window leave events wanted PointerMotionMask Pointer motion events wanted PointerMotionHintMask Pointer motion hints wanted Button1MotionMask Pointer motion while button 1 down Button2MotionMask Pointer motion while button 2 down Button3MotionMask Pointer motion while button 3 down Button4MotionMask Pointer motion while button 4 down Button5MotionMask Pointer motion while button 5 down ButtonMotionMask Pointer motion while any button down KeymapStateMask Keyboard state wanted at window entry and focus in ExposureMask Any exposure wanted VisibilityChangeMask Any change in visibility wanted StructureNotifyMask Any change in window structure wanted ResizeRedirectMask Redirect resize of this window SubstructureNotifyMask Substructure notification wanted SubstructureRedirectMask Redirect structure requests on children FocusChangeMask Any change in input focus wanted PropertyChangeMask Any change in property wanted ColormapChangeMask Any change in colormap wanted OwnerGrabButtonMask Automatic grabs should activate with owner_events set to True Event Processing Overview The event reported to a client application during event processing depends on which event masks you provide as the event-mask attribute for a window. For some event masks, there is a one-to-one correspondence between the event mask constant and the event type constant. For example, if you pass the event mask ButtonPressMask, the X server sends back only ButtonPress events. CurrentTime Most events contain a time member, which is the time at which an event occurred. In other cases, one event mask constant can map to several event type constants. For example, if you pass the event mask SubstructureNotifyMask, the X server can send back CirculateNotify, ConfigureNotify, CreateNotify, DestroyNotify, GravityNotify, MapNotify, ReparentNotify, or UnmapNotify events. In another case, two event masks can map to one event type. For example, if you pass either PointerMotionMask or ButtonMotionMask, the X server sends back a MotionNotify event. The following table lists the event mask, its associated event type or types, and the structure name associated with the event type. Some of these structures actually are typedefs to a generic structure that is shared between two event types. Note that N.A. appears in columns for which the information is not applicable. Event Mask Event Type Structure Generic Structure ButtonMotionMask Button1MotionMask Button2MotionMask Button3MotionMask Button4MotionMask Button5MotionMask MotionNotify XPointerMovedEvent XMotionEvent ButtonPressMask ButtonPress XButtonPressedEvent XButtonEvent ButtonReleaseMask ButtonRelease XButtonReleasedEvent XButtonEvent ColormapChangeMask ColormapNotify XColormapEvent EnterWindowMask EnterNotify XEnterWindowEvent XCrossingEvent LeaveWindowMask LeaveNotify XLeaveWindowEvent XCrossingEvent ExposureMask Expose XExposeEvent GCGraphicsExposures in GC GraphicsExpose XGraphicsExposeEvent NoExpose XNoExposeEvent FocusChangeMask FocusIn XFocusInEvent XFocusChangeEvent FocusOut XFocusOutEvent XFocusChangeEvent KeymapStateMask KeymapNotify XKeymapEvent KeyPressMask KeyPress XKeyPressedEvent XKeyEvent KeyReleaseMask KeyRelease XKeyReleasedEvent XKeyEvent OwnerGrabButtonMask N.A. N.A. PointerMotionMask MotionNotify XPointerMovedEvent XMotionEvent PointerMotionHintMask N.A. N.A. PropertyChangeMask PropertyNotify XPropertyEvent ResizeRedirectMask ResizeRequest XResizeRequestEvent StructureNotifyMask CirculateNotify XCirculateEvent ConfigureNotify XConfigureEvent DestroyNotify XDestroyWindowEvent GravityNotify XGravityEvent MapNotify XMapEvent ReparentNotify XReparentEvent UnmapNotify XUnmapEvent SubstructureNotifyMask CirculateNotify XCirculateEvent ConfigureNotify XConfigureEvent CreateNotify XCreateWindowEvent DestroyNotify XDestroyWindowEvent GravityNotify XGravityEvent MapNotify XMapEvent ReparentNotify XReparentEvent UnmapNotify XUnmapEvent SubstructureRedirectMask CirculateRequest XCirculateRequestEvent ConfigureRequest XConfigureRequestEvent MapRequest XMapRequestEvent N.A. ClientMessage XClientMessageEvent N.A. MappingNotify XMappingEvent N.A. SelectionClear XSelectionClearEvent N.A. SelectionNotify XSelectionEvent N.A. SelectionRequest XSelectionRequestEvent VisibilityChangeMask VisibilityNotify XVisibilityEvent The sections that follow describe the processing that occurs when you select the different event masks. The sections are organized according to these processing categories: Keyboard and pointer events Window crossing events Input focus events Keymap state notification events Exposure events Window state notification events Structure control events Colormap state notification events Client communication events Keyboard and Pointer Events This section discusses: Pointer button events Keyboard and pointer events Pointer Button Events The following describes the event processing that occurs when a pointer button press is processed with the pointer in some window w and when no active pointer grab is in progress. The X server searches the ancestors of w from the root down, looking for a passive grab to activate. If no matching passive grab on the button exists, the X server automatically starts an active grab for the client receiving the event and sets the last-pointer-grab time to the current server time. The effect is essentially equivalent to an with these client passed arguments: Argument Value w The event window event_mask The client's selected pointer events on the event window pointer_mode GrabModeAsync keyboard_mode GrabModeAsync owner_events True, if the client has selected OwnerGrabButtonMask on the event window, otherwise False confine_to None cursor None The active grab is automatically terminated when the logical state of the pointer has all buttons released. Clients can modify the active grab by calling and . Keyboard and Pointer Events EventsButtonPress EventsButtonRelease EventsKeyPress EventsKeyRelease EventsMotionNotify This section discusses the processing that occurs for the keyboard events KeyPress and KeyRelease and the pointer events ButtonPress, ButtonRelease, and MotionNotify. For information about the keyboard event-handling utilities, see chapter 11. KeyPress KeyRelease The X server reports KeyPress or KeyRelease events to clients wanting information about keys that logically change state. Note that these events are generated for all keys, even those mapped to modifier bits. ButtonPress ButtonRelease The X server reports ButtonPress or ButtonRelease events to clients wanting information about buttons that logically change state. MotionNotify The X server reports MotionNotify events to clients wanting information about when the pointer logically moves. The X server generates this event whenever the pointer is moved and the pointer motion begins and ends in the window. The granularity of MotionNotify events is not guaranteed, but a client that selects this event type is guaranteed to receive at least one event when the pointer moves and then rests. The generation of the logical changes lags the physical changes if device event processing is frozen. To receive KeyPress, KeyRelease, ButtonPress, and ButtonRelease events, set KeyPressMask, KeyReleaseMask, ButtonPressMask, and ButtonReleaseMask bits in the event-mask attribute of the window. To receive MotionNotify events, set one or more of the following event masks bits in the event-mask attribute of the window. Button1MotionMask - Button5MotionMask The client application receives MotionNotify events only when one or more of the specified buttons is pressed. ButtonMotionMask The client application receives MotionNotify events only when at least one button is pressed. PointerMotionMask The client application receives MotionNotify events independent of the state of the pointer buttons. PointerMotionHintMask If PointerMotionHintMask is selected in combination with one or more of the above masks, the X server is free to send only one MotionNotify event (with the is_hint member of the XPointerMovedEvent structure set to NotifyHint) to the client for the event window, until either the key or button state changes, the pointer leaves the event window, or the client calls or . The server still may send MotionNotify events without is_hint set to NotifyHint. The source of the event is the viewable window that the pointer is in. The window used by the X server to report these events depends on the window's position in the window hierarchy and whether any intervening window prohibits the generation of these events. Starting with the source window, the X server searches up the window hierarchy until it locates the first window specified by a client as having an interest in these events. If one of the intervening windows has its do-not-propagate-mask set to prohibit generation of the event type, the events of those types will be suppressed. Clients can modify the actual window used for reporting by performing active grabs and, in the case of keyboard events, by using the focus window. The structures for these event types contain: typedef struct { int type; /* ButtonPress or ButtonRelease */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; /* ``event'' window it is reported relative to */ Window root; /* root window that the event occurred on */ Window subwindow; /* child window */ Time time; /* milliseconds */ int x, y; /* pointer x, y coordinates in event window */ int x_root, y_root; /* coordinates relative to root */ unsigned int state; /* key or button mask */ unsigned int button; /* detail */ Bool same_screen; /* same screen flag */ } XButtonEvent; typedef XButtonEvent XButtonPressedEvent; typedef XButtonEvent XButtonReleasedEvent; typedef struct { int type; /* KeyPress or KeyRelease */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; /* ``event'' window it is reported relative to */ Window root; /* root window that the event occurred on */ Window subwindow; /* child window */ Time time; /* milliseconds */ int x, y; /* pointer x, y coordinates in event window */ int x_root, y_root; /* coordinates relative to root */ unsigned int state; /* key or button mask */ unsigned int keycode; /* detail */ Bool same_screen; /* same screen flag */ } XKeyEvent; typedef XKeyEvent XKeyPressedEvent; typedef XKeyEvent XKeyReleasedEvent; typedef struct { int type; /* MotionNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; /* ``event'' window reported relative to */ Window root; /* root window that the event occurred on */ Window subwindow; /* child window */ Time time; /* milliseconds */ int x, y; /* pointer x, y coordinates in event window */ int x_root, y_root; /* coordinates relative to root */ unsigned int state; /* key or button mask */ char is_hint; /* detail */ Bool same_screen; /* same screen flag */ } XMotionEvent; typedef XMotionEvent XPointerMovedEvent; These structures have the following common members: window, root, subwindow, time, x, y, x_root, y_root, state, and same_screen. The window member is set to the window on which the event was generated and is referred to as the event window. As long as the conditions previously discussed are met, this is the window used by the X server to report the event. The root member is set to the source window's root window. The x_root and y_root members are set to the pointer's coordinates relative to the root window's origin at the time of the event. The same_screen member is set to indicate whether the event window is on the same screen as the root window and can be either True or False. If True, the event and root windows are on the same screen. If False, the event and root windows are not on the same screen. If the source window is an inferior of the event window, the subwindow member of the structure is set to the child of the event window that is the source window or the child of the event window that is an ancestor of the source window. Otherwise, the X server sets the subwindow member to None. The time member is set to the time when the event was generated and is expressed in milliseconds. If the event window is on the same screen as the root window, the x and y members are set to the coordinates relative to the event window's origin. Otherwise, these members are set to zero. The state member is set to indicate the logical state of the pointer buttons and modifier keys just prior to the event, which is the bitwise inclusive OR of one or more of the button or modifier key masks: Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask, ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, and Mod5Mask. Each of these structures also has a member that indicates the detail. For the XKeyPressedEvent and XKeyReleasedEvent structures, this member is called a keycode. It is set to a number that represents a physical key on the keyboard. The keycode is an arbitrary representation for any key on the keyboard (see sections 12.7 and 16.1). For the XButtonPressedEvent and XButtonReleasedEvent structures, this member is called button. It represents the pointer button that changed state and can be the Button1, Button2, Button3, Button4, or Button5 value. For the XPointerMovedEvent structure, this member is called is_hint. It can be set to NotifyNormal or NotifyHint. Some of the symbols mentioned in this section have fixed values, as follows: Symbol Value Button1MotionMask (1L<<8) Button2MotionMask (1L<<9) Button3MotionMask (1L<<10) Button4MotionMask (1L<<11) Button5MotionMask (1L<<12) Button1Mask (1<<8) Button2Mask (1<<9) Button3Mask (1<<10) Button4Mask (1<<11) Button5Mask (1<<12) ShiftMask (1<<0) LockMask (1<<1) ControlMask (1<<2) Mod1Mask (1<<3) Mod2Mask (1<<4) Mod3Mask (1<<5) Mod4Mask (1<<6) Mod5Mask (1<<7) Button1 1 Button2 2 Button3 3 Button4 4 Button5 5 Window Entry/Exit Events EventsEnterNotify EventsLeaveNotify This section describes the processing that occurs for the window crossing events EnterNotify and LeaveNotify. EnterNotify LeaveNotify If a pointer motion or a window hierarchy change causes the pointer to be in a different window than before, the X server reports EnterNotify or LeaveNotify events to clients who have selected for these events. All EnterNotify and LeaveNotify events caused by a hierarchy change are generated after any hierarchy event (UnmapNotify, MapNotify, ConfigureNotify, GravityNotify, CirculateNotify) caused by that change; however, the X protocol does not constrain the ordering of EnterNotify and LeaveNotify events with respect to FocusOut, VisibilityNotify, and Expose events. This contrasts with MotionNotify events, which are also generated when the pointer moves but only when the pointer motion begins and ends in a single window. An EnterNotify or LeaveNotify event also can be generated when some client application calls and . To receive EnterNotify or LeaveNotify events, set the EnterWindowMask or LeaveWindowMask bits of the event-mask attribute of the window. The structure for these event types contains: XCrossingEvent XEnterWindowEvent XLeaveWindowEvent typedef struct { int type; /* EnterNotify or LeaveNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; /* ``event'' window reported relative to */ Window root; /* root window that the event occurred on */ Window subwindow; /* child window */ Time time; /* milliseconds */ int x, y; /* pointer x, y coordinates in event window */ int x_root, y_root; /* coordinates relative to root */ int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */ int detail; /* * NotifyAncestor, NotifyVirtual, NotifyInferior, * NotifyNonlinear,NotifyNonlinearVirtual */ Bool same_screen; /* same screen flag */ Bool focus; /* boolean focus */ unsigned int state; /* key or button mask */ } XCrossingEvent; typedef XCrossingEvent XEnterWindowEvent; typedef XCrossingEvent XLeaveWindowEvent; The window member is set to the window on which the EnterNotify or LeaveNotify event was generated and is referred to as the event window. This is the window used by the X server to report the event, and is relative to the root window on which the event occurred. The root member is set to the root window of the screen on which the event occurred. For a LeaveNotify event, if a child of the event window contains the initial position of the pointer, the subwindow component is set to that child. Otherwise, the X server sets the subwindow member to None. For an EnterNotify event, if a child of the event window contains the final pointer position, the subwindow component is set to that child or None. The time member is set to the time when the event was generated and is expressed in milliseconds. The x and y members are set to the coordinates of the pointer position in the event window. This position is always the pointer's final position, not its initial position. If the event window is on the same screen as the root window, x and y are the pointer coordinates relative to the event window's origin. Otherwise, x and y are set to zero. The x_root and y_root members are set to the pointer's coordinates relative to the root window's origin at the time of the event. The same_screen member is set to indicate whether the event window is on the same screen as the root window and can be either True or False. If True, the event and root windows are on the same screen. If False, the event and root windows are not on the same screen. The focus member is set to indicate whether the event window is the focus window or an inferior of the focus window. The X server can set this member to either True or False. If True, the event window is the focus window or an inferior of the focus window. If False, the event window is not the focus window or an inferior of the focus window. The state member is set to indicate the state of the pointer buttons and modifier keys just prior to the event. The X server can set this member to the bitwise inclusive OR of one or more of the button or modifier key masks: Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask, ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask. The mode member is set to indicate whether the events are normal events, pseudo-motion events when a grab activates, or pseudo-motion events when a grab deactivates. The X server can set this member to NotifyNormal, NotifyGrab, or NotifyUngrab. The detail member is set to indicate the notify detail and can be NotifyAncestor, NotifyVirtual, NotifyInferior, NotifyNonlinear, or NotifyNonlinearVirtual. Normal Entry/Exit Events EnterNotify and LeaveNotify events are generated when the pointer moves from one window to another window. Normal events are identified by XEnterWindowEvent or XLeaveWindowEvent structures whose mode member is set to NotifyNormal. When the pointer moves from window A to window B and A is an inferior of B, the X server does the following: It generates a LeaveNotify event on window A, with the detail member of the XLeaveWindowEvent structure set to NotifyAncestor. It generates a LeaveNotify event on each window between window A and window B, exclusive, with the detail member of each XLeaveWindowEvent structure set to NotifyVirtual. It generates an EnterNotify event on window B, with the detail member of the XEnterWindowEvent structure set to NotifyInferior. When the pointer moves from window A to window B and B is an inferior of A, the X server does the following: It generates a LeaveNotify event on window A, with the detail member of the XLeaveWindowEvent structure set to NotifyInferior. It generates an EnterNotify event on each window between window A and window B, exclusive, with the detail member of each XEnterWindowEvent structure set to NotifyVirtual. It generates an EnterNotify event on window B, with the detail member of the XEnterWindowEvent structure set to NotifyAncestor. When the pointer moves from window A to window B and window C is their least common ancestor, the X server does the following: It generates a LeaveNotify event on window A, with the detail member of the XLeaveWindowEvent structure set to NotifyNonlinear. It generates a LeaveNotify event on each window between window A and window C, exclusive, with the detail member of each XLeaveWindowEvent structure set to NotifyNonlinearVirtual. It generates an EnterNotify event on each window between window C and window B, exclusive, with the detail member of each XEnterWindowEvent structure set to NotifyNonlinearVirtual. It generates an EnterNotify event on window B, with the detail member of the XEnterWindowEvent structure set to NotifyNonlinear. When the pointer moves from window A to window B on different screens, the X server does the following: It generates a LeaveNotify event on window A, with the detail member of the XLeaveWindowEvent structure set to NotifyNonlinear. If window A is not a root window, it generates a LeaveNotify event on each window above window A up to and including its root, with the detail member of each XLeaveWindowEvent structure set to NotifyNonlinearVirtual. If window B is not a root window, it generates an EnterNotify event on each window from window B's root down to but not including window B, with the detail member of each XEnterWindowEvent structure set to NotifyNonlinearVirtual. It generates an EnterNotify event on window B, with the detail member of the XEnterWindowEvent structure set to NotifyNonlinear. Grab and Ungrab Entry/Exit Events Pseudo-motion mode EnterNotify and LeaveNotify events are generated when a pointer grab activates or deactivates. Events in which the pointer grab activates are identified by XEnterWindowEvent or XLeaveWindowEvent structures whose mode member is set to NotifyGrab. Events in which the pointer grab deactivates are identified by XEnterWindowEvent or XLeaveWindowEvent structures whose mode member is set to NotifyUngrab (see ). When a pointer grab activates after any initial warp into a confine_to window and before generating any actual ButtonPress event that activates the grab, G is the grab_window for the grab, and P is the window the pointer is in, the X server does the following: It generates EnterNotify and LeaveNotify events (see section 10.6.1) with the mode members of the XEnterWindowEvent and XLeaveWindowEvent structures set to NotifyGrab. These events are generated as if the pointer were to suddenly warp from its current position in P to some position in G. However, the pointer does not warp, and the X server uses the pointer position as both the initial and final positions for the events. When a pointer grab deactivates after generating any actual ButtonRelease event that deactivates the grab, G is the grab_window for the grab, and P is the window the pointer is in, the X server does the following: It generates EnterNotify and LeaveNotify events (see section 10.6.1) with the mode members of the XEnterWindowEvent and XLeaveWindowEvent structures set to NotifyUngrab. These events are generated as if the pointer were to suddenly warp from some position in G to its current position in P. However, the pointer does not warp, and the X server uses the current pointer position as both the initial and final positions for the events. Input Focus Events EventsFocusIn EventsFocusOut This section describes the processing that occurs for the input focus events FocusIn and FocusOut. FocusIn FocusOut The X server can report FocusIn or FocusOut events to clients wanting information about when the input focus changes. The keyboard is always attached to some window (typically, the root window or a top-level window), which is called the focus window. The focus window and the position of the pointer determine the window that receives keyboard input. Clients may need to know when the input focus changes to control highlighting of areas on the screen. To receive FocusIn or FocusOut events, set the FocusChangeMask bit in the event-mask attribute of the window. The structure for these event types contains: XFocusChangeEvent XFocusInEvent XFocusOutEvent typedef struct { int type; /* FocusIn or FocusOut */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; /* window of event */ int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */ int detail; /* * NotifyAncestor, NotifyVirtual, NotifyInferior, * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer, * NotifyPointerRoot, NotifyDetailNone */ } XFocusChangeEvent; typedef XFocusChangeEvent XFocusInEvent; typedef XFocusChangeEvent XFocusOutEvent; The window member is set to the window on which the FocusIn or FocusOut event was generated. This is the window used by the X server to report the event. The mode member is set to indicate whether the focus events are normal focus events, focus events while grabbed, focus events when a grab activates, or focus events when a grab deactivates. The X server can set the mode member to NotifyNormal, NotifyWhileGrabbed, NotifyGrab, or NotifyUngrab. All FocusOut events caused by a window unmap are generated after any UnmapNotify event; however, the X protocol does not constrain the ordering of FocusOut events with respect to generated EnterNotify, LeaveNotify, VisibilityNotify, and Expose events. Depending on the event mode, the detail member is set to indicate the notify detail and can be NotifyAncestor, NotifyVirtual, NotifyInferior, NotifyNonlinear, NotifyNonlinearVirtual, NotifyPointer, NotifyPointerRoot, or NotifyDetailNone. Normal Focus Events and Focus Events While Grabbed Normal focus events are identified by XFocusInEvent or XFocusOutEvent structures whose mode member is set to NotifyNormal. Focus events while grabbed are identified by XFocusInEvent or XFocusOutEvent structures whose mode member is set to NotifyWhileGrabbed. The X server processes normal focus and focus events while grabbed according to the following: When the focus moves from window A to window B, A is an inferior of B, and the pointer is in window P, the X server does the following: It generates a FocusOut event on window A, with the detail member of the XFocusOutEvent structure set to NotifyAncestor. It generates a FocusOut event on each window between window A and window B, exclusive, with the detail member of each XFocusOutEvent structure set to NotifyVirtual. It generates a FocusIn event on window B, with the detail member of the XFocusOutEvent structure set to NotifyInferior. If window P is an inferior of window B but window P is not window A or an inferior or ancestor of window A, it generates a FocusIn event on each window below window B, down to and including window P, with the detail member of each XFocusInEvent structure set to NotifyPointer. When the focus moves from window A to window B, B is an inferior of A, and the pointer is in window P, the X server does the following: If window P is an inferior of window A but P is not an inferior of window B or an ancestor of B, it generates a FocusOut event on each window from window P up to but not including window A, with the detail member of each XFocusOutEvent structure set to NotifyPointer. It generates a FocusOut event on window A, with the detail member of the XFocusOutEvent structure set to NotifyInferior. It generates a FocusIn event on each window between window A and window B, exclusive, with the detail member of each XFocusInEvent structure set to NotifyVirtual. It generates a FocusIn event on window B, with the detail member of the XFocusInEvent structure set to NotifyAncestor. When the focus moves from window A to window B, window C is their least common ancestor, and the pointer is in window P, the X server does the following: If window P is an inferior of window A, it generates a FocusOut event on each window from window P up to but not including window A, with the detail member of the XFocusOutEvent structure set to NotifyPointer. It generates a FocusOut event on window A, with the detail member of the XFocusOutEvent structure set to NotifyNonlinear. It generates a FocusOut event on each window between window A and window C, exclusive, with the detail member of each XFocusOutEvent structure set to NotifyNonlinearVirtual. It generates a FocusIn event on each window between C and B, exclusive, with the detail member of each XFocusInEvent structure set to NotifyNonlinearVirtual. It generates a FocusIn event on window B, with the detail member of the XFocusInEvent structure set to NotifyNonlinear. If window P is an inferior of window B, it generates a FocusIn event on each window below window B down to and including window P, with the detail member of the XFocusInEvent structure set to NotifyPointer. When the focus moves from window A to window B on different screens and the pointer is in window P, the X server does the following: If window P is an inferior of window A, it generates a FocusOut event on each window from window P up to but not including window A, with the detail member of each XFocusOutEvent structure set to NotifyPointer. It generates a FocusOut event on window A, with the detail member of the XFocusOutEvent structure set to NotifyNonlinear. If window A is not a root window, it generates a FocusOut event on each window above window A up to and including its root, with the detail member of each XFocusOutEvent structure set to NotifyNonlinearVirtual. If window B is not a root window, it generates a FocusIn event on each window from window B's root down to but not including window B, with the detail member of each XFocusInEvent structure set to NotifyNonlinearVirtual. It generates a FocusIn event on window B, with the detail member of each XFocusInEvent structure set to NotifyNonlinear. If window P is an inferior of window B, it generates a FocusIn event on each window below window B down to and including window P, with the detail member of each XFocusInEvent structure set to NotifyPointer. When the focus moves from window A to PointerRoot (events sent to the window under the pointer) or None (discard), and the pointer is in window P, the X server does the following: If window P is an inferior of window A, it generates a FocusOut event on each window from window P up to but not including window A, with the detail member of each XFocusOutEvent structure set to NotifyPointer. It generates a FocusOut event on window A, with the detail member of the XFocusOutEvent structure set to NotifyNonlinear. If window A is not a root window, it generates a FocusOut event on each window above window A up to and including its root, with the detail member of each XFocusOutEvent structure set to NotifyNonlinearVirtual. It generates a FocusIn event on the root window of all screens, with the detail member of each XFocusInEvent structure set to NotifyPointerRoot (or NotifyDetailNone). If the new focus is PointerRoot, it generates a FocusIn event on each window from window P's root down to and including window P, with the detail member of each XFocusInEvent structure set to NotifyPointer. When the focus moves from PointerRoot (events sent to the window under the pointer) or None to window A, and the pointer is in window P, the X server does the following: If the old focus is PointerRoot, it generates a FocusOut event on each window from window P up to and including window P's root, with the detail member of each XFocusOutEvent structure set to NotifyPointer. It generates a FocusOut event on all root windows, with the detail member of each XFocusOutEvent structure set to NotifyPointerRoot (or NotifyDetailNone). If window A is not a root window, it generates a FocusIn event on each window from window A's root down to but not including window A, with the detail member of each XFocusInEvent structure set to NotifyNonlinearVirtual. It generates a FocusIn event on window A, with the detail member of the XFocusInEvent structure set to NotifyNonlinear. If window P is an inferior of window A, it generates a FocusIn event on each window below window A down to and including window P, with the detail member of each XFocusInEvent structure set to NotifyPointer. When the focus moves from PointerRoot (events sent to the window under the pointer) to None (or vice versa), and the pointer is in window P, the X server does the following: If the old focus is PointerRoot, it generates a FocusOut event on each window from window P up to and including window P's root, with the detail member of each XFocusOutEvent structure set to NotifyPointer. It generates a FocusOut event on all root windows, with the detail member of each XFocusOutEvent structure set to either NotifyPointerRoot or NotifyDetailNone. It generates a FocusIn event on all root windows, with the detail member of each XFocusInEvent structure set to NotifyDetailNone or NotifyPointerRoot. If the new focus is PointerRoot, it generates a FocusIn event on each window from window P's root down to and including window P, with the detail member of each XFocusInEvent structure set to NotifyPointer. Focus Events Generated by Grabs Focus events in which the keyboard grab activates are identified by XFocusInEvent or XFocusOutEvent structures whose mode member is set to NotifyGrab. Focus events in which the keyboard grab deactivates are identified by XFocusInEvent or XFocusOutEvent structures whose mode member is set to NotifyUngrab (see ). When a keyboard grab activates before generating any actual KeyPress event that activates the grab, G is the grab_window, and F is the current focus, the X server does the following: It generates FocusIn and FocusOut events, with the mode members of the XFocusInEvent and XFocusOutEvent structures set to NotifyGrab. These events are generated as if the focus were to change from F to G. When a keyboard grab deactivates after generating any actual KeyRelease event that deactivates the grab, G is the grab_window, and F is the current focus, the X server does the following: It generates FocusIn and FocusOut events, with the mode members of the XFocusInEvent and XFocusOutEvent structures set to NotifyUngrab. These events are generated as if the focus were to change from G to F. Key Map State Notification Events EventsKeymapNotify KeymapNotify The X server can report KeymapNotify events to clients that want information about changes in their keyboard state. To receive KeymapNotify events, set the KeymapStateMask bit in the event-mask attribute of the window. The X server generates this event immediately after every EnterNotify and FocusIn event. The structure for this event type contains: XKeymapEvent /* generated on EnterWindow and FocusIn when KeymapState selected */ typedef struct { int type; /* KeymapNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; char key_vector[32]; } XKeymapEvent; The window member is not used but is present to aid some toolkits. The key_vector member is set to the bit vector of the keyboard. Each bit set to 1 indicates that the corresponding key is currently pressed. The vector is represented as 32 bytes. Byte N (from 0) contains the bits for keys 8N to 8N + 7 with the least significant bit in the byte representing key 8N. Exposure Events The X protocol does not guarantee to preserve the contents of window regions when the windows are obscured or reconfigured. Some implementations may preserve the contents of windows. Other implementations are free to destroy the contents of windows when exposed. X expects client applications to assume the responsibility for restoring the contents of an exposed window region. (An exposed window region describes a formerly obscured window whose region becomes visible.) Therefore, the X server sends Expose events describing the window and the region of the window that has been exposed. A naive client application usually redraws the entire window. A more sophisticated client application redraws only the exposed region. Expose Events EventsExpose Expose The X server can report Expose events to clients wanting information about when the contents of window regions have been lost. The circumstances in which the X server generates Expose events are not as definite as those for other events. However, the X server never generates Expose events on windows whose class you specified as InputOnly. The X server can generate Expose events when no valid contents are available for regions of a window and either the regions are visible, the regions are viewable and the server is (perhaps newly) maintaining backing store on the window, or the window is not viewable but the server is (perhaps newly) honoring the window's backing-store attribute of Always or WhenMapped. The regions decompose into an (arbitrary) set of rectangles, and an Expose event is generated for each rectangle. For any given window, the X server guarantees to report contiguously all of the regions exposed by some action that causes Expose events, such as raising a window. To receive Expose events, set the ExposureMask bit in the event-mask attribute of the window. The structure for this event type contains: XExposeEvent typedef struct { int type; /* Expose */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; int x, y; int width, height; int count; /* if nonzero, at least this many more */ } XExposeEvent; The window member is set to the exposed (damaged) window. The x and y members are set to the coordinates relative to the window's origin and indicate the upper-left corner of the rectangle. The width and height members are set to the size (extent) of the rectangle. The count member is set to the number of Expose events that are to follow. If count is zero, no more Expose events follow for this window. However, if count is nonzero, at least that number of Expose events (and possibly more) follow for this window. Simple applications that do not want to optimize redisplay by distinguishing between subareas of its window can just ignore all Expose events with nonzero counts and perform full redisplays on events with zero counts. GraphicsExpose and NoExpose Events EventsGraphicsExpose EventsNoExpose GraphicsExpose The X server can report GraphicsExpose events to clients wanting information about when a destination region could not be computed during certain graphics requests: or . The X server generates this event whenever a destination region could not be computed because of an obscured or out-of-bounds source region. In addition, the X server guarantees to report contiguously all of the regions exposed by some graphics request (for example, copying an area of a drawable to a destination drawable). NoExpose The X server generates a NoExpose event whenever a graphics request that might produce a GraphicsExpose event does not produce any. In other words, the client is really asking for a GraphicsExpose event but instead receives a NoExpose event. To receive GraphicsExpose or NoExpose events, you must first set the graphics-exposure attribute of the graphics context to True. You also can set the graphics-expose attribute when creating a graphics context using or by calling . The structures for these event types contain: XGraphicsExposeEvent typedef struct { int type; /* GraphicsExpose */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Drawable drawable; int x, y; int width, height; int count; /* if nonzero, at least this many more */ int major_code; /* core is CopyArea or CopyPlane */ int minor_code; /* not defined in the core */ } XGraphicsExposeEvent; XNoExposeEvent typedef struct { int type; /* NoExpose */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Drawable drawable; int major_code; /* core is CopyArea or CopyPlane */ int minor_code; /* not defined in the core */ } XNoExposeEvent; Both structures have these common members: drawable, major_code, and minor_code. The drawable member is set to the drawable of the destination region on which the graphics request was to be performed. The major_code member is set to the graphics request initiated by the client and can be either X_CopyArea or X_CopyPlane. If it is X_CopyArea, a call to initiated the request. If it is X_CopyPlane, a call to initiated the request. These constants are defined in <X11/Xproto.h>. X11/Xproto.h Files<X11/Xproto.h> Headers<X11/Xproto.h> The minor_code member, like the major_code member, indicates which graphics request was initiated by the client. However, the minor_code member is not defined by the core X protocol and will be zero in these cases, although it may be used by an extension. The XGraphicsExposeEvent structure has these additional members: x, y, width, height, and count. The x and y members are set to the coordinates relative to the drawable's origin and indicate the upper-left corner of the rectangle. The width and height members are set to the size (extent) of the rectangle. The count member is set to the number of GraphicsExpose events to follow. If count is zero, no more GraphicsExpose events follow for this window. However, if count is nonzero, at least that number of GraphicsExpose events (and possibly more) are to follow for this window. Window State Change Events The following sections discuss: CirculateNotify events ConfigureNotify events CreateNotify events DestroyNotify events GravityNotify events MapNotify events MappingNotify events ReparentNotify events UnmapNotify events VisibilityNotify events CirculateNotify Events EventsCirculateNotify CirculateNotify The X server can report CirculateNotify events to clients wanting information about when a window changes its position in the stack. The X server generates this event type whenever a window is actually restacked as a result of a client application calling , , or . To receive CirculateNotify events, set the StructureNotifyMask bit in the event-mask attribute of the window or the SubstructureNotifyMask bit in the event-mask attribute of the parent window (in which case, circulating any child generates an event). The structure for this event type contains: XCirculateEvent typedef struct { int type; /* CirculateNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; int place; /* PlaceOnTop, PlaceOnBottom */ } XCirculateEvent; The event member is set either to the restacked window or to its parent, depending on whether StructureNotify or SubstructureNotify was selected. The window member is set to the window that was restacked. The place member is set to the window's position after the restack occurs and is either PlaceOnTop or PlaceOnBottom. If it is PlaceOnTop, the window is now on top of all siblings. If it is PlaceOnBottom, the window is now below all siblings. ConfigureNotify Events EventsConfigureNotify ConfigureNotify The X server can report ConfigureNotify events to clients wanting information about actual changes to a window's state, such as size, position, border, and stacking order. The X server generates this event type whenever one of the following configure window requests made by a client application actually completes: A window's size, position, border, and/or stacking order is reconfigured by calling . The window's position in the stacking order is changed by calling , , or . A window is moved by calling . A window's size is changed by calling . A window's size and location is changed by calling . A window is mapped and its position in the stacking order is changed by calling . A window's border width is changed by calling . To receive ConfigureNotify events, set the StructureNotifyMask bit in the event-mask attribute of the window or the SubstructureNotifyMask bit in the event-mask attribute of the parent window (in which case, configuring any child generates an event). The structure for this event type contains: XConfigureEvent typedef struct { int type; /* ConfigureNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; int x, y; int width, height; int border_width; Window above; Bool override_redirect; } XConfigureEvent; The event member is set either to the reconfigured window or to its parent, depending on whether StructureNotify or SubstructureNotify was selected. The window member is set to the window whose size, position, border, and/or stacking order was changed. The x and y members are set to the coordinates relative to the parent window's origin and indicate the position of the upper-left outside corner of the window. The width and height members are set to the inside size of the window, not including the border. The border_width member is set to the width of the window's border, in pixels. The above member is set to the sibling window and is used for stacking operations. If the X server sets this member to None, the window whose state was changed is on the bottom of the stack with respect to sibling windows. However, if this member is set to a sibling window, the window whose state was changed is placed on top of this sibling window. The override_redirect member is set to the override-redirect attribute of the window. Window manager clients normally should ignore this window if the override_redirect member is True. CreateNotify Events EventsCreateNotify CreateNotify The X server can report CreateNotify events to clients wanting information about creation of windows. The X server generates this event whenever a client application creates a window by calling or . To receive CreateNotify events, set the SubstructureNotifyMask bit in the event-mask attribute of the window. Creating any children then generates an event. The structure for the event type contains: XCreateWindowEvent typedef struct { int type; /* CreateNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window parent; /* parent of the window */ Window window; /* window id of window created */ int x, y; /* window location */ int width, height; /* size of window */ int border_width; /* border width */ Bool override_redirect; /* creation should be overridden */ } XCreateWindowEvent; The parent member is set to the created window's parent. The window member specifies the created window. The x and y members are set to the created window's coordinates relative to the parent window's origin and indicate the position of the upper-left outside corner of the created window. The width and height members are set to the inside size of the created window (not including the border) and are always nonzero. The border_width member is set to the width of the created window's border, in pixels. The override_redirect member is set to the override-redirect attribute of the window. Window manager clients normally should ignore this window if the override_redirect member is True. DestroyNotify Events EventsDestroyNotify DestroyNotify The X server can report DestroyNotify events to clients wanting information about which windows are destroyed. The X server generates this event whenever a client application destroys a window by calling or . The ordering of the DestroyNotify events is such that for any given window, DestroyNotify is generated on all inferiors of the window before being generated on the window itself. The X protocol does not constrain the ordering among siblings and across subhierarchies. To receive DestroyNotify events, set the StructureNotifyMask bit in the event-mask attribute of the window or the SubstructureNotifyMask bit in the event-mask attribute of the parent window (in which case, destroying any child generates an event). The structure for this event type contains: XDestroyWindowEvent typedef struct { int type; /* DestroyNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; } XDestroyWindowEvent; The event member is set either to the destroyed window or to its parent, depending on whether StructureNotify or SubstructureNotify was selected. The window member is set to the window that is destroyed. GravityNotify Events EventsGravityNotify GravityNotify The X server can report GravityNotify events to clients wanting information about when a window is moved because of a change in the size of its parent. The X server generates this event whenever a client application actually moves a child window as a result of resizing its parent by calling , , or . To receive GravityNotify events, set the StructureNotifyMask bit in the event-mask attribute of the window or the SubstructureNotifyMask bit in the event-mask attribute of the parent window (in which case, any child that is moved because its parent has been resized generates an event). The structure for this event type contains: XGravityEvent typedef struct { int type; /* GravityNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; int x, y; } XGravityEvent; The event member is set either to the window that was moved or to its parent, depending on whether StructureNotify or SubstructureNotify was selected. The window member is set to the child window that was moved. The x and y members are set to the coordinates relative to the new parent window's origin and indicate the position of the upper-left outside corner of the window. MapNotify Events EventsMapNotify MapNotify The X server can report MapNotify events to clients wanting information about which windows are mapped. The X server generates this event type whenever a client application changes the window's state from unmapped to mapped by calling , , , , or as a result of save-set processing. To receive MapNotify events, set the StructureNotifyMask bit in the event-mask attribute of the window or the SubstructureNotifyMask bit in the event-mask attribute of the parent window (in which case, mapping any child generates an event). The structure for this event type contains: XMapEvent typedef struct { int type; /* MapNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; Bool override_redirect; /* boolean, is override set... */ } XMapEvent; The event member is set either to the window that was mapped or to its parent, depending on whether StructureNotify or SubstructureNotify was selected. The window member is set to the window that was mapped. The override_redirect member is set to the override-redirect attribute of the window. Window manager clients normally should ignore this window if the override-redirect attribute is True, because these events usually are generated from pop-ups, which override structure control. MappingNotify Events EventsMappingNotify MappingNotify The X server reports MappingNotify events to all clients. There is no mechanism to express disinterest in this event. The X server generates this event type whenever a client application successfully calls: to indicate which KeyCodes are to be used as modifiers to change the keyboard mapping to set the pointer mapping The structure for this event type contains: XMappingEvent typedef struct { int type; /* MappingNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; /* unused */ int request; /* one of MappingModifier, MappingKeyboard, MappingPointer */ int first_keycode; /* first keycode */ int count; /* defines range of change w. first_keycode*/ } XMappingEvent; The request member is set to indicate the kind of mapping change that occurred and can be MappingModifier, MappingKeyboard, or MappingPointer. If it is MappingModifier, the modifier mapping was changed. If it is MappingKeyboard, the keyboard mapping was changed. If it is MappingPointer, the pointer button mapping was changed. The first_keycode and count members are set only if the request member was set to MappingKeyboard. The number in first_keycode represents the first number in the range of the altered mapping, and count represents the number of keycodes altered. To update the client application's knowledge of the keyboard, you should call . ReparentNotify Events EventsReparentNotify ReparentNotify The X server can report ReparentNotify events to clients wanting information about changing a window's parent. The X server generates this event whenever a client application calls and the window is actually reparented. To receive ReparentNotify events, set the StructureNotifyMask bit in the event-mask attribute of the window or the SubstructureNotifyMask bit in the event-mask attribute of either the old or the new parent window (in which case, reparenting any child generates an event). The structure for this event type contains: XReparentEvent typedef struct { int type; /* ReparentNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; Window parent; int x, y; Bool override_redirect; } XReparentEvent; The event member is set either to the reparented window or to the old or the new parent, depending on whether StructureNotify or SubstructureNotify was selected. The window member is set to the window that was reparented. The parent member is set to the new parent window. The x and y members are set to the reparented window's coordinates relative to the new parent window's origin and define the upper-left outer corner of the reparented window. The override_redirect member is set to the override-redirect attribute of the window specified by the window member. Window manager clients normally should ignore this window if the override_redirect member is True. UnmapNotify Events EventsUnmapNotify UnmapNotify The X server can report UnmapNotify events to clients wanting information about which windows are unmapped. The X server generates this event type whenever a client application changes the window's state from mapped to unmapped. To receive UnmapNotify events, set the StructureNotifyMask bit in the event-mask attribute of the window or the SubstructureNotifyMask bit in the event-mask attribute of the parent window (in which case, unmapping any child window generates an event). The structure for this event type contains: XUnmapEvent typedef struct { int type; /* UnmapNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window event; Window window; Bool from_configure; } XUnmapEvent; The event member is set either to the unmapped window or to its parent, depending on whether StructureNotify or SubstructureNotify was selected. This is the window used by the X server to report the event. The window member is set to the window that was unmapped. The from_configure member is set to True if the event was generated as a result of a resizing of the window's parent when the window itself had a win_gravity of UnmapGravity. VisibilityNotify Events EventsVisibilityNotify VisibilityNotify The X server can report VisibilityNotify events to clients wanting any change in the visibility of the specified window. A region of a window is visible if someone looking at the screen can actually see it. The X server generates this event whenever the visibility changes state. However, this event is never generated for windows whose class is InputOnly. All VisibilityNotify events caused by a hierarchy change are generated after any hierarchy event (UnmapNotify, MapNotify, ConfigureNotify, GravityNotify, CirculateNotify) caused by that change. Any VisibilityNotify event on a given window is generated before any Expose events on that window, but it is not required that all VisibilityNotify events on all windows be generated before all Expose events on all windows. The X protocol does not constrain the ordering of VisibilityNotify events with respect to FocusOut, EnterNotify, and LeaveNotify events. To receive VisibilityNotify events, set the VisibilityChangeMask bit in the event-mask attribute of the window. The structure for this event type contains: XVisibilityEvent typedef struct { int type; /* VisibilityNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; int state; } XVisibilityEvent; The window member is set to the window whose visibility state changes. The state member is set to the state of the window's visibility and can be VisibilityUnobscured, VisibilityPartiallyObscured, or VisibilityFullyObscured. The X server ignores all of a window's subwindows when determining the visibility state of the window and processes VisibilityNotify events according to the following: When the window changes state from partially obscured, fully obscured, or not viewable to viewable and completely unobscured, the X server generates the event with the state member of the XVisibilityEvent structure set to VisibilityUnobscured. When the window changes state from viewable and completely unobscured or not viewable to viewable and partially obscured, the X server generates the event with the state member of the XVisibilityEvent structure set to VisibilityPartiallyObscured. When the window changes state from viewable and completely unobscured, viewable and partially obscured, or not viewable to viewable and fully obscured, the X server generates the event with the state member of the XVisibilityEvent structure set to VisibilityFullyObscured. Structure Control Events This section discusses: CirculateRequest events ConfigureRequest events MapRequest events ResizeRequest events CirculateRequest Events EventsCirculateRequest CirculateRequest The X server can report CirculateRequest events to clients wanting information about when another client initiates a circulate window request on a specified window. The X server generates this event type whenever a client initiates a circulate window request on a window and a subwindow actually needs to be restacked. The client initiates a circulate window request on the window by calling , , or . To receive CirculateRequest events, set the SubstructureRedirectMask in the event-mask attribute of the window. Then, in the future, the circulate window request for the specified window is not executed, and thus, any subwindow's position in the stack is not changed. For example, suppose a client application calls to raise a subwindow to the top of the stack. If you had selected SubstructureRedirectMask on the window, the X server reports to you a CirculateRequest event and does not raise the subwindow to the top of the stack. The structure for this event type contains: XCirculateRequestEvent typedef struct { int type; /* CirculateRequest */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window parent; Window window; int place; /* PlaceOnTop, PlaceOnBottom */ } XCirculateRequestEvent; The parent member is set to the parent window. The window member is set to the subwindow to be restacked. The place member is set to what the new position in the stacking order should be and is either PlaceOnTop or PlaceOnBottom. If it is PlaceOnTop, the subwindow should be on top of all siblings. If it is PlaceOnBottom, the subwindow should be below all siblings. ConfigureRequest Events EventsConfigureRequest ConfigureRequest The X server can report ConfigureRequest events to clients wanting information about when a different client initiates a configure window request on any child of a specified window. The configure window request attempts to reconfigure a window's size, position, border, and stacking order. The X server generates this event whenever a different client initiates a configure window request on a window by calling , , , , , , , , or . To receive ConfigureRequest events, set the SubstructureRedirectMask bit in the event-mask attribute of the window. ConfigureRequest events are generated when a ConfigureWindow protocol request is issued on a child window by another client. For example, suppose a client application calls to lower a window. If you had selected SubstructureRedirectMask on the parent window and if the override-redirect attribute of the window is set to False, the X server reports a ConfigureRequest event to you and does not lower the specified window. The structure for this event type contains: XConfigureRequestEvent typedef struct { int type; /* ConfigureRequest */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window parent; Window window; int x, y; int width, height; int border_width; Window above; int detail; /* Above, Below, TopIf, BottomIf, Opposite */ unsigned long value_mask; } XConfigureRequestEvent; The parent member is set to the parent window. The window member is set to the window whose size, position, border width, and/or stacking order is to be reconfigured. The value_mask member indicates which components were specified in the ConfigureWindow protocol request. The corresponding values are reported as given in the request. The remaining values are filled in from the current geometry of the window, except in the case of above (sibling) and detail (stack-mode), which are reported as None and Above, respectively, if they are not given in the request. MapRequest Events EventsMapRequest MapRequest The X server can report MapRequest events to clients wanting information about a different client's desire to map windows. A window is considered mapped when a map window request completes. The X server generates this event whenever a different client initiates a map window request on an unmapped window whose override_redirect member is set to False. Clients initiate map window requests by calling , , or . To receive MapRequest events, set the SubstructureRedirectMask bit in the event-mask attribute of the window. This means another client's attempts to map a child window by calling one of the map window request functions is intercepted, and you are sent a MapRequest instead. For example, suppose a client application calls to map a window. If you (usually a window manager) had selected SubstructureRedirectMask on the parent window and if the override-redirect attribute of the window is set to False, the X server reports a MapRequest event to you and does not map the specified window. Thus, this event gives your window manager client the ability to control the placement of subwindows. The structure for this event type contains: XMapRequestEvent typedef struct { int type; /* MapRequest */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window parent; Window window; } XMapRequestEvent; The parent member is set to the parent window. The window member is set to the window to be mapped. ResizeRequest Events EventsResizeRequest ResizeRequest The X server can report ResizeRequest events to clients wanting information about another client's attempts to change the size of a window. The X server generates this event whenever some other client attempts to change the size of the specified window by calling , , or . To receive ResizeRequest events, set the ResizeRedirect bit in the event-mask attribute of the window. Any attempts to change the size by other clients are then redirected. The structure for this event type contains: XResizeRequestEvent typedef struct { int type; /* ResizeRequest */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; int width, height; } XResizeRequestEvent; The window member is set to the window whose size another client attempted to change. The width and height members are set to the inside size of the window, excluding the border. Colormap State Change Events EventsColormapNotify ColormapNotify The X server can report ColormapNotify events to clients wanting information about when the colormap changes and when a colormap is installed or uninstalled. The X server generates this event type whenever a client application: Changes the colormap member of the XSetWindowAttributes structure by calling , , or Installs or uninstalls the colormap by calling or To receive ColormapNotify events, set the ColormapChangeMask bit in the event-mask attribute of the window. The structure for this event type contains: XColormapEvent typedef struct { int type; /* ColormapNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; Colormap colormap; /* colormap or None */ Bool new; int state; /* ColormapInstalled, ColormapUninstalled */ } XColormapEvent; The window member is set to the window whose associated colormap is changed, installed, or uninstalled. For a colormap that is changed, installed, or uninstalled, the colormap member is set to the colormap associated with the window. For a colormap that is changed by a call to , the colormap member is set to None. The new member is set to indicate whether the colormap for the specified window was changed or installed or uninstalled and can be True or False. If it is True, the colormap was changed. If it is False, the colormap was installed or uninstalled. The state member is always set to indicate whether the colormap is installed or uninstalled and can be ColormapInstalled or ColormapUninstalled. Client Communication Events This section discusses: ClientMessage events PropertyNotify events SelectionClear events SelectionNotify events SelectionRequest events ClientMessage Events EventsClientMessage ClientMessage The X server generates ClientMessage events only when a client calls the function . The structure for this event type contains: XClientMessageEvent typedef struct { int type; /* ClientMessage */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; Atom message_type; int format; union { char b[20]; short s[10]; long l[5]; } data; } XClientMessageEvent; The message_type member is set to an atom that indicates how the data should be interpreted by the receiving client. The format member is set to 8, 16, or 32 and specifies whether the data should be viewed as a list of bytes, shorts, or longs. The data member is a union that contains the members b, s, and l. The b, s, and l members represent data of twenty 8-bit values, ten 16-bit values, and five 32-bit values. Particular message types might not make use of all these values. The X server places no interpretation on the values in the window, message_type, or data members. PropertyNotify Events EventsPropertyNotify PropertyNotify The X server can report PropertyNotify events to clients wanting information about property changes for a specified window. To receive PropertyNotify events, set the PropertyChangeMask bit in the event-mask attribute of the window. The structure for this event type contains: XPropertyEvent typedef struct { int type; /* PropertyNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; Atom atom; Time time; int state; /* PropertyNewValue or PropertyDelete */ } XPropertyEvent; The window member is set to the window whose associated property was changed. The atom member is set to the property's atom and indicates which property was changed or desired. The time member is set to the server time when the property was changed. The state member is set to indicate whether the property was changed to a new value or deleted and can be PropertyNewValue or PropertyDelete. The state member is set to PropertyNewValue when a property of the window is changed using or (even when adding zero-length data using ) and when replacing all or part of a property with identical data using or . The state member is set to PropertyDelete when a property of the window is deleted using or, if the delete argument is True, . SelectionClear Events EventsSelectionClear SelectionClear The X server reports SelectionClear events to the client losing ownership of a selection. The X server generates this event type when another client asserts ownership of the selection by calling . The structure for this event type contains: XSelectionClearEvent typedef struct { int type; /* SelectionClear */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window window; Atom selection; Time time; } XSelectionClearEvent; The selection member is set to the selection atom. The time member is set to the last change time recorded for the selection. The window member is the window that was specified by the current owner (the owner losing the selection) in its call. SelectionRequest Events EventsSelectionRequest SelectionRequest The X server reports SelectionRequest events to the owner of a selection. The X server generates this event whenever a client requests a selection conversion by calling for the owned selection. The structure for this event type contains: XSelectionRequestEvent typedef struct { int type; /* SelectionRequest */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window owner; Window requestor; Atom selection; Atom target; Atom property; Time time; } XSelectionRequestEvent; The owner member is set to the window that was specified by the current owner in its call. The requestor member is set to the window requesting the selection. The selection member is set to the atom that names the selection. For example, PRIMARY is used to indicate the primary selection. The target member is set to the atom that indicates the type the selection is desired in. The property member can be a property name or None. The time member is set to the timestamp or CurrentTime value from the ConvertSelection request. The owner should convert the selection based on the specified target type and send a SelectionNotify event back to the requestor. A complete specification for using selections is given in the X Consortium standard Inter-Client Communication Conventions Manual. SelectionNotify Events EventsSelectionNotify SelectionNotify This event is generated by the X server in response to a ConvertSelection protocol request when there is no owner for the selection. When there is an owner, it should be generated by the owner of the selection by using . The owner of a selection should send this event to a requestor when a selection has been converted and stored as a property or when a selection conversion could not be performed (which is indicated by setting the property member to None). If None is specified as the property in the ConvertSelection protocol request, the owner should choose a property name, store the result as that property on the requestor window, and then send a SelectionNotify giving that actual property name. The structure for this event type contains: XSelectionEvent typedef struct { int type; /* SelectionNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Window requestor; Atom selection; Atom target; Atom property; /* atom or None */ Time time; } XSelectionEvent; The requestor member is set to the window associated with the requestor of the selection. The selection member is set to the atom that indicates the selection. For example, PRIMARY is used for the primary selection. The target member is set to the atom that indicates the converted type. For example, PIXMAP is used for a pixmap. The property member is set to the atom that indicates which property the result was stored on. If the conversion failed, the property member is set to None. The time member is set to the time the conversion took place and can be a timestamp or CurrentTime. libX11-1.8.12/specs/libX11/Makefile.am0000644014310600000120000000117314763154126012540 if ENABLE_SPECS # Main DocBook/XML files (DOCTYPE book) docbook = libX11.xml # Included chapters, appendix, images chapters = \ AppA.xml \ AppB.xml \ AppC.xml \ AppD.xml \ CH01.xml \ CH02.xml \ CH03.xml \ CH04.xml \ CH05.xml \ CH06.xml \ CH07.xml \ CH08.xml \ CH09.xml \ CH10.xml \ CH11.xml \ CH12.xml \ CH13.xml \ CH14.xml \ CH15.xml \ CH16.xml \ credits.xml \ glossary.xml # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/libX11 # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_SPECS libX11-1.8.12/specs/libX11/AppA.xml0000644014310600000120000021666114763154126012061 Xlib Functions and Protocol Requests This appendix provides two tables that relate to Xlib functions and the X protocol. The following table lists each Xlib function (in alphabetical order) and the corresponding protocol request that it generates. Protocol requests made by each Xlib function Xlib Function Protocol Request ForceScreenSaver ChangeHosts ChangeHosts ChangeSaveSet AllocColor AllocColorCells AllocColorPlanes AllocNamedColor AllowEvents ChangeKeyboardControl ChangeKeyboardControl Bell ChangeActivePointerGrab ChangeGC ChangeKeyboardControl ChangeKeyboardMapping ChangePointerControl ChangeProperty ChangeSaveSet ChangeWindowAttributes CirculateWindow CirculateWindow CirculateWindow ClearArea ClearArea ConfigureWindow ConvertSelection CopyArea CopyColormapAndFree CopyGC CopyPlane CreateGC CreatePixmap FreeGC PutImage CreateColormap CreateGlyphCursor CreateGC CreateGlyphCursor CreatePixmap CreateCursor XCreatePixmapFromData CreateGC CreatePixmap FreeGC PutImage CreateWindow CreateWindow ChangeWindowAttributes DeleteProperty DestroySubwindows DestroyWindow SetAccessControl PolyArc PolyArc ImageText8 ImageText16 PolySegment PolyLine PolyPoint PolyPoint PolyRectangle PolyRectangle PolySegment PolyText8 PolyText16 PolyText8 PolyText16 SetAccessControl GetProperty GetProperty PolyFillArc PolyFillArc FillPoly PolyFillRectangle PolyFillRectangle ForceScreenSaver FreeColormap FreeColors FreeCursor CloseFont FreeGC FreePixmap GetAtomName GetProperty GetFontPath GetGeometry GetProperty GetProperty GetImage GetInputFocus GetKeyboardControl GetKeyboardMapping GetModifierMapping GetMotionEvents GetProperty GetPointerControl GetPointerMapping GetProperty GetScreenSaver GetSelectionOwner GetProperty GetProperty GetProperty GetProperty GetProperty InternAtom GetProperty GetProperty GetProperty GetProperty GetProperty InternAtom GetProperty GetWindowAttributes GetGeometry GetProperty GetProperty GrabButton GrabKey GrabKeyboard GrabPointer GrabServer InternAtom SendEvent QueryExtension InstallColormap InternAtom KillClient ListExtensions ListFonts ListFontsWithInfo ListHosts ListInstalledColormaps ListProperties OpenFont OpenFont QueryFont LookupColor ConfigureWindow ConfigureWindow MapWindow MapSubwindows MapWindow ConfigureWindow ConfigureWindow NoOperation CreateGC LookupColor PutImage QueryBestSize QueryBestSize QueryBestSize QueryBestSize QueryColors QueryColors QueryExtension QueryFont QueryKeymap QueryPointer QueryTextExtents QueryTextExtents QueryTree ConfigureWindow CreateGC CreatePixmap FreeGC PutImage RecolorCursor ConfigureWindow SendEvent ChangeSaveSet ChangeHosts ChangeHosts ReparentWindow ForceScreenSaver ConfigureWindow ConfigureWindow RotateProperties RotateProperties ChangeWindowAttributes SendEvent SetAccessControl ChangeGC ChangeGC ChangeProperty ChangeGC ChangeGC SetClipRectangles SetCloseDownMode ChangeProperty SetDashes ChangeGC ChangeGC ChangeGC SetFontPath ChangeGC ChangeGC ChangeGC ChangeProperty ChangeProperty SetInputFocus ChangeGC SetModifierMapping ChangeProperty ChangeGC SetPointerMapping ChangeProperty SetScreenSaver SetSelectionOwner ChangeProperty ChangeProperty ChangeGC ChangeGC ChangeGC ChangeProperty ChangeGC ChangeProperty ChangeGC ChangeProperty ChangeProperty InternAtom ChangeProperty ChangeProperty ChangeProperty ChangeProperty ChangeProperty ChangeProperty InternAtom ChangeProperty ChangeWindowAttributes ChangeWindowAttributes ChangeWindowAttributes ChangeWindowAttributes ConfigureWindow ChangeWindowAttributes ChangeProperty ChangeProperty ChangeProperty StoreColors StoreColors ChangeProperty StoreNamedColor GetInputFocus XSynchronize GetInputFocus TranslateCoordinates ChangeWindowAttributes UngrabButton UngrabKey UngrabKeyboard UngrabPointer UngrabServer UninstallColormap CloseFont UnmapSubwindows UnmapWindow WarpPointer SendEvent UnmapWindow
The following table lists each X protocol request (in alphabetical order) and the Xlib functions that reference it. Xlib functions which use each Protocol Request Protocol Request Xlib Function AllocColor AllocColorCells AllocColorPlanes AllocNamedColor AllowEvents Bell ChangeActivePointerGrab ChangeGC ChangeHosts ChangeKeyboardControl ChangeKeyboardMapping ChangePointerControl ChangeProperty ChangeSaveSet ChangeWindowAttributes CirculateWindow ClearArea CloseFont ConfigureWindow ConvertSelection CopyArea CopyColormapAndFree CopyGC CopyPlane CreateColormap CreateCursor CreateGC XCreatePixmapFromData CreateGlyphCursor CreatePixmap XCreatePixmapFromData CreateWindow DeleteProperty DestroySubwindows DestroyWindow FillPoly ForceScreenSaver FreeColormap FreeColors FreeCursor FreeGC XCreatePixmapFromData FreePixmap GetAtomName GetFontPath GetGeometry GetImage GetInputFocus XSynchronize GetKeyboardControl GetKeyboardMapping GetModifierMapping GetMotionEvents GetPointerControl GetPointerMapping GetProperty GetSelectionOwner GetWindowAttributes GrabButton GrabKey GrabKeyboard GrabPointer GrabServer ImageText8 ImageText16 InstallColormap InternAtom KillClient ListExtensions ListFonts ListFontsWithInfo ListHosts ListInstalledColormaps ListProperties LookupColor MapSubwindows MapWindow NoOperation OpenFont PolyArc PolyFillArc PolyFillRectangle PolyLine PolyPoint PolyRectangle PolySegment PolyText8 PolyText16 PutImage XCreatePixmapFromData QueryBestSize QueryColors QueryExtension QueryFont QueryKeymap QueryPointer QueryTextExtents QueryTree RecolorCursor ReparentWindow RotateProperties SendEvent SetAccessControl SetClipRectangles SetCloseDownMode SetDashes SetFontPath SetInputFocus SetModifierMapping SetPointerMapping SetScreenSaver SetSelectionOwner StoreColors StoreNamedColor TranslateCoordinates UngrabButton UngrabKey UngrabKeyboard UngrabPointer UngrabServer UninstallColormap UnmapSubwindows XUnmapSubWindows UnmapWindow WarpPointer
libX11-1.8.12/specs/libX11/CH14.xml0000644014310600000120000045210714763154126011674 Inter-Client Communication Functions The Inter-Client Communication Conventions Manual, hereafter referred to as the ICCCM, details the X Consortium approved conventions that govern inter-client communications. These conventions ensure peer-to-peer client cooperation in the use of selections, cut buffers, and shared resources as well as client cooperation with window and session managers. For further information, see the Inter-Client Communication Conventions Manual. Xlib provides a number of standard properties and programming interfaces that are ICCCM compliant. The predefined atoms for some of these properties are defined in the <X11/Xatom.h> header file, where to avoid name conflicts with user symbols their #define name has an XA_ prefix. For further information about atoms and properties, see section 4.3. Xlib’s selection and cut buffer mechanisms provide the primary programming interfaces by which peer client applications communicate with each other (see sections 4.5 and 16.6). The functions discussed in this chapter provide the primary programming interfaces by which client applications communicate with their window and session managers as well as share standard colormaps. The standard properties that are of special interest for communicating with window and session managers are: Name Type Format Description WM_CLASS STRING 8 Set by application programs to allow window and session managers to obtain the application’s resources from the resource database. WM_CLIENT_MACHINE TEXT The string name of the machine on which the client application is running. WM_COLORMAP_WINDOWS WINDOWS 32 The list of window IDs that may need a different colormap from that of their top-level window. WM_COMMAND TEXT The command and arguments, null separated, used to invoke the application. WM_HINTS WM_HINTS 32 Additional hints set by the client for use by the window manager. The C type of this property is XWMHints. WM_ICON_NAME TEXT The name to be used in an icon. WM_ICON_SIZE WM_ICON_SIZE 32 The window manager may set this property on the root window to specify the icon sizes it supports. The C type of this property is XIconSize. WM_NAME TEXT The name of the application. WM_NORMAL_HINTS WM_NORMAL_HINTS 32 Size hints for a window in its normal state. The C type of this property is XSizeHints. WM_PROTOCOLS ATOM 32 List of atoms that identify the communications protocols between the client and window manager in which the client is willing to participate. WM_STATE WM_STATE 32 Intended for communication between window and session managers only. WM_TRANSIENT_FOR WINDOW 32 Set by application programs to indicate to the window manager that a transient top-level window, such as a dialog box. The remainder of this chapter discusses: Client to window manager communication Client to session manager communication Standard colormaps Client to Window Manager Communication This section discusses how to: Manipulate top-level windows Convert string lists Set and read text properties Set and read the WM_NAME property Set and read the WM_ICON_NAME property Set and read the WM_HINTS property Set and read the WM_NORMAL_HINTS property Set and read the WM_CLASS property Set and read the WM_TRANSIENT_FOR property Set and read the WM_PROTOCOLS property Set and read the WM_COLORMAP_WINDOWS property Set and read the WM_ICON_SIZE property Use window manager convenience functions Manipulating Top-Level Windows Xlib provides functions that you can use to change the visibility or size of top-level windows (that is, those that were created as children of the root window). Note that the subwindows that you create are ignored by window managers. Therefore, you should use the basic window functions described in chapter 3 to manipulate your application's subwindows. To request that a top-level window be iconified, use . XIconifyWindow Status XIconifyWindow Display *display Window w int screen_number display Specifies the connection to the X server. w Specifies the window. screen_number Specifies the appropriate screen number on the host server. The function sends a WM_CHANGE_STATE ClientMessage event with a format of 32 and a first data element of IconicState (as described in section 4.1.4 of the Inter-Client Communication Conventions Manual) and a window of w to the root window of the specified screen with an event mask set to SubstructureNotifyMask | SubstructureRedirectMask. Window managers may elect to receive this message and if the window is in its normal state, may treat it as a request to change the window's state from normal to iconic. If the WM_CHANGE_STATE property cannot be interned, does not send a message and returns a zero status. It returns a nonzero status if the client message is sent successfully; otherwise, it returns a zero status. To request that a top-level window be withdrawn, use . XWithdrawWindow Status XWithdrawWindow Display *display Window w int screen_number display Specifies the connection to the X server. w Specifies the window. screen_number Specifies the appropriate screen number on the host server. The function unmaps the specified window and sends a synthetic UnmapNotify event to the root window of the specified screen. Window managers may elect to receive this message and may treat it as a request to change the window's state to withdrawn. When a window is in the withdrawn state, neither its normal nor its iconic representations is visible. It returns a nonzero status if the UnmapNotify event is successfully sent; otherwise, it returns a zero status. can generate a BadWindow error. To request that a top-level window be reconfigured, use . XReconfigureWMWindow Status XReconfigureWMWindow Display *display Window w int screen_number unsigned int value_mask XWindowChanges *values display Specifies the connection to the X server. w Specifies the window. screen_number Specifies the appropriate screen number on the host server. value_mask Specifies which values are to be set using information in the values structure. This mask is the bitwise inclusive OR of the valid configure window values bits. values Specifies the XWindowChanges structure. The function issues a ConfigureWindow request on the specified top-level window. If the stacking mode is changed and the request fails with a BadMatch error, the error is trapped by Xlib and a synthetic ConfigureRequestEvent containing the same configuration parameters is sent to the root of the specified window. Window managers may elect to receive this event and treat it as a request to reconfigure the indicated window. It returns a nonzero status if the request or event is successfully sent; otherwise, it returns a zero status. can generate BadValue and BadWindow errors. Converting String Lists Many of the text properties allow a variety of types and formats. Because the data stored in these properties are not simple null-terminated strings, an XTextProperty structure is used to describe the encoding, type, and length of the text as well as its value. The XTextProperty structure contains: XTextProperty typedef struct { unsigned char *value; /* property data */ Atom encoding; /* type of property */ int format; /* 8, 16, or 32 */ unsigned long nitems; /* number of items in value */ } XTextProperty; Xlib provides functions to convert localized text to or from encodings that support the inter-client communication conventions for text. In addition, functions are provided for converting between lists of pointers to character strings and text properties in the STRING encoding. The functions for localized text return a signed integer error status that encodes Success as zero, specific error conditions as negative numbers, and partial conversion as a count of unconvertible characters. #define #XNoMemory -1 #define #XLocaleNotSupported -2 #define #XConverterNotFound -3 typedef enum { XStringStyle, /* STRING */ XCompoundTextStyle, /* COMPOUND_TEXT */ XTextStyle, /* text in owner's encoding (current locale) */ XStdICCTextStyle /* STRING, else COMPOUND_TEXT */ } XICCEncodingStyle; To convert a list of text strings to an XTextProperty structure, use or . XmbTextListToTextProperty XwcTextListToTextProperty int XmbTextListToTextProperty Display *display char **list int count XICCEncodingStyle style XTextProperty *text_prop_return int XwcTextListToTextProperty Display *display wchar_t **list int count XICCEncodingStyle style XTextProperty *text_prop_return display Specifies the connection to the X server. list Specifies a list of null-terminated character strings. count Specifies the number of strings specified. style Specifies the manner in which the property is encoded. text_prop_return Returns the XTextProperty structure. The and functions set the specified XTextProperty value to a set of null-separated elements representing the concatenation of the specified list of null-terminated text strings. A final terminating null is stored at the end of the value field of text_prop_return but is not included in the nitems member. The functions set the encoding field of text_prop_return to an Atom for the specified display naming the encoding determined by the specified style and convert the specified text list to this encoding for storage in the text_prop_return value field. If the style XStringStyle or XCompoundTextStyle is specified, this encoding is ``STRING'' or ``COMPOUND_TEXT'', respectively. If the style XTextStyle is specified, this encoding is the encoding of the current locale. If the style XStdICCTextStyle is specified, this encoding is ``STRING'' if the text is fully convertible to STRING, else ``COMPOUND_TEXT''. If insufficient memory is available for the new value string, the functions return XNoMemory. If the current locale is not supported, the functions return XLocaleNotSupported. In both of these error cases, the functions do not set text_prop_return. To determine if the functions are guaranteed not to return XLocaleNotSupported, use XSupportsLocale. If the supplied text is not fully convertible to the specified encoding, the functions return the number of unconvertible characters. Each unconvertible character is converted to an implementation-defined and encoding-specific default string. Otherwise, the functions return Success. Note that full convertibility to all styles except XStringStyle is guaranteed. To free the storage for the value field, use . To obtain a list of text strings from an XTextProperty structure, use or . XmbTextPropertyToTextList XwcTextPropertyToTextList int XmbTextPropertyToTextList Display *display XTextProperty *text_prop char ***list_return int *count_return int XwcTextPropertyToTextList Display *display XTextProperty *text_prop wchar_t ***list_return int *count_return display Specifies the connection to the X server. text_prop Specifies the XTextProperty structure to be used. list_return Returns a list of null-terminated character strings. count_return Returns the number of strings. The and functions return a list of text strings in the current locale representing the null-separated elements of the specified XTextProperty structure. The data in text_prop must be format 8. Multiple elements of the property (for example, the strings in a disjoint text selection) are separated by a null byte. The contents of the property are not required to be null-terminated; any terminating null should not be included in text_prop.nitems. If insufficient memory is available for the list and its elements, and return XNoMemory. If the current locale is not supported, the functions return XLocaleNotSupported. Otherwise, if the encoding field of text_prop is not convertible to the encoding of the current locale, the functions return XConverterNotFound. For supported locales, existence of a converter from COMPOUND_TEXT, STRING or the encoding of the current locale is guaranteed if XSupportsLocale returns True for the current locale (but the actual text may contain unconvertible characters). Conversion of other encodings is implementation-dependent. In all of these error cases, the functions do not set any return values. Otherwise, and return the list of null-terminated text strings to list_return and the number of text strings to count_return. If the value field of text_prop is not fully convertible to the encoding of the current locale, the functions return the number of unconvertible characters. Each unconvertible character is converted to a string in the current locale that is specific to the current locale. To obtain the value of this string, use XDefaultString. Otherwise, and return Success. To free the storage for the list and its contents returned by , use . To free the storage for the list and its contents returned by , use . To free the in-memory data associated with the specified wide character string list, use . XwcFreeStringList void XwcFreeStringList wchar_t **list list Specifies the list of strings to be freed. The function frees memory allocated by . To obtain the default string for text conversion in the current locale, use char *XDefaultString The XDefaultString function returns the default string used by Xlib for text conversion (for example, in ). The default string is the string in the current locale that is output when an unconvertible character is found during text conversion. If the string returned by XDefaultString is the empty string (""), no character is output in the converted text. XDefaultString does not return NULL. The string returned by XDefaultString is independent of the default string for text drawing; see to obtain the default string for an XFontSet. The behavior when an invalid codepoint is supplied to any Xlib function is undefined. The returned string is null-terminated. It is owned by Xlib and should not be modified or freed by the client. It may be freed after the current locale is changed. Until freed, it will not be modified by Xlib. To set the specified list of strings in the STRING encoding to a XTextProperty structure, use . XStringListToTextProperty Status XStringListToTextProperty char **list int count XTextProperty *text_prop_return list Specifies a list of null-terminated character strings. count Specifies the number of strings. text_prop_return Returns the XTextProperty structure. The function sets the specified XTextProperty to be of type STRING (format 8) with a value representing the concatenation of the specified list of null-separated character strings. An extra null byte (which is not included in the nitems member) is stored at the end of the value field of text_prop_return. The strings are assumed (without verification) to be in the STRING encoding. If insufficient memory is available for the new value string, does not set any fields in the XTextProperty structure and returns a zero status. Otherwise, it returns a nonzero status. To free the storage for the value field, use . To obtain a list of strings from a specified XTextProperty structure in the STRING encoding, use . XTextPropertyToStringList Status XTextPropertyToStringList XTextProperty *text_prop char ***list_return int *count_return text_prop Specifies the XTextProperty structure to be used. list_return Returns a list of null-terminated character strings. count_return Returns the number of strings. The function returns a list of strings representing the null-separated elements of the specified XTextProperty structure. The data in text_prop must be of type STRING and format 8. Multiple elements of the property (for example, the strings in a disjoint text selection) are separated by NULL (encoding 0). The contents of the property are not null-terminated. If insufficient memory is available for the list and its elements, sets no return values and returns a zero status. Otherwise, it returns a nonzero status. To free the storage for the list and its contents, use . To free the in-memory data associated with the specified string list, use . XFreeStringList void XFreeStringList char **list list Specifies the list of strings to be freed. The function releases memory allocated by and and the missing charset list allocated by . Setting and Reading Text Properties Xlib provides two functions that you can use to set and read the text properties for a given window. You can use these functions to set and read those properties of type TEXT (WM_NAME, WM_ICON_NAME, WM_COMMAND, and WM_CLIENT_MACHINE). In addition, Xlib provides separate convenience functions that you can use to set each of these properties. For further information about these convenience functions, see sections 14.1.4, 14.1.5, 14.2.1, and 14.2.2, respectively. To set one of a window's text properties, use . XSetTextProperty void XSetTextProperty Display *display Window w XTextProperty *text_prop Atom property display Specifies the connection to the X server. w Specifies the window. text_prop Specifies the XTextProperty structure to be used. property Specifies the property name. The function replaces the existing specified property for the named window with the data, type, format, and number of items determined by the value field, the encoding field, the format field, and the nitems field, respectively, of the specified XTextProperty structure. If the property does not already exist, sets it for the specified window. can generate BadAlloc, BadAtom, BadValue, and BadWindow errors. To read one of a window's text properties, use . XGetTextProperty Status XGetTextProperty Display *display Window w XTextProperty *text_prop_return Atom property display Specifies the connection to the X server. w Specifies the window. text_prop_return Returns the XTextProperty structure. property Specifies the property name. The function reads the specified property from the window and stores the data in the returned XTextProperty structure. It stores the data in the value field, the type of the data in the encoding field, the format of the data in the format field, and the number of items of data in the nitems field. An extra byte containing null (which is not included in the nitems member) is stored at the end of the value field of text_prop_return. The particular interpretation of the property's encoding and data as text is left to the calling application. If the specified property does not exist on the window, sets the value field to NULL, the encoding field to None, the format field to zero, and the nitems field to zero. If it was able to read and store the data in the XTextProperty structure, returns a nonzero status; otherwise, it returns a zero status. can generate BadAtom and BadWindow errors. Setting and Reading the WM_NAME Property Xlib provides convenience functions that you can use to set and read the WM_NAME property for a given window. To set a window's WM_NAME property with the supplied convenience function, use . XSetWMName void XSetWMName Display *display Window w XTextProperty *text_prop display Specifies the connection to the X server. w Specifies the window. text_prop Specifies the XTextProperty structure to be used. The convenience function calls to set the WM_NAME property. To read a window's WM_NAME property with the supplied convenience function, use . XGetWMName Status XGetWMName Display *display Window w XTextProperty *text_prop_return display Specifies the connection to the X server. w Specifies the window. text_prop_return Returns the XTextProperty structure. The convenience function calls to obtain the WM_NAME property. It returns a nonzero status on success; otherwise, it returns a zero status. The following two functions have been superseded by and , respectively. You can use these additional convenience functions for window names that are encoded as STRING properties. To assign a name to a window, use . Windowname XStoreName XStoreName Display *display Window w char *window_name display Specifies the connection to the X server. w Specifies the window. window_name Specifies the window name, which should be a null-terminated string. The function assigns the name passed to window_name to the specified window. A window manager can display the window name in some prominent place, such as the title bar, to allow users to identify windows easily. Some window managers may display a window's name in the window's icon, although they are encouraged to use the window's icon name if one is provided by the application. If the string is not in the Host Portable Character Encoding, the result is implementation-dependent. can generate BadAlloc and BadWindow errors. To get the name of a window, use . XFetchName Status XFetchName Display *display Window w char **window_name_return display Specifies the connection to the X server. w Specifies the window. window_name_return Returns the window name, which is a null-terminated string. The function returns the name of the specified window. If it succeeds, it returns a nonzero status; otherwise, no name has been set for the window, and it returns zero. If the WM_NAME property has not been set for this window, sets window_name_return to NULL. If the data returned by the server is in the Latin Portable Character Encoding, then the returned string is in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. When finished with it, a client must free the window name string using . can generate a BadWindow error. Setting and Reading the WM_ICON_NAME Property Xlib provides convenience functions that you can use to set and read the WM_ICON_NAME property for a given window. To set a window's WM_ICON_NAME property, use . XSetWMIconName void XSetWMIconName Display *display Window w XTextProperty *text_prop display Specifies the connection to the X server. w Specifies the window. text_prop Specifies the XTextProperty structure to be used. The convenience function calls to set the WM_ICON_NAME property. To read a window's WM_ICON_NAME property, use . XGetWMIconName Status XGetWMIconName Display *display Window w XTextProperty *text_prop_return display Specifies the connection to the X server. w Specifies the window. text_prop_return Returns the XTextProperty structure. The convenience function calls to obtain the WM_ICON_NAME property. It returns a nonzero status on success; otherwise, it returns a zero status. The next two functions have been superseded by and , respectively. You can use these additional convenience functions for window names that are encoded as STRING properties. To set the name to be displayed in a window's icon, use . Windowicon name XSetIconName XSetIconName Display *display Window w char *icon_name display Specifies the connection to the X server. w Specifies the window. icon_name Specifies the icon name, which should be a null-terminated string. If the string is not in the Host Portable Character Encoding, the result is implementation-dependent. can generate BadAlloc and BadWindow errors. To get the name a window wants displayed in its icon, use . XGetIconName Status XGetIconName Display *display Window w char **icon_name_return display Specifies the connection to the X server. w Specifies the window. icon_name_return Returns the window's icon name, which is a null-terminated string. The function returns the name to be displayed in the specified window's icon. If it succeeds, it returns a nonzero status; otherwise, if no icon name has been set for the window, it returns zero. If you never assigned a name to the window, sets icon_name_return to NULL. If the data returned by the server is in the Latin Portable Character Encoding, then the returned string is in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. When finished with it, a client must free the icon name string using . can generate a BadWindow error. Setting and Reading the WM_HINTS Property Xlib provides functions that you can use to set and read the WM_HINTS property for a given window. These functions use the flags and the XWMHints structure, as defined in the <X11/Xutil.h> X11/Xutil.h Files<X11/Xutil.h> Headers<X11/Xutil.h> header file. To allocate an XWMHints structure, use XAllocWMHints. XWMHints *XAllocWMHints The XAllocWMHints function allocates and returns a pointer to an XWMHints structure. Note that all fields in the XWMHints structure are initially set to zero. If insufficient memory is available, XAllocWMHints returns NULL. To free the memory allocated to this structure, use . The XWMHints structure contains: /* Window manager hints mask bits */ #define InputHint (1L<<0) #define StateHint (1L<<1) #define IconPixmapHint (1L<<2) #define IconWindowHint (1L<<3) #define IconPositionHint (1L<<4) #define IconMaskHint (1L<<5) #define WindowGroupHint (1L<<6) #define UrgencyHint (1L<<8) #define AllHints (InputHint|StateHint|IconPixmapHint| IconWIndowHint|IconPositionHint| IconMaskHint|WindowGroupHint) /* Values */ typedef struct { long flags; /* marks which fields in this structure are defined */ Bool input; /* does this application rely on the window manager to get keyboard input? */ int initial_state; /* see below */ Pixmap icon_pixmap; /* pixmap to be used as icon */ Window icon_window; /* window to be used as icon */ int icon_x, icon_y; /* initial position of icon */ Pixmap icon_mask; /* pixmap to be used as mask for icon_pixmap */ XID window_group; /* id of related window group */ /* this structure may be extended in the future */ } XWMHints; The input member is used to communicate to the window manager the input focus model used by the application. Applications that expect input but never explicitly set focus to any of their subwindows (that is, use the push model of focus management), such as X Version 10 style applications that use real-estate driven focus, should set this member to True. Similarly, applications that set input focus to their subwindows only when it is given to their top-level window by a window manager should also set this member to True. Applications that manage their own input focus by explicitly setting focus to one of their subwindows whenever they want keyboard input (that is, use the pull model of focus management) should set this member to False. Applications that never expect any keyboard input also should set this member to False. Pull model window managers should make it possible for push model applications to get input by setting input focus to the top-level windows of applications whose input member is True. Push model window managers should make sure that pull model applications do not break them by resetting input focus to PointerRoot when it is appropriate (for example, whenever an application whose input member is False sets input focus to one of its subwindows). The definitions for the initial_state flag are: #define WithdrawnState 0 #define NormalState 1 /* most applications start this way */ #define IconicState 3 /* application wants to start as an icon */ The icon_mask specifies which pixels of the icon_pixmap should be used as the icon. This allows for nonrectangular icons. Both icon_pixmap and icon_mask must be bitmaps. The icon_window lets an application provide a window for use as an icon for window managers that support such use. The window_group lets you specify that this window belongs to a group of other windows. For example, if a single application manipulates multiple top-level windows, this allows you to provide enough information that a window manager can iconify all of the windows rather than just the one window. The UrgencyHint flag, if set in the flags field, indicates that the client deems the window contents to be urgent, requiring the timely response of the user. The window manager will make some effort to draw the user's attention to this window while this flag is set. The client must provide some means by which the user can cause the urgency flag to be cleared (either mitigating the condition that made the window urgent or merely shutting off the alarm) or the window to be withdrawn. To set a window's WM_HINTS property, use . XSetWMHints XSetWMHints Display *display Window w XWMHints *wmhints display Specifies the connection to the X server. w Specifies the window. wmhints Specifies the XWMHints structure to be used. The function sets the window manager hints that include icon information and location, the initial state of the window, and whether the application relies on the window manager to get keyboard input. can generate BadAlloc and BadWindow errors. To read a window's WM_HINTS property, use . XGetWMHints XWMHints *XGetWMHints Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function reads the window manager hints and returns NULL if no WM_HINTS property was set on the window or returns a pointer to an XWMHints structure if it succeeds. When finished with the data, free the space used for it by calling . can generate a BadWindow error. Setting and Reading the WM_NORMAL_HINTS Property Xlib provides functions that you can use to set or read the WM_NORMAL_HINTS property for a given window. The functions use the flags and the XSizeHints structure, as defined in the <X11/Xutil.h> X11/Xutil.h Files<X11/Xutil.h> Headers<X11/Xutil.h> header file. The size of the XSizeHints structure may grow in future releases, as new components are added to support new ICCCM features. Passing statically allocated instances of this structure into Xlib may result in memory corruption when running against a future release of the library. As such, it is recommended that only dynamically allocated instances of the structure be used. To allocate an XSizeHints structure, use XAllocSizeHints. XSizeHints *XAllocSizeHints The XAllocSizeHints function allocates and returns a pointer to an XSizeHints structure. Note that all fields in the XSizeHints structure are initially set to zero. If insufficient memory is available, XAllocSizeHints returns NULL. To free the memory allocated to this structure, use . The XSizeHints structure contains: /* Size hints mask bits */ #define USPosition (1L<<0) /* user specified x,y */ #define USSize (1L<<1) /* user specified width,height */ #define PPosition (1L<<2) /* program specified position */ #define PSize (1L<<3) /* program specified size */ #define PMinSize (1L<<4) /* program specified minimum size */ #define PMaxSize (1L<<5) /* program specified maximum size */ #define PResizeInc (1L<<5) /* program specified resize increments */ #define PAspect (1L<<6) /* program specified min and max aspect ratios */ #define PBaseSize (1L<<8) #define PWinGravity (1L<<9) #define PAllHints (PPosition|Psize| PMinSize|PMaxSize| PResizeInc|PAspect) /* Values */ typedef struct { long flags; /* marks which fields in this structure are defined */ int x, y; /* Obsolete */ int width, height; /* Obsolete */ int min_width, min_height; int max_width, max_height; int width_inc, height_inc; struct { int x; /* numerator */ int y; /* denominator */ } min_aspect, max_aspect; int base_width, base_height; int win_gravity; /* this structure may be extended in the future */ } XSizeHints; The x, y, width, and height members are now obsolete and are left solely for compatibility reasons. The min_width and min_height members specify the minimum window size that still allows the application to be useful. The max_width and max_height members specify the maximum window size. The width_inc and height_inc members define an arithmetic progression of sizes (minimum to maximum) into which the window prefers to be resized. The min_aspect and max_aspect members are expressed as ratios of x and y, and they allow an application to specify the range of aspect ratios it prefers. The base_width and base_height members define the desired size of the window. The window manager will interpret the position of the window and its border width to position the point of the outer rectangle of the overall window specified by the win_gravity member. The outer rectangle of the window includes any borders or decorations supplied by the window manager. In other words, if the window manager decides to place the window where the client asked, the position on the parent window's border named by the win_gravity will be placed where the client window would have been placed in the absence of a window manager. Note that use of the PAllHints macro is highly discouraged. To set a window's WM_NORMAL_HINTS property, use . XSetWMNormalHints void XSetWMNormalHints Display *display Window w XSizeHints *hints display Specifies the connection to the X server. w Specifies the window. hints Specifies the size hints for the window in its normal state. The function replaces the size hints for the WM_NORMAL_HINTS property on the specified window. If the property does not already exist, sets the size hints for the WM_NORMAL_HINTS property on the specified window. The property is stored with a type of WM_SIZE_HINTS and a format of 32. can generate BadAlloc and BadWindow errors. To read a window's WM_NORMAL_HINTS property, use . XGetWMNormalHints Status XGetWMNormalHints Display *display Window w XSizeHints *hints_return long *supplied_return display Specifies the connection to the X server. w Specifies the window. hints_return Returns the size hints for the window in its normal state. supplied_return Returns the hints that were supplied by the user. The function returns the size hints stored in the WM_NORMAL_HINTS property on the specified window. If the property is of type WM_SIZE_HINTS, is of format 32, and is long enough to contain either an old (pre-ICCCM) or new size hints structure, sets the various fields of the XSizeHints structure, sets the supplied_return argument to the list of fields that were supplied by the user (whether or not they contained defined values), and returns a nonzero status. Otherwise, it returns a zero status. If returns successfully and a pre-ICCCM size hints property is read, the supplied_return argument will contain the following bits: (USPosition|USSize|PPosition|PSize|PMinSize| PMaxSize|PResizeInc|PAspect) If the property is large enough to contain the base size and window gravity fields as well, the supplied_return argument will also contain the following bits: PBaseSize|PWinGravity can generate a BadWindow error. To set a window's WM_SIZE_HINTS property, use . XSetWMSizeHints void XSetWMSizeHints Display *display Window w XSizeHints *hints Atom property display Specifies the connection to the X server. w Specifies the window. hints Specifies the XSizeHints structure to be used. property Specifies the property name. The function replaces the size hints for the specified property on the named window. If the specified property does not already exist, sets the size hints for the specified property on the named window. The property is stored with a type of WM_SIZE_HINTS and a format of 32. To set a window's normal size hints, you can use the function. can generate BadAlloc, BadAtom, and BadWindow errors. To read a window's WM_SIZE_HINTS property, use . XGetWMSizeHints Status XGetWMSizeHints Display *display Window w XSizeHints *hints_return long *supplied_return Atom property display Specifies the connection to the X server. w Specifies the window. hints_return Returns the XSizeHints structure. supplied_return Returns the hints that were supplied by the user. property Specifies the property name. The function returns the size hints stored in the specified property on the named window. If the property is of type WM_SIZE_HINTS, is of format 32, and is long enough to contain either an old (pre-ICCCM) or new size hints structure, sets the various fields of the XSizeHints structure, sets the supplied_return argument to the list of fields that were supplied by the user (whether or not they contained defined values), and returns a nonzero status. Otherwise, it returns a zero status. To get a window's normal size hints, you can use the function. If returns successfully and a pre-ICCCM size hints property is read, the supplied_return argument will contain the following bits: (USPosition|USSize|PPosition|PSize|PMinSize| PMaxSize|PResizeInc|PAspect) If the property is large enough to contain the base size and window gravity fields as well, the supplied_return argument will also contain the following bits: PBaseSize|PWinGravity can generate BadAtom and BadWindow errors. Setting and Reading the WM_CLASS Property Xlib provides functions that you can use to set and get the WM_CLASS property for a given window. These functions use the XClassHint structure, which is defined in the <X11/Xutil.h> X11/Xutil.h Files<X11/Xutil.h> Headers<X11/Xutil.h> header file. To allocate an XClassHint structure, use XAllocClassHint. XAllocClassHint XClassHint *XAllocClassHint The XAllocClassHint function allocates and returns a pointer to an XClassHint structure. Note that the pointer fields in the XClassHint structure are initially set to NULL. If insufficient memory is available, XAllocClassHint returns NULL. To free the memory allocated to this structure, use . The XClassHint contains: XClassHint typedef struct { char *res_name; char *res_class; } XClassHint; The res_name member contains the application name, and the res_class member contains the application class. Note that the name set in this property may differ from the name set as WM_NAME. That is, WM_NAME specifies what should be displayed in the title bar and, therefore, can contain temporal information (for example, the name of a file currently in an editor's buffer). On the other hand, the name specified as part of WM_CLASS is the formal name of the application that should be used when retrieving the application's resources from the resource database. To set a window's WM_CLASS property, use . XSetClassHint XSetClassHint Display *display Window w XClassHint *class_hints display Specifies the connection to the X server. w Specifies the window. class_hints Specifies the XClassHint structure that is to be used. The function sets the class hint for the specified window. If the strings are not in the Host Portable Character Encoding, the result is implementation-dependent. can generate BadAlloc and BadWindow errors. To read a window's WM_CLASS property, use . XGetClassHint Status XGetClassHint Display *display Window w XClassHint *class_hints_return display Specifies the connection to the X server. w Specifies the window. class_hints_return Returns the XClassHint structure. The function returns the class hint of the specified window to the members of the supplied structure. If the data returned by the server is in the Latin Portable Character Encoding, then the returned strings are in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. It returns a nonzero status on success; otherwise, it returns a zero status. To free res_name and res_class when finished with the strings, use on each individually. can generate a BadWindow error. Setting and Reading the WM_TRANSIENT_FOR Property Xlib provides functions that you can use to set and read the WM_TRANSIENT_FOR property for a given window. To set a window's WM_TRANSIENT_FOR property, use . XSetTransientForHint XSetTransientForHint Display *display Window w Window prop_window display Specifies the connection to the X server. w Specifies the window. prop_window Specifies the window that the WM_TRANSIENT_FOR property is to be set to. The function sets the WM_TRANSIENT_FOR property of the specified window to the specified prop_window. can generate BadAlloc and BadWindow errors. To read a window's WM_TRANSIENT_FOR property, use . XGetTransientForHint Status XGetTransientForHint Display *display Window w Window *prop_window_return display Specifies the connection to the X server. w Specifies the window. prop_window_return Returns the WM_TRANSIENT_FOR property of the specified window. The function returns the WM_TRANSIENT_FOR property for the specified window. It returns a nonzero status on success; otherwise, it returns a zero status. can generate a BadWindow error. Setting and Reading the WM_PROTOCOLS Property Xlib provides functions that you can use to set and read the WM_PROTOCOLS property for a given window. To set a window's WM_PROTOCOLS property, use . XSetWMProtocols Status XSetWMProtocols Display *display Window w Atom *protocols int count display Specifies the connection to the X server. w Specifies the window. protocols Specifies the list of protocols. count Specifies the number of protocols in the list. The function replaces the WM_PROTOCOLS property on the specified window with the list of atoms specified by the protocols argument. If the property does not already exist, sets the WM_PROTOCOLS property on the specified window to the list of atoms specified by the protocols argument. The property is stored with a type of ATOM and a format of 32. If it cannot intern the WM_PROTOCOLS atom, returns a zero status. Otherwise, it returns a nonzero status. can generate BadAlloc and BadWindow errors. To read a window's WM_PROTOCOLS property, use . XGetWMProtocols Status XGetWMProtocols Display *display Window w Atom **protocols_return int *count_return display Specifies the connection to the X server. w Specifies the window. protocols_return Returns the list of protocols. count_return Returns the number of protocols in the list. The function returns the list of atoms stored in the WM_PROTOCOLS property on the specified window. These atoms describe window manager protocols in which the owner of this window is willing to participate. If the property exists, is of type ATOM, is of format 32, and the atom WM_PROTOCOLS can be interned, sets the protocols_return argument to a list of atoms, sets the count_return argument to the number of elements in the list, and returns a nonzero status. Otherwise, it sets neither of the return arguments and returns a zero status. To release the list of atoms, use . can generate a BadWindow error. Setting and Reading the WM_COLORMAP_WINDOWS Property Xlib provides functions that you can use to set and read the WM_COLORMAP_WINDOWS property for a given window. To set a window's WM_COLORMAP_WINDOWS property, use . XSetWMColormapWindows Status XSetWMColormapWindows Display *display Window w Window *colormap_windows int count display Specifies the connection to the X server. w Specifies the window. colormap_windows Specifies the list of windows. count Specifies the number of windows in the list. The function replaces the WM_COLORMAP_WINDOWS property on the specified window with the list of windows specified by the colormap_windows argument. If the property does not already exist, sets the WM_COLORMAP_WINDOWS property on the specified window to the list of windows specified by the colormap_windows argument. The property is stored with a type of WINDOW and a format of 32. If it cannot intern the WM_COLORMAP_WINDOWS atom, returns a zero status. Otherwise, it returns a nonzero status. can generate BadAlloc and BadWindow errors. To read a window's WM_COLORMAP_WINDOWS property, use . XGetWMColormapWindows Status XGetWMColormapWindows Display *display Window w Window **colormap_windows_return int *count_return display Specifies the connection to the X server. w Specifies the window. colormap_windows_return Returns the list of windows. count_return Returns the number of windows in the list. The function returns the list of window identifiers stored in the WM_COLORMAP_WINDOWS property on the specified window. These identifiers indicate the colormaps that the window manager may need to install for this window. If the property exists, is of type WINDOW, is of format 32, and the atom WM_COLORMAP_WINDOWS can be interned, sets the windows_return argument to a list of window identifiers, sets the count_return argument to the number of elements in the list, and returns a nonzero status. Otherwise, it sets neither of the return arguments and returns a zero status. To release the list of window identifiers, use . can generate a BadWindow error. Setting and Reading the WM_ICON_SIZE Property Xlib provides functions that you can use to set and read the WM_ICON_SIZE property for a given window. These functions use the XIconSize XIconSize structure, which is defined in the <X11/Xutil.h> X11/Xutil.h Files<X11/Xutil.h> Headers<X11/Xutil.h> header file. To allocate an XIconSize structure, use XAllocIconSize. XIconSize *XAllocIconSize The XAllocIconSize function allocates and returns a pointer to an XIconSize structure. Note that all fields in the XIconSize structure are initially set to zero. If insufficient memory is available, XAllocIconSize returns NULL. To free the memory allocated to this structure, use . The XIconSize structure contains: XIconSize typedef struct { int min_width, min_height; int max_width, max_height; int width_inc, height_inc; } XIconSize; The width_inc and height_inc members define an arithmetic progression of sizes (minimum to maximum) that represent the supported icon sizes. To set a window's WM_ICON_SIZE property, use . XSetIconSizes XSetIconSizes Display *display Window w XIconSize *size_list int count display Specifies the connection to the X server. w Specifies the window. size_list Specifies the size list. count Specifies the number of items in the size list. The function is used only by window managers to set the supported icon sizes. can generate BadAlloc and BadWindow errors. To read a window's WM_ICON_SIZE property, use . XGetIconSizes Status XGetIconSizes Display *display Window w XIconSize **size_list_return int *count_return display Specifies the connection to the X server. w Specifies the window. size_list_return Returns the size list. count_return Returns the number of items in the size list. The function returns zero if a window manager has not set icon sizes; otherwise, it returns nonzero. should be called by an application that wants to find out what icon sizes would be most appreciated by the window manager under which the application is running. The application should then use to supply the window manager with an icon pixmap or window in one of the supported sizes. To free the data allocated in size_list_return, use . can generate a BadWindow error. Using Window Manager Convenience Functions The function stores the standard set of window manager properties, with text properties in standard encodings for internationalized text communication. The standard window manager properties for a given window are WM_NAME, WM_ICON_NAME, WM_HINTS, WM_NORMAL_HINTS, WM_CLASS, WM_COMMAND, WM_CLIENT_MACHINE, and WM_LOCALE_NAME. XmbSetWMProperties void XmbSetWMProperties Display *display Window w char *window_name char *icon_name char *argv[] int argc XSizeHints *normal_hints XWMHints *wm_hints XClassHint *class_hints display Specifies the connection to the X server. w Specifies the window. window_name Specifies the window name, which should be a null-terminated string. icon_name Specifies the icon name, which should be a null-terminated string. argv Specifies the application's argument list. argc Specifies the number of arguments. hints Specifies the size hints for the window in its normal state. wm_hints Specifies the XWMHints structure to be used. class_hints Specifies the XClassHint structure to be used. The convenience function provides a simple programming interface for setting those essential window properties that are used for communicating with other clients (particularly window and session managers). If the window_name argument is non-NULL, sets the WM_NAME property. If the icon_name argument is non-NULL, sets the WM_ICON_NAME property. The window_name and icon_name arguments are null-terminated strings in the encoding of the current locale. If the arguments can be fully converted to the STRING encoding, the properties are created with type ``STRING''; otherwise, the arguments are converted to Compound Text, and the properties are created with type ``COMPOUND_TEXT''. If the normal_hints argument is non-NULL, calls , which sets the WM_NORMAL_HINTS property (see section 14.1.7). If the wm_hints argument is non-NULL, calls , which sets the WM_HINTS property (see section 14.1.6). If the argv argument is non-NULL, sets the WM_COMMAND property from argv and argc. An argc of zero indicates a zero-length command. The hostname of the machine is stored using (see section 14.2.2). If the class_hints argument is non-NULL, sets the WM_CLASS property. If the res_name member in the XClassHint structure is set to the NULL pointer and the RESOURCE_NAME environment variable is set, the value of the environment variable is substituted for res_name. If the res_name member is NULL, the environment variable is not set, and argv and argv[0] are set, then the value of argv[0], stripped of any directory prefixes, is substituted for res_name. It is assumed that the supplied class_hints.res_name and argv, the RESOURCE_NAME environment variable, and the hostname of the machine are in the encoding of the locale announced for the LC_CTYPE category (on POSIX-compliant systems, the LC_CTYPE, else LANG environment variable). The corresponding WM_CLASS, WM_COMMAND, and WM_CLIENT_MACHINE properties are typed according to the local host locale announcer. No encoding conversion is performed prior to storage in the properties. For clients that need to process the property text in a locale, sets the WM_LOCALE_NAME property to be the name of the current locale. The name is assumed to be in the Host Portable Character Encoding and is converted to STRING for storage in the property. can generate BadAlloc and BadWindow errors. To set a window's standard window manager properties with strings in client-specified encodings, use . The standard window manager properties for a given window are WM_NAME, WM_ICON_NAME, WM_HINTS, WM_NORMAL_HINTS, WM_CLASS, WM_COMMAND, and WM_CLIENT_MACHINE. XSetWMProperties void XSetWMProperties Display *display Window w XTextProperty *window_name XTextProperty *icon_name char **argv int argc XSizeHints *normal_hints XWMHints *wm_hints XClassHint *class_hints display Specifies the connection to the X server. w Specifies the window. window_name Specifies the window name, which should be a null-terminated string. icon_name Specifies the icon name, which should be a null-terminated string. argv Specifies the application's argument list. argc Specifies the number of arguments. normal_hints Specifies the size hints for the window in its normal state. wm_hints Specifies the XWMHints structure to be used. class_hints Specifies the XClassHint structure to be used. The convenience function provides a single programming interface for setting those essential window properties that are used for communicating with other clients (particularly window and session managers). If the window_name argument is non-NULL, calls , which, in turn, sets the WM_NAME property (see section 14.1.4). If the icon_name argument is non-NULL, calls , which sets the WM_ICON_NAME property (see section 14.1.5). If the argv argument is non-NULL, calls , which sets the WM_COMMAND property (see section 14.2.1). Note that an argc of zero is allowed to indicate a zero-length command. Note also that the hostname of this machine is stored using (see section 14.2.2). If the normal_hints argument is non-NULL, calls , which sets the WM_NORMAL_HINTS property (see section 14.1.7). If the wm_hints argument is non-NULL, calls , which sets the WM_HINTS property (see section 14.1.6). If the class_hints argument is non-NULL, calls , which sets the WM_CLASS property (see section 14.1.8). If the res_name member in the XClassHint structure is set to the NULL pointer and the RESOURCE_NAME environment variable is set, then the value of the environment variable is substituted for res_name. If the res_name member is NULL, the environment variable is not set, and argv and argv[0] are set, then the value of argv[0], stripped of any directory prefixes, is substituted for res_name. can generate BadAlloc and BadWindow errors. Client to Session Manager Communication This section discusses how to: Set and read the WM_COMMAND property Set and read the WM_CLIENT_MACHINE property Setting and Reading the WM_COMMAND Property Xlib provides functions that you can use to set and read the WM_COMMAND property for a given window. To set a window's WM_COMMAND property, use . XSetCommand XSetCommand Display *display Window w char **argv int argc display Specifies the connection to the X server. w Specifies the window. argv Specifies the application's argument list. argc Specifies the number of arguments. The function sets the command and arguments used to invoke the application. (Typically, argv is the argv array of your main program.) If the strings are not in the Host Portable Character Encoding, the result is implementation-dependent. can generate BadAlloc and BadWindow errors. To read a window's WM_COMMAND property, use . XGetCommand Status XGetCommand Display *display Window w char ***argv_return int *argc_return display Specifies the connection to the X server. w Specifies the window. argv_return Returns the application's argument list. argc_return Returns the number of arguments returned. The function reads the WM_COMMAND property from the specified window and returns a string list. If the WM_COMMAND property exists, it is of type STRING and format 8. If sufficient memory can be allocated to contain the string list, fills in the argv_return and argc_return arguments and returns a nonzero status. Otherwise, it returns a zero status. If the data returned by the server is in the Latin Portable Character Encoding, then the returned strings are in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. To free the memory allocated to the string list, use . Setting and Reading the WM_CLIENT_MACHINE Property Xlib provides functions that you can use to set and read the WM_CLIENT_MACHINE property for a given window. To set a window's WM_CLIENT_MACHINE property, use . XSetWMClientMachine void XSetWMClientMachine Display *display Window w XTextProperty *text_prop display Specifies the connection to the X server. w Specifies the window. text_prop Specifies the XTextProperty structure to be used. The convenience function calls to set the WM_CLIENT_MACHINE property. To read a window's WM_CLIENT_MACHINE property, use . XGetWMClientMachine Status XGetWMClientMachine Display *display Window w XTextProperty *text_prop_return display Specifies the connection to the X server. w Specifies the window. text_prop_return Returns the XTextProperty structure. The convenience function performs an on the WM_CLIENT_MACHINE property. It returns a nonzero status on success; otherwise, it returns a zero status. Standard Colormaps Applications with color palettes, smooth-shaded drawings, or digitized images demand large numbers of colors. In addition, these applications often require an efficient mapping from color triples to pixel values that display the appropriate colors. As an example, consider a three-dimensional display program that wants to draw a smoothly shaded sphere. At each pixel in the image of the sphere, the program computes the intensity and color of light reflected back to the viewer. The result of each computation is a triple of red, green, and blue (RGB) coefficients in the range 0.0 to 1.0. To draw the sphere, the program needs a colormap that provides a large range of uniformly distributed colors. The colormap should be arranged so that the program can convert its RGB triples into pixel values very quickly, because drawing the entire sphere requires many such conversions. On many current workstations, the display is limited to 256 or fewer colors. Applications must allocate colors carefully, not only to make sure they cover the entire range they need but also to make use of as many of the available colors as possible. On a typical X display, many applications are active at once. Most workstations have only one hardware look-up table for colors, so only one application colormap can be installed at a given time. The application using the installed colormap is displayed correctly, and the other applications go technicolor and are displayed with false colors. As another example, consider a user who is running an image processing program to display earth-resources data. The image processing program needs a colormap set up with 8 reds, 8 greens, and 4 blues, for a total of 256 colors. Because some colors are already in use in the default colormap, the image processing program allocates and installs a new colormap. The user decides to alter some of the colors in the image by invoking a color palette program to mix and choose colors. The color palette program also needs a colormap with eight reds, eight greens, and four blues, so just like the image processing program, it must allocate and install a new colormap. Because only one colormap can be installed at a time, the color palette may be displayed incorrectly whenever the image processing program is active. Conversely, whenever the palette program is active, the image may be displayed incorrectly. The user can never match or compare colors in the palette and image. Contention for colormap resources can be reduced if applications with similar color needs share colormaps. The image processing program and the color palette program could share the same colormap if there existed a convention that described how the colormap was set up. Whenever either program was active, both would be displayed correctly. The standard colormap properties define a set of commonly used colormaps. Applications that share these colormaps and conventions display true colors more often and provide a better interface to the user. Standard colormaps allow applications to share commonly used color resources. This allows many applications to be displayed in true colors simultaneously, even when each application needs an entirely filled colormap. Several standard colormaps are described in this section. Usually, a window manager creates these colormaps. Applications should use the standard colormaps if they already exist. To allocate an XStandardColormap structure, use XAllocStandardColormap. XStandardColormap *XAllocStandardColormap The XAllocStandardColormap function allocates and returns a pointer to an XStandardColormap structure. Note that all fields in the XStandardColormap structure are initially set to zero. If insufficient memory is available, XAllocStandardColormap returns NULL. To free the memory allocated to this structure, use . The XStandardColormap structure contains: /* Hints */ #define ReeaseByFreeingColormap ((XID)1L) /* Values */ typedef struct { Colormap colormap; unsigned long red_max; unsigned long red_mult; unsigned long green_max; unsigned long green_mult; unsigned long blue_max; unsigned long blue_mult; unsigned long base_pixel; VisualID visualid; XID killid; } XStandardColormap; The colormap member is the colormap created by the function. The red_max, green_max, and blue_max members give the maximum red, green, and blue values, respectively. Each color coefficient ranges from zero to its max, inclusive. For example, a common colormap allocation is 3/3/2 (3 planes for red, 3 planes for green, and 2 planes for blue). This colormap would have red_max = 7, green_max = 7, and blue_max = 3. An alternate allocation that uses only 216 colors is red_max = 5, green_max = 5, and blue_max = 5. The red_mult, green_mult, and blue_mult members give the scale factors used to compose a full pixel value. (See the discussion of the base_pixel members for further information.) For a 3/3/2 allocation, red_mult might be 32, green_mult might be 4, and blue_mult might be 1. For a 6-colors-each allocation, red_mult might be 36, green_mult might be 6, and blue_mult might be 1. The base_pixel member gives the base pixel value used to compose a full pixel value. Usually, the base_pixel is obtained from a call to the function. Given integer red, green, and blue coefficients in their appropriate ranges, one then can compute a corresponding pixel value by using the following expression: (r * red_mult + g * green_mult + b * blue_mult + base_pixel) & 0xFFFFFFFF For GrayScale colormaps, only the colormap, red_max, red_mult, and base_pixel members are defined. The other members are ignored. To compute a GrayScale pixel value, use the following expression: (gray * red_mult + base_pixel) & 0xFFFFFFFF Negative multipliers can be represented by converting the 2's complement representation of the multiplier into an unsigned long and storing the result in the appropriate _mult field. The step of masking by 0xFFFFFFFF effectively converts the resulting positive multiplier into a negative one. The masking step will take place automatically on many machine architectures, depending on the size of the integer type used to do the computation. The visualid member gives the ID number of the visual from which the colormap was created. The killid member gives a resource ID that indicates whether the cells held by this standard colormap are to be released by freeing the colormap ID or by calling the function on the indicated resource. (Note that this method is necessary for allocating out of an existing colormap.) The properties containing the XStandardColormap information have the type RGB_COLOR_MAP. The remainder of this section discusses standard colormap properties and atoms as well as how to manipulate standard colormaps. Standard Colormap Properties and Atoms Standard Colormaps Colormapsstandard Several standard colormaps are available. Each standard colormap is defined by a property, and each such property is identified by an atom. The following list names the atoms and describes the colormap associated with each one. The <X11/Xatom.h> X11/Xatom.h Files<X11/Xatom.h> Headers<X11/Xatom.h> header file contains the definitions for each of the following atoms, which are prefixed with XA_. RGB_DEFAULT_MAP This atom names a property. The value of the property is an array of XStandardColormap structures. Each entry in the array describes an RGB subset of the default color map for the Visual specified by visual_id. Some applications only need a few RGB colors and may be able to allocate them from the system default colormap. This is the ideal situation because the fewer colormaps that are active in the system the more applications are displayed with correct colors at all times. A typical allocation for the RGB_DEFAULT_MAP on 8-plane displays is 6 reds, 6 greens, and 6 blues. This gives 216 uniformly distributed colors (6 intensities of 36 different hues) and still leaves 40 elements of a 256-element colormap available for special-purpose colors for text, borders, and so on. RGB_BEST_MAP This atom names a property. The value of the property is an XStandardColormap. The property defines the best RGB colormap available on the screen. (Of course, this is a subjective evaluation.) Many image processing and three-dimensional applications need to use all available colormap cells and to distribute as many perceptually distinct colors as possible over those cells. This implies that there may be more green values available than red, as well as more green or red than blue. For an 8-plane PseudoColor visual, RGB_BEST_MAP is likely to be a 3/3/2 allocation. For a 24-plane DirectColor visual, RGB_BEST_MAP is normally an 8/8/8 allocation. RGB_RED_MAP,RGB_GREEN_MAP,RGB_BLUE_MAP These atoms name properties. The value of each property is an XStandardColormap. The properties define all-red, all-green, and all-blue colormaps, respectively. These maps are used by applications that want to make color-separated images. For example, a user might generate a full-color image on an 8-plane display both by rendering an image three times (once with high color resolution in red, once with green, and once with blue) and by multiply exposing a single frame in a camera. RGB_GRAY_MAP This atom names a property. The value of the property is an XStandardColormap. The property describes the best GrayScale colormap available on the screen. As previously mentioned, only the colormap, red_max, red_mult, and base_pixel members of the XStandardColormap structure are used for GrayScale colormaps. Setting and Obtaining Standard Colormaps Xlib provides functions that you can use to set and obtain an XStandardColormap structure. To set an XStandardColormap structure, use . XSetRGBColormaps void XSetRGBColormaps Display *display Window w XStandardColormap *std_colormap int count Atom property display Specifies the connection to the X server. w Specifies the window. std_colormap Specifies the XStandardColormap structure to be used. count Specifies the number of colormaps. property Specifies the property name. The function replaces the RGB colormap definition in the specified property on the named window. If the property does not already exist, sets the RGB colormap definition in the specified property on the named window. The property is stored with a type of RGB_COLOR_MAP and a format of 32. Note that it is the caller's responsibility to honor the ICCCM restriction that only RGB_DEFAULT_MAP contain more than one definition. The function usually is only used by window or session managers. To create a standard colormap, follow this procedure: Open a new connection to the same server. Grab the server. See if the property is on the property list of the root window for the screen. If the desired property is not present: Create a colormap (unless you are using the default colormap of the screen). Determine the color characteristics of the visual. Allocate cells in the colormap (or create it with AllocAll). Call to store appropriate color values in the colormap. Fill in the descriptive members in the XStandardColormap structure. Attach the property to the root window. Use to make the resource permanent. Ungrab the server. can generate BadAlloc, BadAtom, and BadWindow errors. To obtain the XStandardColormap structure associated with the specified property, use . XGetRGBColormaps Status XGetRGBColormaps Display *display Window w XStandardColormap **std_colormap_return int *count_return Atom property display Specifies the connection to the X server. w Specifies the window. std_colormap_return Returns the XStandardColormap structure. count_return Returns the number of colormaps. property Specifies the property name. The function returns the RGB colormap definitions stored in the specified property on the named window. If the property exists, is of type RGB_COLOR_MAP, is of format 32, and is long enough to contain a colormap definition, allocates and fills in space for the returned colormaps and returns a nonzero status. If the visualid is not present, assumes the default visual for the screen on which the window is located; if the killid is not present, None is assumed, which indicates that the resources cannot be released. Otherwise, none of the fields are set, and returns a zero status. Note that it is the caller's responsibility to honor the ICCCM restriction that only RGB_DEFAULT_MAP contain more than one definition. can generate BadAtom and BadWindow errors. libX11-1.8.12/specs/libX11/CH13.xml0000644014310600000120000113502314763154126011667 Locales and Internationalized Text Functions An internationalized application is one that is adaptable to the requirements of different native languages, local customs, and character string encodings. The process of adapting the operation to a particular native language, local custom, or string encoding is called localization. A goal of internationalization is to permit localization without program source modifications or recompilation. As one of the localization mechanisms, Xlib provides an X Input Method (XIM) functional interface for internationalized text input and an X Output Method (XOM) functional interface for internationalized text output. Internationalization in X is based on the concept of a locale. A locale defines the localized behavior of a program at run time. Locales affect Xlib in its: Encoding and processing of input method text Encoding of resource files and values Encoding and imaging of text strings Encoding and decoding for inter-client text communication • Encoding and decoding for inter-client text communication Characters from various languages are represented in a computer using an encoding. Different languages have different encodings, and there are even different encodings for the same characters in the same language. This chapter defines support for localized text imaging and text input and describes the locale mechanism that controls all locale-dependent Xlib functions. Sets of functions are provided for multibyte (char *) text as well as wide character (wchar_t) text in the form supported by the host C language environment. The multibyte and wide character functions are equivalent except for the form of the text argument. The Xlib internationalization functions are not meant to provide support for multilingual applications (mixing multiple languages within a single piece of text), but they make it possible to implement applications that work in limited fashion with more than one language in independent contexts. The remainder of this chapter discusses: X locale management Locale and modifier dependencies Variable argument lists Output methods Input methods String constants X Locale Management X supports one or more of the locales defined by the host environment. On implementations that conform to the ANSI C library, the locale announcement method is setlocale. This function configures the locale operation of both the host C library and Xlib. The operation of Xlib is governed by the LC_CTYPE category; this is called the current locale. An implementation is permitted to provide implementation-dependent mechanisms for announcing the locale in addition to setlocale. On implementations that do not conform to the ANSI C library, the locale announcement method is Xlib implementation-dependent. The mechanism by which the semantic operation of Xlib is defined for a specific locale is implementation-dependent. X is not required to support all the locales supported by the host. To determine if the current locale is supported by X, use XSupportsLocale. Bool XSupportsLocale The XSupportsLocale function returns True if Xlib functions are capable of operating under the current locale. If it returns False, Xlib locale-dependent functions for which the XLocaleNotSupported return status is defined will return XLocaleNotSupported. Other Xlib locale-dependent routines will operate in the ``C'' locale. The client is responsible for selecting its locale and X modifiers. Clients should provide a means for the user to override the clients' locale selection at client invocation. Most single-display X clients operate in a single locale for both X and the host processing environment. They will configure the locale by calling three functions: the host locale configuration function, XSupportsLocale, and . The semantics of certain categories of X internationalization capabilities can be configured by setting modifiers. Modifiers are named by implementation-dependent and locale-specific strings. The only standard use for this capability at present is selecting one of several styles of keyboard input method. To configure Xlib locale modifiers for the current locale, use . XSetLocaleModifiers char *XSetLocaleModifiers char *modifier_list modifier_list Specifies the modifiers. The function sets the X modifiers for the current locale setting. The modifier_list argument is a null-terminated string of the form ``{@category=value}'', that is, having zero or more concatenated ``@category=value'' entries, where category is a category name and value is the (possibly empty) setting for that category. The values are encoded in the current locale. Category names are restricted to the POSIX Portable Filename Character Set. The local host X locale modifiers announcer (on POSIX-compliant systems, the XMODIFIERS environment variable) is appended to the modifier_list to provide default values on the local host. If a given category appears more than once in the list, the first setting in the list is used. If a given category is not included in the full modifier list, the category is set to an implementation-dependent default for the current locale. An empty value for a category explicitly specifies the implementation-dependent default. If the function is successful, it returns a pointer to a string. The contents of the string are such that a subsequent call with that string (in the same locale) will restore the modifiers to the same settings. If modifier_list is a NULL pointer, also returns a pointer to such a string, and the current locale modifiers are not changed. If invalid values are given for one or more modifier categories supported by the locale, a NULL pointer is returned, and none of the current modifiers are changed. At program startup, the modifiers that are in effect are unspecified until the first successful call to set them. Whenever the locale is changed, the modifiers that are in effect become unspecified until the next successful call to set them. Clients should always call with a non-NULL modifier_list after setting the locale before they call any locale-dependent Xlib routine. The only standard modifier category currently defined is ``im'', which identifies the desired input method. The values for input method are not standardized. A single locale may use multiple input methods, switching input method under user control. The modifier may specify the initial input method in effect or an ordered list of input methods. Multiple input methods may be specified in a single im value string in an implementation-dependent manner. The returned modifiers string is owned by Xlib and should not be modified or freed by the client. It may be freed by Xlib after the current locale or modifiers are changed. Until freed, it will not be modified by Xlib. The recommended procedure for clients initializing their locale and modifiers is to obtain locale and modifier announcers separately from one of the following prioritized sources: A command line option A resource The empty string ("") The first of these that is defined should be used. Note that when a locale command line option or locale resource is defined, the effect should be to set all categories to the specified locale, overriding any category-specific settings in the local host environment. Locale and Modifier Dependencies The internationalized Xlib functions operate in the current locale configured by the host environment and X locale modifiers set by or in the locale and modifiers configured at the time some object supplied to the function was created. For each locale-dependent function, the following table describes the locale (and modifiers) dependency: Locale from Affects the Function In Locale Query/Configuration: setlocale XSupportsLocale Locale queried Locale modified Resources: setlocale Locale of XrmDatabase XrmDatabase Locale of XrmDatabase Setting Standard Properties: setlocale Encoding of supplied/returned text (some WM_ property text in environment locale) setlocale Encoding of supplied/returned text Text Input: setlocale XIM input method selection XIM selection XIM selection XIM XIC input method configuration , and so on Queried locale XIC Keyboard layout Encoding of returned text Text Drawing: setlocale XOM output method selection Charsets of fonts in XFontSet XOM XOC output method configuration , and so on Queried locale XFontSet , Locale of supplied text , and so on Locale of supplied text , and so on , XwcTextExtents, and so on Locale-dependent metrics Xlib Errors: setlocale , , and so on Locale of error message Clients may assume that a locale-encoded text string returned by an X function can be passed to a C library routine, or vice versa, if the locale is the same at the two calls. All text strings processed by internationalized Xlib functions are assumed to begin in the initial state of the encoding of the locale, if the encoding is state-dependent. All Xlib functions behave as if they do not change the current locale or X modifier setting. (This means that if they do change locale or call with a non-NULL argument, they must save and restore the current state on entry and exit.) Also, Xlib functions on implementations that conform to the ANSI C library do not alter the global state associated with the ANSI C functions mblen, mbtowc, wctomb, and strtok. Variable Argument Lists Various functions in this chapter have arguments that conform to the ANSI C variable argument list calling convention. Each function denoted with an argument of the form ``...'' takes a variable-length list of name and value pairs, where each name is a string and each value is of type XPointer. A name argument that is NULL identifies the end of the list. A variable-length argument list may contain a nested list. If the name XNVaNestedList is specified in place of an argument name, then the following value is interpreted as an XVaNestedList value that specifies a list of values logically inserted into the original list at the point of declaration. A NULL identifies the end of a nested list. To allocate a nested variable argument list dynamically, use . XVaCreateNestedList XVaNestedList XVaCreateNestedList int dummy dummy Specifies an unused argument (required by ANSI C). ... Specifies the variable length argument list(Al. The function allocates memory and copies its arguments into a single list pointer, which may be used as a value for arguments requiring a list value. Any entries are copied as specified. Data passed by reference is not copied; the caller must ensure data remains valid for the lifetime of the nested list. The list should be freed using when it is no longer needed. Output Methods This section provides discussions of the following X Output Method (XOM) topics: Output method overview Output method functions Output method values Output context functions Output context values Creating and freeing a font set Obtaining font set metrics Drawing text using font sets Output Method Overview Locale-dependent text may include one or more text components, each of which may require different fonts and character set encodings. In some languages, each component might have a different drawing direction, and some components might contain context-dependent characters that change shape based on relationships with neighboring characters. When drawing such locale-dependent text, some locale-specific knowledge is required; for example, what fonts are required to draw the text, how the text can be separated into components, and which fonts are selected to draw each component. Further, when bidirectional text must be drawn, the internal representation order of the text must be changed into the visual representation order to be drawn. An X Output Method provides a functional interface so that clients do not have to deal directly with such locale-dependent details. Output methods provide the following capabilities: Creating a set of fonts required to draw locale-dependent text. Drawing locale-dependent text with a font set without the caller needing to be aware of locale dependencies. Obtaining the escapement and extents in pixels of locale-dependent text. Determining if bidirectional or context-dependent drawing is required in a specific locale with a specific font set. Two different abstractions are used in the representation of the output method for clients. The abstraction used to communicate with an output method is an opaque data structure represented by the XOM data type. The abstraction for representing the state of a particular output thread is called an output context. The Xlib representation of an output context is an XOC, which is compatible with XFontSet in terms of its functional interface, but is a broader, more generalized abstraction. Output Method Functions To open an output method, use . XOpenOM XOM XOpenOM Display *display XrmDatabase db char *res_name char *res_class display Specifies the connection to the X server. db Specifies a pointer to the resource database. res_name Specifies the full resource name of the application. res_class Specifies the full class name of the application. The function opens an output method matching the current locale and modifiers specification. The current locale and modifiers are bound to the output method when is called. The locale associated with an output method cannot be changed. The specific output method to which this call will be routed is identified on the basis of the current locale and modifiers. will identify a default output method corresponding to the current locale. That default can be modified using to set the output method modifier. The db argument is the resource database to be used by the output method for looking up resources that are private to the output method. It is not intended that this database be used to look up values that can be set as OC values in an output context. If db is NULL, no database is passed to the output method. The res_name and res_class arguments specify the resource name and class of the application. They are intended to be used as prefixes by the output method when looking up resources that are common to all output contexts that may be created for this output method. The characters used for resource names and classes must be in the X Portable Character Set. The resources looked up are not fully specified if res_name or res_class is NULL. The res_name and res_class arguments are not assumed to exist beyond the call to . The specified resource database is assumed to exist for the lifetime of the output method. returns NULL if no output method could be opened. To close an output method, use . XCloseOM Status XCloseOM XOM om om Specifies the output method. The function closes the specified output method. To set output method attributes, use . XSetOMValues char *XSetOMValues XOM om om Specifies the output method. ... Specifies the variable-length argument list to set XOM values. The function presents a variable argument list programming interface for setting properties or features of the specified output method. This function returns NULL if it succeeds; otherwise, it returns the name of the first argument that could not be obtained. No standard arguments are currently defined by Xlib. To query an output method, use . XGetOMValues char *XGetOMValues XOM om om Specifies the output method. ... Specifies the variable-length argument list to get XOM values. The function presents a variable argument list programming interface for querying properties or features of the specified output method. This function returns NULL if it succeeds; otherwise, it returns the name of the first argument that could not be obtained. To obtain the display associated with an output method, use . XDisplayOfOM Display *XDisplayOfOM XOM om om Specifies the output method. The function returns the display associated with the specified output method. To get the locale associated with an output method, use . XLocaleOfOM char *XLocaleOfOM XOM om om Specifies the output method. The returns the locale associated with the specified output method. X Output Method Values The following table describes how XOM values are interpreted by an output method. The first column lists the XOM values. The second column indicates how each of the XOM values are treated by a particular output style. The following key applies to this table. Key Explanation G This value may be read using . XOM Value Key XNRequiredCharSet G XNQueryOrientation G XNDirectionalDependentDrawing G XNContextualDrawing G Required Char Set The XNRequiredCharSet argument returns the list of charsets that are required for loading the fonts needed for the locale. The value of the argument is a pointer to a structure of type XOMCharSetList. The XOMCharSetList structure is defined as follows: XOMCharSetList typedef struct { int charset_count; char **charset_list; } XOMCharSetList; The charset_list member is a list of one or more null-terminated charset names, and the charset_count member is the number of charset names. The required charset list is owned by Xlib and should not be modified or freed by the client. It will be freed by a call to with the associated XOM. Until freed, its contents will not be modified by Xlib. Query Orientation The XNQueryOrientation argument returns the global orientation of text when drawn. Other than XOMOrientation_LTR_TTB, the set of orientations supported is locale-dependent. The value of the argument is a pointer to a structure of type XOMOrientation. Clients are responsible for freeing the XOMOrientation structure by using ; this also frees the contents of the structure. typedef struct { int num_orientation; XOrientation *orientation; /* Input Text description */ } XOMOrientation; typedef enum { XOMOrientation_LTR_TTB, XOMOrientation_RTL_TTB, XOMOrientation_TTB_LTR, XOMOrientation_TTB_RTL, XOMOrientation_Context } XOrientation; The possible value for XOrientation may be: XOMOrientation_LTR_TTB left-to-right, top-to-bottom global orientation XOMOrientation_RTL_TTB right-to-left, top-to-bottom global orientation XOMOrientation_TTB_LTR top-to-bottom, left-to-right global orientation XOMOrientation_TTB_RTL top-to-bottom, right-to-left global orientation XOMOrientation_Context contextual global orientation Directional Dependent Drawing The XNDirectionalDependentDrawing argument indicates whether the text rendering functions implement implicit handling of directional text. If this value is True, the output method has knowledge of directional dependencies and reorders text as necessary when rendering text. If this value is False, the output method does not implement any directional text handling, and all character directions are assumed to be left-to-right. Regardless of the rendering order of characters, the origins of all characters are on the primary draw direction side of the drawing origin. This OM value presents functionality identical to the function. Context Dependent Drawing The XNContextualDrawing argument indicates whether the text rendering functions implement implicit context-dependent drawing. If this value is True, the output method has knowledge of context dependencies and performs character shape editing, combining glyphs to present a single character as necessary. The actual shape editing is dependent on the locale implementation and the font set used. This OM value presents functionality identical to the function. Output Context Functions An output context is an abstraction that contains both the data required by an output method and the information required to display that data. There can be multiple output contexts for one output method. The programming interfaces for creating, reading, or modifying an output context use a variable argument list. The name elements of the argument lists are referred to as XOC values. It is intended that output methods be controlled by these XOC values. As new XOC values are created, they should be registered with the X Consortium. An XOC can be used anywhere an XFontSet can be used, and vice versa; XFontSet is retained for compatibility with previous releases. The concepts of output methods and output contexts include broader, more generalized abstraction than font set, supporting complex and more intelligent text display, and dealing not only with multiple fonts but also with context dependencies. However, XFontSet is widely used in several interfaces, so XOC is defined as an upward compatible type of XFontSet. To create an output context, use . XCreateOC XOC XCreateOC XOM om om Specifies the output method. ... Specifies the variable-length argument list to set XOC values. The function creates an output context within the specified output method. The base font names argument is mandatory at creation time, and the output context will not be created unless it is provided. All other output context values can be set later. returns NULL if no output context could be created. NULL can be returned for any of the following reasons: A required argument was not set. A read-only argument was set. An argument name is not recognized. The output method encountered an output method implementation-dependent error. can generate a BadAtom error. To destroy an output context, use . XDestroyOC void XDestroyOC XOC oc oc Specifies the output context. The function destroys the specified output context. To get the output method associated with an output context, use . XOMOfOC XOM XOMOfOC XOC oc oc Specifies the output context. The function returns the output method associated with the specified output context. Xlib provides two functions for setting and reading output context values, respectively, and . Both functions have a variable-length argument list. In that argument list, any XOC value's name must be denoted with a character string using the X Portable Character Set. To set XOC values, use . XSetOCValues char *XSetOCValues XOC oc oc Specifies the output context. ... Specifies the variable-length argument list to set XOC values. The function returns NULL if no error occurred; otherwise, it returns the name of the first argument that could not be set. An argument might not be set for any of the following reasons: The argument is read-only. The argument name is not recognized. An implementation-dependent error occurs. Each value to be set must be an appropriate datum, matching the data type imposed by the semantics of the argument. can generate a BadAtom error. To obtain XOC values, use . XGetOCValues char *XGetOCValues XOC oc oc Specifies the output context. ... Specifies the variable-length argument list to get XOC values. The function returns NULL if no error occurred; otherwise, it returns the name of the first argument that could not be obtained. An argument might not be obtained for any of the following reasons: The argument name is not recognized. An implementation-dependent error occurs. Each argument value following a name must point to a location where the value is to be stored. Output Context Values The following table describes how XOC values are interpreted by an output method. The first column lists the XOC values. The second column indicates the alternative interfaces that function identically and are provided for compatibility with previous releases. The third column indicates how each of the XOC values is treated. The following keys apply to this table. Key Explanation C This value must be set with . D This value may be set using . If it is not set,a default is provided. G This value may be read using . S This value must be set using . XOC Value Alternative Interface Key BaseFontName C-G MissingCharSet G DefaultString G Orientation - D-S-G ResourceName - S-G ResourceClass - S-G FontInfo G OMAutomatic - G Base Font Name The XNBaseFontName argument is a list of base font names that Xlib uses to load the fonts needed for the locale. The base font names are a comma-separated list. The string is null-terminated and is assumed to be in the Host Portable Character Encoding; otherwise, the result is implementation-dependent. White space immediately on either side of a separating comma is ignored. Use of XLFD font names permits Xlib to obtain the fonts needed for a variety of locales from a single locale-independent base font name. The single base font name should name a family of fonts whose members are encoded in the various charsets needed by the locales of interest. An XLFD base font name can explicitly name a charset needed for the locale. This allows the user to specify an exact font for use with a charset required by a locale, fully controlling the font selection. If a base font name is not an XLFD name, Xlib will attempt to obtain an XLFD name from the font properties for the font. If Xlib is successful, the function will return this XLFD name instead of the client-supplied name. This argument must be set at creation time and cannot be changed. If no fonts exist for any of the required charsets, or if the locale definition in Xlib requires that a font exist for a particular charset and a font is not found for that charset, returns NULL. When querying for the XNBaseFontName XOC value, returns a null-terminated string identifying the base font names that Xlib used to load the fonts needed for the locale. This string is owned by Xlib and should not be modified or freed by the client. The string will be freed by a call to with the associated XOC. Until freed, the string contents will not be modified by Xlib. Missing CharSet The XNMissingCharSet argument returns the list of required charsets that are missing from the font set. The value of the argument is a pointer to a structure of type XOMCharSetList. If fonts exist for all of the charsets required by the current locale, charset_list is set to NULL and charset_count is set to zero. If no fonts exist for one or more of the required charsets, charset_list is set to a list of one or more null-terminated charset names for which no fonts exist, and charset_count is set to the number of missing charsets. The charsets are from the list of the required charsets for the encoding of the locale and do not include any charsets to which Xlib may be able to remap a required charset. The missing charset list is owned by Xlib and should not be modified or freed by the client. It will be freed by a call to with the associated XOC. Until freed, its contents will not be modified by Xlib. Default String When a drawing or measuring function is called with an XOC that has missing charsets, some characters in the locale will not be drawable. The XNDefaultString argument returns a pointer to a string that represents the glyphs that are drawn with this XOC when the charsets of the available fonts do not include all glyphs required to draw a character. The string does not necessarily consist of valid characters in the current locale and is not necessarily drawn with the fonts loaded for the font set, but the client can draw or measure the default glyphs by including this string in a string being drawn or measured with the XOC. If the XNDefaultString argument returned the empty string (""), no glyphs are drawn and the escapement is zero. The returned string is null-terminated. It is owned by Xlib and should not be modified or freed by the client. It will be freed by a call to with the associated XOC. Until freed, its contents will not be modified by Xlib. Orientation The XNOrientation argument specifies the current orientation of text when drawn. The value of this argument is one of the values returned by the function with the XNQueryOrientation argument specified in the XOrientation list. The value of the argument is of type XOrientation. When XNOrientation is queried, the value specifies the current orientation. When XNOrientation is set, a value is used to set the current orientation. When XOMOrientation_Context is set, the text orientation of the text is determined according to an implementation-defined method (for example, ISO 6429 control sequences), and the initial text orientation for locale-dependent Xlib functions is assumed to be XOMOrientation_LTR_TTB. The XNOrientation value does not change the prime drawing direction for Xlib drawing functions. Resource Name and Class The XNResourceName and XNResourceClass arguments are strings that specify the full name and class used by the client to obtain resources for the display of the output context. These values should be used as prefixes for name and class when looking up resources that may vary according to the output context. If these values are not set, the resources will not be fully specified. It is not intended that values that can be set as XOM values be set as resources. When querying for the XNResourceName or XNResourceClass XOC value, returns a null-terminated string. This string is owned by Xlib and should not be modified or freed by the client. The string will be freed by a call to with the associated XOC or when the associated value is changed via . Until freed, the string contents will not be modified by Xlib. Font Info The XNFontInfo argument specifies a list of one or more XFontStruct structures and font names for the fonts used for drawing by the given output context. The value of the argument is a pointer to a structure of type XOMFontInfo. typedef struct { int num_font; XFontStruct **font_struct_list; char **font_name_list; } XOMFontInfo; A list of pointers to the XFontStruct structures is returned to font_struct_list. A list of pointers to null-terminated, fully-specified font name strings in the locale of the output context is returned to font_name_list. The font_name_list order corresponds to the font_struct_list order. The number of XFontStruct structures and font names is returned to num_font. Because it is not guaranteed that a given character will be imaged using a single font glyph, there is no provision for mapping a character or default string to the font properties, font ID, or direction hint for the font for the character. The client may access the XFontStruct list to obtain these values for all the fonts currently in use. Xlib does not guarantee that fonts are loaded from the server at the creation of an XOC. Xlib may choose to cache font data, loading it only as needed to draw text or compute text dimensions. Therefore, existence of the per_char metrics in the XFontStruct structures in the XFontStructSet is undefined. Also, note that all properties in the XFontStruct structures are in the STRING encoding. The client must not free the XOMFontInfo struct itself; it will be freed when the XOC is closed. OM Automatic The XNOMAutomatic argument returns whether the associated output context was created by or not. Because the function not only destroys the output context but also closes the implicit output method associated with it, should be used with any output context created by . However, it is possible that a client does not know how the output context was created. Before a client destroys the output context, it can query whether XNOMAutomatic is set to determine whether or should be used to destroy the output context. Creating and Freeing a Font Set Xlib international text drawing is done using a set of one or more fonts, as needed for the locale of the text. Fonts are loaded according to a list of base font names supplied by the client and the charsets required by the locale. The XFontSet is an opaque type representing the state of a particular output thread and is equivalent to the type XOC. The function is a convenience function for creating an output context using only default values. The returned XFontSet has an implicitly created XOM. This XOM has an OM value XNOMAutomatic automatically set to True so that the output context self indicates whether it was created by or . XCreateFontSet XFontSet XCreateFontSet Display *display char *base_font_name_list char ***missing_charset_list_return int *missing_charset_count_return char **def_string_return display Specifies the connection to the X server. base_font_name_list Specifies the base font names. missing_charset_list_return Returns the missing charsets. missing_charset_count_return Returns the number of missing charsets. def_string_return Returns the string drawn for missing charsets. The function creates a font set for the specified display. The font set is bound to the current locale when is called. The font set may be used in subsequent calls to obtain font and character information and to image text in the locale of the font set. The base_font_name_list argument is a list of base font names that Xlib uses to load the fonts needed for the locale. The base font names are a comma-separated list. The string is null-terminated and is assumed to be in the Host Portable Character Encoding; otherwise, the result is implementation-dependent. White space immediately on either side of a separating comma is ignored. Use of XLFD font names permits Xlib to obtain the fonts needed for a variety of locales from a single locale-independent base font name. The single base font name should name a family of fonts whose members are encoded in the various charsets needed by the locales of interest. An XLFD base font name can explicitly name a charset needed for the locale. This allows the user to specify an exact font for use with a charset required by a locale, fully controlling the font selection. If a base font name is not an XLFD name, Xlib will attempt to obtain an XLFD name from the font properties for the font. If this action is successful in obtaining an XLFD name, the function will return this XLFD name instead of the client-supplied name. Xlib uses the following algorithm to select the fonts that will be used to display text with the XFontSet. For each font charset required by the locale, the base font name list is searched for the first appearance of one of the following cases that names a set of fonts that exist at the server: The first XLFD-conforming base font name that specifies the required charset or a superset of the required charset in its CharSetRegistry and CharSetEncoding fields. The implementation may use a base font name whose specified charset is a superset of the required charset, for example, an ISO8859-1 font for an ASCII charset. The first set of one or more XLFD-conforming base font names that specify one or more charsets that can be remapped to support the required charset. The Xlib implementation may recognize various mappings from a required charset to one or more other charsets and use the fonts for those charsets. For example, JIS Roman is ASCII with tilde and backslash replaced by yen and overbar; Xlib may load an ISO8859-1 font to support this character set if a JIS Roman font is not available. The first XLFD-conforming font name or the first non-XLFD font name for which an XLFD font name can be obtained, combined with the required charset (replacing the CharSetRegistry and CharSetEncoding fields in the XLFD font name). As in case 1, the implementation may use a charset that is a superset of the required charset. The first font name that can be mapped in some implementation-dependent manner to one or more fonts that support imaging text in the charset. For example, assume that a locale required the charsets: ISO8859-1 JISX0208.1983 JISX0201.1976 GB2312-1980.0 The user could supply a base_font_name_list that explicitly specifies the charsets, ensuring that specific fonts are used if they exist. For example: "-JIS-Fixed-Medium-R-Normal--26-180-100-100-C-240-JISX0208.1983-0,\\ -JIS-Fixed-Medium-R-Normal--26-180-100-100-C-120-JISX0201.1976-0,\\ -GB-Fixed-Medium-R-Normal--26-180-100-100-C-240-GB2312-1980.0,\\ -Adobe-Courier-Bold-R-Normal--25-180-75-75-M-150-ISO8859-1" Alternatively, the user could supply a base_font_name_list that omits the charsets, letting Xlib select font charsets required for the locale. For example: "-JIS-Fixed-Medium-R-Normal--26-180-100-100-C-240,\\ -JIS-Fixed-Medium-R-Normal--26-180-100-100-C-120,\\ -GB-Fixed-Medium-R-Normal--26-180-100-100-C-240,\\ -Adobe-Courier-Bold-R-Normal--25-180-100-100-M-150" Alternatively, the user could simply supply a single base font name that allows Xlib to select from all available fonts that meet certain minimum XLFD property requirements. For example: "-*-*-*-R-Normal--*-180-100-100-*-*" If is unable to create the font set, either because there is insufficient memory or because the current locale is not supported, returns NULL, missing_charset_list_return is set to NULL, and missing_charset_count_return is set to zero. If fonts exist for all of the charsets required by the current locale, returns a valid XFontSet, missing_charset_list_return is set to NULL, and missing_charset_count_return is set to zero. If no font exists for one or more of the required charsets, sets missing_charset_list_return to a list of one or more null-terminated charset names for which no font exists and sets missing_charset_count_return to the number of missing fonts. The charsets are from the list of the required charsets for the encoding of the locale and do not include any charsets to which Xlib may be able to remap a required charset. If no font exists for any of the required charsets or if the locale definition in Xlib requires that a font exist for a particular charset and a font is not found for that charset, returns NULL. Otherwise, returns a valid XFontSet to font_set. When an Xmb/wc drawing or measuring function is called with an XFontSet that has missing charsets, some characters in the locale will not be drawable. If def_string_return is non-NULL, returns a pointer to a string that represents the glyphs that are drawn with this XFontSet when the charsets of the available fonts do not include all font glyphs required to draw a codepoint. The string does not necessarily consist of valid characters in the current locale and is not necessarily drawn with the fonts loaded for the font set, but the client can draw and measure the default glyphs by including this string in a string being drawn or measured with the XFontSet. If the string returned to def_string_return is the empty string (""), no glyphs are drawn, and the escapement is zero. The returned string is null-terminated. It is owned by Xlib and should not be modified or freed by the client. It will be freed by a call to with the associated XFontSet. Until freed, its contents will not be modified by Xlib. The client is responsible for constructing an error message from the missing charset and default string information and may choose to continue operation in the case that some fonts did not exist. The returned XFontSet and missing charset list should be freed with and , respectively. The client-supplied base_font_name_list may be freed by the client after calling . To obtain a list of XFontStruct structures and full font names given an XFontSet, use . XFontsOfFontSet int XFontsOfFontSet XFontSet font_set XFontStruct ***font_struct_list_return char ***font_name_list_return font_set Specifies the font set. font_struct_list_return Returns the list of font structs. font_name_list_return Returns the list of font names. The function returns a list of one or more XFontStructs and font names for the fonts used by the Xmb and Xwc layers for the given font set. A list of pointers to the XFontStruct structures is returned to font_struct_list_return. A list of pointers to null-terminated, fully specified font name strings in the locale of the font set is returned to font_name_list_return. The font_name_list order corresponds to the font_struct_list order. The number of XFontStruct structures and font names is returned as the value of the function. Because it is not guaranteed that a given character will be imaged using a single font glyph, there is no provision for mapping a character or default string to the font properties, font ID, or direction hint for the font for the character. The client may access the XFontStruct list to obtain these values for all the fonts currently in use. Xlib does not guarantee that fonts are loaded from the server at the creation of an XFontSet. Xlib may choose to cache font data, loading it only as needed to draw text or compute text dimensions. Therefore, existence of the per_char metrics in the XFontStruct structures in the XFontStructSet is undefined. Also, note that all properties in the XFontStruct structures are in the STRING encoding. The XFontStruct and font name lists are owned by Xlib and should not be modified or freed by the client. They will be freed by a call to with the associated XFontSet. Until freed, their contents will not be modified by Xlib. To obtain the base font name list and the selected font name list given an XFontSet, use . XBaseFontNameListOfFontSet char *XBaseFontNameListOfFontSet XFontSet font_set font_set Specifies the font set. The function returns the original base font name list supplied by the client when the XFontSet was created. A null-terminated string containing a list of comma-separated font names is returned as the value of the function. White space may appear immediately on either side of separating commas. If obtained an XLFD name from the font properties for the font specified by a non-XLFD base name, the function will return the XLFD name instead of the non-XLFD base name. The base font name list is owned by Xlib and should not be modified or freed by the client. It will be freed by a call to with the associated XFontSet. Until freed, its contents will not be modified by Xlib. To obtain the locale name given an XFontSet, use . XLocaleOfFontSet char *XLocaleOfFontSet XFontSet font_set font_set Specifies the font set. The function returns the name of the locale bound to the specified XFontSet, as a null-terminated string. The returned locale name string is owned by Xlib and should not be modified or freed by the client. It may be freed by a call to with the associated XFontSet. Until freed, it will not be modified by Xlib. The function is a convenience function for freeing an output context. also frees its associated XOM if the output context was created by . XFreeFontSet void XFreeFontSet Display *display XFontSet font_set display Specifies the connection to the X server. font_set Specifies the font set. The function frees the specified font set. The associated base font name list, font name list, XFontStruct list, and XFontSetExtents, if any, are freed. Obtaining Font Set Metrics Metrics for the internationalized text drawing functions are defined in terms of a primary draw direction, which is the default direction in which the character origin advances for each succeeding character in the string. The Xlib interface is currently defined to support only a left-to-right primary draw direction. The drawing origin is the position passed to the drawing function when the text is drawn. The baseline is a line drawn through the drawing origin parallel to the primary draw direction. Character ink is the pixels painted in the foreground color and does not include interline or intercharacter spacing or image text background pixels. The drawing functions are allowed to implement implicit text directionality control, reversing the order in which characters are rendered along the primary draw direction in response to locale-specific lexical analysis of the string. Regardless of the character rendering order, the origins of all characters are on the primary draw direction side of the drawing origin. The screen location of a particular character image may be determined with or . The drawing functions are allowed to implement context-dependent rendering, where the glyphs drawn for a string are not simply a concatenation of the glyphs that represent each individual character. A string of two characters drawn with may render differently than if the two characters were drawn with separate calls to . If the client appends or inserts a character in a previously drawn string, the client may need to redraw some adjacent characters to obtain proper rendering. To find out about direction-dependent rendering, use . XDirectionalDependentDrawing Bool XDirectionalDependentDrawing XFontSet font_set font_set Specifies the font set. The function returns True if the drawing functions implement implicit text directionality; otherwise, it returns False. To find out about context-dependent rendering, use . XContextualDrawing Bool XContextualDrawing XFontSet font_set font_set Specifies the font set. The function returns True if text drawn with the font set might include context-dependent drawing; otherwise, it returns False. To find out about context-dependent or direction-dependent rendering, use . XContextDependentDrawing Bool XContextDependentDrawing XFontSet font_set font_set Specifies the font set. The function returns True if the drawing functions implement implicit text directionality or if text drawn with the font_set might include context-dependent drawing; otherwise, it returns False. The drawing functions do not interpret newline, tab, or other control characters. The behavior when nonprinting characters other than space are drawn is implementation-dependent. It is the client's responsibility to interpret control characters in a text stream. The maximum character extents for the fonts that are used by the text drawing layers can be accessed by the XFontSetExtents structure: XFontSetExtents typedef struct { XRectangle max_ink_extent; /* over all drawable characters */ XRectangle max_logical_extent; /* over all drawable characters */ } XFontSetExtents; The XRectangle structures used to return font set metrics are the usual Xlib screen-oriented rectangles with x, y giving the upper left corner, and width and height always positive. The max_ink_extent member gives the maximum extent, over all drawable characters, of the rectangles that bound the character glyph image drawn in the foreground color, relative to a constant origin. See and XwcTextExtents for detailed semantics. The max_logical_extent member gives the maximum extent, over all drawable characters, of the rectangles that specify minimum spacing to other graphical features, relative to a constant origin. Other graphical features drawn by the client, for example, a border surrounding the text, should not intersect this rectangle. The max_logical_extent member should be used to compute minimum interline spacing and the minimum area that must be allowed in a text field to draw a given number of arbitrary characters. Due to context-dependent rendering, appending a given character to a string may change the string's extent by an amount other than that character's individual extent. The rectangles for a given character in a string can be obtained from or . To obtain the maximum extents structure given an XFontSet, use . XExtentsOfFontSet XFontSetExtents *XExtentsOfFontSet XFontSet font_set font_set Specifies the font set. The function returns an XFontSetExtents structure for the fonts used by the Xmb and Xwc layers for the given font set. The XFontSetExtents structure is owned by Xlib and should not be modified or freed by the client. It will be freed by a call to with the associated XFontSet. Until freed, its contents will not be modified by Xlib. To obtain the escapement in pixels of the specified text as a value, use or . XmbTextEscapement XwcTextEscapement int XmbTextEscapement XFontSet font_set char *string int num_bytes int XwcTextEscapement XFontSet font_set wchar_t *string int num_wchars font_set Specifies the font set. string Specifies the character string. num_bytes Specifies the number of bytes in the string argument. num_wchars Specifies the number of characters in the string argument. The and functions return the escapement in pixels of the specified string as a value, using the fonts loaded for the specified font set. The escapement is the distance in pixels in the primary draw direction from the drawing origin to the origin of the next character to be drawn, assuming that the rendering of the next character is not dependent on the supplied string. Regardless of the character rendering order, the escapement is always positive. To obtain the overall_ink_return and overall_logical_return arguments, the overall bounding box of the string's image, and a logical bounding box, use or XwcTextExtents. XmbTextExtents XwcTextExtents int XmbTextExtents XFontSet font_set char *string int num_bytes XRectangle *overall_ink_return XRectangle *overall_logical_return int XwcTextExtents XFontSet font_set wchar_t *string int num_wchars XRectangle *overall_ink_return XRectangle *overall_logical_return font_set Specifies the font set. string Specifies the character string. num_bytes Specifies the number of bytes in the string argument. num_wchars Specifies the number of characters in the string argument. overall_ink_return Returns the overall ink dimensions. overall_logical_return Returns the overall logical dimensions. The and XwcTextExtents functions set the components of the specified overall_ink_return and overall_logical_return arguments to the overall bounding box of the string's image and a logical bounding box for spacing purposes, respectively. They return the value returned by or . These metrics are relative to the drawing origin of the string, using the fonts loaded for the specified font set. If the overall_ink_return argument is non-NULL, it is set to the bounding box of the string's character ink. The overall_ink_return for a nondescending, horizontally drawn Latin character is conventionally entirely above the baseline; that is, overall_ink_return.height <= -overall_ink_return.y. The overall_ink_return for a nonkerned character is entirely at, and to the right of, the origin; that is, overall_ink_return.x >= 0. A character consisting of a single pixel at the origin would set overall_ink_return fields y = 0, x = 0, width = 1, and height = 1. If the overall_logical_return argument is non-NULL, it is set to the bounding box that provides minimum spacing to other graphical features for the string. Other graphical features, for example, a border surrounding the text, should not intersect this rectangle. When the XFontSet has missing charsets, metrics for each unavailable character are taken from the default string returned by so that the metrics represent the text as it will actually be drawn. The behavior for an invalid codepoint is undefined. To determine the effective drawing origin for a character in a drawn string, the client should call on the entire string, then on the character, and subtract the x values of the returned rectangles for the character. This is useful to redraw portions of a line of text or to justify words, but for context-dependent rendering, the client should not assume that it can redraw the character by itself and get the same rendering. To obtain per-character information for a text string, use or . XmbTextPerCharExtents XwcTextPerCharExtents Status XmbTextPerCharExtents XFontSet font_set char *string int num_bytes XRectangle *ink_array_return XRectangle *logical_array_return int array_size int *num_chars_return XRectangle *overall_ink_return XRectangle *overall_logical_return Status XwcTextPerCharExtents XFontSet font_set wchar_t *string int num_wchars XRectangle *ink_array_return XRectangle *logical_array_return int array_size int *num_chars_return XRectangle *overall_ink_return XRectangle *overall_logical_return font_set Specifies the font set. string Specifies the character string. num_bytes Specifies the number of bytes in the string argument. num_wchars Specifies the number of characters in the string argument. ink_array_return Returns the ink dimensions for each character. logical_array_return Returns the logical dimensions for each character. array_size Specifies the size of ink_array_return and logical_array_return. The caller must pass in arrays of this size. num_chars_return Returns the number of characters in the string argument. overall_ink_return Returns the overall ink dimensions. overall_logical_return Returns the overall logical dimensions. The and functions return the text dimensions of each character of the specified text, using the fonts loaded for the specified font set. Each successive element of ink_array_return and logical_array_return is set to the successive character's drawn metrics, relative to the drawing origin of the string and one rectangle for each character in the supplied text string. The number of elements of ink_array_return and logical_array_return that have been set is returned to num_chars_return. Each element of ink_array_return is set to the bounding box of the corresponding character's drawn foreground color. Each element of logical_array_return is set to the bounding box that provides minimum spacing to other graphical features for the corresponding character. Other graphical features should not intersect any of the logical_array_return rectangles. Note that an XRectangle represents the effective drawing dimensions of the character, regardless of the number of font glyphs that are used to draw the character or the direction in which the character is drawn. If multiple characters map to a single character glyph, the dimensions of all the XRectangles of those characters are the same. When the XFontSet has missing charsets, metrics for each unavailable character are taken from the default string returned by so that the metrics represent the text as it will actually be drawn. The behavior for an invalid codepoint is undefined. If the array_size is too small for the number of characters in the supplied text, the functions return zero and num_chars_return is set to the number of rectangles required. Otherwise, the functions return a nonzero value. If the overall_ink_return or overall_logical_return argument is non-NULL, and return the maximum extent of the string's metrics to overall_ink_return or overall_logical_return, as returned by or XwcTextExtents. Drawing Text Using Font Sets The functions defined in this section draw text at a specified location in a drawable. They are similar to the functions , , and except that they work with font sets instead of single fonts and interpret the text based on the locale of the font set instead of treating the bytes of the string as direct font indexes. See section 8.6 for details of the use of Graphics Contexts (GCs) and possible protocol errors. If a BadFont error is generated, characters prior to the offending character may have been drawn. The text is drawn using the fonts loaded for the specified font set; the font in the GC is ignored and may be modified by the functions. No validation that all fonts conform to some width rule is performed. The text functions and use the following structures: XmbTextItem typedef struct { char *chars; /* pointer to string */ int nchars; /* number of bytes */ int delta; /* pixel delta between strings */ XFontSet font_set; /* fonts, None means don't change */ } XmbTextItem; XwcTextItem typedef struct { wchar_t *chars; /* pointer to wide char string */ int nchars; /* number of wide characters */ int delta; /* pixel delta between strings */ XFontSet font_set; /* fonts, None means don't change */ } XwcTextItem; To draw text using multiple font sets in a given drawable, use or . XmbDrawText XwcDrawText void XmbDrawText Display *display Drawable d GC gc int x int y XmbTextItem *items int nitems void XwcDrawText Display *display Drawable d GC gc int x int y XwcTextItem *items int nitems display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. x y Specify the x and y coordinates of the position in the new parent window. items Specifies an array of text items. nitems Specifies the number of text items in the array. The and functions allow complex spacing and font set shifts between text strings. Each text item is processed in turn, with the origin of a text element advanced in the primary draw direction by the escapement of the previous text item. A text item delta specifies an additional escapement of the text item drawing origin in the primary draw direction. A font_set member other than None in an item causes the font set to be used for this and subsequent text items in the text_items list. Leading text items with a font_set member set to None will not be drawn. and do not perform any context-dependent rendering between text segments. Clients may compute the drawing metrics by passing each text segment to and XwcTextExtents or and . When the XFontSet has missing charsets, each unavailable character is drawn with the default string returned by . The behavior for an invalid codepoint is undefined. To draw text using a single font set in a given drawable, use or . XmbDrawString XwcDrawString void XmbDrawString Display *display Drawable d XFontSet font_set GC gc int x int y char *string int num_bytes void XwcDrawString Display *display Drawable d XFontSet font_set GC gc int x int y wchar_t *string int num_wchars display Specifies the connection to the X server. d Specifies the drawable. font_set Specifies the font set. gc Specifies the GC. x y Specify the x and y coordinates of the position in the new parent window. string Specifies the character string. num_bytes Specifies the number of bytes in the string argument. num_wchars Specifies the number of characters in the string argument. The and functions draw the specified text with the foreground pixel. When the XFontSet has missing charsets, each unavailable character is drawn with the default string returned by . The behavior for an invalid codepoint is undefined. To draw image text using a single font set in a given drawable, use or . XmbDrawImageString XwcDrawImageString void XmbDrawImageString Display *display Drawable d XFontSet font_set GC gc int x int y char *string int num_bytes void XwcDrawImageString Display *display Drawable d XFontSet font_set GC gc int x int y wchar_t *string int num_wchars display Specifies the connection to the X server. d Specifies the drawable. font_set Specifies the font set. gc Specifies the GC. x y Specify the x and y coordinates of the position in the new parent window. string Specifies the character string. num_bytes Specifies the number of bytes in the string argument. num_wchars Specifies the number of characters in the string argument. The and functions fill a destination rectangle with the background pixel defined in the GC and then paint the text with the foreground pixel. The filled rectangle is the rectangle returned to overall_logical_return by or XwcTextExtents for the same text and XFontSet. When the XFontSet has missing charsets, each unavailable character is drawn with the default string returned by . The behavior for an invalid codepoint is undefined. Input Methods This section provides discussions of the following X Input Method (XIM) topics: Input method overview Input method management Input method functions Input method values Input context functions Input context values Input method callback semantics Event filtering Getting keyboard input Input method conventions Input Method Overview This section provides definitions for terms and concepts used for internationalized text input and a brief overview of the intended use of the mechanisms provided by Xlib. A large number of languages in the world use alphabets consisting of a small set of symbols (letters) to form words. To enter text into a computer in an alphabetic language, a user usually has a keyboard on which there exist key symbols corresponding to the alphabet. Sometimes, a few characters of an alphabetic language are missing on the keyboard. Many computer users who speak a Latin-alphabet-based language only have an English-based keyboard. They need to hit a combination of keystrokes to enter a character that does not exist directly on the keyboard. A number of algorithms have been developed for entering such characters. These are known as European input methods, compose input methods, or dead-key input methods. Japanese is an example of a language with a phonetic symbol set, where each symbol represents a specific sound. There are two phonetic symbol sets in Japanese: Katakana and Hiragana. In general, Katakana is used for words that are of foreign origin, and Hiragana is used for writing native Japanese words. Collectively, the two systems are called Kana. Each set consists of 48 characters. Korean also has a phonetic symbol set, called Hangul. Each of the 24 basic phonetic symbols (14 consonants and 10 vowels) represents a specific sound. A syllable is composed of two or three parts: the initial consonants, the vowels, and the optional last consonants. With Hangul, syllables can be treated as the basic units on which text processing is done. For example, a delete operation may work on a phonetic symbol or a syllable. Korean code sets include several thousands of these syllables. A user types the phonetic symbols that make up the syllables of the words to be entered. The display may change as each phonetic symbol is entered. For example, when the second phonetic symbol of a syllable is entered, the first phonetic symbol may change its shape and size. Likewise, when the third phonetic symbol is entered, the first two phonetic symbols may change their shape and size. Not all languages rely solely on alphabetic or phonetic systems. Some languages, including Japanese and Korean, employ an ideographic writing system. In an ideographic system, rather than taking a small set of symbols and combining them in different ways to create words, each word consists of one unique symbol (or, occasionally, several symbols). The number of symbols can be very large: approximately 50,000 have been identified in Hanzi, the Chinese ideographic system. Two major aspects of ideographic systems impact their use with computers. First, the standard computer character sets in Japan, China, and Korea include roughly 8,000 characters, while sets in Taiwan have between 15,000 and 30,000 characters. This makes it necessary to use more than one byte to represent a character. Second, it obviously is impractical to have a keyboard that includes all of a given language's ideographic symbols. Therefore, a mechanism is required for entering characters so that a keyboard with a reasonable number of keys can be used. Those input methods are usually based on phonetics, but there also exist methods based on the graphical properties of characters. In Japan, both Kana and the ideographic system Kanji are used. In Korea, Hangul and sometimes the ideographic system Hanja are used. Now consider entering ideographs in Japan, Korea, China, and Taiwan. In Japan, either Kana or English characters are typed and then a region is selected (sometimes automatically) for conversion to Kanji. Several Kanji characters may have the same phonetic representation. If that is the case with the string entered, a menu of characters is presented and the user must choose the appropriate one. If no choice is necessary or a preference has been established, the input method does the substitution directly. When Latin characters are converted to Kana or Kanji, it is called a romaji conversion. In Korea, it is usually acceptable to keep Korean text in Hangul form, but some people may choose to write Hanja-originated words in Hanja rather than in Hangul. To change Hangul to Hanja, the user selects a region for conversion and then follows the same basic method as that described for Japanese. Probably because there are well-accepted phonetic writing systems for Japanese and Korean, computer input methods in these countries for entering ideographs are fairly standard. Keyboard keys have both English characters and phonetic symbols engraved on them, and the user can switch between the two sets. The situation is different for Chinese. While there is a phonetic system called Pinyin promoted by authorities, there is no consensus for entering Chinese text. Some vendors use a phonetic decomposition (Pinyin or another), others use ideographic decomposition of Chinese words, with various implementations and keyboard layouts. There are about 16 known methods, none of which is a clear standard. Also, there are actually two ideographic sets used: Traditional Chinese (the original written Chinese) and Simplified Chinese. Several years ago, the People's Republic of China launched a campaign to simplify some ideographic characters and eliminate redundancies altogether. Under the plan, characters would be streamlined every five years. Characters have been revised several times now, resulting in the smaller, simpler set that makes up Simplified Chinese. Input Method Architecture As shown in the previous section, there are many different input methods in use today, each varying with language, culture, and history. A common feature of many input methods is that the user may type multiple keystrokes to compose a single character (or set of characters). The process of composing characters from keystrokes is called preediting. It may require complex algorithms and large dictionaries involving substantial computer resources. Input methods may require one or more areas in which to show the feedback of the actual keystrokes, to propose disambiguation to the user, to list dictionaries, and so on. The input method areas of concern are as follows: The status area is a logical extension of the LEDs that exist on the physical keyboard. It is a window that is intended to present the internal state of the input method that is critical to the user. The status area may consist of text data and bitmaps or some combination. The preedit area displays the intermediate text for those languages that are composing prior to the client handling the data. The auxiliary area is used for pop-up menus and customizing dialogs that may be required for an input method. There may be multiple auxiliary areas for an input method. Auxiliary areas are managed by the input method independent of the client. Auxiliary areas are assumed to be separate dialogs, which are maintained by the input method. There are various user interaction styles used for preediting. The ones supported by Xlib are as follows: For on-the-spot input methods, preediting data will be displayed directly in the application window. Application data is moved to allow preedit data to appear at the point of insertion. Over-the-spot preediting means that the data is displayed in a preedit window that is placed over the point of insertion. Off-the-spot preediting means that the preedit window is inside the application window but not at the point of insertion. Often, this type of window is placed at the bottom of the application window. Root-window preediting refers to input methods that use a preedit window that is the child of RootWindow. It would require a lot of computing resources if portable applications had to include input methods for all the languages in the world. To avoid this, a goal of the Xlib design is to allow an application to communicate with an input method placed in a separate process. Such a process is called an input server. The server to which the application should connect is dependent on the environment when the application is started up, that is, the user language and the actual encoding to be used for it. The input method connection is said to be locale-dependent. It is also user-dependent. For a given language, the user can choose, to some extent, the user interface style of input method (if choice is possible among several). Using an input server implies communication overhead, but applications can be migrated without relinking. Input methods can be implemented either as a stub communicating to an input server or as a local library. An input method may be based on a front-end or a back-end architecture. In a front-end architecture, there are two separate connections to the X server: keystrokes go directly from the X server to the input method on one connection and other events to the regular client connection. The input method is then acting as a filter and sends composed strings to the client. A front-end architecture requires synchronization between the two connections to avoid lost key events or locking issues. In a back-end architecture, a single X server connection is used. A dispatching mechanism must decide on this channel to delegate appropriate keystrokes to the input method. For instance, it may retain a Help keystroke for its own purpose. In the case where the input method is a separate process (that is, a server), there must be a special communication protocol between the back-end client and the input server. A front-end architecture introduces synchronization issues and a filtering mechanism for noncharacter keystrokes (Function keys, Help, and so on). A back-end architecture sometimes implies more communication overhead and more process switching. If all three processes (X server, input server, client) are running on a single workstation, there are two process switches for each keystroke in a back-end architecture, but there is only one in a front-end architecture. The abstraction used by a client to communicate with an input method is an opaque data structure represented by the XIM data type. This data structure is returned by the function, which opens an input method on a given display. Subsequent operations on this data structure encapsulate all communication between client and input method. There is no need for an X client to use any networking library or natural language package to use an input method. A single input server may be used for one or more languages, supporting one or more encoding schemes. But the strings returned from an input method will always be encoded in the (single) locale associated with the XIM object. Input Contexts Xlib provides the ability to manage a multi-threaded state for text input. A client may be using multiple windows, each window with multiple text entry areas, and the user possibly switching among them at any time. The abstraction for representing the state of a particular input thread is called an input context. The Xlib representation of an input context is an XIC. An input context is the abstraction retaining the state, properties, and semantics of communication between a client and an input method. An input context is a combination of an input method, a locale specifying the encoding of the character strings to be returned, a client window, internal state information, and various layout or appearance characteristics. The input context concept somewhat matches for input the graphics context abstraction defined for graphics output. One input context belongs to exactly one input method. Different input contexts may be associated with the same input method, possibly with the same client window. An XIC is created with the function, providing an XIM argument and affiliating the input context to the input method for its lifetime. When an input method is closed with , all of its affiliated input contexts should not be used any more (and should preferably be destroyed before closing the input method). Considering the example of a client window with multiple text entry areas, the application programmer could, for example, choose to implement as follows: As many input contexts are created as text entry areas, and the client will get the input accumulated on each context each time it looks up in that context. A single context is created for a top-level window in the application. If such a window contains several text entry areas, each time the user moves to another text entry area, the client has to indicate changes in the context. A range of choices can be made by application designers to use either a single or multiple input contexts, according to the needs of their application. Getting Keyboard Input To obtain characters from an input method, a client must call the function or with an input context created from that input method. Both a locale and display are bound to an input method when it is opened, and an input context inherits this locale and display. Any strings returned by or will be encoded in that locale. Focus Management For each text entry area in which the or functions are used, there will be an associated input context. When the application focus moves to a text entry area, the application must set the input context focus to the input context associated with that area. The input context focus is set by calling with the appropriate input context. Also, when the application focus moves out of a text entry area, the application should unset the focus for the associated input context by calling . As an optimization, if is called successively on two different input contexts, setting the focus on the second will automatically unset the focus on the first. To set and unset the input context focus correctly, it is necessary to track application-level focus changes. Such focus changes do not necessarily correspond to X server focus changes. If a single input context is being used to do input for multiple text entry areas, it will also be necessary to set the focus window of the input context whenever the focus window changes (see section 13.5.6.3). Geometry Management In most input method architectures (on-the-spot being the notable exception), the input method will perform the display of its own data. To provide better visual locality, it is often desirable to have the input method areas embedded within a client. To do this, the client may need to allocate space for an input method. Xlib provides support that allows the size and position of input method areas to be provided by a client. The input method areas that are supported for geometry management are the status area and the preedit area. The fundamental concept on which geometry management for input method windows is based is the proper division of responsibilities between the client (or toolkit) and the input method. The division of responsibilities is as follows: The client is responsible for the geometry of the input method window. The input method is responsible for the contents of the input method window. An input method is able to suggest a size to the client, but it cannot suggest a placement. Also the input method can only suggest a size. It does not determine the size, and it must accept the size it is given. Before a client provides geometry management for an input method, it must determine if geometry management is needed. The input method indicates the need for geometry management by setting XIMPreeditArea or XIMStatusArea in its XIMStyles value returned by . When a client has decided that it will provide geometry management for an input method, it indicates that decision by setting the XNInputStyle value in the XIC. After a client has established with the input method that it will do geometry management, the client must negotiate the geometry with the input method. The geometry is negotiated by the following steps: The client suggests an area to the input method by setting the XNAreaNeeded value for that area. If the client has no constraints for the input method, it either will not suggest an area or will set the width and height to zero. Otherwise, it will set one of the values. The client will get the XIC value XNAreaNeeded. The input method will return its suggested size in this value. The input method should pay attention to any constraints suggested by the client. The client sets the XIC value XNArea to inform the input method of the geometry of its window. The client should try to honor the geometry requested by the input method. The input method must accept this geometry. Clients doing geometry management must be aware that setting other XIC values may affect the geometry desired by an input method. For example, XNFontSet and XNLineSpace may change the geometry desired by the input method. The table of XIC values (see section 13.5.6) indicates the values that can cause the desired geometry to change when they are set. It is the responsibility of the client to renegotiate the geometry of the input method window when it is needed. In addition, a geometry management callback is provided by which an input method can initiate a geometry change. Event Filtering A filtering mechanism is provided to allow input methods to capture X events transparently to clients. It is expected that toolkits (or clients) using or will call this filter at some point in the event processing mechanism to make sure that events needed by an input method can be filtered by that input method. If there were no filter, a client could receive and discard events that are necessary for the proper functioning of an input method. The following provides a few examples of such events: Expose events on preedit window in local mode. Events may be used by an input method to communicate with an input server. Such input server protocol-related events have to be intercepted if one does not want to disturb client code. Key events can be sent to a filter before they are bound to translations such as those the X Toolkit Intrinsics library provides. Clients are expected to get the XIC value XNFilterEvents and augment the event mask for the client window with that event mask. This mask may be zero. Callbacks When an on-the-spot input method is implemented, only the client can insert or delete preedit data in place and possibly scroll existing text. This means that the echo of the keystrokes has to be achieved by the client itself, tightly coupled with the input method logic. When the user enters a keystroke, the client calls or . At this point, in the on-the-spot case, the echo of the keystroke in the preedit has not yet been done. Before returning to the client logic that handles the input characters, the look-up function must call the echoing logic to insert the new keystroke. If the keystrokes entered so far make up a character, the keystrokes entered need to be deleted, and the composed character will be returned. Hence, what happens is that, while being called by client code, the input method logic has to call back to the client before it returns. The client code, that is, a callback procedure, is called from the input method logic. There are a number of cases where the input method logic has to call back the client. Each of those cases is associated with a well-defined callback action. It is possible for the client to specify, for each input context, what callback is to be called for each action. There are also callbacks provided for feedback of status information and a callback to initiate a geometry request for an input method. Visible Position Feedback Masks In the on-the-spot input style, there is a problem when attempting to draw preedit strings that are longer than the available space. Once the display area is exceeded, it is not clear how best to display the preedit string. The visible position feedback masks of XIMText help resolve this problem by allowing the input method to specify hints that indicate the essential portions of the preedit string. For example, such hints can help developers implement scrolling of a long preedit string within a short preedit display area. Preedit String Management As highlighted before, the input method architecture provides preediting, which supports a type of preprocessor input composition. In this case, composition consists of interpreting a sequence of key events and returning a committed string via or . This provides the basics for input methods. In addition to preediting based on key events, a general framework is provided to give a client that desires it more advanced preediting based on the text within the client. This framework is called string conversion and is provided using XIC values. The fundamental concept of string conversion is to allow the input method to manipulate the client's text independent of any user preediting operation. The need for string conversion is based on language needs and input method capabilities. The following are some examples of string conversion: Transliteration conversion provides language-specific conversions within the input method. In the case of Korean input, users wish to convert a Hangul string into a Hanja string while in preediting, after preediting, or in other situations (for example, on a selected string). The conversion is triggered when the user presses a Hangul-to-Hanja key sequence (which may be input method specific). Sometimes the user may want to invoke the conversion after finishing preediting or on a user-selected string. Thus, the string to be converted is in an application buffer, not in the preedit area of the input method. The string conversion services allow the client to request this transliteration conversion from the input method. There are many other transliteration conversions defined for various languages, for example, Kana-to-Kanji conversion in Japanese. The key to remember is that transliteration conversions are triggered at the request of the user and returned to the client immediately without affecting the preedit area of the input method. Reconversion of a previously committed string or a selected string is supported by many input methods as a convenience to the user. For example, a user tends to mistype the commit key while preediting. In that case, some input methods provide a special key sequence to request a ``reconvert'' operation on the committed string, similar to the undo facility provided by most text editors. Another example is where the user is proofreading a document that has some misconversions from preediting and wants to correct the misconverted text. Such reconversion is again triggered by the user invoking some special action, but reconversions should not affect the state of the preedit area. Context-sensitive conversion is required for some languages and input methods that need to retrieve text that surrounds the current spot location (cursor position) of the client's buffer. Such text is needed when the preediting operation depends on some surrounding characters (usually preceding the spot location). For example, in Thai language input, certain character sequences may be invalid and the input method may want to check whether characters constitute a valid word. Input methods that do such context-dependent checking need to retrieve the characters surrounding the current cursor position to obtain complete words. Unlike other conversions, this conversion is not explicitly requested by the user. Input methods that provide such context-sensitive conversion continuously need to request context from the client, and any change in the context of the spot location may affect such conversions. The client's context would be needed if the user moves the cursor and starts editing again. For this reason, an input method supporting this type of conversion should take notice of when the client calls or , which is usually an indication of a context change. Context-sensitive conversions just need a copy of the client's text, while other conversions replace the client's text with new text to achieve the reconversion or transliteration. Yet in all cases the result of a conversion, either immediately or via preediting, is returned by the and functions. String conversion support is dependent on the availability of the XNStringConversion or XNStringConversionCallback XIC values. Because the input method may not support string conversions, clients have to query the availability of string conversion operations by checking the supported XIC values list by calling with the XNQueryICValuesList IM value. The difference between these two values is whether the conversion is invoked by the client or the input method. The XNStringConversion XIC value is used by clients to request a string conversion from the input method. The client is responsible for determining which events are used to trigger the string conversion and whether the string to be converted should be copied or deleted. The type of conversion is determined by the input method; the client can only pass the string to be converted. The client is guaranteed that no XNStringConversionCallback will be issued when this value is set; thus, the client need only set one of these values. The XNStringConversionCallback XIC value is used by the client to notify the input method that it will accept requests from the input method for string conversion. If this value is set, it is the input method's responsibility to determine which events are used to trigger the string conversion. When such events occur, the input method issues a call to the client-supplied procedure to retrieve the string to be converted. The client's callback procedure is notified whether to copy or delete the string and is provided with hints as to the amount of text needed. The XIMStringConversionCallbackStruct specifies which text should be passed back to the input method. Finally, the input method may call the client's XNStringConversionCallback procedure multiple times if the string returned from the callback is not sufficient to perform a successful conversion. The arguments to the client's procedure allow the input method to define a position (in character units) relative to the client's cursor position and the size of the text needed. By varying the position and size of the desired text in subsequent callbacks, the input method can retrieve additional text. Input Method Management The interface to input methods might appear to be simply creating an input method () and freeing an input method (). However, input methods may require complex communication with input method servers (IM servers), for example: If the X server, IM server, and X clients are started asynchronously, some clients may attempt to connect to the IM server before it is fully operational, and fail. Therefore, some mechanism is needed to allow clients to detect when an IM server has started. It is up to clients to decide what should be done when an IM server is not available (for example, wait, or use some other IM server). Some input methods may allow the underlying IM server to be switched. Such customization may be desired without restarting the entire client. To support management of input methods in these cases, the following functions are provided: This function allows clients to register a callback procedure to be called when Xlib detects that an IM server is up and available. A client calls this function as a result of the callback procedure being called. , These functions use the XIM and XIC values, XNDestroyCallback, to allow a client to register a callback procedure to be called when Xlib detects that an IM server that was associated with an opened input method is no longer available. In addition, this function can be used to switch IM servers for those input methods that support such functionality. The IM value for switching IM servers is implementation-dependent; see the description below about switching IM servers. This function removes a callback procedure registered by the client. Input methods that support switching of IM servers may exhibit some side-effects: The input method will ensure that any new IM server supports any of the input styles being used by input contexts already associated with the input method. However, the list of supported input styles may be different. Geometry management requests on previously created input contexts may be initiated by the new IM server. Hot Keys Some clients need to guarantee which keys can be used to escape from the input method, regardless of the input method state; for example, the client-specific Help key or the keys to move the input focus. The HotKey mechanism allows clients to specify a set of keys for this purpose. However, the input method might not allow clients to specify hot keys. Therefore, clients have to query support of hot keys by checking the supported XIC values list by calling with the XNQueryICValuesList IM value. When the hot keys specified conflict with the key bindings of the input method, hot keys take precedence over the key bindings of the input method. Preedit State Operation An input method may have several internal states, depending on its implementation and the locale. However, one state that is independent of locale and implementation is whether the input method is currently performing a preediting operation. Xlib provides the ability for an application to manage the preedit state programmatically. Two methods are provided for retrieving the preedit state of an input context. One method is to query the state by calling with the XNPreeditState XIC value. Another method is to receive notification whenever the preedit state is changed. To receive such notification, an application needs to register a callback by calling with the XNPreeditStateNotifyCallback XIC value. In order to change the preedit state programmatically, an application needs to call with XNPreeditState. Availability of the preedit state is input method dependent. The input method may not provide the ability to set the state or to retrieve the state programmatically. Therefore, clients have to query availability of preedit state operations by checking the supported XIC values list by calling with the XNQueryICValuesList IM value. Input Method Functions To open a connection, use . XOpenIM XIM XOpenIM Display *display XrmDatabase db char *res_name char *res_class display Specifies the connection to the X server. db Specifies a pointer to the resource database. res_name Specifies the full resource name of the application. res_class Specifies the full class name of the application. The function opens an input method, matching the current locale and modifiers specification. Current locale and modifiers are bound to the input method at opening time. The locale associated with an input method cannot be changed dynamically. This implies that the strings returned by or , for any input context affiliated with a given input method, will be encoded in the locale current at the time the input method is opened. The specific input method to which this call will be routed is identified on the basis of the current locale. will identify a default input method corresponding to the current locale. That default can be modified using for the input method modifier. The db argument is the resource database to be used by the input method for looking up resources that are private to the input method. It is not intended that this database be used to look up values that can be set as IC values in an input context. If db is NULL, no database is passed to the input method. The res_name and res_class arguments specify the resource name and class of the application. They are intended to be used as prefixes by the input method when looking up resources that are common to all input contexts that may be created for this input method. The characters used for resource names and classes must be in the X Portable Character Set. The resources looked up are not fully specified if res_name or res_class is NULL. The res_name and res_class arguments are not assumed to exist beyond the call to . The specified resource database is assumed to exist for the lifetime of the input method. returns NULL if no input method could be opened. To close a connection, use . XCloseIM Status XCloseIM XIM im im Specifies the input method. The function closes the specified input method. To set input method attributes, use . XSetIMValues char *XSetIMValues XIM im im Specifies the input method. ... Specifies the variable-length argument list to set XIM values. The function presents a variable argument list programming interface for setting attributes of the specified input method. It returns NULL if it succeeds; otherwise, it returns the name of the first argument that could not be set. Xlib does not attempt to set arguments from the supplied list that follow the failed argument; all arguments in the list preceding the failed argument have been set correctly. To query an input method, use . XGetIMValues char *XGetIMValues XIM im im Specifies the input method. ... Specifies the variable length argument list to get XIM values. The function presents a variable argument list programming interface for querying properties or features of the specified input method. This function returns NULL if it succeeds; otherwise, it returns the name of the first argument that could not be obtained. Each XIM value argument (following a name) must point to a location where the XIM value is to be stored. That is, if the XIM value is of type T, the argument must be of type T*. If T itself is a pointer type, then allocates memory to store the actual data, and the client is responsible for freeing this data by calling with the returned pointer. To obtain the display associated with an input method, use . XDisplayOfIM Display *XDisplayOfIM XIM im im Specifies the input method. The function returns the display associated with the specified input method. To get the locale associated with an input method, use . XLocaleOfIM char *XLocaleOfIM XIM im im Specifies the input method. The function returns the locale associated with the specified input method. To register an input method instantiate callback, use . XRegisterIMInstantiateCallback Bool XRegisterIMInstantiateCallback Display *display XrmDatabase db char *res_name char *res_class XIMProc callback XPointer *client_data display Specifies the connection to the X server. db Specifies a pointer to the resource database. res_name Specifies the full resource name of the application. res_class Specifies the full class name of the application. callback Specifies a pointer to the input method instantiate callback. client_data Specifies the additional client data. The function registers a callback to be invoked whenever a new input method becomes available for the specified display that matches the current locale and modifiers. The function returns True if it succeeds; otherwise, it returns False. The generic prototype is as follows: IMInstantiateCallback void IMInstantiateCallback Display *display XPointer client_data XPointer call_data display Specifies the connection to the X server. client_data Specifies the additional client data. call_data Not used for this callback and always passed as NULL. To unregister an input method instantiation callback, use . XUnregisterIMInstantiateCallback Bool XUnregisterIMInstantiateCallback Display *display XrmDatabase db char *res_name char *res_class XIMProc callback XPointer *client_data display Specifies the connection to the X server. db Specifies a pointer to the resource database. res_name Specifies the full resource name of the application. res_class Specifies the full class name of the application. callback Specifies a pointer to the input method instantiate callback. client_data Specifies the additional client data. The function removes an input method instantiation callback previously registered. The function returns True if it succeeds; otherwise, it returns False. Input Method Values The following table describes how XIM values are interpreted by an input method. The first column lists the XIM values. The second column indicates how each of the XIM values are treated by that input style. The following keys apply to this table. Key Explanation D This value may be set using . If it is not set, a default is provided. S This value may be set using . G This value may be read using . XIM Value Key XNQueryInputStyle G XNResourceName D-S-G XNResourceClass D-S-G XNDestroyCallback D-S-G XNQueryIMValuesList G XNQueryICValuesList G XNVisiblePosition G XNR6PreeditCallback D-S-G XNR6PreeditCallback is obsolete and its use is not recommended (see section 13.5.4.6). Query Input Style A client should always query the input method to determine which input styles are supported. The client should then find an input style it is capable of supporting. If the client cannot find an input style that it can support, it should negotiate with the user the continuation of the program (exit, choose another input method, and so on). The argument value must be a pointer to a location where the returned value will be stored. The returned value is a pointer to a structure of type XIMStyles. Clients are responsible for freeing the XIMStyles structure. To do so, use . The XIMStyles structure is defined as follows: XIMStyle XIMPreeditArea XIMPreeditCallbacks XIMPreeditPosition XIMPreeditNothing XIMPreeditNone XIMStatusArea XIMStatusCallbacks XIMStatusNothing XIMStatusNone XIMStyles typedef unsigned long XIMStyle; #define XIMPreeditArea 0x0001L #define XIMPreeditCallbacks 0x0002L #define XIMPreeditPosition 0x0004L #define XIMPreeditNothing 0x0008L #define XIMPreeditNone 0x0010L #define XIMStatusArea 0x0100L #define XIMStatusCallbacks 0x0200L #define XIMStatusNothing 0x0400L #define XIMStatusNone 0x0800L typedef struct { unsigned short count_styles; XIMStyle * supported_styles; } XIMStyles; An XIMStyles structure contains the number of input styles supported in its count_styles field. This is also the size of the supported_styles array. The supported styles is a list of bitmask combinations, which indicate the combination of styles for each of the areas supported. These areas are described later. Each element in the list should select one of the bitmask values for each area. The list describes the complete set of combinations supported. Only these combinations are supported by the input method. The preedit category defines what type of support is provided by the input method for preedit information. XIMPreeditArea XIMPreeditPosition XIMPreeditCallbacks XIMPreeditNothing XIMPreeditNone XIMPreeditArea If chosen, the input method would require the client to provide some area values for it to do its preediting. Refer to XIC values XNArea and XNAreaNeeded. XIMPreeditPosition If chosen, the input method would require the client to provide positional values. Refer to XIC values XNSpotLocation and XNFocusWindow. XIMPreeditCallbacks If chosen, the input method would require the client to define the set of preedit callbacks. Refer to XIC values XNPreeditStartCallback, XNPreeditDoneCallback, XNPreeditDrawCallback, and XNPreeditCaretCallback. XIMPreeditNothing If chosen, the input method can function without any preedit values. XIMPreeditNone The input method does not provide any preedit feedback. Any preedit value is ignored. This style is mutually exclusive with the other preedit styles. The status category defines what type of support is provided by the input method for status information. XIMStatusArea XIMStatusCallbacks XIMStatusNothing XIMStatusNone XIMStatusArea The input method requires the client to provide some area values for it to do its status feedback. See XNArea and XNAreaNeeded. XIMStatusCallbacks The input method requires the client to define the set of status callbacks, XNStatusStartCallback, XNStatusDoneCallback, and XNStatusDrawCallback. XIMStatusNothing The input method can function without any status values. XIMStatusNone The input method does not provide any status feedback. If chosen, any status value is ignored. This style is mutually exclusive with the other status styles. Resource Name and Class The XNResourceName and XNResourceClass arguments are strings that specify the full name and class used by the input method. These values should be used as prefixes for the name and class when looking up resources that may vary according to the input method. If these values are not set, the resources will not be fully specified. It is not intended that values that can be set as XIM values be set as resources. Destroy Callback The XNDestroyCallback argument is a pointer to a structure of type XIMCallback. XNDestroyCallback is triggered when an input method stops its service for any reason. After the callback is invoked, the input method is closed and the associated input context(s) are destroyed by Xlib. Therefore, the client should not call or . The generic prototype of this callback function is as follows: DestroyCallback void DestroyCallback XIM im XPointer client_data XPointer call_data im Specifies the input method. client_data Specifies the additional client data. call_data Not used for this callback and always passed as NULL. A DestroyCallback is always called with a NULL call_data argument. Query IM/IC Values List XNQueryIMValuesList and XNQueryICValuesList are used to query about XIM and XIC values supported by the input method. The argument value must be a pointer to a location where the returned value will be stored. The returned value is a pointer to a structure of type XIMValuesList. Clients are responsible for freeing the XIMValuesList structure. To do so, use . The XIMValuesList structure is defined as follows: typedef struct { unsigned short count_values; char **supported_values; } XIMValuesList; Visible Position The XNVisiblePosition argument indicates whether the visible position masks of XIMFeedback in XIMText are available. The argument value must be a pointer to a location where the returned value will be stored. The returned value is of type Bool. If the returned value is True, the input method uses the visible position masks of XIMFeedback in XIMText; otherwise, the input method does not use the masks. Because this XIM value is optional, a client should call with argument XNQueryIMValuesList before using this argument. If the XNVisiblePosition does not exist in the IM values list returned from XNQueryIMValuesList, the visible position masks of XIMFeedback in XIMText are not used to indicate the visible position. Preedit Callback Behavior The XNR6PreeditCallback argument originally included in the X11R6 specification has been deprecated.\(dg During formulation of the X11R6 specification, the behavior of the R6 PreeditDrawCallbacks was going to differ significantly from that of the R5 callbacks. Late changes to the specification converged the R5 and R6 behaviors, eliminating the need for XNR6PreeditCallback. Unfortunately, this argument was not removed from the R6 specification before it was published. The XNR6PreeditCallback argument indicates whether the behavior of preedit callbacks regarding XIMPreeditDrawCallbackStruct values follows Release 5 or Release 6 semantics. The value is of type Bool. When querying for XNR6PreeditCallback, if the returned value is True, the input method uses the Release 6 behavior; otherwise, it uses the Release 5 behavior. The default value is False. In order to use Release 6 semantics, the value of XNR6PreeditCallback must be set to True. Because this XIM value is optional, a client should call with argument XNQueryIMValuesList before using this argument. If the XNR6PreeditCallback does not exist in the IM values list returned from XNQueryIMValuesList, the PreeditCallback behavior is Release 5 semantics. Input Context Functions An input context is an abstraction that is used to contain both the data required (if any) by an input method and the information required to display that data. There may be multiple input contexts for one input method. The programming interfaces for creating, reading, or modifying an input context use a variable argument list. The name elements of the argument lists are referred to as XIC values. It is intended that input methods be controlled by these XIC values. As new XIC values are created, they should be registered with the X Consortium. To create an input context, use . XCreateIC XIC XCreateIC XIM im im Specifies the input method. ... Specifies the variable length argument list to set XIC values. The function creates a context within the specified input method. Some of the arguments are mandatory at creation time, and the input context will not be created if those arguments are not provided. The mandatory arguments are the input style and the set of text callbacks (if the input style selected requires callbacks). All other input context values can be set later. returns a NULL value if no input context could be created. A NULL value could be returned for any of the following reasons: A required argument was not set. A read-only argument was set (for example, XNFilterEvents). The argument name is not recognized. The input method encountered an input method implementation-dependent error. can generate BadAtom, BadColor, BadPixmap, and BadWindow errors. To destroy an input context, use . XDestroyIC void XDestroyIC XIC ic ic Specifies the input context. destroys the specified input context. To communicate to and synchronize with input method for any changes in keyboard focus from the client side, use and . XSetICFocus void XSetICFocus XIC ic ic Specifies the input context. The function allows a client to notify an input method that the focus window attached to the specified input context has received keyboard focus. The input method should take action to provide appropriate feedback. Complete feedback specification is a matter of user interface policy. Calling does not affect the focus window value. XUnsetICFocus void XUnsetICFocus XIC ic ic Specifies the input context. The function allows a client to notify an input method that the specified input context has lost the keyboard focus and that no more input is expected on the focus window attached to that input context. The input method should take action to provide appropriate feedback. Complete feedback specification is a matter of user interface policy. Calling does not affect the focus window value; the client may still receive events from the input method that are directed to the focus window. To reset the state of an input context to its initial state, use or . XmbResetIC XwcResetIC char *XmbResetIC XIC ic wchar_t *XwcResetIC XIC ic ic Specifies the input context. When XNResetState is set to XIMInitialState, and reset an input context to its initial state; when XNResetState is set to XIMPreserveState, the current input context state is preserved. In both cases, any input pending on that context is deleted. The input method is required to clear the preedit area, if any, and update the status accordingly. Calling or does not change the focus. The return value of is its current preedit string as a multibyte string. If there is any preedit text drawn or visible to the user, then these procedures must return a non-NULL string. If there is no visible preedit text, then it is input method implementation-dependent whether these procedures return a non-NULL string or NULL. The client should free the returned string by calling . To get the input method associated with an input context, use . XIMOfIC XIM XIMOfIC XIC ic ic Specifies the input context. The function returns the input method associated with the specified input context. Xlib provides two functions for setting and reading XIC values, respectively, and . Both functions have a variable-length argument list. In that argument list, any XIC value's name must be denoted with a character string using the X Portable Character Set. To set XIC values, use . XSetICValues char *XSetICValues XIC ic ic Specifies the input context. ... Specifies the variable length argument list to set XIC values. The function returns NULL if no error occurred; otherwise, it returns the name of the first argument that could not be set. An argument might not be set for any of the following reasons: The argument is read-only (for example, XNFilterEvents). The argument name is not recognized. An implementation-dependent error occurs. Each value to be set must be an appropriate datum, matching the data type imposed by the semantics of the argument. can generate BadAtom, BadColor, BadCursor, BadPixmap, and BadWindow errors. To obtain XIC values, use . XGetICValues char *XGetICValues XIC ic ic Specifies the input context. ... Specifies the variable length argument list to get XIC values. The function returns NULL if no error occurred; otherwise, it returns the name of the first argument that could not be obtained. An argument could not be obtained for any of the following reasons: The argument name is not recognized. The input method encountered an implementation-dependent error. Each IC attribute value argument (following a name) must point to a location where the IC value is to be stored. That is, if the IC value is of type T, the argument must be of type T*. If T itself is a pointer type, then allocates memory to store the actual data, and the client is responsible for freeing this data by calling with the returned pointer. The exception to this rule is for an IC value of type XVaNestedList (for preedit and status attributes). In this case, the argument must also be of type XVaNestedList. Then, the rule of changing type T to T* and freeing the allocated data applies to each element of the nested list. Input Context Values The following tables describe how XIC values are interpreted by an input method depending on the input style chosen by the user. The first column lists the XIC values. The second column indicates which values are involved in affecting, negotiating, and setting the geometry of the input method windows. The subentries under the third column indicate the different input styles that are supported. Each of these columns indicates how each of the XIC values are treated by that input style. The following keys apply to these tables. Key Explanation C This value must be set with . D This value may be set using .> If it is not set,> a default is provided. G This value may be read using . GN This value may cause geometry negotiation when its value is set by means of or . GR This value will be the response of the input method when any GN value is changed. GS This value will cause the geometry of the input method window to be set. O This value must be set once and only once. It need not be set at create time. S This value may be set with . Ignored This value is ignored by the input method for the given input style. XIC Value Geometry Management Preedit Callback Preedit Position Input Style Preedit Area Preedit Nothing Preedit None Input Style C-G C-G C-G C-G C-G Client Window O-G O-G O-G O-G Ignored Focus Window GN D-S-G D-S-G D-S-G D-S-G Ignored Resource Name Ignored D-S-G D-S-G D-S-G Ignored Resource Class Ignored D-S-G D-S-G D-S-G Ignored Geometry Callback Ignored Ignored D-S-G Ignored Ignored Filter Events G G G G Ignored Destroy Callback D-S-G D-S-G D-S-G D-S-G D-S-G String Conversion Callback S-G S-G S-G S-G S-G String Conversion D-S-G D-S-G D-S-G D-S-G D-S-G Reset State D-S-G D-S-G D-S-G D-S-G Ignored HotKey S-G S-G S-G S-G Ignored HotKeyState D-S-G D-S-G D-S-G D-S-G Ignored Preedit Area GS Ignored D-S-G D-S-G Ignored Ignored Area Needed GN-GR Ignored Ignored S-G Ignored Ignored Spot Location Ignored D-S-G Ignored Ignored Ignored Colormap Ignored D-S-G D-S-G D-S-G Ignored Foreground Ignored D-S-G D-S-G D-S-G Ignored Background Ignored D-S-G D-S-G D-S-G Ignored Background Pixmap Ignored D-S-G D-S-G D-S-G Ignored Font Set GN Ignored D-S-G D-S-G D-S-G Ignored Line Spacing GN Ignored D-S-G D-S-G D-S-G Ignored Cursor Ignored D-S-G D-S-G D-S-G Ignored Preedit State D-S-G D-S-G D-S-G D-S-G Ignored Preedit State Notify Callback S-G S-G S-G S-G Ignored Preedit Callbacks C-S-G Ignored Ignored Ignored Ignored XIC Value Geomentry Management Status Callback Status Area Status Nothing Status None Input Style C-G C-G C-G C-G Client Window O-G O-G O-G Ignored Focus Window GN D-S-G D-S-G D-S-G Ignored Resource Name Ignored D-S-G D-S-G Ignored Resource Class Ignored D-S-G D-S-G Ignored Geometry Callback Ignored D-S-G Ignored Ignored Filter Events G G G G Status Area GS Ignored D-S-G Ignored Ignored Area Needed GN-GR Ignored S-G Ignored Ignored Colormap Ignored D-S-G D-S-G Ignored Foreground Ignored D-S-G D-S-G Ignored Background Ignored D-S-G D-S-G Ignored Background Pixmap Ignored D-S-G D-S-G Ignored Font Set GN Ignored D-S-G D-S-G Ignored Line Spacing GN Ignored D-S-G D-S-G Ignored Cursor Ignored D-S-G D-S-G Ignored Status Callbacks C-S-G Ignored Ignored Ignored Input Style The XNInputStyle argument specifies the input style to be used. The value of this argument must be one of the values returned by the function with the XNQueryInputStyle argument specified in the supported_styles list. Note that this argument must be set at creation time and cannot be changed. Client Window XNClientWindow The XNClientWindow argument specifies to the input method the client window in which the input method can display data or create subwindows. Geometry values for input method areas are given with respect to the client window. Dynamic change of client window is not supported. This argument may be set only once and should be set before any input is done using this input context. If it is not set, the input method may not operate correctly. If an attempt is made to set this value a second time with , the string XNClientWindow will be returned by , and the client window will not be changed. If the client window is not a valid window ID on the display attached to the input method, a BadWindow error can be generated when this value is used by the input method. Focus Window XNFocusWindow The XNFocusWindow argument specifies the focus window. The primary purpose of the XNFocusWindow is to identify the window that will receive the key event when input is composed. In addition, the input method may possibly affect the focus window as follows: Select events on it Send events to it Modify its properties Grab the keyboard within that window The associated value must be of type Window. If the focus window is not a valid window ID on the display attached to the input method, a BadWindow error can be generated when this value is used by the input method. When this XIC value is left unspecified, the input method will use the client window as the default focus window. Resource Name and Class XNResourceName XNResourceClass The XNResourceName and XNResourceClass arguments are strings that specify the full name and class used by the client to obtain resources for the client window. These values should be used as prefixes for name and class when looking up resources that may vary according to the input context. If these values are not set, the resources will not be fully specified. It is not intended that values that can be set as XIC values be set as resources. Geometry Callback XNGeometryCallback The XNGeometryCallback argument is a structure of type XIMCallback (see section 13.5.6.13.12). The XNGeometryCallback argument specifies the geometry callback that a client can set. This callback is not required for correct operation of either an input method or a client. It can be set for a client whose user interface policy permits an input method to request the dynamic change of that input method's window. An input method that does dynamic change will need to filter any events that it uses to initiate the change. Filter Events XNFilterEvents The XNFilterEvents argument returns the event mask that an input method needs to have selected for. The client is expected to augment its own event mask for the client window with this one. This argument is read-only, is set by the input method at create time, and is never changed. The type of this argument is unsigned long. Setting this value will cause an error. Destroy Callback The XNDestroyCallback argument is a pointer to a structure of type XIMCallback (see section 13.5.6.13.12). This callback is triggered when the input method stops its service for any reason; for example, when a connection to an IM server is broken. After the destroy callback is called, the input context is destroyed and the input method is closed. Therefore, the client should not call and . String Conversion Callback The XNStringConversionCallback argument is a structure of type XIMCallback (see section 13.5.6.13.12). The XNStringConversionCallback argument specifies a string conversion callback. This callback is not required for correct operation of either the input method or the client. It can be set by a client to support string conversions that may be requested by the input method. An input method that does string conversions will filter any events that it uses to initiate the conversion. Because this XIC value is optional, a client should call with argument XNQueryICValuesList before using this argument. String Conversion The XNStringConversion argument is a structure of type XIMStringConversionText. The XNStringConversion argument specifies the string to be converted by an input method. This argument is not required for correct operation of either the input method or the client. String conversion facilitates the manipulation of text independent of preediting. It is essential for some input methods and clients to manipulate text by performing context-sensitive conversion, reconversion, or transliteration conversion on it. Because this XIC value is optional, a client should call with argument XNQueryICValuesList before using this argument. The XIMStringConversionText structure is defined as follows: typedef struct _XIMStringConversionText { unsigned short length; XIMStringConversionFeedback *feedback; Bool encoding_is_wchar; union { char *mbs; wchar_t *wcs; } string; } XIMStringConversionText; typedef unsigned long XIMStringConversionFeedback; The feedback member is reserved for future use. The text to be converted is defined by the string and length members. The length is indicated in characters. To prevent the library from freeing memory pointed to by an uninitialized pointer, the client should set the feedback element to NULL. Reset State The XNResetState argument specifies the state the input context will return to after calling or . The XIC state may be set to its initial state, as specified by the XNPreeditState value when was called, or it may be set to preserve the current state. The valid masks for XIMResetState are as follows: XIMInitialState XINPreserveState typedef unsigned long XIMResetState; #define XIMInitialState (1L) #define XIMPreserveState (1L<<1) If XIMInitialState is set, then and will return to the initial XNPreeditState state of the XIC. If XIMPreserveState is set, then and will preserve the current state of the XIC. If XNResetState is left unspecified, the default is XIMInitialState. XIMResetState values other than those specified above will default to XIMInitialState. Because this XIC value is optional, a client should call with argument XNQueryICValuesList before using this argument. Hot Keys The XNHotKey argument specifies the hot key list to the XIC. The hot key list is a pointer to the structure of type XIMHotKeyTriggers, which specifies the key events that must be received without any interruption of the input method. For the hot key list set with this argument to be utilized, the client must also set XNHotKeyState to XIMHotKeyStateON. Because this XIC value is optional, a client should call with argument XNQueryICValuesList before using this functionality. The value of the argument is a pointer to a structure of type XIMHotKeyTriggers. If an event for a key in the hot key list is found, then the process will receive the event and it will be processed inside the client. typedef struct { KeySym keysym; unsigned int modifier; unsigned int modifier_mask; } XIMHotKeyTrigger; typedef struct { int num_hot_key; XIMHotKeyTrigger *key; } XIMHotKeyTriggers; The combination of modifier and modifier_mask are used to represent one of three states for each modifier: either the modifier must be on, or the modifier must be off, or the modifier is a ``don't care'' - it may be on or off. When a modifier_mask bit is set to 0, the state of the associated modifier is ignored when evaluating whether the key is hot or not. Modifier Bit Mask Bit Meaning 0 1 The modifier must be off. 1 1 The modifier must be on. n/a 0 Do not care if the modifier is on or off. Hot Key State The XNHotKeyState argument specifies the hot key state of the input method. This is usually used to switch the input method between hot key operation and normal input processing. The value of the argument is a pointer to a structure of type XIMHotKeyState . typedef unsigned long XIMHotKeyState; #define XIMHotKeyStateON (0x0001L) #define XIMHotKeyStateOFF (0x0002L) If not specified, the default is XIMHotKeyStateOFF. Preedit and Status Attributes XNPreeditAttributes XNStatusAttributes The XNPreeditAttributes and XNStatusAttributes arguments specify to an input method the attributes to be used for the preedit and status areas, if any. Those attributes are passed to or as a nested variable-length list. The names to be used in these lists are described in the following sections. Area XNArea The value of the XNArea argument must be a pointer to a structure of type XRectangle. The interpretation of the XNArea argument is dependent on the input method style that has been set. If the input method style is XIMPreeditPosition, XNArea specifies the clipping region within which preediting will take place. If the focus window has been set, the coordinates are assumed to be relative to the focus window. Otherwise, the coordinates are assumed to be relative to the client window. If neither has been set, the results are undefined. If XNArea is not specified, is set to NULL, or is invalid, the input method will default the clipping region to the geometry of the XNFocusWindow. If the area specified is NULL or invalid, the results are undefined. If the input style is XIMPreeditArea or XIMStatusArea, XNArea specifies the geometry provided by the client to the input method. The input method may use this area to display its data, either preedit or status depending on the area designated. The input method may create a window as a child of the client window with dimensions that fit the XNArea. The coordinates are relative to the client window. If the client window has not been set yet, the input method should save these values and apply them when the client window is set. If XNArea is not specified, is set to NULL, or is invalid, the results are undefined. Area Needed XNAreaNeeded When set, the XNAreaNeeded argument specifies the geometry suggested by the client for this area (preedit or status). The value associated with the argument must be a pointer to a structure of type XRectangle. Note that the x, y values are not used and that nonzero values for width or height are the constraints that the client wishes the input method to respect. When read, the XNAreaNeeded argument specifies the preferred geometry desired by the input method for the area. This argument is only valid if the input style is XIMPreeditArea or XIMStatusArea. It is used for geometry negotiation between the client and the input method and has no other effect on the input method (see section 13.5.1.5). Spot Location XNSpotLocation The XNSpotLocation argument specifies to the input method the coordinates of the spot to be used by an input method executing with XNInputStyle set to XIMPreeditPosition. When specified to any input method other than XIMPreeditPosition, this XIC value is ignored. Some Xlib implementations will allow this to be set when XNInputStyle is set to XIMPreeditCallbacks. Behavior in that case is implementation defined. The x coordinate specifies the position where the next character would be inserted. The y coordinate is the position of the baseline used by the current text line in the focus window. The x and y coordinates are relative to the focus window, if it has been set; otherwise, they are relative to the client window. If neither the focus window nor the client window has been set, the results are undefined. The value of the argument is a pointer to a structure of type XPoint. Colormap Two different arguments can be used to indicate what colormap the input method should use to allocate colors, a colormap ID, or a standard colormap name. XNColormap The XNColormap argument is used to specify a colormap ID. The argument value is of type Colormap. An invalid argument may generate a BadColor error when it is used by the input method. XNStdColormap The XNStdColormap argument is used to indicate the name of the standard colormap in which the input method should allocate colors. The argument value is an Atom that should be a valid atom for calling . An invalid argument may generate a BadAtom error when it is used by the input method. If the colormap is left unspecified, the client window colormap becomes the default. Foreground and Background XNForeground XNBackground The XNForeground and XNBackground arguments specify the foreground and background pixel, respectively. The argument value is of type unsigned long. It must be a valid pixel in the input method colormap. If these values are left unspecified, the default is determined by the input method. Background Pixmap The XNBackgroundPixmap argument specifies a background pixmap to be used as the background of the window. The value must be of type Pixmap. An invalid argument may generate a BadPixmap error when it is used by the input method. If this value is left unspecified, the default is determined by the input method. Font Set XNFontSet The XNFontSet argument specifies to the input method what font set is to be used. The argument value is of type XFontSet. If this value is left unspecified, the default is determined by the input method. Line Spacing The XNLineSpace argument specifies to the input method what line spacing is to be used in the preedit window if more than one line is to be used. This argument is of type int. If this value is left unspecified, the default is determined by the input method. Cursor XNCursor The XNCursor argument specifies to the input method what cursor is to be used in the specified window. This argument is of type Cursor. An invalid argument may generate a BadCursor error when it is used by the input method. If this value is left unspecified, the default is determined by the input method. Preedit State The XNPreeditState argument specifies the state of input preediting for the input method. Input preediting can be on or off. The valid mask names for XNPreeditState are as follows: XIMPreeditUnknown XIMPreeditEnable XIMPreeditDisable typedef unsigned long XIMPreeditState; #define XIMPreeditUnknown 0L #define XIMPreeditEnable 1L #define XIMPreeditDisable (1L<<1) If a value of XIMPreeditEnable is set, then input preediting is turned on by the input method. If a value of XIMPreeditDisable is set, then input preediting is turned off by the input method. If XNPreeditState is left unspecified, then the state will be implementation-dependent. When XNResetState is set to XIMInitialState, the XNPreeditState value specified at the creation time will be reflected as the initial state for and . Because this XIC value is optional, a client should call with argument XNQueryICValuesList before using this argument. Preedit State Notify Callback The preedit state notify callback is triggered by the input method when the preediting state has changed. The value of the XNPreeditStateNotifyCallback argument is a pointer to a structure of type XIMCallback. The generic prototype is as follows: PreeditStateNotifyCallback void PreeditStateNotifyCallback XIC ic XPointer client_data XIMPreeditStateNotifyCallbackStruct *call_data ic Specifies the input context. client_data Specifies the additional client data. call_data Specifies the current preedit state. The XIMPreeditStateNotifyCallbackStruct structure is defined as follows: XIMPreeditStateNotifyCallbackStruct typedef struct _XIMPreeditStateNotifyCallbackStruct { XIMPreeditState state; } XIMPreeditStateNotifyCallbackStruct; Because this XIC value is optional, a client should call with argument XNQueryICValuesList before using this argument. Preedit and Status Callbacks A client that wants to support the input style XIMPreeditCallbacks must provide a set of preedit callbacks to the input method. The set of preedit callbacks is as follows: XNPreeditStartCallback XNPreeditDoneCallback XNPreeditDrawCallback XNPreeditCaretCallback XNPreeditStartCallback This is called when the input method starts preedit. XNPreeditDoneCallback This is called when the input method stops preedit. XNPreeditDrawCallback This is called when a number of preedit keystrokes should be echoed. XNPreeditCaretCallback This is called to move the text insertion point within the preedit string. A client that wants to support the input style XIMStatusCallbacks must provide a set of status callbacks to the input method. The set of status callbacks is as follows: XNStatusStartCallback XNStatusDoneCallback XNStatusDrawCallback XNStatusStartCallback This is called when the input method initializes the status area. XNStatusDoneCallback This is called when the input method no longer needs the status area. XNStatusDrawCallback This is called when updating of the status area is required. The value of any status or preedit argument is a pointer to a structure of type XIMCallback. XIMProc XIMCallback typedef void (*XIMProc)(); typedef struct { XPointer client_data; XIMProc callback; } XIMCallback; Each callback has some particular semantics and will carry the data that expresses the environment necessary to the client into a specific data structure. This paragraph only describes the arguments to be used to set the callback. Setting any of these values while doing preedit may cause unexpected results. Input Method Callback Semantics XIM callbacks are procedures defined by clients or text drawing packages that are to be called from the input method when selected events occur. Most clients will use a text editing package or a toolkit and, hence, will not need to define such callbacks. This section defines the callback semantics, when they are triggered, and what their arguments are. This information is mostly useful for X toolkit implementors. Callbacks are mostly provided so that clients (or text editing packages) can implement on-the-spot preediting in their own window. In that case, the input method needs to communicate and synchronize with the client. The input method needs to communicate changes in the preedit window when it is under control of the client. Those callbacks allow the client to initialize the preedit area, display a new preedit string, move the text insertion point during preedit, terminate preedit, or update the status area. All callback procedures follow the generic prototype: CallbackPrototype void CallbackPrototype XIC ic XPointer client_data SomeType call_data ic Specifies the input context. client_data Specifies the additional client data. call_data Specifies data specific to the callback. The call_data argument is a structure that expresses the arguments needed to achieve the semantics; that is, it is a specific data structure appropriate to the callback. In cases where no data is needed in the callback, this call_data argument is NULL. The client_data argument is a closure that has been initially specified by the client when specifying the callback and passed back. It may serve, for example, to inherit application context in the callback. The following paragraphs describe the programming semantics and specific data structure associated with the different reasons. Geometry Callback The geometry callback is triggered by the input method to indicate that it wants the client to negotiate geometry. The generic prototype is as follows: GeometryCallback void GeometryCallback XIC ic XPointer client_data XPointer call_data ic Specifies the input context. client_data Specifies the additional client data. call_data Not used for this callback and always passed as NULL. The callback is called with a NULL call_data argument. Destroy Callback The destroy callback is triggered by the input method when it stops service for any reason. After the callback is invoked, the input context will be freed by Xlib. The generic prototype is as follows: DestroyCallback void DestroyCallback XIC ic XPointer client_data XPointer call_data ic Specifies the input context. client_data Specifies the additional client data. call_data Not used for this callback and always passed as NULL. The callback is called with a NULL call_data argument. String Conversion Callback The string conversion callback is triggered by the input method to request the client to return the string to be converted. The returned string may be either a multibyte or wide character string, with an encoding matching the locale bound to the input context. The callback prototype is as follows: StringConversionCallback void StringConversionCallback XIC ic XPointer client_data XIMStringConversionCallbackStruct *call_data ic Specifies the input method. client_data Specifies the additional client data. call_data Specifies the amount of the string to be converted. The callback is passed an XIMStringConversionCallbackStruct structure in the call_data argument. The text member is an XIMStringConversionText structure (see section 13.5.6.9) to be filled in by the client and describes the text to be sent to the input method. The data pointed to by the string and feedback elements of the XIMStringConversionText structure will be freed using by the input method after the callback returns. So the client should not point to internal buffers that are critical to the client. Similarly, because the feedback element is currently reserved for future use, the client should set feedback to NULL to prevent the library from freeing memory at some random location due to an uninitialized pointer. The XIMStringConversionCallbackStruct structure is defined as follows: XIMStringConversionCallbackStruct typedef struct _XIMStringConversionCallbackStruct { XIMStringConversionPosition position; XIMCaretDirection direction; short factor; XIMStringConversionOperation operation; XIMStringConversionText *text; } XIMStringConversionCallbackStruct; typedef short XIMStringConversionPosition; typedef unsigned short XIMStringConversionOperation; #define XIMStringConversionSubstitution (0x0001) #define XIMStringConversionRetrieval (0x0001) XIMStringConversionPosition specifies the starting position of the string to be returned in the XIMStringConversionText structure. The value identifies a position, in units of characters, relative to the client's cursor position in the client's buffer. The ending position of the text buffer is determined by the direction and factor members. Specifically, it is the character position relative to the starting point as defined by the XIMCaretDirection. The factor member of XIMStringConversionCallbackStruct specifies the number of XIMCaretDirection positions to be applied. For example, if the direction specifies XIMLineEnd and factor is 1, then all characters from the starting position to the end of the current display line are returned. If the direction specifies XIMForwardChar or XIMBackwardChar, then the factor specifies a relative position, indicated in characters, from the starting position. XIMStringConversionOperation specifies whether the string to be converted should be deleted (substitution) or copied (retrieval) from the client's buffer. When the XIMStringConversionOperation is XIMStringConversionSubstitution, the client must delete the string to be converted from its own buffer. When the XIMStringConversionOperation is XIMStringConversionRetrieval, the client must not delete the string to be converted from its buffer. The substitute operation is typically used for reconversion and transliteration conversion, while the retrieval operation is typically used for context-sensitive conversion. Preedit State Callbacks When the input method turns preediting on or off, a or callback is triggered to let the toolkit do the setup or the cleanup for the preedit region. PreeditStartCallback int PreeditStartCallback XIC ic XPointer client_data XPointer call_data ic Specifies the input context. client_data Specifies the additional client data. call_data Not used for this callback and always passed as NULL. When preedit starts on the specified input context, the callback is called with a NULL call_data argument. will return the maximum size of the preedit string. A positive number indicates the maximum number of bytes allowed in the preedit string, and a value of -1 indicates there is no limit. PreeditDoneCallback void PreeditDoneCallback XIC ic XPointer client_data XPointer call_data ic Specifies the input context. client_data Specifies the additional client data. call_data Not used for this callback and always passed as NULL. When preedit stops on the specified input context, the callback is called with a NULL call_data argument. The client can release the data allocated by . should initialize appropriate data needed for displaying preedit information and for handling further calls. Once is called, it will not be called again before has been called. Preedit Draw Callback This callback is triggered to draw and insert, delete or replace, preedit text in the preedit region. The preedit text may include unconverted input text such as Japanese Kana, converted text such as Japanese Kanji characters, or characters of both kinds. That string is either a multibyte or wide character string, whose encoding matches the locale bound to the input context. The callback prototype is as follows: PreeditDrawCallback void PreeditDrawCallback XIC ic XPointer client_data XIMPreeditDrawCallbackStruct *call_data ic Specifies the input context. client_data Specifies the additional client data. call_data Specifies the preedit drawing information. The callback is passed an XIMPreeditDrawCallbackStruct structure in the call_data argument. The text member of this structure contains the text to be drawn. After the string has been drawn, the caret should be moved to the specified location. The XIMPreeditDrawCallbackStruct structure is defined as follows: XIMPreeditDrawCallbackStruct typedef struct _XIMPreeditDrawCallbackStruct { int caret; /* Cursor offset within preedit string */ int chg_first; /* Starting change position */ int chg_length; /* Length of the change in character count */ XIMText *text; } XIMPreeditDrawCallbackStruct; The client must keep updating a buffer of the preedit text and the callback arguments referring to indexes in that buffer. The call_data fields have specific meanings according to the operation, as follows: To indicate text deletion, the call_data member specifies a NULL text field. The text to be deleted is then the current text in the buffer from position chg_first (starting at zero) on a character length of chg_length. When text is non-NULL, it indicates insertion or replacement of text in the buffer. The chg_length member identifies the number of characters in the current preedit buffer that are affected by this call. A positive chg_length indicates that chg_length number of characters, starting at chg_first, must be deleted or must be replaced by text, whose length is specified in the XIMText structure. A chg_length value of zero indicates that text must be inserted right at the position specified by chg_first. A value of zero for chg_first specifies the first character in the buffer. chg_length and chg_first combine to identify the modification required to the preedit buffer; beginning at chg_first, replace chg_length number of characters with the text in the supplied XIMText structure. For example, suppose the preedit buffer contains the string "ABCDE". Text: A B C D E ^ ^ ^ ^ ^ ^ CharPos: 0 1 2 3 4 5 The CharPos in the diagram shows the location of the character position relative to the character. If the value of chg_first is 1 and the value of chg_length is 3, this says to replace 3 characters beginning at character position 1 with the string in the XIMText structure. Hence, BCD would be replaced by the value in the structure. Though chg_length and chg_first are both signed integers they will never have a negative value. The caret member identifies the character position before which the cursor should be placed - after modification to the preedit buffer has been completed. For example, if caret is zero, the cursor is at the beginning of the buffer. If the caret is one, the cursor is between the first and second character. XIMText typedef struct _XIMText { unsigned short length; XIMFeedback * feedback; Bool encoding_is_wchar; union { char * multi_byte; wchar_t * wide_char; } string; } XIMText; The text string passed is actually a structure specifying as follows: The length member is the text length in characters. The encoding_is_wchar member is a value that indicates if the text string is encoded in wide character or multibyte format. The text string may be passed either as multibyte or as wide character; the input method controls in which form data is passed. The client's callback routine must be able to handle data passed in either form. The string member is the text string. The feedback member indicates rendering type for each character in the string member. If string is NULL (indicating that only highlighting of the existing preedit buffer should be updated), feedback points to length highlight elements that should be applied to the existing preedit buffer, beginning at chg_first. The feedback member expresses the types of rendering feedback the callback should apply when drawing text. Rendering of the text to be drawn is specified either in generic ways (for example, primary, secondary) or in specific ways (reverse, underline). When generic indications are given, the client is free to choose the rendering style. It is necessary, however, that primary and secondary be mapped to two distinct rendering styles. If an input method wants to control display of the preedit string, an input method can indicate the visibility hints using feedbacks in a specific way. The XIMVisibleToForward, XIMVisibleToBackword, and XIMVisibleToCenter masks are exclusively used for these visibility hints. The XIMVisibleToForward mask indicates that the preedit text is preferably displayed in the primary draw direction from the caret position in the preedit area forward. The XIMVisibleToBackword mask indicates that the preedit text is preferably displayed from the caret position in the preedit area backward, relative to the primary draw direction. The XIMVisibleToCenter mask indicates that the preedit text is preferably displayed with the caret position in the preedit area centered. The insertion point of the preedit string could exist outside of the visible area when visibility hints are used. Only one of the masks is valid for the entire preedit string, and only one character can hold one of these feedbacks for a given input context at one time. This feedback may be OR'ed together with another highlight (such as XIMReverse). Only the most recently set feedback is valid, and any previous feedback is automatically canceled. This is a hint to the client, and the client is free to choose how to display the preedit string. The feedback member also specifies how rendering of the text argument should be performed. If the feedback is NULL, the callback should apply the same feedback as is used for the surrounding characters in the preedit buffer; if chg_first is at a highlight boundary, the client can choose which of the two highlights to use. If feedback is not NULL, feedback specifies an array defining the rendering for each character of the string, and the length of the array is thus length. If an input method wants to indicate that it is only updating the feedback of the preedit text without changing the content of it, the XIMText structure will contain a NULL value for the string field, the number of characters affected (relative to chg_first) will be in the length field, and the feedback field will point to an array of XIMFeedback. Each element in the feedback array is a bitmask represented by a value of type XIMFeedback. The valid mask names are as follows: XIMReverse XIMUnderline XIMHighlight XIMPrimary XIMSecondary XIMTertiary XIMVisibleToForward XIMVisibleToBackward XIMVisibleToCenter typedef unsigned long XIMFeedback; #define XIMReverse 1L #define XIMUnderline (1L<<1) #define XIMHighlight (1L<<2) #define XIMPrimary (1L<<5)* #define XIMSecondary (1L<<6)* #define XIMTertiary (1L<<7)* #define XIMVisibleToForward (1L<<8) #define XIMVisibleToBackward (1L<<9) #define XIMVisibleToCenter (1L<<10) *† The values for XIMPrimary, XIMSecondary, and XIMTertiary were incorrectly defined in the R5 specification. The X Consortium’s X11R5 implementation correctly implemented the values for these highlights. The value of these highlights has been corrected in this specification to agree with the values in the Consortium’s X11R5 and X11R6 implementations. Characters drawn with the XIMReverse highlight should be drawn by swapping the foreground and background colors used to draw normal, unhighlighted characters. Characters drawn with the XIMUnderline highlight should be underlined. Characters drawn with the XIMHighlight, XIMPrimary, XIMSecondary, and XIMTertiary highlights should be drawn in some unique manner that must be different from XIMReverse and XIMUnderline. The values for XIMPrimary, XIMSecondary, and XIMTertiary were incorrectly defined in the R5 specification. The X Consortium's X11R5 implementation correctly implemented the values for these highlights. The value of these highlights has been corrected in this specification to agree with the values in the Consortium's X11R5 and X11R6 implementations. Preedit Caret Callback An input method may have its own navigation keys to allow the user to move the text insertion point in the preedit area (for example, to move backward or forward). Consequently, input method needs to indicate to the client that it should move the text insertion point. It then calls the PreeditCaretCallback. PreeditCaretCallback void PreeditCaretCallback XIC ic XPointer client_data XIMPreeditCaretCallbackStruct *call_data ic Specifies the input context. client_data Specifies the additional client data. call_data Specifies the preedit caret information. The input method will trigger PreeditCaretCallback to move the text insertion point during preedit. The call_data argument contains a pointer to an XIMPreeditCaretCallbackStruct structure, which indicates where the caret should be moved. The callback must move the insertion point to its new location and return, in field position, the new offset value from the initial position. The XIMPreeditCaretCallbackStruct structure is defined as follows: XIMPreeditCaretCallbackStruct typedef struct _XIMPreeditCaretCallbackStruct { int position; /* Caret offset within preedit string */ XIMCaretDirection direction; /* Caret moves direction */ XIMCaretStyle style; /* Feedback of the caret */ } XIMPreeditCaretCallbackStruct; The XIMCaretStyle structure is defined as follows: XIMCaretStyle typedef enum { XIMIsInvisible, /* Disable caret feedback */ XIMIsPrimary, /* UI defined caret feedback */ XIMIsSecondary, /* UI defined caret feedback */ } XIMCaretStyle; The XIMCaretDirection structure is defined as follows: XIMCaretDirection typedef enum { XIMForwardChar, XIMBackwardChar, XIMForwardWord, XIMBackwardWord, XIMCaretUp, XIMCaretDown, XIMNextLine, XIMPreviousLine, XIMLineStart, XIMLineEnd, XIMAbsolutePosition, XIMDontChange, } XIMCaretDirection; These values are defined as follows: XIMForwardChar XIMBackwardChar XIMForwardWord XIMBackwardWord XIMCaretUp XIMCaretDown XIMForwardChar Move the caret forward one character position. XIMBackwardChar Move the caret backward one character position. XIMForwardWord Move the caret forward one word. XIMBackwardWord Move the caret backward one word. XIMCaretUp Move the caret up one line keeping the current horizontal offset. XIMCaretDown Move the caret down one line keeping the current horizontal offset. XIMPreviousLine Move the caret to the beginning of the previous line. XIMNextLine Move the caret to the beginning of the next line. XIMLineStart Move the caret to the beginning of the current display line that contains the caret. XIMLineEnd Move the caret to the end of the current display line that contains the caret. XIMAbsolutePosition The callback must move to the location specified by the position field of the callback data, indicated in characters, starting from the beginning of the preedit text. Hence, a value of zero means move back to the beginning of the preedit text. XIMDontChange The caret position does not change. XIMNextLine XIMPreviousLine XIMLineStart XIMLineEnd XIMAbsolutePosition XIMDontChange Status Callbacks An input method may communicate changes in the status of an input context (for example, created, destroyed, or focus changes) with three status callbacks: StatusStartCallback, StatusDoneCallback, and StatusDrawCallback. When the input context is created or gains focus, the input method calls the StatusStartCallback callback. StatusStartCallback void StatusStartCallback XIC ic XPointer client_data XPointer call_data ic Specifies the input context. client_data Specifies the additional client data. call_data Not used for this callback and always passed as NULL. The callback should initialize appropriate data for displaying status and for responding to StatusDrawCallback calls. Once StatusStartCallback is called, it will not be called again before StatusDoneCallback has been called. When an input context is destroyed or when it loses focus, the input method calls StatusDoneCallback. StatusDoneCallback void StatusDoneCallback XIC ic XPointer client_data XPointer call_data ic Specifies the input context. client_data Specifies the additional client data. call_data Not used for this callback and always passed as NULL. The callback may release any data allocated on StatusStart. When an input context status has to be updated, the input method calls StatusDrawCallback. StatusDrawCallback void StatusDrawCallback XIC ic XPointer client_data XIMStatusDrawCallbackStruct *call_data ic Specifies the input context. client_data Specifies the additional client data. call_data Specifies the status drawing information. The callback should update the status area by either drawing a string or imaging a bitmap in the status area. The XIMStatusDataType and XIMStatusDrawCallbackStruct structures are defined as follows: XIMStatusDataType XIMStatusDrawCallbackStruct typedef enum { XIMTextType, XIMBitmapType, } XIMStatusDataType; typedef struct _XIMStatusDrawCallbackStruct { XIMStatusDataType type; union { XIMText *text; Pixmap bitmap; } data; } XIMStatusDrawCallbackStruct; The feedback styles XIMVisibleToForward, XIMVisibleToBackword, and XIMVisibleToCenter are not relevant and will not appear in the XIMFeedback element of the XIMText structure. Event Filtering Xlib provides the ability for an input method to register a filter internal to Xlib. This filter is called by a client (or toolkit) by calling after calling . Any client that uses the XIM interface should call to allow input methods to process their events without knowledge of the client's dispatching mechanism. A client's user interface policy may determine the priority of event filters with respect to other event-handling mechanisms (for example, modal grabs). Clients may not know how many filters there are, if any, and what they do. They may only know if an event has been filtered on return of . Clients should discard filtered events. To filter an event, use . XFilterEvent Bool XFilterEvent XEvent *event Window w event Specifies the event to filter. w Specifies the window for which the filter is to be applied. If the window argument is None, applies the filter to the window specified in the XEvent structure. The window argument is provided so that layers above Xlib that do event redirection can indicate to which window an event has been redirected. If returns True, then some input method has filtered the event, and the client should discard the event. If returns False, then the client should continue processing the event. If a grab has occurred in the client and returns True, the client should ungrab the keyboard. Getting Keyboard Input To get composed input from an input method, use or . XmbLookupString XwcLookupString int XmbLookupString XIC ic XKeyPressedEvent *event char *buffer_return int bytes_buffer KeySym *keysym_return Status *status_return int XwcLookupString XIC ic XKeyPressedEvent *event wchar_t *buffer_return int wchars_buffer KeySym *keysym_return Status *status_return ic Specifies the input context. event Specifies the key event to be used. buffer_return Returns a multibyte string or wide character string (if any) from the input method. bytes_buffer wchars_buffer Specifies space available in the return buffer. keysym_return Returns the KeySym computed from the event if this argument is not NULL. status_return Returns a value indicating what kind of data is returned. The and functions return the string from the input method specified in the buffer_return argument. If no string is returned, the buffer_return argument is unchanged. The KeySym into which the KeyCode from the event was mapped is returned in the keysym_return argument if it is non-NULL and the status_return argument indicates that a KeySym was returned. If both a string and a KeySym are returned, the KeySym value does not necessarily correspond to the string returned. returns the length of the string in bytes, and returns the length of the string in characters. Both and return text in the encoding of the locale bound to the input method of the specified input context. Each string returned by and begins in the initial state of the encoding of the locale (if the encoding of the locale is state-dependent). To insure proper input processing, it is essential that the client pass only KeyPress events to and . Their behavior when a client passes a KeyRelease event is undefined. Clients should check the status_return argument before using the other returned values. These two functions both return a value to status_return that indicates what has been returned in the other arguments. The possible values returned are: XBufferOverflow The input string to be returned is too large for the supplied buffer_return. The required size ( in bytes; in characters) is returned as the value of the function, and the contents of buffer_return and keysym_return are not modified. The client should recall the function with the same event and a buffer of adequate size to obtain the string. XLookupNone No consistent input has been composed so far. The contents of buffer_return and keysym_return are not modified, and the function returns zero. XLookupChars Some input characters have been composed. They are placed in the buffer_return argument, and the string length is returned as the value of the function. The string is encoded in the locale bound to the input context. The content of the keysym_return argument is not modified. XLookupKeySym A KeySym has been returned instead of a string and is returned in keysym_return. The content of the buffer_return argument is not modified, and the function returns zero. XLookupBoth Both a KeySym and a string are returned; XLookupChars and XLookupKeySym occur simultaneously. It does not make any difference if the input context passed as an argument to and is the one currently in possession of the focus or not. Input may have been composed within an input context before it lost the focus, and that input may be returned on subsequent calls to or even though it does not have any more keyboard focus. Input Method Conventions The input method architecture is transparent to the client. However, clients should respect a number of conventions in order to work properly. Clients must also be aware of possible effects of synchronization between input method and library in the case of a remote input server. Client Conventions A well-behaved client (or toolkit) should first query the input method style. If the client cannot satisfy the requirements of the supported styles (in terms of geometry management or callbacks), it should negotiate with the user continuation of the program or raise an exception or error of some sort. Synchronization Conventions A KeyPress event with a KeyCode of zero is used exclusively as a signal that an input method has composed input that can be returned by or . No other use is made of a KeyPress event with KeyCode of zero. Such an event may be generated by either a front-end or a back-end input method in an implementation-dependent manner. Some possible ways to generate this event include: A synthetic event sent by an input method server An artificial event created by a input method filter and pushed onto a client's event queue A KeyPress event whose KeyCode value is modified by an input method filter When callback support is specified by the client, input methods will not take action unless they explicitly called back the client and obtained no response (the callback is not specified or returned invalid data). String Constants The following symbols for string constants are defined in <X11/Xlib.h>. Although they are shown here with particular macro definitions, they may be implemented as macros, as global symbols, or as a mixture of the two. The string pointer value itself is not significant; clients must not assume that inequality of two values implies inequality of the actual string data. #define XNVaNestedList "XNVaNestedList" #define XNSeparatorofNestedList "separatorofNestedList" #define XNQueryInputStyle "queryInputStyle" #define XNClientWindow "clientWindow" #define XNInputStyle "inputStyle" #define XNFocusWindow "focusWindow" #define XNResourceName "resourceName" #define XNResourceClass "resourceClass" #define XNGeometryCallback "geometryCallback" #define XNDestroyCallback "destroyCallback" #define XNFilterEvents "filterEvents" #define XNPreeditStartCallback "preeditStartCallback" #define XNPreeditDoneCallback "preeditDoneCallback" #define XNPreeditDrawCallback "preeditDrawCallback" #define XNPreeditCaretCallback "preeditCaretCallback" #define XNPreeditStateNotifyCallback "preeditStateNotifyCallback" #define XNPreeditAttributes "preeditAttributes" #define XNStatusStartCallback "statusStartCallback" #define XNStatusDoneCallback "statusDoneCallback" #define XNStatusDrawCallback "statusDrawCallback" #define XNStatusAttributes "statusAttributes" #define XNArea "area" #define XNAreaNeeded "areaNeeded" #define XNSpotLocation "spotLocation" #define XNColormap "colorMap" #define XNStdColormap "stdColorMap" #define XNForeground "foreground" #define XNBackground "background" #define XNBackgroundPixmap "backgroundPixmap" #define XNFontSet "fontSet" #define XNLineSpace "lineSpace" #define XNCursor "cursor" #define XNQueryIMValuesList "queryIMValuesList" #define XNQueryICValuesList "queryICValuesList" #define XNStringConversionCallback "stringConversionCallback" #define XNStringConversion "stringConversion" #define XNResetState "resetState" #define XNHotKey "hotkey" #define XNHotKeyState "hotkeyState" #define XNPreeditState "preeditState" #define XNVisiblePosition "visiblePosition" #define XNR6PreeditCallbackBehavior "r6PreeditCallback" #define XNRequiredCharSet "requiredCharSet" #define XNQueryOrientation "queryOrientation" #define XNDirectionalDependentDrawing "directionalDependentDrawing" #define XNContextualDrawing "contextualDrawing" #define XNBaseFontName "baseFontName" #define XNMissingCharSet "missingCharSet" #define XNDefaultString "defaultString" #define XNOrientation "orientation" #define XNFontInfo "fontInfo" #define XNOMAutomatic "omAutomatic" libX11-1.8.12/specs/libX11/AppB.xml0000644014310600000120000000572314763154126012055 X Font Cursors The following are the available cursors that can be used with . #define XC_X_cursor 0 #define XC_ll_angle 76 #define XC_arrow 2 #define XC_lr_angle 78 #define XC_based_arrow_down 4 #define XC_man 80 #define XC_based_arrow_up 6 #define XC_middlebutton 82 #define XC_boat 8 #define XC_mouse 84 #define XC_bogosity 10 #define XC_pencil 86 #define XC_bottom_left_corner 12 #define XC_pirate 88 #define XC_bottom_right_corner 14 #define XC_plus 90 #define XC_bottom_side 16 #define XC_question_arrow 92 #define XC_bottom_tee 18 #define XC_right_ptr 94 #define XC_box_spiral 20 #define XC_right_side 96 #define XC_center_ptr 22 #define XC_right_tee 98 #define XC_circle 24 #define XC_rightbutton 100 #define XC_clock 26 #define XC_rtl_logo 102 #define XC_coffee_mug 28 #define XC_sailboat 104 #define XC_cross 30 #define XC_sb_down_arrow 106 #define XC_cross_reverse 32 #define XC_sb_h_double_arrow 108 #define XC_crosshair 34 #define XC_sb_left_arrow 110 #define XC_diamond_cross 36 #define XC_sb_right_arrow 112 #define XC_dot 38 #define XC_sb_up_arrow 114 #define XC_dot_box_mask 40 #define XC_sb_v_double_arrow 116 #define XC_double_arrow 42 #define XC_shuttle 118 #define XC_draft_large 44 #define XC_sizing 120 #define XC_draft_small 46 #define XC_spider 122 #define XC_draped_box 48 #define XC_spraycan 124 #define XC_exchange 50 #define XC_star 126 #define XC_fleur 52 #define XC_target 128 #define XC_gobbler 54 #define XC_tcross 130 #define XC_gumby 56 #define XC_top_left_arrow 132 #define XC_hand1 58 #define XC_top_left_corner 134 #define XC_hand2 60 #define XC_top_right_corner 136 #define XC_heart 62 #define XC_top_side 138 #define XC_icon 64 #define XC_top_tee 140 #define XC_iron_cross 66 #define XC_trek 142 #define XC_left_ptr 68 #define XC_ul_angle 144 #define XC_left_side 70 #define XC_umbrella 146 #define XC_left_tee 72 #define XC_ur_angle 148 #define XC_leftbutton 74 #define XC_watch 150 #define XC_xterm 152 libX11-1.8.12/specs/libX11/libX11.xml0000644014310600000120000001466114763154126012274 %defs; ]> Xlib - C Language X Interface X Consortium Standard X Version 11, Release &fullrelvers; JamesGettys Digital Equipment Corporation Cambridge Research Laboratory RobertW. Scheifler Massachusetts Institute of Technology Laboratory for Computer Science ChuckAdams Tektronix, Inc. VaniaJoloboff Open Software Foundation HidekiHiura Sun Microsystems, Inc. BillMcMahon Hewlett-Packard Company RonNewman Massachusetts Institute of Technology AlTabayoyon Tektronix, Inc. GlennWidener Tektronix, Inc. ShigeruYamada Fujitsu OSSI 198519861987 1988198919911994 19962002The Open Group Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. Copyright © 1985, 1986, 1987, 1988, 1989, 1991 Digital Equipment Corporation Permission to use, copy, modify and distribute this documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of Digital and Tetronix not be used in in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Digital and Tetronix make no representations about the suitability of the software described herein for any purpose. It is provided “as is” without express or implied warranty. TekHVC is a trademark of Tektronix, Inc. libX11-1.8.12/specs/libX11/CH02.xml0000644014310600000120000031144714763154126011672 Display Functions Before your program can use a display, you must establish a connection to the X server. Once you have established a connection, you then can use the Xlib macros and functions discussed in this chapter to return information about the display. This chapter discusses how to: Open (connect to) the display Obtain information about the display, image formats, or screens Generate a NoOperation protocol request Free client-created data Close (disconnect from) a display Use X Server connection close operations Use Xlib with threads Use internal connections Opening the Display To open a connection to the X server that controls a display, use . XOpenDisplay Display *XOpenDisplay char *display_name display_name Specifies the hardware display name, which determines the display and communications domain to be used. On a POSIX-conformant system, if the display_name is NULL, it defaults to the value of the DISPLAY environment variable. EnvironmentDISPLAY The encoding and interpretation of the display name are implementation-dependent. Strings in the Host Portable Character Encoding are supported; support for other characters is implementation-dependent. On POSIX-conformant systems, the display name or DISPLAY environment variable can be a string in the format: protocol/hostname:number.screen_number protocol Specifies a protocol family or an alias for a protocol family. Supported protocol families are implementation dependent. The protocol entry is optional. If protocol is not specified, the / separating protocol and hostname must also not be specified. hostname Specifies the name of the host machine on which the display is physically attached. You follow the hostname with either a single colon (:) or a double colon (::). number Specifies the number of the display server on that host machine. You may optionally follow this display number with a period (.). A single CPU can have more than one display. Multiple displays are usually numbered starting with zero. Screen screen_number Specifies the screen to be used on that server. Multiple screens can be controlled by a single X server. The screen_number sets an internal variable that can be accessed by using the DefaultScreen macro or the function if you are using languages other than C (see section 2.2.1). For example, the following would specify screen 1 of display 0 on the machine named ``dual-headed'': dual-headed:0.1 The function returns a Display structure that serves as the connection to the X server and that contains all the information about that X server. connects your application to the X server through TCP or DECnet communications protocols, or through some local inter-process communication protocol. ProtocolTCP ProtocolDECnet If the protocol is specified as "tcp", "inet", or "inet6", or if no protocol is specified and the hostname is a host machine name and a single colon (:) separates the hostname and display number, connects using TCP streams. (If the protocol is specified as "inet", TCP over IPv4 is used. If the protocol is specified as "inet6", TCP over IPv6 is used. Otherwise, the implementation determines which IP version is used.) If the hostname and protocol are both not specified, Xlib uses whatever it believes is the fastest transport. If the hostname is a host machine name and a double colon (::) separates the hostname and display number, connects using DECnet. A single X server can support any or all of these transport mechanisms simultaneously. A particular Xlib implementation can support many more of these transport mechanisms. Display If successful, returns a pointer to a Display structure, which is defined in <X11/Xlib.h>. X11/Xlib.h Files<X11/Xlib.h> Headers<X11/Xlib.h> If does not succeed, it returns NULL. After a successful call to , all of the screens in the display can be used by the client. The screen number specified in the display_name argument is returned by the DefaultScreen macro (or the function). You can access elements of the Display and Screen structures only by using the information macros or functions. For information about using macros and functions to obtain information from the Display structure, see section 2.2.1. X servers may implement various types of access control mechanisms (see section 9.8). Obtaining Information about the Display, Image Formats, or Screens The Xlib library provides a number of useful macros and corresponding functions that return data from the Display structure. The macros are used for C programming, and their corresponding function equivalents are for other language bindings. This section discusses the: Display macros Image format functions and macros Screen information macros Displaydata structure All other members of the Display structure (that is, those for which no macros are defined) are private to Xlib and must not be used. Applications must never directly modify or inspect these private members of the Display structure. The , , , , , and functions in the next sections are misnamed. These functions really should be named Screenwhatever and XScreenwhatever, not Displaywhatever or XDisplaywhatever. Our apologies for the resulting confusion. Display Macros Applications should not directly modify any part of the Display and Screen structures. The members should be considered read-only, although they may change as the result of other operations on the display. The following lists the C language macros, their corresponding function equivalents that are for other language bindings, and what data both can return. AllPlanes unsigned long XAllPlanes AllPlanes XAllPlanes Both return a value with all bits set to 1 suitable for use in a plane argument to a procedure. BlackPixel XBlackPixel WhitePixel XWhitePixel Both BlackPixel and WhitePixel can be used in implementing a monochrome application. These pixel values are for permanently allocated entries in the default colormap. The actual RGB (red, green, and blue) values are settable on some screens and, in any case, may not actually be black or white. The names are intended to convey the expected relative intensity of the colors. BlackPixel display screen_number unsigned long XBlackPixel Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. Both return the black pixel value for the specified screen. WhitePixel display screen_number unsigned long XWhitePixel Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. Both return the white pixel value for the specified screen. ConnectionNumber display int XConnectionNumber Display *display display Specifies the connection to the X server. ConnectionNumber XConnectionNumber Both return a connection number for the specified display. On a POSIX-conformant system, this is the file descriptor of the connection. DefaultColormap display screen_number Colormap XDefaultColormap Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. DefaultColormap XDefaultColormap Both return the default colormap ID for allocation on the specified screen. Most routine allocations of color should be made out of this colormap. DefaultDepth display screen_number int XDefaultDepth Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. DefaultDepth XDefaultDepth Both return the depth (number of planes) of the default root window for the specified screen. Other depths may also be supported on this screen (see ). XListDepths To determine the number of depths that are available on a given screen, use XListDepths. int *XListDepths Display *display int screen_number int *count_return display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. count_return Returns the number of depths. The XListDepths function returns the array of depths that are available on the specified screen. If the specified screen_number is valid and sufficient memory for the array can be allocated, XListDepths sets count_return to the number of available depths. Otherwise, it does not set count_return and returns NULL. To release the memory allocated for the array of depths, use . DefaultGC display screen_number GC XDefaultGC Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. DefaultGC XDefaultGC Both return the default graphics context for the root window of the specified screen. This GC is created for the convenience of simple applications and contains the default GC components with the foreground and background pixel values initialized to the black and white pixels for the screen, respectively. You can modify its contents freely because it is not used in any Xlib function. This GC should never be freed. DefaultRootWindow display Window XDefaultRootWindow Display *display display Specifies the connection to the X server. DefaultRootWindow XDefaultRootWindow Both return the root window for the default screen. DefaultScreenOfDisplay display Screen *XDefaultScreenOfDisplay Display *display display Specifies the connection to the X server. DefaultScreenOfDisplay XDefaultScreenOfDisplay Both return a pointer to the default screen. ScreenOfDisplay display screen_number Screen *XScreenOfDisplay Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. ScreenOfDisplay XScreenOfDisplay Both return a pointer to the indicated screen. DefaultScreen display int XDefaultScreen Display *display display Specifies the connection to the X server. DefaultScreen XDefaultScreen Both return the default screen number referenced by the function. This macro or function should be used to retrieve the screen number in applications that will use only a single screen. DefaultVisual display screen_number Visual *XDefaultVisual Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. DefaultVisual XDefaultVisual Both return the default visual type for the specified screen. For further information about visual types, see section 3.1. DisplayCells display screen_number int XDisplayCells Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. DisplayCells XDisplayCells Both return the number of entries in the default colormap. DisplayPlanes display screen_number int XDisplayPlanes Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. DisplayPlanes XDisplayPlanes Both return the depth of the root window of the specified screen. For an explanation of depth, see the glossary. DisplayString display char *XDisplayString Display *display display Specifies the connection to the X server. DisplayString XDisplayString Both return the string that was passed to when the current display was opened. On POSIX-conformant systems, if the passed string was NULL, these return the value of the DISPLAY environment variable when the current display was opened. POSIX System Callfork These are useful to applications that invoke the fork system call and want to open a new connection to the same display from the child process as well as for printing error messages. long XExtendedMaxRequestSize Display *display display Specifies the connection to the X server. XExtendedMaxRequestSize The XExtendedMaxRequestSize function returns zero if the specified display does not support an extended-length protocol encoding; otherwise, it returns the maximum request size (in 4-byte units) supported by the server using the extended-length encoding. The Xlib functions , , , , , and will use the extended-length encoding as necessary, if supported by the server. Use of the extended-length encoding in other Xlib functions (for example, , , , , , ) is permitted but not required; an Xlib implementation may choose to split the data across multiple smaller requests instead. long XMaxRequestSize Display *display display Specifies the connection to the X server. XMaxRequestSize The XMaxRequestSize function returns the maximum request size (in 4-byte units) supported by the server without using an extended-length protocol encoding. Single protocol requests to the server can be no larger than this size unless an extended-length protocol encoding is supported by the server. The protocol guarantees the size to be no smaller than 4096 units (16384 bytes). Xlib automatically breaks data up into multiple protocol requests as necessary for the following functions: , , , , , and . LastKnownRequestProcessed display unsigned long XLastKnownRequestProcessed Display *display display Specifies the connection to the X server. LastKnownRequestProcessed XLastKnownRequestProcessed Both extract the full serial number of the last request known by Xlib to have been processed by the X server. Xlib automatically sets this number when replies, events, and errors are received. NextRequest display unsigned long XNextRequest Display *display display Specifies the connection to the X server. NextRequest XNextRequest Both extract the full serial number that is to be used for the next request. Serial numbers are maintained separately for each display connection. ProtocolVersion display int XProtocolVersion Display *display display Specifies the connection to the X server. ProtocolVersion XProtocolVersion Both return the major version number (11) of the X protocol associated with the connected display. ProtocolRevision display int XProtocolRevision Display *display display Specifies the connection to the X server. ProtocolRevision XProtocolRevision Both return the minor protocol revision number of the X server. QLength display int XQLength Display *display display Specifies the connection to the X server. QLength XQLength Both return the length of the event queue for the connected display. Note that there may be more events that have not been read into the queue yet (see ). RootWindow display screen_number Window XRootWindow Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. WindowRootWindow RootWindow WindowXRootWindow XRootWindow Both return the root window. These are useful with functions that need a drawable of a particular screen and for creating top-level windows. ScreenCount display int XScreenCount Display *display display Specifies the connection to the X server. ScreenCount XScreenCount Both return the number of available screens. ServerVendor display char *XServerVendor Display *display display Specifies the connection to the X server. ServerVendor XServerVendor Both return a pointer to a null-terminated string that provides some identification of the owner of the X server implementation. If the data returned by the server is in the Latin Portable Character Encoding, then the string is in the Host Portable Character Encoding. Otherwise, the contents of the string are implementation-dependent. VendorRelease display int XVendorRelease Display *display display Specifies the connection to the X server. VendorRelease XVendorRelease Both return a number related to a vendor's release of the X server. Image Format Functions and Macros Applications are required to present data to the X server in a format that the server demands. To help simplify applications, most of the work required to convert the data is provided by Xlib (see sections 8.7 and 16.8). XPixmapFormatValues The XPixmapFormatValues structure provides an interface to the pixmap format information that is returned at the time of a connection setup. It contains: typedef struct { int depth; int bits_per_pixel; int scanline_pad; } XPixmapFormatValues; To obtain the pixmap format information for a given display, use XListPixmapFormats. XListPixmapFormats XPixmapFormatValues *XListPixmapFormats Display *display int *count_return display Specifies the connection to the X server. count_return Returns the number of pixmap formats that are supported by the display. The XListPixmapFormats function returns an array of XPixmapFormatValues structures that describe the types of Z format images supported by the specified display. If insufficient memory is available, XListPixmapFormats returns NULL. To free the allocated storage for the XPixmapFormatValues structures, use . The following lists the C language macros, their corresponding function equivalents that are for other language bindings, and what data they both return for the specified server and screen. These are often used by toolkits as well as by simple applications. ImageByteOrder display int XImageByteOrder Display *display display Specifies the connection to the X server. ImageByteOrder XImageByteOrder Both specify the required byte order for images for each scanline unit in XY format (bitmap) or for each pixel value in Z format. The macro or function can return either LSBFirst or MSBFirst. XBitmapUnit display int XBitmapUnit Display *display display Specifies the connection to the X server. BitmapUnit XBitmapUnit Both return the size of a bitmap's scanline unit in bits. The scanline is calculated in multiples of this value. BitmapBitOrder display int XBitmapBitOrder Display *display display Specifies the connection to the X server. BitmapBitOrder XBitmapBitOrder Within each bitmap unit, the left-most bit in the bitmap as displayed on the screen is either the least significant or most significant bit in the unit. This macro or function can return LSBFirst or MSBFirst. BitmapPad display int XBitmapPad Display *display display Specifies the connection to the X server. BitmapPad XBitmapPad Each scanline must be padded to a multiple of bits returned by this macro or function. DisplayHeight display screen_number int XDisplayHeight Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. DisplayHeight XDisplayHeight Both return an integer that describes the height of the screen in pixels. DisplayHeightMM display screen_number int XDisplayHeightMM Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. DisplayHeightMM XDisplayHeightMM Both return the height of the specified screen in millimeters. DisplayWidth display screen_number int XDisplayWidth Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. DisplayWidth XDisplayWidth Both return the width of the screen in pixels. DisplayWidthMM display screen_number int XDisplayWidthMM Display *display int screen_number display Specifies the connection to the X server. screen_number Specifies the appropriate screen number on the host server. DisplayWidthMM XDisplayWidthMM Both return the width of the specified screen in millimeters. Screen Information Macros The following lists the C language macros, their corresponding function equivalents that are for other language bindings, and what data they both can return. These macros or functions all take a pointer to the appropriate screen structure. BlackPixelOfScreen screen unsigned long XBlackPixelOfScreen Screen *screen screen Specifies the appropriate Screen structure. BlackPixelOfScreen XBlackPixelOfScreen Both return the black pixel value of the specified screen. XWhitePixelOfScreen screen unsigned long XWhitePixelOfScreen Screen *screen screen Specifies the appropriate Screen structure. WhitePixelOfScreen XWhitePixelOfScreen Both return the white pixel value of the specified screen. CellsOfScreen screen int XCellsOfScreen Screen *screen screen Specifies the appropriate Screen structure. CellsOfScreen XCellsOfScreen Both return the number of colormap cells in the default colormap of the specified screen. DefaultColormapOfScreen screen Colormap XDefaultColormapOfScreen Screen *screen screen Specifies the appropriate Screen structure. DefaultColormapOfScreen XDefaultColormapOfScreen Both return the default colormap of the specified screen. DefaultDepthOfScreen screen int XDefaultDepthOfScreen Screen *screen screen Specifies the appropriate Screen structure. DefaultDepthOfScreen XDefaultDepthOfScreen Both return the depth of the root window. DefaultGCOfScreen screen GC XDefaultGCOfScreen Screen *screen screen Specifies the appropriate Screen structure. DefaultGCOfScreen XDefaultGCOfScreen Both return a default graphics context (GC) of the specified screen, which has the same depth as the root window of the screen. The GC must never be freed. XDefaultVisualOfScreen screen Visual *XDefaultVisualOfScreen Screen *screen screen Specifies the appropriate Screen structure. DefaultVisualOfScreen XDefaultVisualOfScreen Both return the default visual of the specified screen. For information on visual types, see section 3.1. DoesBackingStore screen int XDoesBackingStore Screen *screen screen Specifies the appropriate Screen structure. DoesBackingStore XDoesBackingStore Both return a value indicating whether the screen supports backing stores. The value returned can be one of WhenMapped, NotUseful, or Always (see section 3.2.4). DoesSaveUnders screen Bool XDoesSaveUnders Screen *screen screen Specifies the appropriate Screen structure. DoesSaveUnders XDoesSaveUnders Both return a Boolean value indicating whether the screen supports save unders. If True, the screen supports save unders. If False, the screen does not support save unders (see section 3.2.5). DisplayOfScreen screen Display *XDisplayOfScreen Screen *screen screen Specifies the appropriate Screen structure. DisplayOfScreen XDisplayOfScreen Both return the display of the specified screen. XScreenNumberOfScreen ScreenNumberOfScreen screen long XScreenNumberOfScreen Screen *screen screen Specifies the appropriate Screen structure. The XScreenNumberOfScreen function returns the screen index number of the specified screen. EventMaskOfScreen screen long XEventMaskOfScreen Screen *screen screen Specifies the appropriate Screen structure. EventMaskOfScreen XEventMaskOfScreen Both return the event mask of the root window for the specified screen at connection setup time. WidthOfScreen screen int XWidthOfScreen Screen *screen screen Specifies the appropriate Screen structure. WidthOfScreen XWidthOfScreen Both return the width of the specified screen in pixels. HeightOfScreen screen int XHeightOfScreen Screen *screen screen Specifies the appropriate Screen structure. HeightOfScreen XHeightOfScreen Both return the height of the specified screen in pixels. WidthMMOfScreen screen int XWidthMMOfScreen Screen *screen screen Specifies the appropriate Screen structure. WidthMMOfScreen XWidthMMOfScreen Both return the width of the specified screen in millimeters. HeightMMOfScreen screen int XHeightMMOfScreen Screen *screen screen Specifies the appropriate Screen structure. HeightMMOfScreen XHeightMMOfScreen Both return the height of the specified screen in millimeters. MaxCmapsOfScreen screen int XMaxCmapsOfScreen Screen *screen screen Specifies the appropriate Screen structure. MaxCmapsOfScreen XMaxCmapsOfScreen Both return the maximum number of installed colormaps supported by the specified screen (see section 9.3). MinCmapsOfScreen screen int XMinCmapsOfScreen Screen *screen screen Specifies the appropriate Screen structure. MinCmapsOfScreen XMinCmapsOfScreen Both return the minimum number of installed colormaps supported by the specified screen (see section 9.3). PlanesOfScreen screen int XPlanesOfScreen Screen *screen screen Specifies the appropriate Screen structure. PlanesOfScreen XPlanesOfScreen Both return the depth of the root window. RootWindowOfScreen screen Window XRootWindowOfScreen Screen *screen screen Specifies the appropriate Screen structure. RootWindowOfScreen XRootWindowOfScreen Both return the root window of the specified screen. Generating a NoOperation Protocol Request To execute a NoOperation protocol request, use . XNoOp XNoOp Display *display display Specifies the connection to the X server. The function sends a NoOperation protocol request to the X server, thereby exercising the connection. Freeing Client-Created Data To free in-memory data that was created by an Xlib function, use . XFree XFree void *data data Specifies the data that is to be freed. The function is a general-purpose Xlib routine that frees the specified data. You must use it to free any objects that were allocated by Xlib, unless an alternate function is explicitly specified for the object. A NULL pointer cannot be passed to this function. Closing the Display To close a display or disconnect from the X server, use XCloseDisplay. XCloseDisplay XCloseDisplay Display *display display Specifies the connection to the X server. The XCloseDisplay function closes the connection to the X server for the display specified in the Display structure and destroys all windows, resource IDs (Window, Font, Pixmap, Colormap, Cursor, and GContext), or other resources that the client has created on this display, unless the close-down mode of the client has been changed (see ). Therefore, these windows, resource IDs, and other resources should never be referenced again or an error will be generated. Before exiting, you should call XCloseDisplay explicitly so that any pending errors are reported as XCloseDisplay performs a final operation. Resource IDs XCloseDisplay XCloseDisplay can generate a BadGC error. Xlib provides a function to permit the resources owned by a client to survive after the client's connection is closed. To change a client's close-down mode, use . XSetCloseDownMode XSetCloseDownMode Display *display int close_mode display Specifies the connection to the X server. close_mode Specifies the client close-down mode. You can pass DestroyAll, RetainPermanent, or RetainTemporary. The function defines what will happen to the client's resources at connection close. A connection starts in DestroyAll mode. For information on what happens to the client's resources when the close_mode argument is RetainPermanent or RetainTemporary, see section 2.6. can generate a BadValue error. Using X Server Connection Close Operations When the X server's connection to a client is closed either by an explicit call to XCloseDisplay or by a process that exits, the X server performs the following automatic operations: It disowns all selections owned by the client (see ). It performs an and if the client has actively grabbed the pointer or the keyboard. It performs an if the client has grabbed the server. It releases all passive grabs made by the client. It marks all resources (including colormap entries) allocated by the client either as permanent or temporary, depending on whether the close-down mode is RetainPermanent or RetainTemporary. However, this does not prevent other client applications from explicitly destroying the resources (see ). When the close-down mode is DestroyAll, the X server destroys all of a client's resources as follows: It examines each window in the client's save-set to determine if it is an inferior (subwindow) of a window created by the client. (The save-set is a list of other clients' windows that are referred to as save-set windows.) If so, the X server reparents the save-set window to the closest ancestor so that the save-set window is not an inferior of a window created by the client. The reparenting leaves unchanged the absolute coordinates (with respect to the root window) of the upper-left outer corner of the save-set window. It performs a MapWindow request on the save-set window if the save-set window is unmapped. The X server does this even if the save-set window was not an inferior of a window created by the client. It destroys all windows created by the client. It performs the appropriate free request on each nonwindow resource created by the client in the server (for example, Font, Pixmap, Cursor, Colormap, and GContext). It frees all colors and colormap entries allocated by a client application. Additional processing occurs when the last connection to the X server closes. An X server goes through a cycle of having no connections and having some connections. When the last connection to the X server closes as a result of a connection closing with the close_mode of DestroyAll, the X server does the following: It resets its state as if it had just been started. The X server begins by destroying all lingering resources from clients that have terminated in RetainPermanent or RetainTemporary mode. It deletes all but the predefined atom identifiers. It deletes all properties on all root windows (see section 4.3). It resets all device maps and attributes (for example, key click, bell volume, and acceleration) as well as the access control list. It restores the standard root tiles and cursors. It restores the default font path. It restores the input focus to state PointerRoot. However, the X server does not reset if you close a connection with a close-down mode set to RetainPermanent or RetainTemporary. Using Xlib with Threads On systems that have threads, support may be provided to permit multiple threads to use Xlib concurrently. To initialize support for concurrent threads, use XInitThreads. XInitThreads Status XInitThreads The XInitThreads function initializes Xlib support for concurrent threads. This function must be the first Xlib function a multi-threaded program calls, and it must complete before any other Xlib call is made. This function returns a nonzero status if initialization was successful; otherwise, it returns zero. On systems that do not support threads, this function always returns zero. It is only necessary to call this function if multiple threads might use Xlib concurrently. If all calls to Xlib functions are protected by some other access mechanism (for example, a mutual exclusion lock in a toolkit or through explicit client programming), Xlib thread initialization is not required. It is recommended that single-threaded programs not call this function. To lock a display across several Xlib calls, use XLockDisplay. XLockDisplay XLockDisplay Display *display display Specifies the connection to the X server. The XLockDisplay function locks out all other threads from using the specified display. Other threads attempting to use the display will block until the display is unlocked by this thread. Nested calls to XLockDisplay work correctly; the display will not actually be unlocked until has been called the same number of times as XLockDisplay. This function has no effect unless Xlib was successfully initialized for threads using XInitThreads. To unlock a display, use . XUnlockDisplay XUnlockDisplay Display *display display Specifies the connection to the X server. The function allows other threads to use the specified display again. Any threads that have blocked on the display are allowed to continue. Nested locking works correctly; if XLockDisplay has been called multiple times by a thread, then must be called an equal number of times before the display is actually unlocked. This function has no effect unless Xlib was successfully initialized for threads using XInitThreads. Using Internal Connections In addition to the connection to the X server, an Xlib implementation may require connections to other kinds of servers (for example, to input method servers as described in chapter 13). Toolkits and clients that use multiple displays, or that use displays in combination with other inputs, need to obtain these additional connections to correctly block until input is available and need to process that input when it is available. Simple clients that use a single display and block for input in an Xlib event function do not need to use these facilities. To track internal connections for a display, use . typedef void (*XConnectionWatchProc) Display *display XPointer client_data int fd Bool opening XPointer *watch_data Status XAddConnectionWatch Display *display XConnectionWatchProc procedure XPointer client_data display Specifies the connection to the X server. procedure Specifies the procedure to be called. client_data Specifies the additional client data. The function registers a procedure to be called each time Xlib opens or closes an internal connection for the specified display. The procedure is passed the display, the specified client_data, the file descriptor for the connection, a Boolean indicating whether the connection is being opened or closed, and a pointer to a location for private watch data. If opening is True, the procedure can store a pointer to private data in the location pointed to by watch_data; when the procedure is later called for this same connection and opening is False, the location pointed to by watch_data will hold this same private data pointer. This function can be called at any time after a display is opened. If internal connections already exist, the registered procedure will immediately be called for each of them, before returns. returns a nonzero status if the procedure is successfully registered; otherwise, it returns zero. The registered procedure should not call any Xlib functions. If the procedure directly or indirectly causes the state of internal connections or watch procedures to change, the result is not defined. If Xlib has been initialized for threads, the procedure is called with the display locked and the result of a call by the procedure to any Xlib function that locks the display is not defined unless the executing thread has externally locked the display using XLockDisplay. To stop tracking internal connections for a display, use XRemoveConnectionWatch. XRemoveConnectionWatch Status XRemoveConnectionWatch Display *display XConnectionWatchProc procedure XPointer client_data display Specifies the connection to the X server. procedure Specifies the procedure to be called. client_data Specifies the additional client data. The XRemoveConnectionWatch function removes a previously registered connection watch procedure. The client_data must match the client_data used when the procedure was initially registered. To process input on an internal connection, use . XProcessInternalConnection void XProcessInternalConnection Display *display int fd display Specifies the connection to the X server. fd Specifies the file descriptor. The function processes input available on an internal connection. This function should be called for an internal connection only after an operating system facility (for example, select or poll) has indicated that input is available; otherwise, the effect is not defined. To obtain all of the current internal connections for a display, use . XInternalConnectionNumbers Status XInternalConnectionNumbers Display *display int ** fd int * count_return display Specifies the connection to the X server. fd_return Returns the file descriptors. count_return Returns the number of file descriptors. The function returns a list of the file descriptors for all internal connections currently open for the specified display. When the allocated list is no longer needed, free it by using . This functions returns a nonzero status if the list is successfully allocated; otherwise, it returns zero. libX11-1.8.12/specs/libX11/CH05.xml0000644014310600000120000005377014763154126011677 Pixmap and Cursor Functions Creating and Freeing Pixmaps Pixmaps can only be used on the screen on which they were created. Pixmaps are off-screen resources that are used for various operations, such as defining cursors as tiling patterns or as the source for certain raster operations. Most graphics requests can operate either on a window or on a pixmap. A bitmap is a single bit-plane pixmap. To create a pixmap of a given size, use . XCreatePixmap Pixmap XCreatePixmap Display *display Drawable d unsigned int width unsigned int height unsigned int depth display Specifies the connection to the X server. d Specifies which screen the pixmap is created on. width height Specify the width and height, which define the dimensions of the pixmap. depth Specifies the depth of the pixmap. The function creates a pixmap of the width, height, and depth you specified and returns a pixmap ID that identifies it. It is valid to pass an InputOnly window to the drawable argument. The width and height arguments must be nonzero, or a BadValue error results. The depth argument must be one of the depths supported by the screen of the specified drawable, or a BadValue error results. The server uses the specified drawable to determine on which screen to create the pixmap. The pixmap can be used only on this screen and only with other drawables of the same depth (see for an exception to this rule). The initial contents of the pixmap are undefined. can generate BadAlloc, BadDrawable, and BadValue errors. To free all storage associated with a specified pixmap, use . XFreePixmap XFreePixmap Display *display Pixmap pixmap display Specifies the connection to the X server. pixmap Specifies the pixmap. The function first deletes the association between the pixmap ID and the pixmap. Then, the X server frees the pixmap storage when there are no references to it. The pixmap should never be referenced again. can generate a BadPixmap error. Creating, Recoloring, and Freeing Cursors Each window can have a different cursor defined for it. Whenever the pointer is in a visible window, it is set to the cursor defined for that window. If no cursor was defined for that window, the cursor is the one defined for the parent window. From X's perspective, a cursor consists of a cursor source, mask, colors, and a hotspot. The mask pixmap determines the shape of the cursor and must be a depth of one. The source pixmap must have a depth of one, and the colors determine the colors of the source. The hotspot defines the point on the cursor that is reported when a pointer event occurs. There may be limitations imposed by the hardware on cursors as to size and whether a mask is implemented. XQueryBestCursor can be used to find out what sizes are possible. There is a standard font for creating cursors, but Xlib provides functions that you can use to create cursors from an arbitrary font or from bitmaps. To create a cursor from the standard cursor font, use . #include <X11/cursorfont.h> XCreateFontCursor Cursor XCreateFontCursor Display *display unsigned int shape display Specifies the connection to the X server. shape Specifies the shape of the cursor. X provides a set of standard cursor shapes in a special font named cursor. Applications are encouraged to use this interface for their cursors because the font can be customized for the individual display type. The shape argument specifies which glyph of the standard fonts to use. The hotspot comes from the information stored in the cursor font. The initial colors of a cursor are a black foreground and a white background (see ). For further information about cursor shapes, see appendix B. can generate BadAlloc and BadValue errors. To create a cursor from font glyphs, use . XCreateGlyphCursor Cursor XCreateGlyphCursor Display *display Font source_font Font mask_font unsigned int source_char unsigned int mask_char XColor *foreground_color XColor *background_color display Specifies the connection to the X server. source_font Specifies the font for the source glyph. mask_font Specifies the font for the mask glyph or None. source_char Specifies the character glyph for the source. mask_char Specifies the glyph character for the mask. foreground_color Specifies the RGB values for the foreground of the source. background_color Specifies the RGB values for the background of the source. The function is similar to except that the source and mask bitmaps are obtained from the specified font glyphs. The source_char must be a defined glyph in source_font, or a BadValue error results. If mask_font is given, mask_char must be a defined glyph in mask_font, or a BadValue error results. The mask_font and character are optional. The origins of the source_char and mask_char (if defined) glyphs are positioned coincidently and define the hotspot. The source_char and mask_char need not have the same bounding box metrics, and there is no restriction on the placement of the hotspot relative to the bounding boxes. If no mask_char is given, all pixels of the source are displayed. You can free the fonts immediately by calling if no further explicit references to them are to be made. For 2-byte matrix fonts, the 16-bit value should be formed with the byte1 member in the most significant byte and the byte2 member in the least significant byte. can generate BadAlloc, BadFont, and BadValue errors. To create a cursor from two bitmaps, use . XCreatePixmapCursor Cursor XCreatePixmapCursor Display *display Pixmap source Pixmap mask XColor *foreground_color XColor *background_color unsigned int x unsigned int y display Specifies the connection to the X server. source Specifies the shape of the source cursor. mask Specifies the cursor's source bits to be displayed or None. foreground_color Specifies the RGB values for the foreground of the source. background_color Specifies the RGB values for the background of the source. x y Specify the x and y coordinates, which indicate the hotspot relative to the source's origin. The function creates a cursor and returns the cursor ID associated with it. The foreground and background RGB values must be specified using foreground_color and background_color, even if the X server only has a StaticGray or GrayScale screen. The foreground color is used for the pixels set to 1 in the source, and the background color is used for the pixels set to 0. Both source and mask, if specified, must have depth one (or a BadMatch error results) but can have any root. The mask argument defines the shape of the cursor. The pixels set to 1 in the mask define which source pixels are displayed, and the pixels set to 0 define which pixels are ignored. If no mask is given, all pixels of the source are displayed. The mask, if present, must be the same size as the pixmap defined by the source argument, or a BadMatch error results. The hotspot must be a point within the source, or a BadMatch error results. The components of the cursor can be transformed arbitrarily to meet display limitations. The pixmaps can be freed immediately if no further explicit references to them are to be made. Subsequent drawing in the source or mask pixmap has an undefined effect on the cursor. The X server might or might not make a copy of the pixmap. can generate BadAlloc and BadPixmap errors. To determine useful cursor sizes, use . XQueryBestCursor Status XQueryBestCursor Display *display Drawable d unsigned int width unsigned int height unsigned int *width_return unsigned int *height_return display Specifies the connection to the X server. d Specifies the drawable, which indicates the screen. width height Specify the width and height of the cursor that you want the size information for. width_return height_return Return the best width and height that is closest to the specified width and height. Some displays allow larger cursors than other displays. The function provides a way to find out what size cursors are actually possible on the display. Cursorlimitations It returns the largest size that can be displayed. Applications should be prepared to use smaller cursors on displays that cannot support large ones. can generate a BadDrawable error. To change the color of a given cursor, use . XRecolorCursor XRecolorCursor Display *display Cursor cursor XColor *foreground_color XColor *background_color display Specifies the connection to the X server. cursor Specifies the cursor. foreground_color Specifies the RGB values for the foreground of the source. background_color Specifies the RGB values for the background of the source. The function changes the color of the specified cursor, and if the cursor is being displayed on a screen, the change is visible immediately. The pixel members of the XColor structures are ignored; only the RGB values are used. can generate a BadCursor error. To free (destroy) a given cursor, use . XFreeCursor XFreeCursor Display *display Cursor cursor display Specifies the connection to the X server. cursor Specifies the cursor. The function deletes the association between the cursor resource ID and the specified cursor. The cursor storage is freed when no other resource references it. The specified cursor ID should not be referred to again. can generate a BadCursor error. libX11-1.8.12/specs/libX11/credits.xml0000644014310600000120000002416414763154126012670 Acknowledgments The design and implementation of the first 10 versions of X were primarily the work of three individuals: Robert Scheifler of the MIT Laboratory for Computer Science and Jim Gettys of Digital Equipment Corporation and Ron Newman of MIT, both at MIT Project Athena. X version 11, however, is the result of the efforts of dozens of individuals at almost as many locations and organizations. At the risk of offending some of the players by exclusion, we would like to acknowledge some of the people who deserve special credit and recognition for their work on Xlib. Our apologies to anyone inadvertently overlooked. Release 1 Our thanks does to Ron Newman (MIT Project Athena), who contributed substantially to the design and implementation of the Version 11 Xlib interface. Our thanks also goes to Ralph Swick (Project Athena and Digital) who kept it all together for us during the early releases. He handled literally thousands of requests from people everywhere and saved the sanity of at least one of us. His calm good cheer was a foundation on which we could build. Our thanks also goes to Todd Brunhoff (Tektronix) who was ``loaned'' to Project Athena at exactly the right moment to provide very capable and much-needed assistance during the alpha and beta releases. He was responsible for the successful integration of sources from multiple sites; we would not have had a release without him. Our thanks also goes to Al Mento and Al Wojtas of Digital's ULTRIX Documentation Group. With good humor and cheer, they took a rough draft and made it an infinitely better and more useful document. The work they have done will help many everywhere. We also would like to thank Hal Murray (Digital SRC) and Peter George (Digital VMS) who contributed much by proofreading the early drafts of this document. Our thanks also goes to Jeff Dike (Digital UEG), Tom Benson, Jackie Granfield, and Vince Orgovan (Digital VMS) who helped with the library utilities implementation; to Hania Gajewska (Digital UEG-WSL) who, along with Ellis Cohen (CMU and Siemens), was instrumental in the semantic design of the window manager properties; and to Dave Rosenthal (Sun Microsystems) who also contributed to the protocol and provided the sample generic color frame buffer device-dependent code. The alpha and beta test participants deserve special recognition and thanks as well. It is significant that the bug reports (and many fixes) during alpha and beta test came almost exclusively from just a few of the alpha testers, mostly hardware vendors working on product implementations of X. The continued public contribution of vendors and universities is certainly to the benefit of the entire X community. Our special thanks must go to Sam Fuller, Vice-President of Corporate Research at Digital, who has remained committed to the widest public availability of X and who made it possible to greatly supplement MIT's resources with the Digital staff in order to make version 11 a reality. Many of the people mentioned here are part of the Western Software Laboratory (Digital UEG-WSL) of the ULTRIX Engineering group and work for Smokey Wallace, who has been vital to the project's success. Others not mentioned here worked on the toolkit and are acknowledged in the X Toolkit documentation. Of course, we must particularly thank Paul Asente, formerly of Stanford University and now of Digital UEG-WSL, who wrote W, the predecessor to X, and Brian Reid, formerly of Stanford University and now of Digital WRL, who had much to do with W's design. Finally, our thanks goes to MIT, Digital Equipment Corporation, and IBM for providing the environment where it could happen. Release 4 Our thanks go to Jim Fulton (MIT X Consortium) for designing and specifying the new Xlib functions for Inter-Client Communication Conventions (ICCCM) support. We also thank Al Mento of Digital for his continued effort in maintaining this document and Jim Fulton and Donna Converse (MIT X Consortium) for their much-appreciated efforts in reviewing the changes. Release 5 The principal authors of the Input Method facilities are Vania Joloboff (Open Software Foundation) and Bill McMahon (Hewlett-Packard). The principal author of the rest of the internationalization facilities is Glenn Widener (Tektronix). Our thanks to them for keeping their sense of humor through a long and sometimes difficult design process. Although the words and much of the design are due to them, many others have contributed substantially to the design and implementation. Tom McFarland (HP) and Frank Rojas (IBM) deserve particular recognition for their contributions. Other contributors were: Tim Anderson (Motorola), Alka Badshah (OSF), Gabe Beged-Dov (HP), Chih-Chung Ko (III), Vera Cheng (III), Michael Collins (Digital), Walt Daniels (IBM), Noritoshi Demizu (OMRON), Keisuke Fukui (Fujitsu), Hitoshoi Fukumoto (Nihon Sun), Tim Greenwood (Digital), John Harvey (IBM), Hideki Hiura (Sun), Fred Horman (AT&T), Norikazu Kaiya (Fujitsu), Yuji Kamata (IBM), Yutaka Kataoka (Waseda University), Ranee Khubchandani (Sun), Akira Kon (NEC), Hiroshi Kuribayashi (OMRON), Teruhiko Kurosaka (Sun), Seiji Kuwari (OMRON), Sandra Martin (OSF), Narita Masahiko (Fujitsu), Masato Morisaki (NTT), Nelson Ng (Sun), Takashi Nishimura (NTT America), Makato Nishino (IBM), Akira Ohsone (Nihon Sun), Chris Peterson (MIT), Sam Shteingart (AT&T), Manish Sheth (AT&T), Muneiyoshi Suzuki (NTT), Cori Mehring (Digital), Shoji Sugiyama (IBM), and Eiji Tosa (IBM). We are deeply indebted to Tatsuya Kato (NTT), Hiroshi Kuribayashi (OMRON), Seiji Kuwari (OMRON), Muneiyoshi Suzuki (NTT), and Li Yuhong (OMRON) for producing one of the first complete sample implementation of the internationalization facilities, and Hiromu Inukai (Nihon Sun), Takashi Fujiwara (Fujitsu), Hideki Hiura (Sun), Yasuhiro Kawai (Oki Technosystems Laboratory), Kazunori Nishihara (Fuji Xerox), Masaki Takeuchi (Sony), Katsuhisa Yano (Toshiba), Makoto Wakamatsu (Sony Corporation) for producing the another complete sample implementation of the internationalization facilities. The principal authors (design and implementation) of the Xcms color management facilities are Al Tabayoyon (Tektronix) and Chuck Adams (Tektronix). Joann Taylor (Tektronix), Bob Toole (Tektronix), and Keith Packard (MIT X Consortium) also contributed significantly to the design. Others who contributed are: Harold Boll (Kodak), Ken Bronstein (HP), Nancy Cam (SGI), Donna Converse (MIT X Consortium), Elias Israel (ISC), Deron Johnson (Sun), Jim King (Adobe), Ricardo Motta (HP), Chuck Peek (IBM), Wil Plouffe (IBM), Dave Sternlicht (MIT X Consortium), Kumar Talluri (AT&T), and Richard Verberg (IBM). We also once again thank Al Mento of Digital for his work in formatting and reformatting text for this manual, and for producing man pages. Thanks also to Clive Feather (IXI) for proof-reading and finding a number of small errors. Release 6 Stephen Gildea (X Consortium) authored the threads support. Ovais Ashraf (Sun) and Greg Olsen (Sun) contributed substantially by testing the facilities and reporting bugs in a timely fashion. The principal authors of the internationalization facilities, including Input and Output Methods, are Hideki Hiura (SunSoft) and Shigeru Yamada (Fujitsu OSSI). Although the words and much of the design are due to them, many others have contributed substantially to the design and implementation. They are: Takashi Fujiwara (Fujitsu), Yoshio Horiuchi (IBM), Makoto Inada (Digital), Hiromu Inukai (Nihon SunSoft), Song JaeKyung (KAIST), Franky Ling (Digital), Tom McFarland (HP), Hiroyuki Miyamoto (Digital), Masahiko Narita (Fujitsu), Frank Rojas (IBM), Hidetoshi Tajima (HP), Masaki Takeuchi (Sony), Makoto Wakamatsu (Sony), Masaki Wakao (IBM), Katsuhisa Yano(Toshiba) and Jinsoo Yoon (KAIST). The principal producers of the sample implementation of the internationalization facilities are: Jeffrey Bloomfield (Fujitsu OSSI), Takashi Fujiwara (Fujitsu), Hideki Hiura (SunSoft), Yoshio Horiuchi (IBM), Makoto Inada (Digital), Hiromu Inukai (Nihon SunSoft), Song JaeKyung (KAIST), Riki Kawaguchi (Fujitsu), Franky Ling (Digital), Hiroyuki Miyamoto (Digital), Hidetoshi Tajima (HP), Toshimitsu Terazono (Fujitsu), Makoto Wakamatsu (Sony), Masaki Wakao (IBM), Shigeru Yamada (Fujitsu OSSI) and Katsuhisa Yano (Toshiba). The coordinators of the integration, testing, and release of this implementation of the internationalization facilities are Nobuyuki Tanaka (Sony) and Makoto Wakamatsu (Sony). Others who have contributed to the architectural design or testing of the sample implementation of the internationalization facilities are: Hector Chan (Digital), Michael Kung (IBM), Joseph Kwok (Digital), Hiroyuki Machida (Sony), Nelson Ng (SunSoft), Frank Rojas (IBM), Yoshiyuki Segawa (Fujitsu OSSI), Makiko Shimamura (Fujitsu), Shoji Sugiyama (IBM), Lining Sun (SGI), Masaki Takeuchi (Sony), Jinsoo Yoon (KAIST) and Akiyasu Zen (HP). Jim Gettys Cambridge Research Laboratory Digital Equipment Corporation Robert W. Scheifler Laboratory for Computer Science Massachusetts Institute of Technology Release 7 This document is made available to you in modern formats such as HTML and PDF thanks to the efforts of Matt Dew, who converted the original troff sources to DocBook/XML and edited them into shape; along with Gaetan Nadon and Alan Coopersmith, who set up the formatting machinery in the libX11 builds and performed further editing of the DocBook markup. libX11-1.8.12/specs/libX11/AppC.xml0000644014310600000120000027364014763154126012063 Extensions Because X can evolve by extensions to the core protocol, it is important that extensions not be perceived as second-class citizens. At some point, your favorite extensions may be adopted as additional parts of the X Standard. Therefore, there should be little to distinguish the use of an extension from that of the core protocol. To avoid having to initialize extensions explicitly in application programs, it is also important that extensions perform lazy evaluations, automatically initializing themselves when called for the first time. This appendix describes techniques for writing extensions to Xlib that will run at essentially the same performance as the core protocol requests. It is expected that a given extension to X consists of multiple requests. Defining 10 new features as 10 separate extensions is a bad practice. Rather, they should be packaged into a single extension and should use minor opcodes to distinguish the requests. The symbols and macros used for writing stubs to Xlib are listed in <X11/Xlibint.h>. Basic Protocol Support Routines The basic protocol requests for extensions are and . XQueryExtension Bool XQueryExtension Display *display char *name int *major_opcode_return int *first_event_return int *first_error_return display Specifies the connection to the X server. name Specifies the extension name. major_opcode_return Returns the major opcode. first_event_return Returns the first event code, if any. first_error_return Returns the first error code, if any. The function determines if the named extension is present. If the extension is not present, returns False; otherwise, it returns True. If the extension is present, returns the major opcode for the extension to major_opcode_return; otherwise, it returns zero. Any minor opcode and the request formats are specific to the extension. If the extension involves additional event types, returns the base event type code to first_event_return; otherwise, it returns zero. The format of the events is specific to the extension. If the extension involves additional error codes, returns the base error code to first_error_return; otherwise, it returns zero. The format of additional data in the errors is specific to the extension. If the extension name is not in the Host Portable Character Encoding the result is implementation-dependent. Uppercase and lowercase matter; the strings ``thing'', ``Thing'', and ``thinG'' are all considered different names. XListExtensions char **XListExtensions Display *display int *nextensions_return display Specifies the connection to the X server. nextensions_return Returns the number of extensions listed. The function returns a list of all extensions supported by the server. If the data returned by the server is in the Latin Portable Character Encoding, then the returned strings are in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. XFreeExtensionList XFreeExtensionList char **list list Specifies the list of extension names. The function frees the memory allocated by . Hooking into Xlib These functions allow you to hook into the library. They are not normally used by application programmers but are used by people who need to extend the core X protocol and the X library interface. The functions, which generate protocol requests for X, are typically called stubs. In extensions, stubs first should check to see if they have initialized themselves on a connection. If they have not, they then should call to attempt to initialize themselves on the connection. If the extension needs to be informed of GC/font allocation or deallocation or if the extension defines new event types, the functions described here allow the extension to be called when these events occur. The XExtCodes structure returns the information from and is defined in <X11/Xlib.h>: XExtCodes typedef struct _XExtCodes { /* public to extension, cannot be changed */ int extension; /* extension number */ int major_opcode; /* major op-code assigned by server */ int first_event; /* first event number for the extension */ int first_error; /* first error number for the extension */ } XExtCodes; XInitExtension XExtCodes *XInitExtension Display *display char *name display Specifies the connection to the X server. name Specifies the extension name. The function determines if the named extension exists. Then, it allocates storage for maintaining the information about the extension on the connection, chains this onto the extension list for the connection, and returns the information the stub implementor will need to access the extension. If the extension does not exist, returns NULL. If the extension name is not in the Host Portable Character Encoding, the result is implementation-dependent. Uppercase and lowercase matter; the strings ``thing'', ``Thing'', and ``thinG'' are all considered different names. The extension number in the XExtCodes structure is needed in the other calls that follow. This extension number is unique only to a single connection. XAddExtension XExtCodes *XAddExtension Display *display display Specifies the connection to the X server. For local Xlib extensions, the function allocates the XExtCodes structure, bumps the extension number count, and chains the extension onto the extension list. (This permits extensions to Xlib without requiring server extensions.) Hooks into the Library These functions allow you to define procedures that are to be called when various circumstances occur. The procedures include the creation of a new GC for a connection, the copying of a GC, the freeing of a GC, the creating and freeing of fonts, the conversion of events defined by extensions to and from wire format, and the handling of errors. All of these functions return the previous procedure defined for this extension. XESetCloseDisplay int XESetCloseDisplay Display *display int extension int (*proc)() display Specifies the connection to the X server. extension Specifies the extension number. proc Specifies the procedure to call when the display is closed. The function defines a procedure to be called whenever XCloseDisplay is called. It returns any previously defined procedure, usually NULL. When XCloseDisplay is called, your procedure is called with these arguments: int (*proc) Display *display XExtCodes *codes XESetCreateGC int *XESetCreateGC Display *display int extension int (*proc)() display Specifies the connection to the X server. extension Specifies the extension number. proc Specifies the procedure to call when a GC is closed. The function defines a procedure to be called whenever a new GC is created. It returns any previously defined procedure, usually NULL. When a GC is created, your procedure is called with these arguments: int (*proc) Display *display GC gc XExtCodes *codes XESetCopyGC int *XESetCopyGC Display *display int extension int (*proc)() display Specifies the connection to the X server. extension Specifies the extension number. proc Specifies the procedure to call when GC components are copied. The function defines a procedure to be called whenever a GC is copied. It returns any previously defined procedure, usually NULL. When a GC is copied, your procedure is called with these arguments: int (*proc) Display *display GC gc XExtCodes *codes int *XESetFreeGC Display *display int extension int (*proc)() display Specifies the connection to the X server. extension Specifies the extension number. proc Specifies the procedure to call when a GC is freed. The function defines a procedure to be called whenever a GC is freed. It returns any previously defined procedure, usually NULL. When a GC is freed, your procedure is called with these arguments: int (*proc) Display *display GC gc XExtCodes *codes XESetCreateFont int *XESetCreateFont Display *display int extension int (*proc)() display Specifies the connection to the X server. extension Specifies the extension number. proc Specifies the procedure to call when a font is created. The function defines a procedure to be called whenever and are called. It returns any previously defined procedure, usually NULL. When or is called, your procedure is called with these arguments: int (*proc) Display *display XFontStruct *fs XExtCodes *codes XESetFreeFont int *XESetFreeFont Display *display int extension int (*proc)() display Specifies the connection to the X server. extension Specifies the extension number. proc Specifies the procedure to call when a font is freed. The function defines a procedure to be called whenever is called. It returns any previously defined procedure, usually NULL. When is called, your procedure is called with these arguments: int (*proc) Display *display XFontStruct *fs XExtCodes *codes The and functions allow you to define new events to the library. An XEvent structure always has a type code (type int) as the first component. This uniquely identifies what kind of event it is. The second component is always the serial number (type unsigned long) of the last request processed by the server. The third component is always a Boolean (type Bool) indicating whether the event came from a SendEvent protocol request. The fourth component is always a pointer to the display the event was read from. The fifth component is always a resource ID of one kind or another, usually a window, carefully selected to be useful to toolkit dispatchers. The fifth component should always exist, even if the event does not have a natural destination; if there is no value from the protocol to put in this component, initialize it to zero. There is an implementation limit such that your host event structure size cannot be bigger than the size of the XEvent union of structures. There also is no way to guarantee that more than 24 elements or 96 characters in the structure will be fully portable between machines. XESetWireToEvent int *XESetWireToEvent Display *display int event_number Status (*proc)() display Specifies the connection to the X server. event_number Specifies the event code. proc Specifies the procedure to call when converting an event. The function defines a procedure to be called when an event needs to be converted from wire format (xEvent) to host format (XEvent). The event number defines which protocol event number to install a conversion procedure for. returns any previously defined procedure. You can replace a core event conversion function with one of your own, although this is not encouraged. It would, however, allow you to intercept a core event and modify it before being placed in the queue or otherwise examined. When Xlib needs to convert an event from wire format to host format, your procedure is called with these arguments: int (*proc) Display *display XEvent *re xEvent *event Your procedure must return status to indicate if the conversion succeeded. The re argument is a pointer to where the host format event should be stored, and the event argument is the 32-byte wire event structure. In the XEvent structure you are creating, you must fill in the five required members of the event structure. You should fill in the type member with the type specified for the xEvent structure. You should copy all other members from the xEvent structure (wire format) to the XEvent structure (host format). Your conversion procedure should return True if the event should be placed in the queue or False if it should not be placed in the queue. To initialize the serial number component of the event, call with the event and use the return value. _XSetLastRequestRead unsigned long_XSetLastRequestRead Display *display xGenericReply *rep display Specifies the connection to the X server. rep Specifies the wire event structure. The function computes and returns a complete serial number from the partial serial number in the event. XESetEventToWire Status *XESetEventToWire Display *display int event_number int (*proc)() display Specifies the connection to the X server. event_number Specifies the event code. proc Specifies the procedure to call when converting an event. The function defines a procedure to be called when an event needs to be converted from host format (XEvent) to wire format (xEvent) form. The event number defines which protocol event number to install a conversion procedure for. returns any previously defined procedure. It returns zero if the conversion fails or nonzero otherwise. You can replace a core event conversion function with one of your own, although this is not encouraged. It would, however, allow you to intercept a core event and modify it before being sent to another client. When Xlib needs to convert an event from host format to wire format, your procedure is called with these arguments: int (*proc) Display *display XEvent *re xEvent *event The re argument is a pointer to the host format event, and the event argument is a pointer to where the 32-byte wire event structure should be stored. You should fill in the type with the type from the XEvent structure. All other members then should be copied from the host format to the xEvent structure. XESetWireToError Bool *XESetWireToError Display *display int error_number Bool (*proc)() display Specifies the connection to the X server. error_number Specifies the error code. proc Specifies the procedure to call when an error is received. The function defines a procedure to be called when an extension error needs to be converted from wire format to host format. The error number defines which protocol error code to install the conversion procedure for. returns any previously defined procedure. Use this function for extension errors that contain additional error values beyond those in a core X error, when multiple wire errors must be combined into a single Xlib error, or when it is necessary to intercept an X error before it is otherwise examined. When Xlib needs to convert an error from wire format to host format, the procedure is called with these arguments: int (*proc) Display *display XErrorEvent *he xError *we The he argument is a pointer to where the host format error should be stored. The structure pointed at by he is guaranteed to be as large as an XEvent structure and so can be cast to a type larger than an XErrorEvent to store additional values. If the error is to be completely ignored by Xlib (for example, several protocol error structures will be combined into one Xlib error), then the function should return False; otherwise, it should return True. XESetError int *XESetError Display *display int extension int (*proc)() display Specifies the connection to the X server. extension Specifies the extension number. proc Specifies the procedure to call when an error is received. Inside Xlib, there are times that you may want to suppress the calling of the external error handling when an error occurs. This allows status to be returned on a call at the cost of the call being synchronous (though most such functions are query operations, in any case, and are typically programmed to be synchronous). When Xlib detects a protocol error in , it calls your procedure with these arguments: int (*proc) Display *display xError *err XExtCodes *codes int *ret_code The err argument is a pointer to the 32-byte wire format error. The codes argument is a pointer to the extension codes structure. The ret_code argument is the return code you may want returned to. If your procedure returns a zero value, the error is not suppressed, and the client's error handler is called. (For further information, see section 11.8.2.) If your procedure returns nonzero, the error is suppressed, and returns the value of ret_code. XESetErrorString char *XESetErrorString Display *display int extension char *(*proc)() display Specifies the connection to the X server. extension Specifies the extension number. proc Specifies the procedure to call to obtain an error string. The function returns a string to the user for an error. allows you to define a procedure to be called that should return a pointer to the error message. The following is an example. int (*proc) Display *display int code XExtCodes *codes char *buffer int nbytes Your procedure is called with the error code for every error detected. You should copy nbytes of a null-terminated string containing the error message into buffer. XESetPrintErrorValues void *XESetPrintErrorValues Display *display int extension void (*proc)() display Specifies the connection to the X server. extension Specifies the extension number. proc Specifies the procedure to call when an error is printed. The function defines a procedure to be called when an extension error is printed, to print the error values. Use this function for extension errors that contain additional error values beyond those in a core X error. It returns any previously defined procedure. When Xlib needs to print an error, the procedure is called with these arguments: void (*proc) Display *display XErrorEvent *ev void *fp The structure pointed at by ev is guaranteed to be as large as an XEvent structure and so can be cast to a type larger than an XErrorEvent to obtain additional values set by using . The underlying type of the fp argument is system dependent; on a POSIX-compliant system, fp should be cast to type FILE*. XESetFlushGC int *XESetFlushGC Display *display int extension int *(*proc)() display Specifies the connection to the X server. extension Specifies the extension number. proc Specifies the procedure to call when a GC is flushed. The procedure set by the function has the same interface as the procedure set by the function, but is called when a GC cache needs to be updated in the server. XESetBeforeFlush int *XESetCopyGC Display *display int extension int *(*proc)() display Specifies the connection to the X server. extension Specifies the extension number. proc Specifies the procedure to call when a buffer is flushed. The XESetBeforeFlush function defines a procedure to be called when data is about to be sent to the server. When data is about to be sent, your procedure is called one or more times with these arguments: void (*proc) Display *display XExtCodes *codes char *data long len The data argument specifies a portion of the outgoing data buffer, and its length in bytes is specified by the len argument. Your procedure must not alter the contents of the data and must not do additional protocol requests to the same display. Hooks onto Xlib Data Structures Various Xlib data structures have provisions for extension procedures to chain extension supplied data onto a list. These structures are GC, Visual, Screen, ScreenFormat, Display, and XFontStruct. Because the list pointer is always the first member in the structure, a single set of procedures can be used to manipulate the data on these lists. The following structure is used in the functions in this section and is defined in <X11/Xlib.h> XExtData typedef struct _XExtData { int number; /* number returned by XInitExtension */ struct _XExtData *next; /* next item on list of data for structure */ int (*free_private)(); /* if defined, called to free private */ XPointer private_data; /* data private to this extension. */ } XExtData; When any of the data structures listed above are freed, the list is walked, and the structure's free procedure (if any) is called. If free is NULL, then the library frees both the data pointed to by the private_data member and the structure itself. union { Display *display; GC gc; Visual *visual; Screen *screen; ScreenFormat *pixmap_format; XFontStruct *font } XEDataObject; XEHeadOfExtensionList XExtData **XEHeadOfExtensionList XEDataObject object object Specifies the object. The function returns a pointer to the list of extension structures attached to the specified object. In concert with , allows an extension to attach arbitrary data to any of the structures of types contained in XEDataObject. XAddToExtensionList XAddToExtensionList XExtData **structure XExtData *ext_data structure Specifies the extension list. ext_data Specifies the extension data structure to add. The structure argument is a pointer to one of the data structures enumerated above. You must initialize ext_data->number with the extension number before calling this function. XFindOnExtensionList XExtData *XFindOnExtensionList struct_XExtData **structure int number structure Specifies the extension list. number Specifies the extension number from . The function returns the first extension data structure for the extension numbered number. It is expected that an extension will add at most one extension data structure to any single data structure's extension data list. There is no way to find additional structures. The macro, which allocates and returns a resource ID, is defined in <X11/Xlib.h>. XAllocID XAllocID Display *display display Specifies the connection to the X server. This macro is a call through the Display structure to an internal resource ID allocator. It returns a resource ID that you can use when creating new resources. The macro allocates and returns an array of resource ID. XAllocIDs XAllocIDs Display *display XID *ids_return int count display Specifies the connection to the X server. ids_return Returns the resource IDs. rep Specifies the number of resource IDs requested. This macro is a call through the Display structure to an internal resource ID allocator. It returns resource IDs to the array supplied by the caller. To correctly handle automatic reuse of resource IDs, you must call when requesting multiple resource IDs. This call might generate protocol requests. GC Caching GCs are cached by the library to allow merging of independent change requests to the same GC into single protocol requests. This is typically called a write-back cache. Any extension procedure whose behavior depends on the contents of a GC must flush the GC cache to make sure the server has up-to-date contents in its GC. The macro checks the dirty bits in the library's GC structure and calls if any elements have changed. The macro is defined as follows: FlushGC FlushGC Display *display GC gc display Specifies the connection to the X server. gc Specifies the GC. Note that if you extend the GC to add additional resource ID components, you should ensure that the library stub sends the change request immediately. This is because a client can free a resource immediately after using it, so if you only stored the value in the cache without forcing a protocol request, the resource might be destroyed before being set into the GC. You can use the procedure to force the cache to be flushed. The procedure is defined as follows: _XFlushGCCache _XFlushGCCache Display *display GC gc display Specifies the connection to the X server. gc Specifies the GC. Graphics Batching If you extend X to add more poly graphics primitives, you may be able to take advantage of facilities in the library to allow back-to-back single calls to be transformed into poly requests. This may dramatically improve performance of programs that are not written using poly requests. A pointer to an xReq, called last_req in the display structure, is the last request being processed. By checking that the last request type, drawable, gc, and other options are the same as the new one and that there is enough space left in the buffer, you may be able to just extend the previous graphics request by extending the length field of the request and appending the data to the buffer. This can improve performance by five times or more in naive programs. For example, here is the source for the stub. (Writing extension stubs is discussed in the next section.) #include <X11/Xlibint.h> /* precompute the maximum size of batching request allowed */ static int size = sizeof(xPolyPointReq) + EPERBATCH * sizeof(xPoint); XDrawPoint(dpy, d, gc, x, y) register Display *dpy; Drawable d; GC gc; int x, y; /* INT16 */ { xPoint *point; LockDisplay(dpy); FlushGC(dpy, gc); { register xPolyPointReq *req = (xPolyPointReq *) dpy->last_req; /* if same as previous request, with same drawable, batch requests */ if ( (req->reqType == X_PolyPoint) && (req->drawable == d) && (req->gc == gc->gid) && (req->coordMode == CoordModeOrigin) && ((dpy->bufptr + sizeof (xPoint)) <= dpy->bufmax) && (((char *)dpy->bufptr - (char *)req) < size) ) { point = (xPoint *) dpy->bufptr; req->length += sizeof (xPoint) >> 2; dpy->bufptr += sizeof (xPoint); } else { GetReqExtra(PolyPoint, 4, req); /* 1 point = 4 bytes */ req->drawable = d; req->gc = gc->gid; req->coordMode = CoordModeOrigin; point = (xPoint *) (req + 1); } point->x = x; point->y = y; } UnlockDisplay(dpy); SyncHandle(); } To keep clients from generating very long requests that may monopolize the server, there is a symbol defined in <X11/Xlibint.h> of EPERBATCH on the number of requests batched. Most of the performance benefit occurs in the first few merged requests. Note that is called before picking up the value of last_req, because it may modify this field. Writing Extension Stubs All X requests always contain the length of the request, expressed as a 16-bit quantity of 32 bit words. This means that a single request can be no more than 256K bytes in length. Some servers may not support single requests of such a length. The value of dpy->max_request_size contains the maximum length as defined by the server implementation. For further information, see X Window System Protocol. Requests, Replies, and Xproto.h The <X11/Xproto.h> file contains three sets of definitions that are of interest to the stub implementor: request names, request structures, and reply structures. You need to generate a file equivalent to <X11/Xproto.h> for your extension and need to include it in your stub procedure. Each stub procedure also must include <X11/Xlibint.h>. The identifiers are deliberately chosen in such a way that, if the request is called X_DoSomething, then its request structure is xDoSomethingReq, and its reply is xDoSomethingReply. The GetReq family of macros, defined in <X11/Xlibint.h>, takes advantage of this naming scheme. For each X request, there is a definition in <X11/Xproto.h> that looks similar to this: #define X_DoSomething 42 In your extension header file, this will be a minor opcode, instead of a major opcode. Request Format Every request contains an 8-bit major opcode and a 16-bit length field expressed in units of 4 bytes. Every request consists of 4 bytes of header (containing the major opcode, the length field, and a data byte) followed by zero or more additional bytes of data. The length field defines the total length of the request, including the header. The length field in a request must equal the minimum length required to contain the request. If the specified length is smaller or larger than the required length, the server should generate a BadLength error. Unused bytes in a request are not required to be zero. Extensions should be designed in such a way that long protocol requests can be split up into smaller requests, if it is possible to exceed the maximum request size of the server. The protocol guarantees the maximum request size to be no smaller than 4096 units (16384 bytes). Major opcodes 128 through 255 are reserved for extensions. Extensions are intended to contain multiple requests, so extension requests typically have an additional minor opcode encoded in the second data byte in the request header, but the placement and interpretation of this minor opcode as well as all other fields in extension requests are not defined by the core protocol. Every request is implicitly assigned a sequence number (starting with one) used in replies, errors, and events. Most protocol requests have a corresponding structure typedef in <X11/Xproto.h>, which looks like: xDoSomethingReq typedef struct _DoSomethingReq { CARD8 reqType; /* X_DoSomething */ CARD8 someDatum; /* used differently in different requests */ CARD16 length; /* total # of bytes in request, divided by 4 */ ... /* request-specific data */ ... } xDoSomethingReq; If a core protocol request has a single 32-bit argument, you need not declare a request structure in your extension header file. Instead, such requests use the xResourceReq structure in <X11/Xproto.h>. This structure is used for any request whose single argument is a Window, Pixmap, Drawable, GContext, Font, Cursor, Colormap, Atom, or VisualID. xResourceReq typedef struct _ResourceReq { CARD8 reqType; /* the request type, e.g. X_DoSomething */ BYTE pad; /* not used */ CARD16 length; /* 2 (= total # of bytes in request, divided by 4) */ CARD32 id; /* the Window, Drawable, Font, GContext, etc. */ } xResourceReq; If convenient, you can do something similar in your extension header file. In both of these structures, the reqType field identifies the type of the request (for example, X_MapWindow or X_CreatePixmap). The length field tells how long the request is in units of 4-byte longwords. This length includes both the request structure itself and any variable-length data, such as strings or lists, that follow the request structure. Request structures come in different sizes, but all requests are padded to be multiples of four bytes long. A few protocol requests take no arguments at all. Instead, they use the xReq structure in <X11/Xproto.h>, which contains only a reqType and a length (and a pad byte). If the protocol request requires a reply, then <X11/Xproto.h> also contains a reply structure typedef: xDoSomethingReply typedef struct _DoSomethingReply { BYTE type; /* always X_Reply */ BYTE someDatum; /* used differently in different requests */ CARD16 sequenceNumber; /* # of requests sent so far */ CARD32 length; /* # of additional bytes, divided by 4 */ ... /* request-specific data */ ... } xDoSomethingReply; Most of these reply structures are 32 bytes long. If there are not that many reply values, then they contain a sufficient number of pad fields to bring them up to 32 bytes. The length field is the total number of bytes in the request minus 32, divided by 4. This length will be nonzero only if: The reply structure is followed by variable-length data, such as a list or string. The reply structure is longer than 32 bytes. Only GetWindowAttributesl, QueryFont, QueryKeymap, and GetKeyboardControl have reply structures longer than 32 bytes in the core protocol. A few protocol requests return replies that contain no data. <X11/Xproto.h> does not define reply structures for these. Instead, they use the xGenericReply structure, which contains only a type, length, and sequence number (and sufficient padding to make it 32 bytes long). Starting to Write a Stub Procedure An Xlib stub procedure should start like this: #include "<X11/Xlibint.h> XDoSomething (arguments, ... ) /* argument declarations */ { register XDoSomethingReq *req; ... If the protocol request has a reply, then the variable declarations should include the reply structure for the request. The following is an example: xDoSomethingReply rep; Locking Data Structures To lock the display structure for systems that want to support multithreaded access to a single display connection, each stub will need to lock its critical section. Generally, this section is the point from just before the appropriate GetReq call until all arguments to the call have been stored into the buffer. The precise instructions needed for this locking depend upon the machine architecture. Two calls, which are generally implemented as macros, have been provided. LockDisplay LockDisplay Display *display UnlockDisplay UnlockDisplay Display *display display Specifies the connection to the X server. Sending the Protocol Request and Arguments After the variable declarations, a stub procedure should call one of four macros defined in <X11/Xlibint.h>: GetReq, GetReqExtra, GetResReq, or GetEmptyReq. All of these macros take, as their first argument, the name of the protocol request as declared in <X11/Xproto.h> except with X_ removed. Each one declares a Display structure pointer, called dpy, and a pointer to a request structure, called req, which is of the appropriate type. The macro then appends the request structure to the output buffer, fills in its type and length field, and sets req to point to it. If the protocol request has no arguments (for instance, X_GrabServer), then use GetEmptyReq. GetEmptyReq (DoSomething, req); If the protocol request has a single 32-bit argument (such as a Pixmap, Window, Drawable, Atom, and so on), then use GetResReq. The second argument to the macro is the 32-bit object. X_MapWindow is a good example. GetResReq (DoSomething, rid, req); The rid argument is the Pixmap, Window, or other resource ID. If the protocol request takes any other argument list, then call GetReq. After the GetReq, you need to set all the other fields in the request structure, usually from arguments to the stub procedure. GetReq (DoSomething, req); /* fill in arguments here */ req->arg1 = arg1; req->arg2 = arg2; ... A few stub procedures (such as and ) return a resource ID to the caller but pass a resource ID as an argument to the protocol request. Such procedures use the macro to allocate a resource ID from the range of IDs that were assigned to this client when it opened the connection. rid = req->rid = XAllocID(); ... return (rid); Finally, some stub procedures transmit a fixed amount of variable-length data after the request. Typically, these procedures (such as and ) are special cases of more general functions like and . These procedures use GetReqExtra, which is the same as GetReq except that it takes an additional argument (the number of extra bytes to allocate in the output buffer after the request structure). This number should always be a multiple of four. Note that it is possible for req to be set to NULL as a defensive measure if the requested length exceeds the Xlib's buffer size (normally 16K). Variable Length Arguments Some protocol requests take additional variable-length data that follow the xDoSomethingReq structure. The format of this data varies from request to request. Some requests require a sequence of 8-bit bytes, others a sequence of 16-bit or 32-bit entities, and still others a sequence of structures. It is necessary to add the length of any variable-length data to the length field of the request structure. That length field is in units of 32-bit longwords. If the data is a string or other sequence of 8-bit bytes, then you must round the length up and shift it before adding: req->length += (nbytes+3)>>2; To transmit variable-length data, use the macros. If the data fits into the output buffer, then this macro copies it to the buffer. If it does not fit, however, the macro calls _XSend, which transmits first the contents of the buffer and then your data. The macros take three arguments: the display, a pointer to the beginning of the data, and the number of bytes to be sent. Data display (char *) data nbytes Data16 display (short *) data nbytes Data32 display (long *) data nbytes Data, Data16, and Data32 are macros that may use their last argument more than once, so that argument should be a variable rather than an expression such as ``nitems*sizeof(item)''. You should do that kind of computation in a separate statement before calling them. Use the appropriate macro when sending byte, short, or long data. If the protocol request requires a reply, then call the procedure _XSend instead of the macro. _XSend takes the same arguments, but because it sends your data immediately instead of copying it into the output buffer (which would later be flushed anyway by the following call on ), it is faster. Replies If the protocol request has a reply, then call after you have finished dealing with all the fixed-length and variable-length arguments. flushes the output buffer and waits for an xReply packet to arrive. If any events arrive in the meantime, places them in the queue for later use. _XReply Status _XReply Display *display xReply *rep int extra Bool discard display Specifies the connection to the X server. rep Specifies the reply structure. extra Specifies the number of 32-bit words expected after the replay. discard Specifies if any data beyond that specified in the extra argument should be discarded. The function waits for a reply packet and copies its contents into the specified rep. handles error and event packets that occur before the reply is received. takes four arguments: A Display * structure A pointer to a reply structure (which must be cast to an xReply *) The number of additional 32-bit words (beyond sizeof( xReply) = 32 bytes) in the reply structure A Boolean that indicates whether is to discard any additional bytes beyond those it was told to read Because most reply structures are 32 bytes long, the third argument is usually 0. The only core protocol exceptions are the replies to GetWindowAttributesl, QueryFont, QueryKeymap, and GetKeyboardControl, which have longer replies. The last argument should be False if the reply structure is followed by additional variable-length data (such as a list or string). It should be True if there is not any variable-length data. This last argument is provided for upward-compatibility reasons to allow a client to communicate properly with a hypothetical later version of the server that sends more data than the client expected. For example, some later version of GetWindowAttributesl might use a larger, but compatible, xGetWindowAttributesReply that contains additional attribute data at the end. returns True if it received a reply successfully or False if it received any sort of error. For a request with a reply that is not followed by variable-length data, you write something like: _XReply(display, (xReply *)&rep, 0, True); *ret1 = rep.ret1; *ret2 = rep.ret2; *ret3 = rep.ret3; ... UnlockDisplay(dpy); SyncHandle(); return (rep.ret4); } If there is variable-length data after the reply, change the True to False, and use the appropriate function to read the variable-length data. _XRead Display *display char *data_return long nbytes display Specifies the connection to the X server. data_return Specifies the buffer. nbytes Specifies the number of bytes required. The function reads the specified number of bytes into data_return. _XRead16 Display *display short *data_return long nbytes display Specifies the connection to the X server. data_return Specifies the buffer. nbytes Specifies the number of bytes required. The function reads the specified number of bytes, unpacking them as 16-bit quantities, into the specified array as shorts. _XRead32 Display *display long *data_return long nbytes display Specifies the connection to the X server. data_return Specifies the buffer. nbytes Specifies the number of bytes required. The function reads the specified number of bytes, unpacking them as 32-bit quantities, into the specified array as longs. _XRead16Pad Display *display short *data_return long nbytes display Specifies the connection to the X server. data_return Specifies the buffer. nbytes Specifies the number of bytes required. The function reads the specified number of bytes, unpacking them as 16-bit quantities, into the specified array as shorts. If the number of bytes is not a multiple of four, reads and discards up to two additional pad bytes. _XReadPad Display *display char *data_return long nbytes display Specifies the connection to the X server. data_return Specifies the buffer. nbytes Specifies the number of bytes required. The function reads the specified number of bytes into data_return. If the number of bytes is not a multiple of four, reads and discards up to three additional pad bytes. Each protocol request is a little different. For further information, see the Xlib sources for examples. Synchronous Calling Each procedure should have a call, just before returning to the user, to a macro called SyncHandle. If synchronous mode is enabled (see XSynchronize), the request is sent immediately. The library, however, waits until any error the procedure could generate at the server has been handled. Allocating and Deallocating Memory To support the possible reentry of these procedures, you must observe several conventions when allocating and deallocating memory, most often done when returning data to the user from the window system of a size the caller could not know in advance (for example, a list of fonts or a list of extensions). The standard C library functions on many systems are not protected against signals or other multithreaded uses. The following analogies to standard I/O library functions have been defined: These should be used in place of any calls you would make to the normal C library functions. If you need a single scratch buffer inside a critical section (for example, to pack and unpack data to and from the wire protocol), the general memory allocators may be too expensive to use (particularly in output functions, which are performance critical). The following function returns a scratch buffer for use within a critical section: _XAllocScratch char *_XAllocScratch Display *display unsigned long nbytes display Specifies the connection to the X server. nbytes Specifies the number of bytes required. This storage must only be used inside of a critical section of your stub. The returned pointer cannot be assumed valid after any call that might permit another thread to execute inside Xlib. For example, the pointer cannot be assumed valid after any use of the GetReq or families of macros, after any use of , or after any use of the _XSend or families of functions. The following function returns a scratch buffer for use across critical sections: _XAllocTemp char *_XAllocTemp Display *display unsigned long nbytes display Specifies the connection to the X server. nbytes Specifies the number of bytes required. This storage can be used across calls that might permit another thread to execute inside Xlib. The storage must be explicitly returned to Xlib. The following function returns the storage: _XFreeTemp void _XFreeTemp Display *display char *buf unsigned long nbytes display Specifies the connection to the X server. buf Specifies the buffer to return. nbytes Specifies the size of the buffer. You must pass back the same pointer and size that were returned by . Portability Considerations Many machine architectures do not correctly or efficiently access data at unaligned locations; their compilers pad out structures to preserve this characteristic. Many other machines capable of unaligned references pad inside of structures as well to preserve alignment, because accessing aligned data is usually much faster. Because the library and the server use structures to access data at arbitrary points in a byte stream, all data in request and reply packets must be naturally aligned; that is, 16-bit data starts on 16-bit boundaries in the request and 32-bit data on 32-bit boundaries. All requests must be a multiple of 32 bits in length to preserve the natural alignment in the data stream. You must pad structures out to 32-bit boundaries. Pad information does not have to be zeroed unless you want to preserve such fields for future use in your protocol requests, but it is recommended to zero it to avoid inadvertent data leakage and improve compressability. Floating point varies radically between machines and should be avoided completely if at all possible. This code may run on machines with 16-bit ints. So, if any integer argument, variable, or return value either can take only nonnegative values or is declared as a CARD16 in the protocol, be sure to declare it as unsigned int and not as int. (This, of course, does not apply to Booleans or enumerations.) Similarly, if any integer argument or return value is declared CARD32 in the protocol, declare it as an unsigned long and not as int or long. This also goes for any internal variables that may take on values larger than the maximum 16-bit unsigned int. The library has always assumed that a char is 8 bits, a short is 16 bits, an int is 16 or 32 bits, and a long is 32 bits. Unfortunately, this assumption remains on machines where a long can hold 64-bits, and many functions and structures require unnecessarily large fields to avoid breaking compatibility with existing code. Special care must be taken with arrays of values that are transmitted in the protocol as CARD32 or INT32 but have to be converted to arrays of 64-bit long when passed to or from client applications. The PackData macro is a half-hearted attempt to deal with the possibility of 32 bit shorts. However, much more work is needed to make this work properly. Deriving the Correct Extension Opcode The remaining problem a writer of an extension stub procedure faces that the core protocol does not face is to map from the call to the proper major and minor opcodes. While there are a number of strategies, the simplest and fastest is outlined below. Declare an array of pointers, _NFILE long (this is normally found in <stdio.h> and is the number of file descriptors supported on the system) of type XExtCodes. Make sure these are all initialized to NULL. When your stub is entered, your initialization test is just to use the display pointer passed in to access the file descriptor and an index into the array. If the entry is NULL, then this is the first time you are entering the procedure for this display. Call your initialization procedure and pass to it the display pointer. Once in your initialization procedure, call ; if it succeeds, store the pointer returned into this array. Make sure to establish a close display handler to allow you to zero the entry. Do whatever other initialization your extension requires. (For example, install event handlers and so on.) Your initialization procedure would normally return a pointer to the XExtCodes structure for this extension, which is what would normally be found in your array of pointers. After returning from your initialization procedure, the stub can now continue normally, because it has its major opcode safely in its hand in the XExtCodes structure. libX11-1.8.12/specs/libX11/AppD.xml0000644014310600000120000015030114763154126012050 Compatibility Functions The X Version 11 and X Version 10 functions discussed in this appendix are obsolete, have been superseded by newer X Version 11 functions, and are maintained for compatibility reasons only. X Version 11 Compatibility Functions You can use the X Version 11 compatibility functions to: Set standard properties Set and get window sizing hints Set and get an XStandardColormap structure Parse window geometry Get X environment defaults Setting Standard Properties To specify a minimum set of properties describing the simplest application, use . This function has been superseded by and sets all or portions of the WM_NAME, WM_ICON_NAME, WM_HINTS, WM_COMMAND, and WM_NORMAL_HINTS properties. XSetStandardProperties XSetStandardProperties Display *display Window w char *window_name char *icon_name Pixmap icon_pixmap char **argv int argc XSizeHints *hints display Specifies the connection to the X server. w Specifies the window. window_name Specifies the window name, which should be a null-terminated string. icon_name Specifies the icon name, which should be a null-terminated string. icon_pixmap Specifies the bitmap that is to be used for the icon or None. argv Specifies the application's argument list. argc Specifies the number of arguments. hints Specifies a pointer to the size hints for the window in its normal state. The function provides a means by which simple applications set the most essential properties with a single call. should be used to give a window manager some information about your program's preferences. It should not be used by applications that need to communicate more information than is possible with . (Typically, argv is the argv array of your main program.) If the strings are not in the Host Portable Character Encoding, the result is implementation-dependent. can generate BadAlloc and BadWindow errors. Setting and Getting Window Sizing Hints Xlib provides functions that you can use to set or get window sizing hints. The functions discussed in this section use the flags and the XSizeHints structure, as defined in the <X11/Xutil.h> X11/Xutil.h Files<X11/Xutil.h> Headers<X11/Xutil.h> header file and use the WM_NORMAL_HINTS property. To set the size hints for a given window in its normal state, use . This function has been superseded by . XSetNormalHints XSetNormalHints Display *display Window w XSizeHints *hints display Specifies the connection to the X server. w Specifies the window. hints Specifies a pointer to the size hints for the window in its normal state. The function sets the size hints structure for the specified window. Applications use to inform the window manager of the size or position desirable for that window. In addition, an application that wants to move or resize itself should call and specify its new desired location and size as well as making direct Xlib calls to move or resize. This is because window managers may ignore redirected configure requests, but they pay attention to property changes. To set size hints, an application not only must assign values to the appropriate members in the hints structure but also must set the flags member of the structure to indicate which information is present and where it came from. A call to is meaningless, unless the flags member is set to indicate which members of the structure have been assigned values. can generate BadAlloc and BadWindow errors. To return the size hints for a window in its normal state, use . This function has been superseded by . XGetNormalHints Status XGetNormalHints Display *display Window w XSizeHints *hints_return display Specifies the connection to the X server. w Specifies the window. hints_return Returns the size hints for the window in its normal state. The function returns the size hints for a window in its normal state. It returns a nonzero status if it succeeds or zero if the application specified no normal size hints for this window. can generate a BadWindow error. The next two functions set and read the WM_ZOOM_HINTS property. To set the zoom hints for a window, use . This function is no longer supported by the Inter-Client Communication Conventions Manual. XSetZoomHints XSetZoomHints Display *display Window w XSizeHints *zhints display Specifies the connection to the X server. w Specifies the window. zhints Specifies a pointer to the zoom hints. Many window managers think of windows in one of three states: iconic, normal, or zoomed. The function provides the window manager with information for the window in the zoomed state. can generate BadAlloc and BadWindow errors. To read the zoom hints for a window, use . This function is no longer supported by the Inter-Client Communication Conventions Manual. XGetZoomHints Status XGetZoomHints Display *display Window w XSizeHints *zhints_return display Specifies the connection to the X server. w Specifies the window. zhints_return Returns the zoom hints. The function returns the size hints for a window in its zoomed state. It returns a nonzero status if it succeeds or zero if the application specified no zoom size hints for this window. can generate a BadWindow error. To set the value of any property of type WM_SIZE_HINTS, use . This function has been superseded by . XSetSizeHints XSetSizeHints Display *display Window w XSizeHints *hints Atom property display Specifies the connection to the X server. w Specifies the window. hints Specifies a pointer to the size hints. property Specifies the property name. The function sets the XSizeHints structure for the named property and the specified window. This is used by and and can be used to set the value of any property of type WM_SIZE_HINTS. Thus, it may be useful if other properties of that type get defined. can generate BadAlloc, BadAtom, and BadWindow errors. To read the value of any property of type WM_SIZE_HINTS, use . This function has been superseded by . XGetSizeHints Status XGetSizeHints Display *display Window w XSizeHints *hints_return Atom property display Specifies the connection to the X server. w Specifies the window. hints_return Returns the size hints. property Specifies the property name. The function returns the XSizeHints structure for the named property and the specified window. This is used by and . It also can be used to retrieve the value of any property of type WM_SIZE_HINTS. Thus, it may be useful if other properties of that type get defined. returns a nonzero status if a size hint was defined or zero otherwise. can generate BadAtom and BadWindow errors. Getting and Setting an XStandardColormap Structure To get the XStandardColormap structure associated with one of the described atoms, use . This function has been superseded by . XGetStandardColormap Status XGetStandardColormap Display *display Window w XStandardColormap *colormap_return Atom property display Specifies the connection to the X server. w Specifies the window. colormap_return Returns the colormap associated with the specified atom. property Specifies the property name. The function returns the colormap definition associated with the atom supplied as the property argument. returns a nonzero status if successful and zero otherwise. For example, to fetch the standard GrayScale colormap for a display, you use with the following syntax: XGetStandardColormap(dpy, DefaultRootWindow(dpy), &cmap, XA_RGB_GRAY_MAP); See section 14.3 for the semantics of standard colormaps. can generate BadAtom and BadWindow errors. To set a standard colormap, use . This function has been superseded by . XSetStandardColormap XSetStandardColormap Display *display Window w XStandardColormap *colormap Atom property display Specifies the connection to the X server. w Specifies the window. colormap Specifies the colormap. property Specifies the property name. The function usually is only used by window or session managers. can generate BadAlloc, BadAtom, BadDrawable, and BadWindow errors. Parsing Window Geometry To parse window geometry given a user-specified position and a default position, use . This function has been superseded by . Windowdetermining location XGeometry int XGeometry Display *display int screen char *position char *default_position unsigned int bwidth unsigned int fwidth unsigned int fheight int xadder int yadder int *x_return int *y_return int *width_return int *height_return display Specifies the connection to the X server. screen Specifies the screen. position default_position Specify the geometry specifications. bwidth Specifies the border width. fheight fwidth Specify the font height and width in pixels (increment size). xadder yadder Specify additional interior padding needed in the window. x_return y_return Return the x and y offsets. width_return height_return Return the width and height determined. You pass in the border width (bwidth), size of the increments fwidth and fheight (typically font width and height), and any additional interior space (xadder and yadder) to make it easy to compute the resulting size. The function returns the position the window should be placed given a position and a default position. determines the placement of a window using a geometry specification as specified by and the additional information about the window. Given a fully qualified default geometry specification and an incomplete geometry specification, returns a bitmask value as defined above in the call, by using the position argument. The returned width and height will be the width and height specified by default_position as overridden by any user-specified position. They are not affected by fwidth, fheight, xadder, or yadder. The x and y coordinates are computed by using the border width, the screen width and height, padding as specified by xadder and yadder, and the fheight and fwidth times the width and height from the geometry specifications. Getting the X Environment Defaults The function provides a primitive interface to the resource manager facilities discussed in chapter 15. It is only useful in very simple applications. XGetDefault char *XGetDefault Display *display char *program char *option display Specifies the connection to the X server. program Specifies the program name for the Xlib defaults (usually argv[0] of the main program). option Specifies the option name. The function returns the value of the resource prog.option, where prog is the program argument with the directory prefix removed and option must be a single component. Note that multilevel resources cannot be used with . The class "Program.Name" is always used for the resource lookup. If the specified option name does not exist for this program, returns NULL. The strings returned by are owned by Xlib and should not be modified or freed by the client. If a database has been set with , that database is used for the lookup. Otherwise, a database is created and is set in the display (as if by calling ). The database is created in the current locale. To create a database, uses resources from the RESOURCE_MANAGER property on the root window of screen zero. If no such property exists, a resource file in the user's home directory is used. On a POSIX-conformant system, this file is "$HOME/.Xdefaults". Files$HOME/.Xdefaults After loading these defaults, merges additional defaults specified by the XENVIRONMENT environment variable. If XENVIRONMENT is defined, it contains a full path name for the additional resource file. If XENVIRONMENT is not defined, looks for "$HOME/.Xdefaults-name" , where name specifies the name of the machine on which the application is running. X Version 10 Compatibility Functions You can use the X Version 10 compatibility functions to: Draw and fill polygons and curves Associate user data with a value Drawing and Filling Polygons and Curves Xlib provides functions that you can use to draw or fill arbitrary polygons or curves. These functions are provided mainly for compatibility with X Version 10 and have no server support. That is, they call other Xlib functions, not the server directly. Thus, if you just have straight lines to draw, using XDrawLines or XDrawSegments is much faster. The functions discussed here provide all the functionality of the X Version 10 functions , X10 compatibilityXDraw , X10 compatibilityXDrawFilled XDrawPatterned, X10 compatibilityXDrawPatterned XDrawDashed, X10 compatibilityXDrawDashed and XDrawTiled. X10 compatibilityXDrawTiled They are as compatible as possible given X Version 11's new line-drawing functions. One thing to note, however, is that VertexDrawLastPoint is no longer supported. Also, the error status returned is the opposite of what it was under X Version 10 (this is the X Version 11 standard error status). XAppendVertex and XClearVertexFlag from X Version 10 also are not supported. Just how the graphics context you use is set up actually determines whether you get dashes or not, and so on. Lines are properly joined if they connect and include the closing of a closed figure (see ). The functions discussed here fail (return zero) only if they run out of memory or are passed a Vertex list that has a Vertex with VertexStartClosed set that is not followed by a Vertex with VertexEndClosed set. To achieve the effects of the X Version 10 , X10 compatibilityXDraw XDrawDashed, X10 compatibilityXDrawDashed and XDrawPatterned, X10 compatibilityXDrawPatterned use . #include <X11/X10.h> Status XDraw Display *display Drawable d GC gc Vertex *vlist int vcount display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. vlist Specifies a pointer to the list of vertices that indicate what to draw. vcount Specifies how many vertices are in vlist. The function draws an arbitrary polygon or curve. The figure drawn is defined by the specified list of vertices (vlist). The points are connected by lines as specified in the flags in the vertex structure. Each Vertex, as defined in <X11/X10.h>, X11/X10.h Files<X11/X10.h> Headers<X11/X10.h> is a structure with the following members: Vertex typedef struct _Vertex { short x,y; unsigned short flags; } Vertex; The x and y members are the coordinates of the vertex that are relative to either the upper left inside corner of the drawable (if VertexRelative is zero) or the previous vertex (if VertexRelative is one). The flags, as defined in <X11/X10.h>, X11/X10.h Files<X11/X10.h> Headers<X11/X10.h> are as follows: VertexRelative VertexDontDraw VertexCurved VertexStartClosed VertexEndClosed VertexRelative 0x0001 /* else absolute */ VertexDontDraw 0x0002 /* else draw */ VertexCurved 0x0004 /* else straight */ VertexStartClosed 0x0008 /* else not */ VertexEndClosed 0x0010 /* else not */ If VertexRelative is not set, the coordinates are absolute (that is, relative to the drawable's origin). The first vertex must be an absolute vertex. If VertexDontDraw is one, no line or curve is drawn from the previous vertex to this one. This is analogous to picking up the pen and moving to another place before drawing another line. If VertexCurved is one, a spline algorithm is used to draw a smooth curve from the previous vertex through this one to the next vertex. Otherwise, a straight line is drawn from the previous vertex to this one. It makes sense to set VertexCurved to one only if a previous and next vertex are both defined (either explicitly in the array or through the definition of a closed curve). It is permissible for VertexDontDraw bits and VertexCurved bits both to be one. This is useful if you want to define the previous point for the smooth curve but do not want an actual curve drawing to start until this point. If VertexStartClosed is one, then this point marks the beginning of a closed curve. This vertex must be followed later in the array by another vertex whose effective coordinates are identical and that has a VertexEndClosed bit of one. The points in between form a cycle to determine predecessor and successor vertices for the spline algorithm. This function uses these GC components: function, plane-mask, line-width, line-style, cap-style, join-style, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. It also uses these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, and dash-list. To achieve the effects of the X Version 10 XDrawTiled X10 compatibilityXDrawTiled and , X10 compatibilityXDrawFilled use . #include <X11/X10.h> Status XDrawFilled Display *display Drawable d GC gc Vertex *vlist int vcount display Specifies the connection to the X server. d Specifies the drawable. gc Specifies the GC. vlist Specifies a pointer to the list of vertices that indicate what to draw. vcount Specifies how many vertices are in vlist. The function draws arbitrary polygons or curves and then fills them. This function uses these GC components: function, plane-mask, line-width, line-style, cap-style, join-style, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. It also uses these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, dash-list, fill-style, and fill-rule. Associating User Data with a Value These functions have been superseded by the context management functions (see section 16.10). It is often necessary to associate arbitrary information with resource IDs. Xlib provides the XAssocTable functions that you can use to make such an association. Hash Lookup WindowIDs Resource IDs Application programs often need to be able to easily refer to their own data structures when an event arrives. The XAssocTable system provides users of the X library with a method for associating their own data structures with X resources (Pixmaps, Fonts, Windows, and so on). An XAssocTable can be used to type X resources. For example, the user may want to have three or four types of windows, each with different properties. This can be accomplished by associating each X window ID with a pointer to a window property data structure defined by the user. A generic type has been defined in the X library for resource IDs. It is called an XID. There are a few guidelines that should be observed when using an XAssocTable : All XIDs are relative to the specified display. Because of the hashing scheme used by the association mechanism, the following rules for determining the size of a XAssocTable should be followed. Associations will be made and looked up more efficiently if the table size (number of buckets in the hashing system) is a power of two and if there are not more than 8 XIDs per bucket. To return a pointer to a new XAssocTable, use . XCreateAssocTable XAssocTable *XCreateAssocTable int size size Specifies the number of buckets in the hash system of XAssocTable. The size argument specifies the number of buckets in the hash system of XAssocTable. For reasons of efficiency the number of buckets should be a power of two. Some size suggestions might be: use 32 buckets per 100 objects, and a reasonable maximum number of objects per buckets is 8. If an error allocating memory for the XAssocTable occurs, a NULL pointer is returned. To create an entry in a given XAssocTable, use . XMakeAssoc XMakeAssoc Display *display XAssocTable *table XID x_id char *data display Specifies the connection to the X server. table Specifies the assoc table. x_id Specifies the X resource ID. data Specifies the data to be associated with the X resource ID. The function inserts data into an XAssocTable keyed on an XID. Data is inserted into the table only once. Redundant inserts are ignored. The queue in each association bucket is sorted from the lowest XID to the highest XID. To obtain data from a given XAssocTable, use . XLookUpAssoc char *XLookUpAssoc Display *display XAssocTable *table XID x_id display Specifies the connection to the X server. table Specifies the assoc table. x_id Specifies the X resource ID. The function retrieves the data stored in an XAssocTable by its XID. If an appropriately matching XID can be found in the table, returns the data associated with it. If the x_id cannot be found in the table, it returns NULL. To delete an entry from a given XAssocTable, use . XDeleteAssoc XDeleteAssoc Display *display XAssocTable *table XID x_id display Specifies the connection to the X server. table Specifies the assoc table. x_id Specifies the X resource ID. The function deletes an association in an XAssocTable keyed on its XID. Redundant deletes (and deletes of nonexistent XIDs) are ignored. Deleting associations in no way impairs the performance of an XAssocTable. To free the memory associated with a given XAssocTable, use . XDestroyAssocTable XDestroyAssocTable XAssocTable *table table Specifies the assoc table. libX11-1.8.12/specs/libX11/CH12.xml0000644014310600000120000034010214763154126011661 Input Device Functions You can use the Xlib input device functions to: Grab the pointer and individual buttons on the pointer Grab the keyboard and individual keys on the keyboard Resume event processing Move the pointer Set the input focus Manipulate the keyboard and pointer settings Manipulate the keyboard encoding Pointer Grabbing Xlib provides functions that you can use to control input from the pointer, which usually is a mouse. Usually, as soon as keyboard and mouse events occur, the X server delivers them to the appropriate client, which is determined by the window and input focus. The X server provides sufficient control over event delivery to allow window managers to support mouse ahead and various other styles of user interface. Many of these user interfaces depend on synchronous delivery of events. The delivery of pointer and keyboard events can be controlled independently. When mouse buttons or keyboard keys are grabbed, events will be sent to the grabbing client rather than the normal client who would have received the event. If the keyboard or pointer is in asynchronous mode, further mouse and keyboard events will continue to be processed. If the keyboard or pointer is in synchronous mode, no further events are processed until the grabbing client allows them (see ). The keyboard or pointer is considered frozen during this interval. The event that triggered the grab can also be replayed. Note that the logical state of a device (as seen by client applications) may lag the physical state if device event processing is frozen. Active grab There are two kinds of grabs: active and passive. An active grab occurs when a single client grabs the keyboard and/or pointer explicitly (see and ). Passive grab A passive grab occurs when clients grab a particular keyboard key or pointer button in a window, and the grab will activate when the key or button is actually pressed. Passive grabs are convenient for implementing reliable pop-up menus. For example, you can guarantee that the pop-up is mapped before the up pointer button event occurs by grabbing a button requesting synchronous behavior. The down event will trigger the grab and freeze further processing of pointer events until you have the chance to map the pop-up window. You can then allow further event processing. The up event will then be correctly processed relative to the pop-up window. For many operations, there are functions that take a time argument. The X server includes a timestamp in various events. One special time, called CurrentTime Time CurrentTime, represents the current server time. The X server maintains the time when the input focus was last changed, when the keyboard was last grabbed, when the pointer was last grabbed, or when a selection was last changed. Your application may be slow reacting to an event. You often need some way to specify that your request should not occur if another application has in the meanwhile taken control of the keyboard, pointer, or selection. By providing the timestamp from the event in the request, you can arrange that the operation not take effect if someone else has performed an operation in the meanwhile. A timestamp is a time value, expressed in milliseconds. It typically is the time since the last server reset. Timestamp values wrap around (after about 49.7 days). The server, given its current time is represented by timestamp T, always interprets timestamps from clients by treating half of the timestamp space as being later in time than T. One timestamp value, named CurrentTime, is never generated by the server. This value is reserved for use in requests to represent the current server time. For many functions in this section, you pass pointer event mask bits. The valid pointer event mask bits are: ButtonPressMask, ButtonReleaseMask, EnterWindowMask, LeaveWindowMask, PointerMotionMask, PointerMotionHintMask, Button1MotionMask, Button2MotionMask, Button3MotionMask, Button4MotionMask, Button5MotionMask, ButtonMotionMask, and KeymapStateMask. For other functions in this section, you pass keymask bits. The valid keymask bits are: ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, and Mod5Mask. To grab the pointer, use . Grabbingpointer Pointergrabbing XGrabPointer int XGrabPointer Display *display Window grab_window Bool owner_events unsigned int event_mask int pointer_mode int keyboard_mode Window confine_to Cursor cursor Time time display Specifies the connection to the X server. grab_window Specifies the grab window. owner_events Specifies a Boolean value that indicates whether the pointer events are to be reported as usual or reported with respect to the grab window if selected by the event mask. event_mask Specifies which pointer events are reported to the client. The mask is the bitwise inclusive OR of the valid pointer event mask bits. pointer_mode Specifies further processing of pointer events. You can pass GrabModeSync or GrabModeAsync. keyboard_mode Specifies further processing of keyboard events. You can pass GrabModeSync or GrabModeAsync. confine_to Specifies the window to confine the pointer in or None. cursor Specifies the cursor that is to be displayed during the grab or None. time Specifies the time. You can pass either a timestamp or CurrentTime. The function actively grabs control of the pointer and returns GrabSuccess if the grab was successful. Further pointer events are reported only to the grabbing client. overrides any active pointer grab by this client. If owner_events is False, all generated pointer events are reported with respect to grab_window and are reported only if selected by event_mask. If owner_events is True and if a generated pointer event would normally be reported to this client, it is reported as usual. Otherwise, the event is reported with respect to the grab_window and is reported only if selected by event_mask. For either value of owner_events, unreported events are discarded. If the pointer_mode is GrabModeAsync, pointer event processing continues as usual. If the pointer is currently frozen by this client, the processing of events for the pointer is resumed. If the pointer_mode is GrabModeSync, the state of the pointer, as seen by client applications, appears to freeze, and the X server generates no further pointer events until the grabbing client calls or until the pointer grab is released. Actual pointer changes are not lost while the pointer is frozen; they are simply queued in the server for later processing. If the keyboard_mode is GrabModeAsync, keyboard event processing is unaffected by activation of the grab. If the keyboard_mode is GrabModeSync, the state of the keyboard, as seen by client applications, appears to freeze, and the X server generates no further keyboard events until the grabbing client calls or until the pointer grab is released. Actual keyboard changes are not lost while the pointer is frozen; they are simply queued in the server for later processing. If a cursor is specified, it is displayed regardless of what window the pointer is in. If None is specified, the normal cursor for that window is displayed when the pointer is in grab_window or one of its subwindows; otherwise, the cursor for grab_window is displayed. If a confine_to window is specified, the pointer is restricted to stay contained in that window. The confine_to window need have no relationship to the grab_window. If the pointer is not initially in the confine_to window, it is warped automatically to the closest edge just before the grab activates and enter/leave events are generated as usual. If the confine_to window is subsequently reconfigured, the pointer is warped automatically, as necessary, to keep it contained in the window. The time argument allows you to avoid certain circumstances that come up if applications take a long time to respond or if there are long network delays. Consider a situation where you have two applications, both of which normally grab the pointer when clicked on. If both applications specify the timestamp from the event, the second application may wake up faster and successfully grab the pointer before the first application. The first application then will get an indication that the other application grabbed the pointer before its request was processed. generates EnterNotify and LeaveNotify events. Either if grab_window or confine_to window is not viewable or if the confine_to window lies completely outside the boundaries of the root window, fails and returns GrabNotViewable. If the pointer is actively grabbed by some other client, it fails and returns AlreadyGrabbed. If the pointer is frozen by an active grab of another client, it fails and returns GrabFrozen. If the specified time is earlier than the last-pointer-grab time or later than the current X server time, it fails and returns GrabInvalidTime. Otherwise, the last-pointer-grab time is set to the specified time (CurrentTime is replaced by the current X server time). can generate BadCursor, BadValue, and BadWindow errors. To ungrab the pointer, use . Ungrabbingpointer Pointerungrabbing XUngrabPointer XUngrabPointer Display *display Time time display Specifies the connection to the X server. time Specifies the time. You can pass either a timestamp or CurrentTime. The function releases the pointer and any queued events if this client has actively grabbed the pointer from , , or from a normal button press. does not release the pointer if the specified time is earlier than the last-pointer-grab time or is later than the current X server time. It also generates EnterNotify and LeaveNotify events. The X server performs an UngrabPointer request automatically if the event window or confine_to window for an active pointer grab becomes not viewable or if window reconfiguration causes the confine_to window to lie completely outside the boundaries of the root window. To change an active pointer grab, use . Pointergrabbing Changingpointer grab XChangeActivePointerGrab XChangeActivePointerGrab Display *display unsigned int event_mask Cursor cursor Time time display Specifies the connection to the X server. event_mask Specifies which pointer events are reported to the client. The mask is the bitwise inclusive OR of the valid pointer event mask bits. cursor Specifies the cursor that is to be displayed or None. time Specifies the time. You can pass either a timestamp or CurrentTime. The function changes the specified dynamic parameters if the pointer is actively grabbed by the client and if the specified time is no earlier than the last-pointer-grab time and no later than the current X server time. This function has no effect on the passive parameters of an . The interpretation of event_mask and cursor is the same as described in . can generate BadCursor and BadValue errors. To grab a pointer button, use . Grabbingbuttons Buttongrabbing XGrabButton XGrabButton Display *display unsigned int button unsigned int modifiers Window grab_window Bool owner_events unsigned int event_mask int pointer_mode int keyboard_mode Window confine_to Cursor cursor display Specifies the connection to the X server. button Specifies the pointer button that is to be grabbed or AnyButton. modifiers Specifies the set of keymasks or AnyModifier. The mask is the bitwise inclusive OR of the valid keymask bits. grab_window Specifies the grab window. owner_events Specifies a Boolean value that indicates whether the pointer events are to be reported as usual or reported with respect to the grab window if selected by the event mask. event_mask Specifies which pointer events are reported to the client. The mask is the bitwise inclusive OR of the valid pointer event mask bits. pointer_mode Specifies further processing of pointer events. You can pass GrabModeSync or GrabModeAsync. keyboard_mode Specifies further processing of keyboard events. You can pass GrabModeSync or GrabModeAsync. confine_to Specifies the window to confine the pointer in or None. cursor Specifies the cursor that is to be displayed or None. The function establishes a passive grab. In the future, the pointer is actively grabbed (as for ), the last-pointer-grab time is set to the time at which the button was pressed (as transmitted in the ButtonPress event), and the ButtonPress event is reported if all of the following conditions are true: The pointer is not grabbed, and the specified button is logically pressed when the specified modifier keys are logically down, and no other buttons or modifier keys are logically down. The grab_window contains the pointer. The confine_to window (if any) is viewable. A passive grab on the same button/key combination does not exist on any ancestor of grab_window. The interpretation of the remaining arguments is as for . The active grab is terminated automatically when the logical state of the pointer has all buttons released (independent of the state of the logical modifier keys). Note that the logical state of a device (as seen by client applications) may lag the physical state if device event processing is frozen. This request overrides all previous grabs by the same client on the same button/key combinations on the same window. A modifiers of AnyModifier is equivalent to issuing the grab request for all possible modifier combinations (including the combination of no modifiers). It is not required that all modifiers specified have currently assigned KeyCodes. A button of AnyButton is equivalent to issuing the request for all possible buttons. Otherwise, it is not required that the specified button currently be assigned to a physical button. If some other client has already issued an with the same button/key combination on the same window, a BadAccess error results. When using AnyModifier or AnyButton, the request fails completely, and a BadAccess error results (no grabs are established) if there is a conflicting grab for any combination. has no effect on an active grab. can generate BadCursor, BadValue, and BadWindow errors. To ungrab a pointer button, use . Ungrabbingbuttons Buttonungrabbing XUngrabButton XUngrabButton Display *display unsigned int button unsigned int modifiers Window grab_window display Specifies the connection to the X server. button Specifies the pointer button that is to be released or AnyButton. modifiers Specifies the set of keymasks or AnyModifier. The mask is the bitwise inclusive OR of the valid keymask bits. grab_window Specifies the grab window. The function releases the passive button/key combination on the specified window if it was grabbed by this client. A modifiers of AnyModifier is equivalent to issuing the ungrab request for all possible modifier combinations, including the combination of no modifiers. A button of AnyButton is equivalent to issuing the request for all possible buttons. has no effect on an active grab. can generate BadValue and BadWindow errors. Keyboard Grabbing Xlib provides functions that you can use to grab or ungrab the keyboard as well as allow events. For many functions in this section, you pass keymask bits. The valid keymask bits are: ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, and Mod5Mask. To grab the keyboard, use . Keyboardgrabbing Grabbingkeyboard XGrabKeyboard int XGrabKeyboard Display *display Window grab_window Bool owner_events int pointer_mode int keyboard_mode Time time display Specifies the connection to the X server. grab_window Specifies the grab window. owner_events Specifies a Boolean value that indicates whether the keyboard events are to be reported as usual. pointer_mode Specifies further processing of pointer events. You can pass GrabModeSync or GrabModeAsync. keyboard_mode Specifies further processing of keyboard events. You can pass GrabModeSync or GrabModeAsync. time Specifies the time. You can pass either a timestamp or CurrentTime. The function actively grabs control of the keyboard and generates FocusIn and FocusOut events. Further key events are reported only to the grabbing client. overrides any active keyboard grab by this client. If owner_events is False, all generated key events are reported with respect to grab_window. If owner_events is True and if a generated key event would normally be reported to this client, it is reported normally; otherwise, the event is reported with respect to the grab_window. Both KeyPress and KeyRelease events are always reported, independent of any event selection made by the client. If the keyboard_mode argument is GrabModeAsync, keyboard event processing continues as usual. If the keyboard is currently frozen by this client, then processing of keyboard events is resumed. If the keyboard_mode argument is GrabModeSync, the state of the keyboard (as seen by client applications) appears to freeze, and the X server generates no further keyboard events until the grabbing client issues a releasing call or until the keyboard grab is released. Actual keyboard changes are not lost while the keyboard is frozen; they are simply queued in the server for later processing. If pointer_mode is GrabModeAsync, pointer event processing is unaffected by activation of the grab. If pointer_mode is GrabModeSync, the state of the pointer (as seen by client applications) appears to freeze, and the X server generates no further pointer events until the grabbing client issues a releasing call or until the keyboard grab is released. Actual pointer changes are not lost while the pointer is frozen; they are simply queued in the server for later processing. If the keyboard is actively grabbed by some other client, fails and returns AlreadyGrabbed. If grab_window is not viewable, it fails and returns GrabNotViewable. If the keyboard is frozen by an active grab of another client, it fails and returns GrabFrozen. If the specified time is earlier than the last-keyboard-grab time or later than the current X server time, it fails and returns GrabInvalidTime. Otherwise, the last-keyboard-grab time is set to the specified time (CurrentTime is replaced by the current X server time). can generate BadValue and BadWindow errors. To ungrab the keyboard, use . Keyboardungrabbing Ungrabbingkeyboard XUngrabKeyboard XUngrabKeyboard Display *display Time time display Specifies the connection to the X server. time Specifies the time. You can pass either a timestamp or CurrentTime. The function releases the keyboard and any queued events if this client has it actively grabbed from either or . does not release the keyboard and any queued events if the specified time is earlier than the last-keyboard-grab time or is later than the current X server time. It also generates FocusIn and FocusOut events. The X server automatically performs an UngrabKeyboard request if the event window for an active keyboard grab becomes not viewable. To passively grab a single key of the keyboard, use . Keygrabbing Grabbingkeys XGrabKey XGrabKey Display *display int keycode unsigned int modifiers Window grab_window Bool owner_events int pointer_mode int keyboard_mode display Specifies the connection to the X server. keycode Specifies the KeyCode or AnyKey. modifiers Specifies the set of keymasks or AnyModifier. The mask is the bitwise inclusive OR of the valid keymask bits. grab_window Specifies the grab window. owner_events Specifies a Boolean value that indicates whether the keyboard events are to be reported as usual. pointer_mode Specifies further processing of pointer events. You can pass GrabModeSync or GrabModeAsync. keyboard_mode Specifies further processing of keyboard events. You can pass GrabModeSync or GrabModeAsync. The function establishes a passive grab on the keyboard. In the future, the keyboard is actively grabbed (as for ), the last-keyboard-grab time is set to the time at which the key was pressed (as transmitted in the KeyPress event), and the KeyPress event is reported if all of the following conditions are true: The keyboard is not grabbed and the specified key (which can itself be a modifier key) is logically pressed when the specified modifier keys are logically down, and no other modifier keys are logically down. Either the grab_window is an ancestor of (or is) the focus window, or the grab_window is a descendant of the focus window and contains the pointer. A passive grab on the same key combination does not exist on any ancestor of grab_window. The interpretation of the remaining arguments is as for . The active grab is terminated automatically when the logical state of the keyboard has the specified key released (independent of the logical state of the modifier keys). Note that the logical state of a device (as seen by client applications) may lag the physical state if device event processing is frozen. A modifiers argument of AnyModifier is equivalent to issuing the request for all possible modifier combinations (including the combination of no modifiers). It is not required that all modifiers specified have currently assigned KeyCodes. A keycode argument of AnyKey is equivalent to issuing the request for all possible KeyCodes. Otherwise, the specified keycode must be in the range specified by min_keycode and max_keycode in the connection setup, or a BadValue error results. If some other client has issued a with the same key combination on the same window, a BadAccess error results. When using AnyModifier or AnyKey, the request fails completely, and a BadAccess error results (no grabs are established) if there is a conflicting grab for any combination. can generate BadAccess, BadValue, and BadWindow errors. To ungrab a key, use . Keyungrabbing Ungrabbingkeys XUngrabKey XUngrabKey Display *display int keycode unsigned int modifiers Window grab_window display Specifies the connection to the X server. keycode Specifies the KeyCode or AnyKey. modifiers Specifies the set of keymasks or AnyModifier. The mask is the bitwise inclusive OR of the valid keymask bits. grab_window Specifies the grab window. The function releases the key combination on the specified window if it was grabbed by this client. It has no effect on an active grab. A modifiers of AnyModifier is equivalent to issuing the request for all possible modifier combinations (including the combination of no modifiers). A keycode argument of AnyKey is equivalent to issuing the request for all possible key codes. can generate BadValue and BadWindow errors. Resuming Event Processing The previous sections discussed grab mechanisms with which processing of events by the server can be temporarily suspended. This section describes the mechanism for resuming event processing. To allow further events to be processed when the device has been frozen, use . XAllowEvents XAllowEvents Display *display int event_mode Time time display Specifies the connection to the X server. event_mode Specifies the event mode. You can pass AsyncPointer, SyncPointer, AsyncKeyboard, SyncKeyboard, ReplayPointer, ReplayKeyboard, AsyncBoth, or SyncBoth. time Specifies the time. You can pass either a timestamp or CurrentTime. The function releases some queued events if the client has caused a device to freeze. It has no effect if the specified time is earlier than the last-grab time of the most recent active grab for the client or if the specified time is later than the current X server time. Depending on the event_mode argument, the following occurs: AsyncPointer If the pointer is frozen by the client, pointer event processing continues as usual. If the pointer is frozen twice by the client on behalf of two separate grabs, AsyncPointer thaws for both. AsyncPointer has no effect if the pointer is not frozen by the client, but the pointer need not be grabbed by the client. SyncPointer If the pointer is frozen and actively grabbed by the client, pointer event processing continues as usual until the next ButtonPress or ButtonRelease event is reported to the client. At this time, the pointer again appears to freeze. However, if the reported event causes the pointer grab to be released, the pointer does not freeze. SyncPointer has no effect if the pointer is not frozen by the client or if the pointer is not grabbed by the client. ReplayPointer If the pointer is actively grabbed by the client and is frozen as the result of an event having been sent to the client (either from the activation of an or from a previous with mode SyncPointer but not from an ), the pointer grab is released and that event is completely reprocessed. This time, however, the function ignores any passive grabs at or above (toward the root of) the grab_window of the grab just released. The request has no effect if the pointer is not grabbed by the client or if the pointer is not frozen as the result of an event. AsyncKeyboard If the keyboard is frozen by the client, keyboard event processing continues as usual. If the keyboard is frozen twice by the client on behalf of two separate grabs, AsyncKeyboard thaws for both. AsyncKeyboard has no effect if the keyboard is not frozen by the client, but the keyboard need not be grabbed by the client. SyncKeyboard If the keyboard is frozen and actively grabbed by the client, keyboard event processing continues as usual until the next KeyPress or KeyRelease event is reported to the client. At this time, the keyboard again appears to freeze. However, if the reported event causes the keyboard grab to be released, the keyboard does not freeze. SyncKeyboard has no effect if the keyboard is not frozen by the client or if the keyboard is not grabbed by the client. ReplayKeyboard If the keyboard is actively grabbed by the client and is frozen as the result of an event having been sent to the client (either from the activation of an or from a previous with mode SyncKeyboard but not from an ), the keyboard grab is released and that event is completely reprocessed. This time, however, the function ignores any passive grabs at or above (toward the root of) the grab_window of the grab just released. The request has no effect if the keyboard is not grabbed by the client or if the keyboard is not frozen as the result of an event. SyncBoth If both pointer and keyboard are frozen by the client, event processing for both devices continues as usual until the next ButtonPress, ButtonRelease, KeyPress, or KeyRelease event is reported to the client for a grabbed device (button event for the pointer, key event for the keyboard), at which time the devices again appear to freeze. However, if the reported event causes the grab to be released, then the devices do not freeze (but if the other device is still grabbed, then a subsequent event for it will still cause both devices to freeze). SyncBoth has no effect unless both pointer and keyboard are frozen by the client. If the pointer or keyboard is frozen twice by the client on behalf of two separate grabs, SyncBoth thaws for both (but a subsequent freeze for SyncBoth will only freeze each device once). AsyncBoth If the pointer and the keyboard are frozen by the client, event processing for both devices continues as usual. If a device is frozen twice by the client on behalf of two separate grabs, AsyncBoth thaws for both. AsyncBoth has no effect unless both pointer and keyboard are frozen by the client. AsyncPointer, SyncPointer, and ReplayPointer have no effect on the processing of keyboard events. AsyncKeyboard, SyncKeyboard, and ReplayKeyboard have no effect on the processing of pointer events. It is possible for both a pointer grab and a keyboard grab (by the same or different clients) to be active simultaneously. If a device is frozen on behalf of either grab, no event processing is performed for the device. It is possible for a single device to be frozen because of both grabs. In this case, the freeze must be released on behalf of both grabs before events can again be processed. If a device is frozen twice by a single client, then a single releases both. can generate a BadValue error. Moving the Pointer Although movement of the pointer normally should be left to the control of the end user, sometimes it is necessary to move the pointer to a new position under program control. To move the pointer to an arbitrary point in a window, use . XWarpPointer XWarpPointer Display *display Window src_w Window dest_w int src_x int src_y unsigned int src_width unsigned int src_height int dest_x int dest_y display Specifies the connection to the X server. src_w Specifies the source window or None. dest_w Specifies the destination window or None. src_x src_y src_width src_height Specify a rectangle in the source window. dest_x dest_y Specify the x and y coordinates within the destination window. If dest_w is None, moves the pointer by the offsets (dest_x, dest_y) relative to the current position of the pointer. If dest_w is a window, moves the pointer to the offsets (dest_x, dest_y) relative to the origin of dest_w. However, if src_w is a window, the move only takes place if the window src_w contains the pointer and if the specified rectangle of src_w contains the pointer. The src_x and src_y coordinates are relative to the origin of src_w. If src_height is zero, it is replaced with the current height of src_w minus src_y. If src_width is zero, it is replaced with the current width of src_w minus src_x. There is seldom any reason for calling this function. The pointer should normally be left to the user. If you do use this function, however, it generates events just as if the user had instantaneously moved the pointer from one position to another. Note that you cannot use to move the pointer outside the confine_to window of an active pointer grab. An attempt to do so will only move the pointer as far as the closest edge of the confine_to window. can generate a BadWindow error. Controlling Input Focus Xlib provides functions that you can use to set and get the input focus. The input focus is a shared resource, and cooperation among clients is required for correct interaction. See the Inter-Client Communication Conventions Manual for input focus policy. To set the input focus, use . XSetInputFocus XSetInputFocus Display *display Window focus int revert_to Time time display Specifies the connection to the X server. focus Specifies the window, PointerRoot, or None. revert_to Specifies where the input focus reverts to if the window becomes not viewable. You can pass RevertToParent, RevertToPointerRoot, or RevertToNone. time Specifies the time. You can pass either a timestamp or CurrentTime. The function changes the input focus and the last-focus-change time. It has no effect if the specified time is earlier than the current last-focus-change time or is later than the current X server time. Otherwise, the last-focus-change time is set to the specified time (CurrentTime is replaced by the current X server time). causes the X server to generate FocusIn and FocusOut events. Depending on the focus argument, the following occurs: If focus is None, all keyboard events are discarded until a new focus window is set, and the revert_to argument is ignored. If focus is a window, it becomes the keyboard's focus window. If a generated keyboard event would normally be reported to this window or one of its inferiors, the event is reported as usual. Otherwise, the event is reported relative to the focus window. If focus is PointerRoot, the focus window is dynamically taken to be the root window of whatever screen the pointer is on at each keyboard event. In this case, the revert_to argument is ignored. The specified focus window must be viewable at the time is called, or a BadMatch error results. If the focus window later becomes not viewable, the X server evaluates the revert_to argument to determine the new focus window as follows: If revert_to is RevertToParent, the focus reverts to the parent (or the closest viewable ancestor), and the new revert_to value is taken to be RevertToNone. If revert_to is RevertToPointerRoot or RevertToNone, the focus reverts to PointerRoot or None, respectively. When the focus reverts, the X server generates FocusIn and FocusOut events, but the last-focus-change time is not affected. can generate BadMatch, BadValue, and BadWindow errors. To obtain the current input focus, use . XGetInputFocus XGetInputFocus Display *display Window *focus_return int *revert_to_return display Specifies the connection to the X server. focus_return Returns the focus window, PointerRoot, or None. revert_to_return Returns the current focus state (RevertToParent, RevertToPointerRoot, or RevertToNone). The function returns the focus window and the current focus state. Manipulating the Keyboard and Pointer Settings Xlib provides functions that you can use to change the keyboard control, obtain a list of the auto-repeat keys, turn keyboard auto-repeat on or off, ring the bell, set or obtain the pointer button or keyboard mapping, and obtain a bit vector for the keyboard. Keyboardbell volume Keyboardkeyclick volume Keyboardbit vector Mouseprogramming This section discusses the user-preference options of bell, key click, pointer behavior, and so on. The default values for many of these options are server dependent. Not all implementations will actually be able to control all of these parameters. The function changes control of a keyboard and operates on a XKeyboardControl structure: /* Mask bits for ChangeKeyboardControl */ #define KBBellPercent (1L<<0) #define KBBellPitch (1L<<1) #define KBBellDuration (1L<<2) #define KBLed (1L<<3) #define KBLedMode (1L<<4) #define KBKey (1L<<5) #define KBAutoRepeatMode (1L<<6) /* Values */ typedef struct { int key_click_percent; int bell_percent; int bell_pitch; int bell_duration; int led; int led_mode; /* LedModeOn, LedModeOff */ int key; int auto_repeat_mode; /* AutoRepeatModeOff, AutoRepeatModeOn, AutoRepeatModeDefault */ } XKeyboardControl; The key_click_percent member sets the volume for key clicks between 0 (off) and 100 (loud) inclusive, if possible. A setting of -1 restores the default. Other negative values generate a BadValue error. The bell_percent sets the base volume for the bell between 0 (off) and 100 (loud) inclusive, if possible. A setting of -1 restores the default. Other negative values generate a BadValue error. The bell_pitch member sets the pitch (specified in Hz) of the bell, if possible. A setting of -1 restores the default. Other negative values generate a BadValue error. The bell_duration member sets the duration of the bell specified in milliseconds, if possible. A setting of -1 restores the default. Other negative values generate a BadValue error. If both the led_mode and led members are specified, the state of that LED is changed, if possible. The led_mode member can be set to LedModeOn or LedModeOff. If only led_mode is specified, the state of all LEDs are changed, if possible. At most 32 LEDs numbered from one are supported. No standard interpretation of LEDs is defined. If led is specified without led_mode, a BadMatch error results. If both the auto_repeat_mode and key members are specified, the auto_repeat_mode of that key is changed (according to AutoRepeatModeOn, AutoRepeatModeOff, or AutoRepeatModeDefault), if possible. If only auto_repeat_mode is specified, the global auto_repeat_mode for the entire keyboard is changed, if possible, and does not affect the per-key settings. If a key is specified without an auto_repeat_mode, a BadMatch error results. Each key has an individual mode of whether or not it should auto-repeat and a default setting for the mode. In addition, there is a global mode of whether auto-repeat should be enabled or not and a default setting for that mode. When global mode is AutoRepeatModeOn, keys should obey their individual auto-repeat modes. When global mode is AutoRepeatModeOff, no keys should auto-repeat. An auto-repeating key generates alternating KeyPress and KeyRelease events. When a key is used as a modifier, it is desirable for the key not to auto-repeat, regardless of its auto-repeat setting. A bell generator connected with the console but not directly on a keyboard is treated as if it were part of the keyboard. The order in which controls are verified and altered is server-dependent. If an error is generated, a subset of the controls may have been altered. XChangeKeyboardControl XChangeKeyboardControl Display *display unsigned long value_mask XKeyboardControl *values display Specifies the connection to the X server. value_mask Specifies which controls to change. This mask is the bitwise inclusive OR of the valid control mask bits. values Specifies one value for each bit set to 1 in the mask. The function controls the keyboard characteristics defined by the XKeyboardControl structure. The value_mask argument specifies which values are to be changed. can generate BadMatch and BadValue errors. To obtain the current control values for the keyboard, use . XGetKeyboardControl XGetKeyboardControl Display *display XKeyboardState *values_return display Specifies the connection to the X server. values_return Returns the current keyboard controls in the specified XKeyboardState structure. The function returns the current control values for the keyboard to the XKeyboardState structure. XGetKeyboardControl XKeyboardState typedef struct { int key_click_percent; int bell_percent; unsigned int bell_pitch, bell_duration; unsigned long led_mask; int global_auto_repeat; char auto_repeats[32]; } XKeyboardState; For the LEDs, the least significant bit of led_mask corresponds to LED one, and each bit set to 1 in led_mask indicates an LED that is lit. The global_auto_repeat member can be set to AutoRepeatModeOn or AutoRepeatModeOff. The auto_repeats member is a bit vector. Each bit set to 1 indicates that auto-repeat is enabled for the corresponding key. The vector is represented as 32 bytes. Byte N (from 0) contains the bits for keys 8N to 8N + 7 with the least significant bit in the byte representing key 8N. To turn on keyboard auto-repeat, use . XAutoRepeatOn XAutoRepeatOn Display *display display Specifies the connection to the X server. The function turns on auto-repeat for the keyboard on the specified display. To turn off keyboard auto-repeat, use . XAutoRepeatOff XAutoRepeatOff Display *display display Specifies the connection to the X server. The function turns off auto-repeat for the keyboard on the specified display. To ring the bell, use . XBell XBell Display *display int percent display Specifies the connection to the X server. percent Specifies the volume for the bell, which can range from -100 to 100 inclusive. The function rings the bell on the keyboard on the specified display, if possible. The specified volume is relative to the base volume for the keyboard. If the value for the percent argument is not in the range -100 to 100 inclusive, a BadValue error results. The volume at which the bell rings when the percent argument is nonnegative is: base - [(base * percent) / 100] + percent The volume at which the bell rings when the percent argument is negative is: base + [(base * percent) / 100] To change the base volume of the bell, use . can generate a BadValue error. To obtain a bit vector that describes the state of the keyboard, use . XQueryKeymap XQueryKeymap Display *display char keys_return[32] display Specifies the connection to the X server. keys_return Returns an array of bytes that identifies which keys are pressed down. Each bit represents one key of the keyboard. The function returns a bit vector for the logical state of the keyboard, where each bit set to 1 indicates that the corresponding key is currently pressed down. The vector is represented as 32 bytes. Byte N (from 0) contains the bits for keys 8N to 8N + 7 with the least significant bit in the byte representing key 8N. Note that the logical state of a device (as seen by client applications) may lag the physical state if device event processing is frozen. To set the mapping of the pointer buttons, use . XSetPointerMapping int XSetPointerMapping Display *display unsignedchar map[] int nmap display Specifies the connection to the X server. map Specifies the mapping list. nmap Specifies the number of items in the mapping list. The function sets the mapping of the pointer. If it succeeds, the X server generates a MappingNotify event, and returns MappingSuccess. Element map[i] defines the logical button number for the physical button i+1. The length of the list must be the same as would return, or a BadValue error results. A zero element disables a button, and elements are not restricted in value by the number of physical buttons. However, no two elements can have the same nonzero value, or a BadValue error results. If any of the buttons to be altered are logically in the down state, returns MappingBusy, and the mapping is not changed. can generate a BadValue error. To get the pointer mapping, use . XGetPointerMapping int XGetPointerMapping Display *display unsignedchar map_return[] int nmap display Specifies the connection to the X server. map_return Returns the mapping list. nmap Specifies the number of items in the mapping list. The function returns the current mapping of the pointer. Pointer buttons are numbered starting from one. returns the number of physical buttons actually on the pointer. The nominal mapping for a pointer is map[i]=i+1. The nmap argument specifies the length of the array where the pointer mapping is returned, and only the first nmap elements are returned in map_return. To control the pointer's interactive feel, use . XChangePointerControl XChangePointerControl Display *display Bool do_accel Bool do_threshold int accel_numerator int accel_denominator int threshold display Specifies the connection to the X server. do_accel Specifies a Boolean value that controls whether the values for the accel_numerator or accel_denominator are used. do_threshold Specifies a Boolean value that controls whether the value for the threshold is used. accel_numerator Specifies the numerator for the acceleration multiplier. accel_denominator Specifies the denominator for the acceleration multiplier. threshold Specifies the acceleration threshold. The function defines how the pointing device moves. The acceleration, expressed as a fraction, is a multiplier for movement. For example, specifying 3/1 means the pointer moves three times as fast as normal. The fraction may be rounded arbitrarily by the X server. Acceleration only takes effect if the pointer moves more than threshold pixels at once and only applies to the amount beyond the value in the threshold argument. Setting a value to -1 restores the default. The values of the do_accel and do_threshold arguments must be True for the pointer values to be set, or the parameters are unchanged. Negative values (other than -1) generate a BadValue error, as does a zero value for the accel_denominator argument. can generate a BadValue error. To get the current pointer parameters, use . XGetPointerControl XGetPointerControl Display *display int *accel_numerator_return int *accel_denominator_return int *threshold_return display Specifies the connection to the X server. accel_numerator_return Returns the numerator for the acceleration multiplier. accel_denominator_return Returns the denominator for the acceleration multiplier. threshold_return Returns the acceleration threshold. The function returns the pointer's current acceleration multiplier and acceleration threshold. Manipulating the Keyboard Encoding A KeyCode represents a physical (or logical) key. KeyCodes lie in the inclusive range [8,255]. A KeyCode value carries no intrinsic information, although server implementors may attempt to encode geometry (for example, matrix) information in some fashion so that it can be interpreted in a server-dependent fashion. The mapping between keys and KeyCodes cannot be changed. A KeySym is an encoding of a symbol on the cap of a key. The set of defined KeySyms includes the ISO Latin character sets (1-4), Katakana, Arabic, Cyrillic, Greek, Technical, Special, Publishing, APL, Hebrew, Thai, Korean and a miscellany of keys found on keyboards (Return, Help, Tab, and so on). To the extent possible, these sets are derived from international standards. In areas where no standards exist, some of these sets are derived from Digital Equipment Corporation standards. The list of defined symbols can be found in <X11/keysymdef.h>. X11/keysymdef.h Files<X11/keysymdef.h> Headers<X11/keysymdef.h> Unfortunately, some C preprocessors have limits on the number of defined symbols. If you must use KeySyms not in the Latin 1-4, Greek, and miscellaneous classes, you may have to define a symbol for those sets. Most applications usually only include <X11/keysym.h>, X11/keysym.h Files<X11/keysym.h> Headers<X11/keysym.h> which defines symbols for ISO Latin 1-4, Greek, and miscellaneous. A list of KeySyms is associated with each KeyCode. The list is intended to convey the set of symbols on the corresponding key. If the list (ignoring trailing NoSymbol entries) is a single KeySym ``K'', then the list is treated as if it were the list ``K NoSymbol K NoSymbol''. If the list (ignoring trailing NoSymbol entries) is a pair of KeySyms ``K1 K2'', then the list is treated as if it were the list ``K1 K2 K1 K2''. If the list (ignoring trailing NoSymbol entries) is a triple of KeySyms ``K1 K2 K3'', then the list is treated as if it were the list ``K1 K2 K3 NoSymbol''. When an explicit ``void'' element is desired in the list, the value VoidSymbol can be used. The first four elements of the list are split into two groups of KeySyms. Group 1 contains the first and second KeySyms; Group 2 contains the third and fourth KeySyms. Within each group, if the second element of the group is NoSymbol, then the group should be treated as if the second element were the same as the first element, except when the first element is an alphabetic KeySym ``K'' for which both lowercase and uppercase forms are defined. In that case, the group should be treated as if the first element were the lowercase form of ``K'' and the second element were the uppercase form of ``K''. The standard rules for obtaining a KeySym from a KeyPress event make use of only the Group 1 and Group 2 KeySyms; no interpretation of other KeySyms in the list is given. Which group to use is determined by the modifier state. Switching between groups is controlled by the KeySym named MODE SWITCH, by attaching that KeySym to some KeyCode and attaching that KeyCode to any one of the modifiers Mod1 through Mod5. This modifier is called the group modifier. For any KeyCode, Group 1 is used when the group modifier is off, and Group 2 is used when the group modifier is on. The Lock modifier is interpreted as CapsLock when the KeySym named XK_Caps_Lock is attached to some KeyCode and that KeyCode is attached to the Lock modifier. The Lock modifier is interpreted as ShiftLock when the KeySym named XK_Shift_Lock is attached to some KeyCode and that KeyCode is attached to the Lock modifier. If the Lock modifier could be interpreted as both CapsLock and ShiftLock, the CapsLock interpretation is used. The operation of keypad keys is controlled by the KeySym named XK_Num_Lock, by attaching that KeySym to some KeyCode and attaching that KeyCode to any one of the modifiers Mod1 through Mod5. This modifier is called the numlock modifier. The standard KeySyms with the prefix ``XK_KP_'' in their name are called keypad KeySyms; these are KeySyms with numeric value in the hexadecimal range 0xFF80 to 0xFFBD inclusive. In addition, vendor-specific KeySyms in the hexadecimal range 0x11000000 to 0x1100FFFF are also keypad KeySyms. Within a group, the choice of KeySym is determined by applying the first rule that is satisfied from the following list: The numlock modifier is on and the second KeySym is a keypad KeySym. In this case, if the Shift modifier is on, or if the Lock modifier is on and is interpreted as ShiftLock, then the first KeySym is used, otherwise the second KeySym is used. The Shift and Lock modifiers are both off. In this case, the first KeySym is used. The Shift modifier is off, and the Lock modifier is on and is interpreted as CapsLock. In this case, the first KeySym is used, but if that KeySym is lowercase alphabetic, then the corresponding uppercase KeySym is used instead. The Shift modifier is on, and the Lock modifier is on and is interpreted as CapsLock. In this case, the second KeySym is used, but if that KeySym is lowercase alphabetic, then the corresponding uppercase KeySym is used instead. The Shift modifier is on, or the Lock modifier is on and is interpreted as ShiftLock, or both. In this case, the second KeySym is used. No spatial geometry of the symbols on the key is defined by their order in the KeySym list, although a geometry might be defined on a server-specific basis. The X server does not use the mapping between KeyCodes and KeySyms. Rather, it merely stores it for reading and writing by clients. To obtain the legal KeyCodes for a display, use . XDisplayKeycodes XDisplayKeycodes Display *display int *min_keycodes_return int *max_keycodes_return display Specifies the connection to the X server. min_keycodes_return Returns the minimum number of KeyCodes. max_keycodes_return Returns the maximum number of KeyCodes. The function returns the min-keycodes and max-keycodes supported by the specified display. The minimum number of KeyCodes returned is never less than 8, and the maximum number of KeyCodes returned is never greater than 255. Not all KeyCodes in this range are required to have corresponding keys. To obtain the symbols for the specified KeyCodes, use . XGetKeyboardMapping KeySym *XGetKeyboardMapping Display *display KeyCode first_keycode int keycode_count int *keysyms_per_keycode_return display Specifies the connection to the X server. first_keycode Specifies the first KeyCode that is to be returned. keycode_count Specifies the number of KeyCodes that are to be returned. keysyms_per_keycode_return Returns the number of KeySyms per KeyCode. The function returns the symbols for the specified number of KeyCodes starting with first_keycode. The value specified in first_keycode must be greater than or equal to min_keycode as returned by , or a BadValue error results. In addition, the following expression must be less than or equal to max_keycode as returned by : first_keycode + keycode_count - 1 If this is not the case, a BadValue error results. The number of elements in the KeySyms list is: keycode_count * keysyms_per_keycode_return KeySym number N, counting from zero, for KeyCode K has the following index in the list, counting from zero: (K - first_code) * keysyms_per_code_return + N The X server arbitrarily chooses the keysyms_per_keycode_return value to be large enough to report all requested symbols. A special KeySym value of NoSymbol is used to fill in unused elements for individual KeyCodes. To free the storage returned by , use . can generate a BadValue error. To change the keyboard mapping, use . XChangeKeyboardMapping XChangeKeyboardMapping Display *display int first_keycode int keysyms_per_keycode KeySym *keysyms int num_codes display Specifies the connection to the X server. first_keycode Specifies the first KeyCode that is to be changed. keysyms_per_keycode Specifies the number of KeySyms per KeyCode. keysyms Specifies an array of KeySyms. num_codes Specifies the number of KeyCodes that are to be changed. The function defines the symbols for the specified number of KeyCodes starting with first_keycode. The symbols for KeyCodes outside this range remain unchanged. The number of elements in keysyms must be: num_codes * keysyms_per_keycode The specified first_keycode must be greater than or equal to min_keycode returned by , or a BadValue error results. In addition, the following expression must be less than or equal to max_keycode as returned by , or a BadValue error results: first_keycode + num_codes - 1 KeySym number N, counting from zero, for KeyCode K has the following index in keysyms, counting from zero: (K - first_keycode) * keysyms_per_keycode + N The specified keysyms_per_keycode can be chosen arbitrarily by the client to be large enough to hold all desired symbols. A special KeySym value of NoSymbol should be used to fill in unused elements for individual KeyCodes. It is legal for NoSymbol to appear in nontrailing positions of the effective list for a KeyCode. generates a MappingNotify event. There is no requirement that the X server interpret this mapping. It is merely stored for reading and writing by clients. can generate BadAlloc and BadValue errors. The next six functions make use of the XModifierKeymap data structure, which contains: XModifierKeymap typedef struct { int max_keypermod; /* This server's max number of keys per modifier */ KeyCode *modifiermap; /* An 8 by max_keypermod array of the modifiers */ } XModifierKeymap; To create an XModifierKeymap structure, use . XNewModifiermap XModifierKeymap *XNewModifiermap int max_keys_per_mod max_keys_per_mod Specifies the number of KeyCode entries preallocated to the modifiers in the map. The function returns a pointer to XModifierKeymap structure for later use. To add a new entry to an XModifierKeymap structure, use . XInsertModifiermapEntry XModifierKeymap *XInsertModifiermapEntry XModifierKeymap *modmap KeyCode keycode_entry int modifier modmap Specifies the XModifierKeymap structure. keycode_entry Specifies the KeyCode. modifier Specifies the modifier. The function adds the specified KeyCode to the set that controls the specified modifier and returns the resulting XModifierKeymap structure (expanded as needed). To delete an entry from an XModifierKeymap structure, use . XDeleteModifiermapEntry XModifierKeymap *XDeleteModifiermapEntry XModifierKeymap *modmap KeyCode keycode_entry int modifier modmap Specifies the XModifierKeymap structure. keycode_entry Specifies the KeyCode. modifier Specifies the modifier. The function deletes the specified KeyCode from the set that controls the specified modifier and returns a pointer to the resulting XModifierKeymap structure. To destroy an XModifierKeymap structure, use . XFreeModifiermap XFreeModifiermap XModifierKeymap *modmap modmap Specifies the XModifierKeymap structure. The function frees the specified XModifierKeymap structure. To set the KeyCodes to be used as modifiers, use . XSetModifierMapping int XSetModifierMapping Display *display XModifierKeymap *modmap display Specifies the connection to the X server. modmap Specifies the XModifierKeymap structure. The function specifies the KeyCodes of the keys (if any) that are to be used as modifiers. If it succeeds, the X server generates a MappingNotify event, and returns MappingSuccess. X permits at most 8 modifier keys. If more than 8 are specified in the XModifierKeymap structure, a BadLength error results. The modifiermap member of the XModifierKeymap structure contains 8 sets of max_keypermod KeyCodes, one for each modifier in the order Shift, Lock, Control, Mod1, Mod2, Mod3, Mod4, and Mod5. Only nonzero KeyCodes have meaning in each set, and zero KeyCodes are ignored. In addition, all of the nonzero KeyCodes must be in the range specified by min_keycode and max_keycode in the Display structure, or a BadValue error results. An X server can impose restrictions on how modifiers can be changed, for example, if certain keys do not generate up transitions in hardware, if auto-repeat cannot be disabled on certain keys, or if multiple modifier keys are not supported. If some such restriction is violated, the status reply is MappingFailed, and none of the modifiers are changed. If the new KeyCodes specified for a modifier differ from those currently defined and any (current or new) keys for that modifier are in the logically down state, returns MappingBusy, and none of the modifiers is changed. can generate BadAlloc and BadValue errors. To obtain the KeyCodes used as modifiers, use . XGetModifierMapping XModifierKeymap *XGetModifierMapping Display *display display Specifies the connection to the X server. The function returns a pointer to a newly created XModifierKeymap structure that contains the keys being used as modifiers. The structure should be freed after use by calling . If only zero values appear in the set for any modifier, that modifier is disabled. libX11-1.8.12/specs/libX11/glossary.xml0000644014310600000120000017544314763154126013105 Glossary Access control list Access control list X maintains a list of hosts from which client programs can be run. By default, only programs on the local host and hosts specified in an initial list read by the server can use the display. This access control list can be changed by clients on the local host. Some server implementations can also implement other authorization mechanisms in addition to or in place of this mechanism. The action of this mechanism can be conditional based on the authorization protocol name and data received by the server at connection setup. Active grab Active grab A grab is active when the pointer or keyboard is actually owned by the single grabbing client. Ancestors Ancestors If W is an inferior of A, then A is an ancestor of W. Atom Atom An atom is a unique ID corresponding to a string name. Atoms are used to identify properties, types, and selections. Background Background An InputOutput window can have a background, which is defined as a pixmap. When regions of the window have their contents lost or invalidated, the server automatically tiles those regions with the background. Backing store Backing store When a server maintains the contents of a window, the pixels saved off-screen are known as a backing store. Base font name Base font name A font name used to select a family of fonts whose members may be encoded in various charsets. The CharSetRegistry and CharSetEncoding fields of an XLFD name identify the charset of the font. A base font name may be a full XLFD name, with all fourteen '-' delimiters, or an abbreviated XLFD name containing only the first 12 fields of an XLFD name, up to but not including CharSetRegistry, with or without the thirteenth '-', or a non-XLFD name. Any XLFD fields may contain wild cards. When creating an XFontSet, Xlib accepts from the client a list of one or more base font names which select one or more font families. They are combined with charset names obtained from the encoding of the locale to load the fonts required to render text. Bit gravity Bitgravity When a window is resized, the contents of the window are not necessarily discarded. It is possible to request that the server relocate the previous contents to some region of the window (though no guarantees are made). This attraction of window contents for some location of a window is known as bit gravity. Bit plane Bitplane When a pixmap or window is thought of as a stack of bitmaps, each bitmap is called a bit plane or plane. Bitmap Bitmap A bitmap is a pixmap of depth one. Border Border An InputOutput window can have a border of equal thickness on all four sides of the window. The contents of the border are defined by a pixmap, and the server automatically maintains the contents of the border. Exposure events are never generated for border regions. Button grabbing Buttongrabbing Buttons on the pointer can be passively grabbed by a client. When the button is pressed, the pointer is then actively grabbed by the client. Byte order Byteorder For image (pixmap/bitmap) data, the server defines the byte order, and clients with different native byte ordering must swap bytes as necessary. For all other parts of the protocol, the client defines the byte order, and the server swaps bytes as necessary. Character Character A member of a set of elements used for the organization, control, or representation of text (ISO2022, as adapted by XPG3). Note that in ISO2022 terms, a character is not bound to a coded value until it is identified as part of a coded character set. Character glyph Character glyph The abstract graphical symbol for a character. Character glyphs may or may not map one-to-one to font glyphs, and may be context-dependent, varying with the adjacent characters. Multiple characters may map to a single character glyph. Character set Character set A collection of characters. Charset Charset An encoding with a uniform, state-independent mapping from characters to codepoints. A coded character set. For display in X, there can be a direct mapping from a charset to one font, if the width of all characters in the charset is either one or two bytes. A text string encoded in an encoding such as Shift-JIS cannot be passed directly to the X server, because the text imaging requests accept only single-width charsets (either 8 or 16 bits). Charsets which meet these restrictions can serve as ``font charsets''. Font charsets strictly speaking map font indices to font glyphs, not characters to character glyphs. Note that a single font charset is sometimes used as the encoding of a locale, for example, ISO8859-1. Children Children The children of a window are its first-level subwindows. Class Class Windows can be of different classes or types. See the entries for InputOnly and InputOutput windows for further information about valid window types. Client Client An application program connects to the window system server by some interprocess communication (IPC) path, such as a TCP connection or a shared memory buffer. This program is referred to as a client of the window system server. More precisely, the client is the IPC path itself. A program with multiple paths open to the server is viewed as multiple clients by the protocol. Resource lifetimes are controlled by connection lifetimes, not by program lifetimes. Clipping region Clipping region In a graphics context, a bitmap or list of rectangles can be specified to restrict output to a particular region of the window. The image defined by the bitmap or rectangles is called a clipping region. Coded character Coded character A character bound to a codepoint. Coded character set Coded character set A set of unambiguous rules that establishes a character set and the one-to-one relationship between each character of the set and its bit representation. (ISO2022, as adapted by XPG3) A definition of a one-to-one mapping of a set of characters to a set of codepoints. Codepoint Codepoint The coded representation of a single character in a coded character set. Colormap Colormap A colormap consists of a set of entries defining color values. The colormap associated with a window is used to display the contents of the window; each pixel value indexes the colormap to produce an RGB value that drives the guns of a monitor. Depending on hardware limitations, one or more colormaps can be installed at one time so that windows associated with those maps display with true colors. Connection Connection The IPC path between the server and client program is known as a connection. A client program typically (but not necessarily) has one connection to the server over which requests and events are sent. Containment Containment A window contains the pointer if the window is viewable and the hotspot of the cursor is within a visible region of the window or a visible region of one of its inferiors. The border of the window is included as part of the window for containment. The pointer is in a window if the window contains the pointer but no inferior contains the pointer. Coordinate system Coordinate system The coordinate system has X horizontal and Y vertical, with the origin [0, 0] at the upper left. Coordinates are integral and coincide with pixel centers. Each window and pixmap has its own coordinate system. For a window, the origin is inside the border at the inside upper-left corner. Cursor Cursor A cursor is the visible shape of the pointer on a screen. It consists of a hotspot, a source bitmap, a shape bitmap, and a pair of colors. The cursor defined for a window controls the visible appearance when the pointer is in that window. Depth Depth The depth of a window or pixmap is the number of bits per pixel it has. The depth of a graphics context is the depth of the drawables it can be used in conjunction with graphics output. Device Device Keyboards, mice, tablets, track-balls, button boxes, and so on are all collectively known as input devices. Pointers can have one or more buttons (the most common number is three). The core protocol only deals with two devices: the keyboard and the pointer. DirectColor DirectColor DirectColor is a class of colormap in which a pixel value is decomposed into three separate subfields for indexing. The first subfield indexes an array to produce red intensity values. The second subfield indexes a second array to produce blue intensity values. The third subfield indexes a third array to produce green intensity values. The RGB (red, green, and blue) values in the colormap entry can be changed dynamically. Display Display Displaystructure A server, together with its screens and input devices, is called a display. The Xlib Display structure contains all information about the particular display and its screens as well as the state that Xlib needs to communicate with the display over a particular connection. Drawable Drawable Both windows and pixmaps can be used as sources and destinations in graphics operations. These windows and pixmaps are collectively known as drawables. However, an InputOnly window cannot be used as a source or destination in a graphics operation. Encoding Encoding A set of unambiguous rules that establishes a character set and a relationship between the characters and their representations. The character set does not have to be fixed to a finite pre-defined set of characters. The representations do not have to be of uniform length. Examples are an ISO2022 graphic set, a state-independent or state-dependent combination of graphic sets, possibly including control sets, and the X Compound Text encoding. In X, encodings are identified by a string which appears as: the CharSetRegistry and CharSetEncoding components of an XLFD name; the name of a charset of the locale for which a font could not be found; or an atom which identifies the encoding of a text property or which names an encoding for a text selection target type. Encoding names should be composed of characters from the X Portable Character Set. Escapement Escapement The escapement of a string is the distance in pixels in the primary draw direction from the drawing origin to the origin of the next character (that is, the one following the given string) to be drawn. Event Event Clients are informed of information asynchronously by means of events. These events can be either asynchronously generated from devices or generated as side effects of client requests. Events are grouped into types. The server never sends an event to a client unless the client has specifically asked to be informed of that type of event. However, clients can force events to be sent to other clients. Events are typically reported relative to a window. Event mask Eventmask Events are requested relative to a window. The set of event types a client requests relative to a window is described by using an event mask. Event propagation Eventpropagation Device-related events propagate from the source window to ancestor windows until some client has expressed interest in handling that type of event or until the event is discarded explicitly. Event source Eventsource The deepest viewable window that the pointer is in is called the source of a device-related event. Event synchronization Eventsynchronization There are certain race conditions possible when demultiplexing device events to clients (in particular, deciding where pointer and keyboard events should be sent when in the middle of window management operations). The event synchronization mechanism allows synchronous processing of device events. Exposure event EventExposure Servers do not guarantee to preserve the contents of windows when windows are obscured or reconfigured. Exposure events are sent to clients to inform them when contents of regions of windows have been lost. Extension Extension Named extensions to the core protocol can be defined to extend the system. Extensions to output requests, resources, and event types are all possible and expected. Font Font A font is an array of glyphs (typically characters). The protocol does no translation or interpretation of character sets. The client simply indicates values used to index the glyph array. A font contains additional metric information to determine interglyph and interline spacing. Font glyph Font glyph The abstract graphical symbol for an index into a font. Frozen events Frozen events Clients can freeze event processing during keyboard and pointer grabs. GC GC GC is an abbreviation for graphics context. See Graphics context. Glyph Glyph An identified abstract graphical symbol independent of any actual image. (ISO/IEC/DIS 9541-1) An abstract visual representation of a graphic character, not bound to a codepoint. Glyph image Glyph image An image of a glyph, as obtained from a glyph representation displayed on a presentation surface. (ISO/IEC/DIS 9541-1) Grab Grab Keyboard keys, the keyboard, pointer buttons, the pointer, and the server can be grabbed for exclusive use by a client. In general, these facilities are not intended to be used by normal applications but are intended for various input and window managers to implement various styles of user interfaces. Graphics context Graphics context Various information for graphics output is stored in a graphics context (GC), such as foreground pixel, background pixel, line width, clipping region, and so on. A graphics context can only be used with drawables that have the same root and the same depth as the graphics context. Gravity Gravity The contents of windows and windows themselves have a gravity, which determines how the contents move when a window is resized. See Bit gravity and Window gravity. GrayScale GrayScale GrayScale can be viewed as a degenerate case of PseudoColor, in which the red, green, and blue values in any given colormap entry are equal and thus, produce shades of gray. The gray values can be changed dynamically. Host Portable Character Encoding Host Portable Character Encoding The encoding of the X Portable Character Set on the host. The encoding itself is not defined by this standard, but the encoding must be the same in all locales supported by Xlib on the host. If a string is said to be in the Host Portable Character Encoding, then it only contains characters from the X Portable Character Set, in the host encoding. Hotspot Hotspot A cursor has an associated hotspot, which defines the point in the cursor corresponding to the coordinates reported for the pointer. Identifier Identifier An identifier is a unique value associated with a resource that clients use to name that resource. The identifier can be used over any connection to name the resource. Inferiors Inferiors The inferiors of a window are all of the subwindows nested below it: the children, the children's children, and so on. Input focus Inputfocus The input focus is usually a window defining the scope for processing of keyboard input. If a generated keyboard event usually would be reported to this window or one of its inferiors, the event is reported as usual. Otherwise, the event is reported with respect to the focus window. The input focus also can be set such that all keyboard events are discarded and such that the focus window is dynamically taken to be the root window of whatever screen the pointer is on at each keyboard event. Input manager Inputmanager Control over keyboard input is typically provided by an input manager client, which usually is part of a window manager. InputOnly window WindowInputOnly An InputOnly window is a window that cannot be used for graphics requests. InputOnly windows are invisible and are used to control such things as cursors, input event generation, and grabbing. InputOnly windows cannot have InputOutput windows as inferiors. InputOutput window WindowInputOutput An InputOutput window is the normal kind of window that is used for both input and output. InputOutput windows can have both InputOutput and InputOnly windows as inferiors. Internationalization Internationalization The process of making software adaptable to the requirements of different native languages, local customs, and character string encodings. Making a computer program adaptable to different locales without program source modifications or recompilation. ISO2022 ISO2022 ISO standard for code extension techniques for 7-bit and 8-bit coded character sets. Key grabbing Keygrabbing Keys on the keyboard can be passively grabbed by a client. When the key is pressed, the keyboard is then actively grabbed by the client. Keyboard grabbing Keyboardgrabbing A client can actively grab control of the keyboard, and key events will be sent to that client rather than the client the events would normally have been sent to. Keysym Keysym An encoding of a symbol on a keycap on a keyboard. Latin-1 Latin-1 The coded character set defined by the ISO8859-1 standard. Latin Portable Character Encoding Latin Portable Character Encoding The encoding of the X Portable Character Set using the Latin-1 codepoints plus ASCII control characters. If a string is said to be in the Latin Portable Character Encoding, then it only contains characters from the X Portable Character Set, not all of Latin-1. Locale Locale The international environment of a computer program defining the ``localized'' behavior of that program at run-time. This information can be established from one or more sets of localization data. ANSI C defines locale-specific processing by C system library calls. See ANSI C and the X/Open Portability Guide specifications for more details. In this specification, on implementations that conform to the ANSI C library, the ``current locale'' is the current setting of the LC_CTYPE setlocale category. Associated with each locale is a text encoding. When text is processed in the context of a locale, the text must be in the encoding of the locale. The current locale affects Xlib in its: Encoding and processing of input method text Encoding of resource files and values Encoding and imaging of text strings Encoding and decoding for inter-client text communication Locale name Locale name The identifier used to select the desired locale for the host C library and X library functions. On ANSI C library compliant systems, the locale argument to the setlocale function. Localization Localization The process of establishing information within a computer system specific to the operation of particular native languages, local customs and coded character sets. (XPG3) Mapped Mapped window A window is said to be mapped if a map call has been performed on it. Unmapped windows and their inferiors are never viewable or visible. Modifier keys Modifier keys Shift, Control, Meta, Super, Hyper, Alt, Compose, Apple, CapsLock, ShiftLock, and similar keys are called modifier keys. Monochrome Monochrome Monochrome is a special case of StaticGray in which there are only two colormap entries. Multibyte Multibyte A character whose codepoint is stored in more than one byte; any encoding which can contain multibyte characters; text in a multibyte encoding. The ``char *'' null-terminated string datatype in ANSI C. Note that references in this document to multibyte strings imply only that the strings may contain multibyte characters. Obscure Obscure A window is obscured if some other window obscures it. A window can be partially obscured and so still have visible regions. Window A obscures window B if both are viewable InputOutput windows, if A is higher in the global stacking order, and if the rectangle defined by the outside edges of A intersects the rectangle defined by the outside edges of B. Note the distinction between obscures and occludes. Also note that window borders are included in the calculation. Occlude Occlude A window is occluded if some other window occludes it. Window A occludes window B if both are mapped, if A is higher in the global stacking order, and if the rectangle defined by the outside edges of A intersects the rectangle defined by the outside edges of B. Note the distinction between occludes and obscures. Also note that window borders are included in the calculation and that InputOnly windows never obscure other windows but can occlude other windows. Padding Padding Some padding bytes are inserted in the data stream to maintain alignment of the protocol requests on natural boundaries. This increases ease of portability to some machine architectures. Parent window Windowparent If C is a child of P, then P is the parent of C. Passive grab Passive grab Grabbing a key or button is a passive grab. The grab activates when the key or button is actually pressed. Pixel value Pixel value A pixel is an N-bit value, where N is the number of bit planes used in a particular window or pixmap (that is, is the depth of the window or pixmap). A pixel in a window indexes a colormap to derive an actual color to be displayed. Pixmap Pixmap A pixmap is a three-dimensional array of bits. A pixmap is normally thought of as a two-dimensional array of pixels, where each pixel can be a value from 0 to 2N-1, and where N is the depth (z axis) of the pixmap. A pixmap can also be thought of as a stack of N bitmaps. A pixmap can only be used on the screen that it was created in. Plane Plane When a pixmap or window is thought of as a stack of bitmaps, each bitmap is called a plane or bit plane. Plane mask Planemask Graphics operations can be restricted to only affect a subset of bit planes of a destination. A plane mask is a bit mask describing which planes are to be modified. The plane mask is stored in a graphics context. Pointer Pointer The pointer is the pointing device currently attached to the cursor and tracked on the screens. Pointer grabbing Pointergrabbing A client can actively grab control of the pointer. Then button and motion events will be sent to that client rather than the client the events would normally have been sent to. Pointing device Pointing device A pointing device is typically a mouse, tablet, or some other device with effective dimensional motion. The core protocol defines only one visible cursor, which tracks whatever pointing device is attached as the pointer. POSIX POSIX Portable Operating System Interface, ISO/IEC 9945-1 (IEEE Std 1003.1). POSIX Portable Filename Character Set POSIX Portable Filename Character Set The set of 65 characters which can be used in naming files on a POSIX-compliant host that are correctly processed in all locales. The set is: a..z A..Z 0..9 ._- Property Property Windows can have associated properties that consist of a name, a type, a data format, and some data. The protocol places no interpretation on properties. They are intended as a general-purpose naming mechanism for clients. For example, clients might use properties to share information such as resize hints, program names, and icon formats with a window manager. Property list Property list The property list of a window is the list of properties that have been defined for the window. PseudoColor PseudoColor PseudoColor is a class of colormap in which a pixel value indexes the colormap entry to produce an independent RGB value; that is, the colormap is viewed as an array of triples (RGB values). The RGB values can be changed dynamically. Rectangle Rectangle A rectangle specified by [x,y,w,h] has an infinitely thin outline path with corners at [x,y], [x+w,y], [x+w,y+h], and [x, y+h]. When a rectangle is filled, the lower-right edges are not drawn. For example, if w=h=0, nothing would be drawn. For w=h=1, a single pixel would be drawn. Redirecting control Redirecting control Window managers (or client programs) may enforce window layout policy in various ways. When a client attempts to change the size or position of a window, the operation may be redirected to a specified client rather than the operation actually being performed. Reply Reply Information requested by a client program using the X protocol is sent back to the client with a reply. Both events and replies are multiplexed on the same connection. Most requests do not generate replies, but some requests generate multiple replies. Request Request A command to the server is called a request. It is a single block of data sent over a connection. Resource Resource Windows, pixmaps, cursors, fonts, graphics contexts, and colormaps are known as resources. They all have unique identifiers associated with them for naming purposes. The lifetime of a resource usually is bounded by the lifetime of the connection over which the resource was created. RGB values RGB values RGB values are the red, green, and blue intensity values that are used to define a color. These values are always represented as 16-bit, unsigned numbers, with 0 the minimum intensity and 65535 the maximum intensity. The X server scales these values to match the display hardware. Root Root The root of a pixmap or graphics context is the same as the root of whatever drawable was used when the pixmap or GC was created. The root of a window is the root window under which the window was created. Root window Windowroot Each screen has a root window covering it. The root window cannot be reconfigured or unmapped, but otherwise it acts as a full-fledged window. A root window has no parent. Save set Save set The save set of a client is a list of other clients' windows that, if they are inferiors of one of the client's windows at connection close, should not be destroyed and that should be remapped if currently unmapped. Save sets are typically used by window managers to avoid lost windows if the manager should terminate abnormally. Scanline Scanline A scanline is a list of pixel or bit values viewed as a horizontal row (all values having the same y coordinate) of an image, with the values ordered by increasing the x coordinate. Scanline order Scanlineorder An image represented in scanline order contains scanlines ordered by increasing the y coordinate. Screen Screen Screenstructure Displaystructure A server can provide several independent screens, which typically have physically independent monitors. This would be the expected configuration when there is only a single keyboard and pointer shared among the screens. A Screen structure contains the information about that screen and is linked to the Display structure. Selection Selection A selection can be thought of as an indirect property with dynamic type. That is, rather than having the property stored in the X server, it is maintained by some client (the owner). A selection is global and is thought of as belonging to the user and being maintained by clients, rather than being private to a particular window subhierarchy or a particular set of clients. When a client asks for the contents of a selection, it specifies a selection target type, which can be used to control the transmitted representation of the contents. For example, if the selection is ``the last thing the user clicked on,'' and that is currently an image, then the target type might specify whether the contents of the image should be sent in XY format or Z format. The target type can also be used to control the class of contents transmitted; for example, asking for the ``looks'' (fonts, line spacing, indentation, and so forth) of a paragraph selection, rather than the text of the paragraph. The target type can also be used for other purposes. The protocol does not constrain the semantics. Server Server The server, which is also referred to as the X server, provides the basic windowing mechanism. It handles IPC connections from clients, multiplexes graphics requests onto the screens, and demultiplexes input back to the appropriate clients. Server grabbing Servergrabbing The server can be grabbed by a single client for exclusive use. This prevents processing of any requests from other client connections until the grab is completed. This is typically only a transient state for such things as rubber-banding, pop-up menus, or executing requests indivisibly. Shift sequence Shift sequence ISO2022 defines control characters and escape sequences which temporarily (single shift) or permanently (locking shift) cause a different character set to be in effect (``invoking'' a character set). Sibling Sibling Children of the same parent window are known as sibling windows. Stacking order Stacking order Sibling windows, similar to sheets of paper on a desk, can stack on top of each other. Windows above both obscure and occlude lower windows. The relationship between sibling windows is known as the stacking order. State-dependent encoding State-dependent encoding An encoding in which an invocation of a charset can apply to multiple characters in sequence. A state-dependent encoding begins in an ``initial state'' and enters other ``shift states'' when specific ``shift sequences'' are encountered in the byte sequence. In ISO2022 terms, this means use of locking shifts, not single shifts. State-independent encoding State-independent encoding Any encoding in which the invocations of the charsets are fixed, or span only a single character. In ISO2022 terms, this means use of at most single shifts, not locking shifts. StaticColor StaticColor StaticColor can be viewed as a degenerate case of PseudoColor in which the RGB values are predefined and read-only. StaticGray StaticGray StaticGray can be viewed as a degenerate case of GrayScale in which the gray values are predefined and read-only. The values are typically linear or near-linear increasing ramps. Status Status Many Xlib functions return a success status. If the function does not succeed, however, its arguments are not disturbed. Stipple Stipple A stipple pattern is a bitmap that is used to tile a region to serve as an additional clip mask for a fill operation with the foreground color. STRING encoding Latin-1, plus tab and newline. String Equivalence String Equivalence Two ISO Latin-1 STRING8 values are considered equal if they are the same length and if corresponding bytes are either equal or are equivalent as follows: decimal values 65 to 90 inclusive (characters ``A'' to ``Z'') are pairwise equivalent to decimal values 97 to 122 inclusive (characters ``a'' to ``z''), decimal values 192 to 214 inclusive (characters ``A grave'' to ``O diaeresis'') are pairwise equivalent to decimal values 224 to 246 inclusive (characters ``a grave'' to ``o diaeresis''), and decimal values 216 to 222 inclusive (characters ``O oblique'' to ``THORN'') are pairwise equivalent to decimal values 246 to 254 inclusive (characters ``o oblique'' to ``thorn''). Tile Tile A pixmap can be replicated in two dimensions to tile a region. The pixmap itself is also known as a tile. Timestamp Timestamp A timestamp is a time value expressed in milliseconds. It is typically the time since the last server reset. Timestamp values wrap around (after about 49.7 days). The server, given its current time is represented by timestamp T, always interprets timestamps from clients by treating half of the timestamp space as being earlier in time than T and half of the timestamp space as being later in time than T. One timestamp value, represented by the constant CurrentTime, is never generated by the server. This value is reserved for use in requests to represent the current server time. TrueColor TrueColor TrueColor can be viewed as a degenerate case of DirectColor in which the subfields in the pixel value directly encode the corresponding RGB values. That is, the colormap has predefined read-only RGB values. The values are typically linear or near-linear increasing ramps. Type Type A type is an arbitrary atom used to identify the interpretation of property data. Types are completely uninterpreted by the server. They are solely for the benefit of clients. X predefines type atoms for many frequently used types, and clients also can define new types. Viewable Viewable A window is viewable if it and all of its ancestors are mapped. This does not imply that any portion of the window is actually visible. Graphics requests can be performed on a window when it is not viewable, but output will not be retained unless the server is maintaining backing store. Visible Visible A region of a window is visible if someone looking at the screen can actually see it; that is, the window is viewable and the region is not occluded by any other window. Whitespace Whitespace Any spacing character. On implementations that conform to the ANSI C library, whitespace is any character for which isspace returns true. Window gravity Windowgravity When windows are resized, subwindows may be repositioned automatically relative to some position in the window. This attraction of a subwindow to some part of its parent is known as window gravity. Window manager Windowmanager Manipulation of windows on the screen and much of the user interface (policy) is typically provided by a window manager client. X Portable Character Set X Portable Character Set A basic set of 97 characters which are assumed to exist in all locales supported by Xlib. This set contains the following characters: a..z A..Z 0..9 !"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ <space>, <tab>, and <newline> This is the left/lower half (also called the G0 set) of the graphic character set of ISO8859-1 plus <space>, <tab>, and <newline>. It is also the set of graphic characters in 7-bit ASCII plus the same three control characters. The actual encoding of these characters on the host is system dependent; see the Host Portable Character Encoding. XLFD XLFD The X Logical Font Description Conventions that define a standard syntax for structured font names. XY format XY format The data for a pixmap is said to be in XY format if it is organized as a set of bitmaps representing individual bit planes with the planes appearing from most-significant to least-significant bit order. Z format Z format The data for a pixmap is said to be in Z format if it is organized as a set of pixel values in scanline order. References Draft Proposed Multibyte Extension of ANSI C, Draft 1.1 November 30, 1989 SC22/C WG/SWG IPSJ/ITSCJ Japan ISO2022: Information processing - ISO 7-bit and 8-bit coded character sets - Code extension techniques. ISO8859-1: Information processing - 8-bit single-byte coded graphic character sets - Part 1: Latin alphabet No. 1. <acronym>POSIX</acronym>: Information Technology - Portable Operating System Interface (<acronym>POSIX</acronym>) - Part 1: System Application Program Interface (API) [C Language], ISO/IEC 9945-1. Text of ISO/IEC/DIS 9541-1, Information Processing - Font Information Interchange - Part 1: Architecture. X/Open Portability Guide, Issue 3, December 1988 (XPG3), X/Open Company, Ltd, Prentice-Hall, Inc. 1989. ISBN 0-13-685835-8. (See especially Volume 3: XSI Supplementary Definitions.) libX11-1.8.12/specs/libX11/CH15.xml0000644014310600000120000023253514763154126011676 Resource Manager Functions A program often needs a variety of options in the X environment (for example, fonts, colors, icons, and cursors). Specifying all of these options on the command line is awkward because users may want to customize many aspects of the program and need a convenient way to establish these customizations as the default settings. The resource manager is provided for this purpose. Resource specifications are usually stored in human-readable files and in server properties. The resource manager is a database manager with a twist. In most database systems, you perform a query using an imprecise specification, and you get back a set of records. The resource manager, however, allows you to specify a large set of values with an imprecise specification, to query the database with a precise specification, and to get back only a single value. This should be used by applications that need to know what the user prefers for colors, fonts, and other resources. It is this use as a database for dealing with X resources that inspired the name "Resource Manager," although the resource manager can be and is used in other ways. For example, a user of your application may want to specify that all windows should have a blue background but that all mail-reading windows should have a red background. With well-engineered and coordinated applications, a user can define this information using only two lines of specifications. As an example of how the resource manager works, consider a mail-reading application called xmh. Assume that it is designed so that it uses a complex window hierarchy all the way down to individual command buttons, which may be actual small subwindows in some toolkits. These are often called objects or widgets. In such toolkit systems, each user interface object can be composed of other objects and can be assigned a name and a class. Fully qualified names or classes can have arbitrary numbers of component names, but a fully qualified name always has the same number of component names as a fully qualified class. This generally reflects the structure of the application as composed of these objects, starting with the application itself. For example, the xmh mail program has a name "xmh" and is one of a class of "Mail" programs. By convention, the first character of class components is capitalized, and the first letter of name components is in lowercase. Each name and class finally has an attribute (for example, "foreground" or "font"). If each window is properly assigned a name and class, it is easy for the user to specify attributes of any portion of the application. At the top level, the application might consist of a paned window (that is, a window divided into several sections) named "toc". One pane of the paned window is a button box window named "buttons" and is filled with command buttons. One of these command buttons is used to incorporate new mail and has the name "incorporate". This window has a fully qualified name, "xmh.toc.buttons.incorporate", and a fully qualified class, "Xmh.Paned.Box.Command". Its fully qualified name is the name of its parent, "xmh.toc.buttons", followed by its name, "incorporate". Its class is the class of its parent, "Xmh.Paned.Box", followed by its particular class, "Command". The fully qualified name of a resource is the attribute's name appended to the object's fully qualified name, and the fully qualified class is its class appended to the object's class. The incorporate button might need the following resources: Title string, Font, Foreground color for its inactive state, Background color for its inactive state, Foreground color for its active state, and Background color for its active state. Each resource is considered to be an attribute of the button and, as such, has a name and a class. For example, the foreground color for the button in its active state might be named "activeForeground", and its class might be "Foreground". When an application looks up a resource (for example, a color), it passes the complete name and complete class of the resource to a look-up routine. The resource manager compares this complete specification against the incomplete specifications of entries in the resource database, finds the best match, and returns the corresponding value for that entry. The definitions for the resource manager are contained in <X11/Xresource.h>. X11/Xresource.h Files<X11/Xresource.h> Headers<X11/Xresource.h> Resource File Syntax The syntax of a resource file is a sequence of resource lines terminated by newline characters or the end of the file. The syntax of an individual resource line is: ResourceLine = Comment | IncludeFile | ResourceSpec | <empty line> Comment = "!" {<any character except null or newline>} IncludeFile = "#" WhiteSpace "include" WhiteSpace FileName WhiteSpace FileName = <valid filename for operating system> ResourceSpec = WhiteSpace ResourceName WhiteSpace ":" WhiteSpace Value ResourceName = [Binding] {Component Binding} ComponentName Binding = "." | "*" WhiteSpace = {<space> | <horizontal tab>} Component = "?" | ComponentName ComponentName = NameChar {NameChar} NameChar = "a"-"z" | "A"-"Z" | "0"-"9" | "_" | "-" Value = {<any character except null or unescaped newline>} Elements separated by vertical bar (|) are alternatives. Curly braces ({......}) indicate zero or more repetitions of the enclosed elements. Square brackets ([......]) indicate that the enclosed element is optional. Quotes ("......") are used around literal characters. IncludeFile lines are interpreted by replacing the line with the contents of the specified file. The word "include" must be in lowercase. The file name is interpreted relative to the directory of the file in which the line occurs (for example, if the file name contains no directory or contains a relative directory specification). If a ResourceName contains a contiguous sequence of two or more Binding characters, the sequence will be replaced with a single ".." character if the sequence contains only ".." characters; otherwise, the sequence will be replaced with a single "*" character. A resource database never contains more than one entry for a given ResourceName. If a resource file contains multiple lines with the same ResourceName, the last line in the file is used. Any white space characters before or after the name or colon in a ResourceSpec are ignored. To allow a Value to begin with white space, the two-character sequence "\\space" (backslash followed by space) is recognized and replaced by a space character, and the two-character sequence "\\tab" (backslash followed by horizontal tab) is recognized and replaced by a horizontal tab character. To allow a Value to contain embedded newline characters, the two-character sequence "\\n" is recognized and replaced by a newline character. To allow a Value to be broken across multiple lines in a text file, the two-character sequence "\\newline" (backslash followed by newline) is recognized and removed from the value. To allow a Value to contain arbitrary character codes, the four-character sequence "\\nnn", where each n is a digit character in the range of "0"-"7", is recognized and replaced with a single byte that contains the octal value specified by the sequence. Finally, the two-character sequence "\newline" is recognized and replaced with a single backslash. As an example of these sequences, the following resource line contains a value consisting of four characters: a backslash, a null, a "z", and a newline: magic.values: \\000\ z\n Resource Manager Matching Rules The algorithm for determining which resource database entry matches a given query is the heart of the resource manager. All queries must fully specify the name and class of the desired resource (use of the characters "*" and "?" is not permitted). The library supports up to 100 components in a full name or class. Resources are stored in the database with only partially specified names and classes, using pattern matching constructs. An asterisk (*) is a loose binding and is used to represent any number of intervening components, including none. A period (.) is a tight binding and is used to separate immediately adjacent components. A question mark (?) is used to match any single component name or class. A database entry cannot end in a loose binding; the final component (which cannot be the character "?") must be specified. The lookup algorithm searches the database for the entry that most closely matches (is most specific for) the full name and class being queried. When more than one database entry matches the full name and class, precedence rules are used to select just one. The full name and class are scanned from left to right (from highest level in the hierarchy to lowest), one component at a time. At each level, the corresponding component and/or binding of each matching entry is determined, and these matching components and bindings are compared according to precedence rules. Each of the rules is applied at each level before moving to the next level, until a rule selects a single entry over all others. The rules, in order of precedence, are: An entry that contains a matching component (whether name, class, or the character "?") takes precedence over entries that elide the level (that is, entries that match the level in a loose binding). An entry with a matching name takes precedence over both entries with a matching class and entries that match using the character "?". An entry with a matching class takes precedence over entries that match using the character "?". An entry preceded by a tight binding takes precedence over entries preceded by a loose binding. To illustrate these rules, consider the following resource database entries: xmh*Paned*activeForeground: red (entry A) *incorporate.Foreground: blue (entry B) xmh.toc*Command*activeForeground: green (entry C) xmh.toc*?.Foreground: white (entry D) xmh.toc*Command.activeForeground: black (entry E) Consider a query for the resource: xmh.toc.messagefunctions.incorporate.activeForeground (name) Xmh.Paned.Box.Command.Foreground (class) At the first level (xmh, Xmh), rule 1 eliminates entry B. At the second level (toc, Paned), rule 2 eliminates entry A. At the third level (messagefunctions, Box), no entries are eliminated. At the fourth level (incorporate, Command), rule 2 eliminates entry D. At the fifth level (activeForeground, Foreground), rule 3 eliminates entry C. Quarks Most uses of the resource manager involve defining names, classes, and representation types as string constants. However, always referring to strings in the resource manager can be slow, because it is so heavily used in some toolkits. To solve this problem, a shorthand for a string is used in place of the string in many of the resource manager functions. Simple comparisons can be performed rather than string comparisons. The shorthand name for a string is called a quark and is the type XrmQuark. On some occasions, you may want to allocate a quark that has no string equivalent. A quark is to a string what an atom is to a string in the server, but its use is entirely local to your application. To allocate a new quark, use XrmUniqueQuark. XrmUniqueQuark XrmQuark XrmUniqueQuark The XrmUniqueQuark function allocates a quark that is guaranteed not to represent any string that is known to the resource manager. Each name, class, and representation type is typedef'd as an XrmQuark. typedef int XrmQuark, *XrmQuarkList; typedef XrmQuark XrmName; typedef XrmQuark XrmClass; typedef XrmQuark XrmRepresentation; #define NULLQUARK ((XrmQuark) 0) Lists are represented as null-terminated arrays of quarks. The size of the array must be large enough for the number of components used. typedef XrmQuarkList XrmNameList; typedef XrmQuarkList XrmClassList; To convert a string to a quark, use or XrmPermStringToQuark. #define XrmStringToName(string) XrmStringToQuark(string) #define XrmStringToClass(string) XrmStringToQuark(string) #define XrmStringToRepresentation(string) XrmStringToQuark(string) XrmStringToQuark XrmPermStringToQuark XrmQuark XrmStringToQuark char *string string Specifies the string for which a quark(Ql is to be allocated. These functions can be used to convert from string to quark representation. If the string is not in the Host Portable Character Encoding, the conversion is implementation-dependent. The string argument to need not be permanently allocated storage. XrmPermStringToQuark is just like , except that Xlib is permitted to assume the string argument is permanently allocated, and, hence, that it can be used as the value to be returned by . For any given quark, if returns a non-NULL value, all future calls will return the same value (identical address). To convert a quark to a string, use . #define XrmNameToString(name) XrmQuarkToString(name) #define XrmClassToString(class) XrmQuarkToString(name) #define XrmRepresentationToString(type) XrmQuarkToString(type) XrmQuarkToString char *XrmQuarkToString XrmQuark quark quark Specifies the quark for which the equivalent string is desired. These functions can be used to convert from quark representation to string. The string pointed to by the return value must not be modified or freed. The returned string is byte-for-byte equal to the original string passed to one of the string-to-quark routines. If no string exists for that quark, returns NULL. For any given quark, if returns a non-NULL value, all future calls will return the same value (identical address). To convert a string with one or more components to a quark list, use . #define XrmStringToNameList(str,name) XrmStringToQuarkList((str), (name)) #define XrmStringToClassList(str,class) XrmStringToQuarkList((str), (class)) XrmStringToQuarkList void XrmStringToQuarkList char *string XrmQuarkList quarks_return string Specifies the string for which a quark list is to be allocated. quarks_return Returns the list of quarks. The caller must allocate sufficient space for the quarks list before calling . The function converts the null-terminated string (generally a fully qualified name) to a list of quarks. Note that the string must be in the valid ResourceName format (see section 15.1). If the string is not in the Host Portable Character Encoding, the conversion is implementation-dependent. A binding list is a list of type XrmBindingList and indicates if components of name or class lists are bound tightly or loosely (that is, if wildcarding of intermediate components is specified). typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList; XrmBindTightly indicates that a period separates the components, and XrmBindLoosely indicates that an asterisk separates the components. To convert a string with one or more components to a binding list and a quark list, use . XrmStringToBindingQuarkList XrmStringToBindingQuarkList char *string XrmBindingList bindings_return XrmQuarkList quarks_return string Specifies the string for which a quark list is to be allocated. bindings_return Returns the binding list. The caller must allocate sufficient space for the binding list before calling . quarks_return Returns the list of quarks. The caller must allocate sufficient space for the quarks list before calling . Component names in the list are separated by a period or an asterisk character. The string must be in the format of a valid ResourceName (see section 15.1). If the string does not start with a period or an asterisk, a tight binding is assumed. For example, the string ``*a.b*c'' becomes: quarks: a b c bindings: loose tight loose Creating and Storing Databases XrmDatabase A resource database is an opaque type, XrmDatabase. Each database value is stored in an XrmValue structure. This structure consists of a size, an address, and a representation type. The size is specified in bytes. The representation type is a way for you to store data tagged by some application-defined type (for example, the strings ``font'' or ``color''). It has nothing to do with the C data type or with its class. The XrmValue structure is defined as: XrmValue typedef struct { unsigned int size; XPointer addr; } XrmValue, *XrmValuePtr; To initialize the resource manager, use . XrmInitialize void XrmInitialize void XrmInitialize(\|) To retrieve a database from disk, use . XrmGetFileDatabase XrmDatabase XrmGetFileDatabase char *filename filename Specifies the resource database file name. The function opens the specified file, creates a new resource database, and loads it with the specifications read in from the specified file. The specified file should contain a sequence of entries in valid ResourceLine format (see section 15.1); the database that results from reading a file with incorrect syntax is implementation-dependent. The file is parsed in the current locale, and the database is created in the current locale. If it cannot open the specified file, returns NULL. To store a copy of a database to disk, use . XrmPutFileDatabase void XrmPutFileDatabase XrmDatabase database char *stored_db database Specifies the database that is to be used. stored_db Specifies the file name for the stored database. The function stores a copy of the specified database in the specified file. Text is written to the file as a sequence of entries in valid ResourceLine format (see section 15.1). The file is written in the locale of the database. Entries containing resource names that are not in the Host Portable Character Encoding or containing values that are not in the encoding of the database locale, are written in an implementation-dependent manner. The order in which entries are written is implementation-dependent. Entries with representation types other than ``String'' are ignored. To obtain a pointer to the screen-independent resources of a display, use . XResourceManagerString char *XResourceManagerString Display *display display Specifies the connection to the X server. The function returns the RESOURCE_MANAGER property from the server's root window of screen zero, which was returned when the connection was opened using . The property is converted from type STRING to the current locale. The conversion is identical to that produced by for a single element STRING property. The returned string is owned by Xlib and should not be freed by the client. The property value must be in a format that is acceptable to . If no property exists, NULL is returned. To obtain a pointer to the screen-specific resources of a screen, use . XScreenResourceString char *XScreenResourceString Screen *screen screen Specifies the screen. The function returns the SCREEN_RESOURCES property from the root window of the specified screen. The property is converted from type STRING to the current locale. The conversion is identical to that produced by for a single element STRING property. The property value must be in a format that is acceptable to . If no property exists, NULL is returned. The caller is responsible for freeing the returned string by using . To create a database from a string, use . XrmGetStringDatabase XrmDatabase XrmGetStringDatabase char *data data Specifies the database contents using a string. The function creates a new database and stores the resources specified in the specified null-terminated string. is similar to except that it reads the information out of a string instead of out of a file. The string should contain a sequence of entries in valid ResourceLine format (see section 15.1) terminated by a null character; the database that results from using a string with incorrect syntax is implementation-dependent. The string is parsed in the current locale, and the database is created in the current locale. To obtain the locale name of a database, use . XrmLocaleOfDatabase char *XrmLocaleOfDatabase XrmDatabase database database Specifies the resource database. The function returns the name of the locale bound to the specified database, as a null-terminated string. The returned locale name string is owned by Xlib and should not be modified or freed by the client. Xlib is not permitted to free the string until the database is destroyed. Until the string is freed, it will not be modified by Xlib. To destroy a resource database and free its allocated memory, use . XrmDestroyDatabase void XrmDestroyDatabase XrmDatabase database database Specifies the resource database. If database is NULL, returns immediately. To associate a resource database with a display, use . XrmSetDatabase void XrmSetDatabase Display *display XrmDatabase database display Specifies the connection to the X server. database Specifies the resource database. The function associates the specified resource database (or NULL) with the specified display. The database previously associated with the display (if any) is not destroyed. A client or toolkit may find this function convenient for retaining a database once it is constructed. To get the resource database associated with a display, use . XrmGetDatabase XrmDatabase XrmGetDatabase Display *display display Specifies the connection to the X server. The function returns the database associated with the specified display. It returns NULL if a database has not yet been set. Merging Resource Databases To merge the contents of a resource file into a database, use . XrmCombineFileDatabase Status XrmCombineFileDatabase char *filename XrmDatabase *target_db Bool override filename Specifies the resource database file name. target_db Specifies the resource database into which the source database is to be merged. override Specifies whether source entries override target ones. The function merges the contents of a resource file into a database. If the same specifier is used for an entry in both the file and the database, the entry in the file will replace the entry in the database if override is True; otherwise, the entry in the file is discarded. The file is parsed in the current locale. If the file cannot be read, a zero status is returned; otherwise, a nonzero status is returned. If target_db contains NULL, creates and returns a new database to it. Otherwise, the database pointed to by target_db is not destroyed by the merge. The database entries are merged without changing values or types, regardless of the locale of the database. The locale of the target database is not modified. To merge the contents of one database into another database, use . XrmCombineDatabase void XrmCombineDatabase XrmDatabase source_db XrmDatabase *target_db Bool override source_db Specifies the resource database that is to be merged into the target database. target_db Specifies the resource database into which the source database is to be merged. override Specifies whether source entries override target ones. The function merges the contents of one database into another. If the same specifier is used for an entry in both databases, the entry in the source_db will replace the entry in the target_db if override is True; otherwise, the entry in source_db is discarded. If target_db contains NULL, simply stores source_db in it. Otherwise, source_db is destroyed by the merge, but the database pointed to by target_db is not destroyed. The database entries are merged without changing values or types, regardless of the locales of the databases. The locale of the target database is not modified. To merge the contents of one database into another database with override semantics, use . XrmMergeDatabases void XrmMergeDatabases XrmDatabase source_db XrmDatabase *target_db source_db Specifies the resource database that is to be merged into the target database. target_db Specifies the resource database into which the source database is to be merged. Calling the function is equivalent to calling the function with an override argument of True. Looking Up Resources To retrieve a resource from a resource database, use , , or . XrmGetResource Bool XrmGetResource XrmDatabase database char *str_name char *str_class char **str_type_return XrmValue *value_return database Specifies the database that is to be used. str_name Specifies the fully qualified name of the value being retrieved (as a string). str_class Specifies the fully qualified class of the value being retrieved (as a string). str_type_return Returns the representation type of the destination (as a string). value_return Returns the value in the database. XrmQGetResource Bool XrmQGetResource XrmDatabase database XrmNameList quark_name XrmClassList quark_class XrmRepresentation *quark_type_return XrmValue *value_return database Specifies the database that is to be used. quark_name Specifies the fully qualified name of the value being retrieved (as a quark). quark_class Specifies the fully qualified class of the value being retrieved (as a quark). quark_type_return Returns the representation type of the destination (as a quark). value_return Returns the value in the database. The and functions retrieve a resource from the specified database. Both take a fully qualified name/class pair, a destination resource representation, and the address of a value (size/address pair). The value and returned type point into database memory; therefore, you must not modify the data. The database only frees or overwrites entries on , , or . A client that is not storing new values into the database or is not merging the database should be safe using the address passed back at any time until it exits. If a resource was found, both and return True; otherwise, they return False. Most applications and toolkits do not make random probes into a resource database to fetch resources. The X toolkit access pattern for a resource database is quite stylized. A series of from 1 to 20 probes is made with only the last name/class differing in each probe. The function is at worst a 2n algorithm, where n is the length of the name/class list. This can be improved upon by the application programmer by prefetching a list of database levels that might match the first part of a name/class list. To obtain a list of database levels, use XrmQGetSearchList. XrmQGetSearchList Bool XrmQGetSearchResource XrmDatabase database XrmNameList names XrmClassList classes XrmSearchList list_return int list_length database Specifies the database that is to be used. names Specifies a list of resource names. classes Specifies a list of resource classes. list_return Returns a search list for further use. The caller must allocate sufficient space for the list before calling XrmQGetSearchList. list_length Specifies the number of entries (not the byte size) allocated for list_return. The XrmQGetSearchList function takes a list of names and classes and returns a list of database levels where a match might occur. The returned list is in best-to-worst order and uses the same algorithm as for determining precedence. If list_return was large enough for the search list, XrmQGetSearchList returns True; otherwise, it returns False. The size of the search list that the caller must allocate is dependent upon the number of levels and wildcards in the resource specifiers that are stored in the database. The worst case length is 3n, where n is the number of name or class components in names or classes. When using XrmQGetSearchList followed by multiple probes for resources with a common name and class prefix, only the common prefix should be specified in the name and class list to XrmQGetSearchList. To search resource database levels for a given resource, use . XrmQGetSearchResource Bool XrmQGetSearchResource XrmSearchList list XrmName name XrmClass class XrmRepresentation *type_return XrmValue *value_return list Specifies the search list returned by XrmQGetSearchList. name Specifies the resource name. class Specifies the resource class. type_return Returns data representation type. value_return Returns the value in the database. The function searches the specified database levels for the resource that is fully identified by the specified name and class. The search stops with the first match. returns True if the resource was found; otherwise, it returns False. A call to XrmQGetSearchList with a name and class list containing all but the last component of a resource name followed by a call to with the last component name and class returns the same database entry as and with the fully qualified name and class. Storing into a Resource Database To store resources into the database, use or . Both functions take a partial resource specification, a representation type, and a value. This value is copied into the specified database. XrmPutResource void XrmPutResource XrmDatabase *database char *specifier char *type XrmValue *value database Specifies the resource database. specifier Specifies a complete or partial specification of the resource. type Specifies the type of the resource. value Specifies the value of the resource, which is specified as a string. If database contains NULL, creates a new database and returns a pointer to it. is a convenience function that calls followed by: XrmQPutResource(database, bindings, quarks, XrmStringToQuark(type), value) If the specifier and type are not in the Host Portable Character Encoding, the result is implementation-dependent. The value is stored in the database without modification. XrmQPutResource void XrmQPutResource XrmDatabase *database XrmBindingList bindings XrmQuarkList quarks XrmRepresentation type XrmValue *value database Specifies the resource database. bindings Specifies a list of bindings. quarks Specifies the complete or partial name or the class list of the resource. type Specifies the type of the resource. value Specifies the value of the resource, which is specified as a string. If database contains NULL, creates a new database and returns a pointer to it. If a resource entry with the identical bindings and quarks already exists in the database, the previous type and value are replaced by the new specified type and value. The value is stored in the database without modification. To add a resource that is specified as a string, use . XrmPutStringResource void XrmPutStringResource XrmDatabase *database char *specifier char *value database Specifies the resource database. specifier Specifies a complete or partial specification of the resource. value Specifies the value of the resource, which is specified as a string. If database contains NULL, creates a new database and returns a pointer to it. adds a resource with the specified value to the specified database. is a convenience function that first calls on the specifier and then calls , using a ``String'' representation type. If the specifier is not in the Host Portable Character Encoding, the result is implementation-dependent. The value is stored in the database without modification. To add a string resource using quarks as a specification, use . XrmQPutStringResource void XrmQPutStringResource XrmDatabase *database XrmBindingList bindings XrmQuarkList quarks char *value database Specifies the resource database. bindings Specifies a list of bindings. quarks Specifies the complete or partial name or the class list of the resource. value Specifies the value of the resource, which is specified as a string. If database contains NULL, creates a new database and returns a pointer to it. is a convenience routine that constructs an XrmValue for the value string (by calling strlen to compute the size) and then calls , using a ``String'' representation type. The value is stored in the database without modification. To add a single resource entry that is specified as a string that contains both a name and a value, use . XrmPutLineResource void XrmPutLineResource XrmDatabase *database char *line database Specifies the resource database. line Specifies the resource name and value pair as a single string. If database contains NULL, creates a new database and returns a pointer to it. adds a single resource entry to the specified database. The line should be in valid ResourceLine format (see section 15.1) terminated by a newline or null character; the database that results from using a string with incorrect syntax is implementation-dependent. The string is parsed in the locale of the database. If the ResourceName is not in the Host Portable Character Encoding, the result is implementation-dependent. Note that comment lines are not stored. Enumerating Database Entries To enumerate the entries of a database, use . XrmEnumerateDatabase #define XrmEnumAllLevels 0 #define XrmEnumOneLevel 0 Bool XrmEnumerateDatabase XrmDatabase database XrmNameList name_prefix XrmClassList class_prefix int mode Bool (*proc)() XPointer arg database Specifies the resource database. name_prefix Specifies the resource name prefix. class_prefix Specifies the resource class prefix. mode Specifies the number of levels to enumerate. proc Specifies the procedure that is to be called for each matching entry. arg Specifies the user-supplied argument that will be passed to the procedure. The function calls the specified procedure for each resource in the database that would match some completion of the given name/class resource prefix. The order in which resources are found is implementation-dependent. If mode is XrmEnumOneLevel, a resource must match the given name/class prefix with just a single name and class appended. If mode is XrmEnumAllLevels, the resource must match the given name/class prefix with one or more names and classes appended. If the procedure returns True, the enumeration terminates and the function returns True. If the procedure always returns False, all matching resources are enumerated and the function returns False. The procedure is called with the following arguments: (*proc)(database, bindings, quarks, type, value, arg) XrmDatabase *database; XrmBindingList bindings; XrmQuarkList quarks; XrmRepresentation *type; XrmValue *value; XPointer arg; The bindings and quarks lists are terminated by NULLQUARK. Note that pointers to the database and type are passed, but these values should not be modified. The procedure must not modify the database. If Xlib has been initialized for threads, the procedure is called with the database locked and the result of a call by the procedure to any Xlib function using the same database is not defined. Parsing Command Line Options The function can be used to parse the command line arguments to a program and modify a resource database with selected entries from the command line. XrmOptionKind typedef enum { XrmoptionNoArg, /* Value is specified in XrmOptionDescRec.value */ XrmoptionIsArg, /* Value is the option string itself */ XrmoptionStickyArg, /* Value is characters immediately following option */ XrmoptionSepArg, /* Value is next argument in argv */ XrmoptionResArg, /* Resource and value in next argument in argv */ XrmoptionSkipArg, /* Ignore this option and the next argument in argv */ XrmoptionSkipLine, /* Ignore this option and the rest of argv */ XrmoptionSkipNArgs /* Ignore this option and the next \ \ \ XrmOptionDescRec.value arguments in argv */ } XrmOptionKind; Note that XrmoptionSkipArg is equivalent to XrmoptionSkipNArgs with the XrmOptionDescRec.value field containing the value one. Note also that the value zero for XrmoptionSkipNArgs indicates that only the option itself is to be skipped. XrmOptionDescRec typedef struct { char *option; /* Option specification string in argv */ char *specifier; /* Binding and resource name (sans application name) */ XrmOptionKind argKind; /* Which style of option it is */ XPointer value; /* Value to provide if XrmoptionNoArg or \ \ \ XrmoptionSkipNArgs */ } XrmOptionDescRec, *XrmOptionDescList; To load a resource database from a C command line, use . XrmParseCommand void XrmParseCommand XrmDatabase *database XrmOptionDescList table int table_count char *name int *argc_in_out char **argv_in_out database Specifies the resource database. table Specifies the table of command line arguments to be parsed. table_count Specifies the number of entries in the table. name Specifies the application name. argc_in_out Specifies the number of arguments and returns the number of remaining arguments. argv_in_out Specifies the command line arguments and returns the remaining arguments. The function parses an (argc, argv) pair according to the specified option table, loads recognized options into the specified database with type ``String,'' and modifies the (argc, argv) pair to remove all recognized options. If database contains NULL, creates a new database and returns a pointer to it. Otherwise, entries are added to the database specified. If a database is created, it is created in the current locale. The specified table is used to parse the command line. Recognized options in the table are removed from argv, and entries are added to the specified resource database in the order they occur in argv. The table entries contain information on the option string, the option name, the style of option, and a value to provide if the option kind is XrmoptionNoArg. The option names are compared byte-for-byte to arguments in argv, independent of any locale. The resource values given in the table are stored in the resource database without modification. All resource database entries are created using a ``String'' representation type. The argc argument specifies the number of arguments in argv and is set on return to the remaining number of arguments that were not parsed. The name argument should be the name of your application for use in building the database entry. The name argument is prefixed to the resourceName in the option table before storing a database entry. The name argument is treated as a single component, even if it has embedded periods. No separating (binding) character is inserted, so the table must contain either a period (.) or an asterisk (*) as the first character in each resourceName entry. To specify a more completely qualified resource name, the resourceName entry can contain multiple components. If the name argument and the resourceNames are not in the Host Portable Character Encoding, the result is implementation-dependent. The following provides a sample option table: static XrmOptionDescRec opTable[] = { {"-background", "*background", XrmoptionSepArg, (XPointer) NULL}, {"-bd", "*borderColor", XrmoptionSepArg, (XPointer) NULL}, {"-bg", "*background", XrmoptionSepArg, (XPointer) NULL}, {"-borderwidth", "*TopLevelShell.borderWidth", XrmoptionSepArg, (XPointer) NULL}, {"-bordercolor", "*borderColor", XrmoptionSepArg, (XPointer) NULL}, {"-bw", "*TopLevelShell.borderWidth", XrmoptionSepArg, (XPointer) NULL}, {"-display", ".display", XrmoptionSepArg, (XPointer) NULL}, {"-fg", "*foreground", XrmoptionSepArg, (XPointer) NULL}, {"-fn", "*font", XrmoptionSepArg, (XPointer) NULL}, {"-font", "*font", XrmoptionSepArg, (XPointer) NULL}, {"-foreground", "*foreground", XrmoptionSepArg, (XPointer) NULL}, {"-geometry", ".TopLevelShell.geometry", XrmoptionSepArg, (XPointer) NULL}, {"-iconic", ".TopLevelShell.iconic", XrmoptionNoArg, (XPointer) "on"}, {"-name", ".name", XrmoptionSepArg, (XPointer) NULL}, {"-reverse", "*reverseVideo", XrmoptionNoArg, (XPointer) "on"}, {"-rv", "*reverseVideo", XrmoptionNoArg, (XPointer) "on"}, {"-synchronous", "*synchronous", XrmoptionNoArg, (XPointer) "on"}, {"-title", ".TopLevelShell.title", XrmoptionSepArg, (XPointer) NULL}, {"-xrm", NULL, XrmoptionResArg, (XPointer) NULL}, }; In this table, if the -background (or -bg) option is used to set background colors, the stored resource specifier matches all resources of attribute background. If the -borderwidth option is used, the stored resource specifier applies only to border width attributes of class TopLevelShell (that is, outer-most windows, including pop-up windows). If the -title option is used to set a window name, only the topmost application windows receive the resource. When parsing the command line, any unique unambiguous abbreviation for an option name in the table is considered a match for the option. Note that uppercase and lowercase matter. libX11-1.8.12/specs/libX11/CH04.xml0000644014310600000120000022021414763154126011663 Window Information Functions After you connect the display to the X server and create a window, you can use the Xlib window information functions to: Obtain information about a window Translate screen coordinates Manipulate property lists Obtain and change window properties Manipulate selections Obtaining Window Information Xlib provides functions that you can use to obtain information about the window tree, the window's current attributes, the window's current geometry, or the current pointer coordinates. Because they are most frequently used by window managers, these functions all return a status to indicate whether the window still exists. To obtain the parent, a list of children, and number of children for a given window, use . Child Window Parent Window XQueryTree Status XQueryTree Display *display Window w Window *root_return Window *parent_return Window **children_return unsigned int *nchildren_return display Specifies the connection to the X server. w Specifies the window whose list of children, root, parent, and number of children you want to obtain. root_return Returns the root window. parent_return Returns the parent window. children_return Returns the list of children. nchildren_return Returns the number of children. The function returns the root ID, the parent window ID, a pointer to the list of children windows (NULL when there are no children), and the number of children in the list for the specified window. The children are listed in current stacking order, from bottom-most (first) to top-most (last). returns zero if it fails and nonzero if it succeeds. To free a non-NULL children list when it is no longer needed, use . can generate a BadWindow error. To obtain the current attributes of a given window, use . XGetWindowAttributes Status XGetWindowAttributes Display *display Window w XWindowAttributes *window_attributes_return display Specifies the connection to the X server. w Specifies the window whose current attributes you want to obtain. window_attributes_return Returns the specified window's attributes in the XWindowAttributes structure. The function returns the current attributes for the specified window to an XWindowAttributes structure. XWindowAttributes typedef struct { int x, y; /* location of window */ int width, height; /* width and height of window */ int border_width; /* border width of window */ int depth; /* depth of window */ Visual *visual; /* the associated visual structure */ Window root; /* root of screen containing window */ int class; /* InputOutput, InputOnly*/ int bit_gravity; /* one of the bit gravity values */ int win_gravity; /* one of the window gravity values */ int backing_store; /* NotUseful, WhenMapped, Always */ unsigned long backing_planes; /* planes to be preserved if possible */ unsigned long backing_pixel; /* value to be used when restoring planes */ Bool save_under; /* boolean, should bits under be saved? */ Colormap colormap; /* color map to be associated with window */ Bool map_installed; /* boolean, is color map currently installed*/ int map_state; /* IsUnmapped, IsUnviewable, IsViewable */ long all_event_masks; /* set of events all people have interest in*/ long your_event_mask; /* my event mask */ long do_not_propagate_mask; /* set of events that should not propagate */ Bool override_redirect; /* boolean value for override-redirect */ Screen *screen; /* back pointer to correct screen */ } XWindowAttributes; The x and y members are set to the upper-left outer corner relative to the parent window's origin. The width and height members are set to the inside size of the window, not including the border. The border_width member is set to the window's border width in pixels. The depth member is set to the depth of the window (that is, bits per pixel for the object). The visual member is a pointer to the screen's associated Visual structure. The root member is set to the root window of the screen containing the window. The class member is set to the window's class and can be either InputOutput or InputOnly. The bit_gravity member is set to the window's bit gravity and can be one of the following: ForgetGravity NorthWestGravity NorthGravity NorthEastGravity WestGravity EastGravity SouthWestGravity SouthGravity SouthEastGravity StaticGravity The win_gravity member is set to the window's window gravity and can be one of the following: UnmapGravity NorthWestGravity NorthGravity NorthEastGravity WestGravity EastGravity SouthWestGravity SouthGravity SouthEastGravity StaticGravity CenterGravity For additional information on gravity, see section 3.2.3. The backing_store member is set to indicate how the X server should maintain the contents of a window and can be WhenMapped, Always, or NotUseful. The backing_planes member is set to indicate (with bits set to 1) which bit planes of the window hold dynamic data that must be preserved in backing_stores and during save_unders. The backing_pixel member is set to indicate what values to use for planes not set in backing_planes. The save_under member is set to True or False. The colormap member is set to the colormap for the specified window and can be a colormap ID or None. The map_installed member is set to indicate whether the colormap is currently installed and can be True or False. The map_state member is set to indicate the state of the window and can be IsUnmapped, IsUnviewable, or IsViewable. IsUnviewable is used if the window is mapped but some ancestor is unmapped. The all_event_masks member is set to the bitwise inclusive OR of all event masks selected on the window by all clients. The your_event_mask member is set to the bitwise inclusive OR of all event masks selected by the querying client. The do_not_propagate_mask member is set to the bitwise inclusive OR of the set of events that should not propagate. The override_redirect member is set to indicate whether this window overrides structure control facilities and can be True or False. Window manager clients should ignore the window if this member is True. The screen member is set to a screen pointer that gives you a back pointer to the correct screen. This makes it easier to obtain the screen information without having to loop over the root window fields to see which field matches. can generate BadDrawable and BadWindow errors. To obtain the current geometry of a given drawable, use . XGetGeometry Status XGetGeometry Display *display Drawable d Window *root_return int *x_return int *y_return unsigned int *width_return unsigned int *height_return unsigned int *border_width_return unsigned int *depth_return display Specifies the connection to the X server. d Specifies the drawable, which can be a window or a pixmap. root_return Returns the root window. x_return y_return Return the x and y coordinates that define the location of the drawable. For a window, these coordinates specify the upper-left outer corner relative to its parent's origin. For pixmaps, these coordinates are always zero. width_return height_return Return the drawable's dimensions (width and height). For a window, these dimensions specify the inside size, not including the border. border_width_return Returns the border width in pixels. If the drawable is a pixmap, it returns zero. depth_return Returns the depth of the drawable (bits per pixel for the object). The function returns the root window and the current geometry of the drawable. The geometry of the drawable includes the x and y coordinates, width and height, border width, and depth. These are described in the argument list. It is legal to pass to this function a window whose class is InputOnly. can generate a BadDrawable error. Translating Screen Coordinates Applications sometimes need to perform a coordinate transformation from the coordinate space of one window to another window or need to determine which window the pointing device is in. and fulfill these needs (and avoid any race conditions) by asking the X server to perform these operations. To translate a coordinate in one window to the coordinate space of another window, use . XTranslateCoordinates Bool XTranslateCoordinates Display *display Window src_w Window dest_w int src_x int src_y int *dest_x_return int *dest_y_return Window *child_return display Specifies the connection to the X server. src_w Specifies the source window. dest_w Specifies the destination window. src_x src_y Specify the x and y coordinates within the source window. dest_x_return dest_y_return Return the x and y coordinates within the destination window. child_return Returns the child if the coordinates are contained in a mapped child of the destination window. If returns True, it takes the src_x and src_y coordinates relative to the source window's origin and returns these coordinates to dest_x_return and dest_y_return relative to the destination window's origin. If returns False, src_w and dest_w are on different screens, and dest_x_return and dest_y_return are zero. If the coordinates are contained in a mapped child of dest_w, that child is returned to child_return. Otherwise, child_return is set to None. can generate a BadWindow error. To obtain the screen coordinates of the pointer or to determine the pointer coordinates relative to a specified window, use . XQueryPointer Bool XQueryPointer Display *display Window w Window *root_return Window *child_return int *root_x_return int *root_y_return int *win_x_return int *win_y_return unsigned int *mask_return display Specifies the connection to the X server. w Specifies the window. root_return Returns the root window that the pointer is in. child_return Returns the child window that the pointer is located in, if any. root_x_return root_y_return Return the pointer coordinates relative to the root window's origin. win_x_return win_y_return Return the pointer coordinates relative to the specified window. mask_return Returns the current state of the modifier keys and pointer buttons. The function returns the root window the pointer is logically on and the pointer coordinates relative to the root window's origin. If returns False, the pointer is not on the same screen as the specified window, and returns None to child_return and zero to win_x_return and win_y_return. If returns True, the pointer coordinates returned to win_x_return and win_y_return are relative to the origin of the specified window. In this case, returns the child that contains the pointer, if any, or else None to child_return. returns the current logical state of the keyboard buttons and the modifier keys in mask_return. It sets mask_return to the bitwise inclusive OR of one or more of the button or modifier key bitmasks to match the current state of the mouse buttons and the modifier keys. Note that the logical state of a device (as seen through Xlib) may lag the physical state if device event processing is frozen (see section 12.1). can generate a BadWindow error. Properties and Atoms A property is a collection of named, typed data. The window system has a set of predefined properties Atompredefined (for example, the name of a window, size hints, and so on), and users can define any other arbitrary information and associate it with windows. Each property has a name, which is an ISO Latin-1 string. For each named property, a unique identifier (atom) is associated with it. A property also has a type, for example, string or integer. These types are also indicated using atoms, so arbitrary new types can be defined. Data of only one type may be associated with a single property name. Clients can store and retrieve properties associated with windows. For efficiency reasons, an atom is used rather than a character string. can be used to obtain the atom for property names. Atom A property is also stored in one of several possible formats. The X server can store the information as 8-bit quantities, 16-bit quantities, or 32-bit quantities. This permits the X server to present the data in the byte order that the client expects. If you define further properties of complex type, you must encode and decode them yourself. These functions must be carefully written if they are to be portable. For further information about how to write a library extension, see appendix C. The type of a property is defined by an atom, which allows for arbitrary extension in this type scheme. Atom Certain property names are predefined in the server for commonly used functions. The atoms for these properties are defined in <X11/Xatom.h>. X11/Xatom.h Files<X11/Xatom.h> Headers<X11/Xatom.h> To avoid name clashes with user symbols, the #define name for each atom has the XA_ prefix. For an explanation of the functions that let you get and set much of the information stored in these predefined properties, see chapter 14. The core protocol imposes no semantics on these property names, but semantics are specified in other X Consortium standards, such as the Inter-Client Communication Conventions Manual and the X Logical Font Description Conventions. You can use properties to communicate other information between applications. The functions described in this section let you define new properties and get the unique atom IDs in your applications. Although any particular atom can have some client interpretation within each of the name spaces, atoms occur in five distinct name spaces within the protocol: Selections Property names Property types Font properties Type of a ClientMessage event (none are built into the X server) The built-in selection property names are: PRIMARY SECONDARY The built-in property names are: CUT_BUFFER0 CUT_BUFFER1 CUT_BUFFER2 CUT_BUFFER3 CUT_BUFFER4 CUT_BUFFER5 CUT_BUFFER6 CUT_BUFFER7 RGB_BEST_MAP RGB_BLUE_MAP RGB_DEFAULT_MAP RGB_GRAY_MAP RGB_GREEN_MAP RGB_RED_MAP RESOURCE_MANAGER WM_CLASS WM_CLIENT_MACHINE WM_COLORMAP_WINDOWS WM_COMMAND WM_HINTS WM_ICON_NAME WM_ICON_SIZE WM_NAME WM_NORMAL_HINTS WM_PROTOCOLS WM_STATE WM_TRANSIENT_FOR WM_ZOOM_HINTS The built-in property types are: ARC ATOM BITMAP CARDINAL COLORMAP CURSOR DRAWABLE FONT INTEGER PIXMAP POINT RGB_COLOR_MAP RECTANGLE STRING VISUALID WINDOW WM_HINTS WM_SIZE_HINTS The built-in font property names are: MIN_SPACE NORM_SPACE MAX_SPACE END_SPACE SUPERSCRIPT_X SUPERSCRIPT_Y SUBSCRIPT_X SUBSCRIPT_Y UNDERLINE_POSITION UNDERLINE_THICKNESS FONT_NAME FULL_NAME STRIKEOUT_DESCENT STRIKEOUT_ASCENT ITALIC_ANGLE X_HEIGHT QUAD_WIDTH WEIGHT POINT_SIZE RESOLUTION COPYRIGHT NOTICE FAMILY_NAME CAP_HEIGHT For further information about font properties, see section 8.5. To return an atom for a given name, use . Atominterning XInternAtom Atom XInternAtom Display *display char *atom_name Bool only_if_exists display Specifies the connection to the X server. atom_name Specifies the name associated with the atom you want returned. only_if_exists Specifies a Boolean value that indicates whether the atom must be created. The function returns the atom identifier associated with the specified atom_name string. If only_if_exists is False, the atom is created if it does not exist. Therefore, can return None. If the atom name is not in the Host Portable Character Encoding, the result is implementation-dependent. Uppercase and lowercase matter; the strings ``thing'', ``Thing'', and ``thinG'' all designate different atoms. The atom will remain defined even after the client's connection closes. It will become undefined only when the last connection to the X server closes. can generate BadAlloc and BadValue errors. To return atoms for an array of names, use . Atominterning XInternAtoms Status XInternAtoms Display *display char **names int count Bool only_if_exists Atom *atoms_return display Specifies the connection to the X server. names Specifies the array of atom names. count Specifies the number of atom names in the array. only_if_exists Specifies a Boolean value that indicates whether the atom must be created. atoms_return Returns the atoms. The function returns the atom identifiers associated with the specified names. The atoms are stored in the atoms_return array supplied by the caller. Calling this function is equivalent to calling for each of the names in turn with the specified value of only_if_exists, but this function minimizes the number of round-trip protocol exchanges between the client and the X server. This function returns a nonzero status if atoms are returned for all of the names; otherwise, it returns zero. can generate BadAlloc and BadValue errors. To return a name for a given atom identifier, use . Atomgetting name XGetAtomName char *XGetAtomName Display *display Atom atom display Specifies the connection to the X server. atom Specifies the atom for the property name you want returned. The function returns the name associated with the specified atom. If the data returned by the server is in the Latin Portable Character Encoding, then the returned string is in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. To free the resulting string, call . can generate a BadAtom error. To return the names for an array of atom identifiers, use . Atomgetting name XGetAtomNames Status XGetAtomNames Display *display Atom *atoms int count char **names_return display Specifies the connection to the X server. atoms Specifies the array of atoms. count Specifies the number of atoms in the array. names_return Returns the atom names. The function returns the names associated with the specified atoms. The names are stored in the names_return array supplied by the caller. Calling this function is equivalent to calling for each of the atoms in turn, but this function minimizes the number of round-trip protocol exchanges between the client and the X server. This function returns a nonzero status if names are returned for all of the atoms; otherwise, it returns zero. can generate a BadAtom error. Obtaining and Changing Window Properties You can attach a property list to every window. Each property has a name, a type, and a value (see section 4.3). The value is an array of 8-bit, 16-bit, or 32-bit quantities, whose interpretation is left to the clients. The type char is used to represent 8-bit quantities, the type short is used to represent 16-bit quantities, and the type long is used to represent 32-bit quantities. Xlib provides functions that you can use to obtain, change, update, or interchange window properties. In addition, Xlib provides other utility functions for inter-client communication (see chapter 14). To obtain the type, format, and value of a property of a given window, use . Propertygetting XGetWindowProperty int XGetWindowProperty Display *display Window w Atom property long long_offset long long_length Bool delete Atom req_type Atom *actual_type_return int *actual_format_return unsigned long *nitems_return unsigned long *bytes_after_return unsigned char **prop_return display Specifies the connection to the X server. w Specifies the window whose property you want to obtain. property Specifies the property name. long_offset Specifies the offset in the specified property (in 32-bit quantities) where the data is to be retrieved. long_length Specifies the length in 32-bit multiples of the data to be retrieved. delete Specifies a Boolean value that determines whether the property is deleted. req_type Specifies the atom identifier associated with the property type or AnyPropertyType. actual_type_return Returns the atom identifier that defines the actual type of the property. actual_format_return Returns the actual format of the property. nitems_return Returns the actual number of 8-bit, 16-bit, or 32-bit items stored in the prop_return data. bytes_after_return Returns the number of bytes remaining to be read in the property if a partial read was performed. prop_return Returns the data in the specified format. The function returns the actual type of the property; the actual format of the property; the number of 8-bit, 16-bit, or 32-bit items transferred; the number of bytes remaining to be read in the property; and a pointer to the data actually returned. sets the return arguments as follows: If the specified property does not exist for the specified window, returns None to actual_type_return and the value zero to actual_format_return and bytes_after_return. The nitems_return argument is empty. In this case, the delete argument is ignored. If the specified property exists but its type does not match the specified type, returns the actual property type to actual_type_return, the actual property format (never zero) to actual_format_return, and the property length in bytes (even if the actual_format_return is 16 or 32) to bytes_after_return. It also ignores the delete argument. The nitems_return argument is empty. If the specified property exists and either you assign AnyPropertyType to the req_type argument or the specified type matches the actual property type, returns the actual property type to actual_type_return and the actual property format (never zero) to actual_format_return. It also returns a value to bytes_after_return and nitems_return, by defining the following values: N = actual length of the stored property in bytes (even if the format is 16 or 32) I = 4 * long_offset T = N - I L = MINIMUM(T, 4 * long_length) A = N - (I + L) The returned value starts at byte index I in the property (indexing from zero), and its length in bytes is L. If the value for long_offset causes L to be negative, a BadValue error results. The value of bytes_after_return is A, giving the number of trailing unread bytes in the stored property. If the returned format is 8, the returned data is represented as a char array. If the returned format is 16, the returned data is represented as a short array and should be cast to that type to obtain the elements. If the returned format is 32, the returned data is represented as a long array and should be cast to that type to obtain the elements. always allocates one extra byte in prop_return (even if the property is zero length) and sets it to zero so that simple properties consisting of characters do not have to be copied into yet another string before use. If delete is True and bytes_after_return is zero, deletes the property from the window and generates a PropertyNotify event on the window. The function returns Success if it executes successfully. To free the resulting data, use . can generate BadAtom, BadValue, and BadWindow errors. To obtain a given window's property list, use . Propertylisting XListProperties Atom *XListProperties Display *display Window w int *num_prop_return display Specifies the connection to the X server. w Specifies the window whose property list you want to obtain. num_prop_return Returns the length of the properties array. The function returns a pointer to an array of atom properties that are defined for the specified window or returns NULL if no properties were found. To free the memory allocated by this function, use . can generate a BadWindow error. To change a property of a given window, use . Propertychanging Propertyappending Propertyprepending Propertyreplacing Propertyformat Propertytype XChangeProperty XChangeProperty Display *display Window w Atom property Atom type int format int mode unsignedchar *data int nelements display Specifies the connection to the X server. w Specifies the window whose property you want to change. property Specifies the property name. type Specifies the type of the property. The X server does not interpret the type but simply passes it back to an application that later calls . format Specifies whether the data should be viewed as a list of 8-bit, 16-bit, or 32-bit quantities. Possible values are 8, 16, and 32. This information allows the X server to correctly perform byte-swap operations as necessary. If the format is 16-bit or 32-bit, you must explicitly cast your data pointer to an (unsigned char *) in the call to . mode Specifies the mode of the operation. You can pass PropModeReplace, PropModePrepend, or PropModeAppend. data Specifies the property data. nelements Specifies the number of elements of the specified data format. The function alters the property for the specified window and causes the X server to generate a PropertyNotify event on that window. performs the following: If mode is PropModeReplace, discards the previous property value and stores the new data. If mode is PropModePrepend or PropModeAppend, inserts the specified data before the beginning of the existing data or onto the end of the existing data, respectively. The type and format must match the existing property value, or a BadMatch error results. If the property is undefined, it is treated as defined with the correct type and format with zero-length data. If the specified format is 8, the property data must be a char array. If the specified format is 16, the property data must be a short array. If the specified format is 32, the property data must be a long array. The lifetime of a property is not tied to the storing client. Properties remain until explicitly deleted, until the window is destroyed, or until the server resets. For a discussion of what happens when the connection to the X server is closed, see section 2.6. The maximum size of a property is server dependent and can vary dynamically depending on the amount of memory the server has available. (If there is insufficient space, a BadAlloc error results.) can generate BadAlloc, BadAtom, BadMatch, BadValue, and BadWindow errors. To rotate a window's property list, use . XRotateWindowProperties XRotateWindowProperties Display *display Window w Atom properties[] int num_prop int npositions display Specifies the connection to the X server. w Specifies the window. properties Specifies the array of properties that are to be rotated. num_prop Specifies the length of the properties array. npositions Specifies the rotation amount. The function allows you to rotate properties on a window and causes the X server to generate PropertyNotify events. If the property names in the properties array are viewed as being numbered starting from zero and if there are num_prop property names in the list, then the value associated with property name I becomes the value associated with property name (I + npositions) mod N for all I from zero to N − 1. The effect is to rotate the states by npositions places around the virtual ring of property names (right for positive npositions, left for negative npositions). If npositions mod N is nonzero, the X server generates a PropertyNotify event for each property in the order that they are listed in the array. If an atom occurs more than once in the list or no property with that name is defined for the window, a BadMatch error results. If a BadAtom or BadMatch error results, no properties are changed. can generate BadAtom, BadMatch, and BadWindow errors. To delete a property on a given window, use . Propertydeleting XDeleteProperty XDeleteProperty Display *display Window w Atom property display Specifies the connection to the X server. w Specifies the window whose property you want to delete. property Specifies the property name. The function deletes the specified property only if the property was defined on the specified window and causes the X server to generate a PropertyNotify event on the window unless the property does not exist. can generate BadAtom and BadWindow errors. Selections Selection Selections are one method used by applications to exchange data. By using the property mechanism, applications can exchange data of arbitrary types and can negotiate the type of the data. A selection can be thought of as an indirect property with a dynamic type. That is, rather than having the property stored in the X server, the property is maintained by some client (the owner). A selection is global in nature (considered to belong to the user but be maintained by clients) rather than being private to a particular window subhierarchy or a particular set of clients. Xlib provides functions that you can use to set, get, or request conversion of selections. This allows applications to implement the notion of current selection, which requires that notification be sent to applications when they no longer own the selection. Applications that support selection often highlight the current selection and so must be informed when another application has acquired the selection so that they can unhighlight the selection. When a client asks for the contents of a selection, it specifies a selection target type. This target type can be used to control the transmitted representation of the contents. For example, if the selection is ``the last thing the user clicked on'' and that is currently an image, then the target type might specify whether the contents of the image should be sent in XY format or Z format. The target type can also be used to control the class of contents transmitted, for example, asking for the ``looks'' (fonts, line spacing, indentation, and so forth) of a paragraph selection, not the text of the paragraph. The target type can also be used for other purposes. The protocol does not constrain the semantics. To set the selection owner, use . Selectionsetting the owner XSetSelectionOwner XSetSelectionOwner Display *display Atom selection Window owner Time time display Specifies the connection to the X server. selection Specifies the selection atom. owner Specifies the owner of the specified selection atom. You can pass a window or None. time Specifies the time. You can pass either a timestamp or CurrentTime. The function changes the owner and last-change time for the specified selection and has no effect if the specified time is earlier than the current last-change time of the specified selection or is later than the current X server time. Otherwise, the last-change time is set to the specified time, with CurrentTime replaced by the current server time. If the owner window is specified as None, then the owner of the selection becomes None (that is, no owner). Otherwise, the owner of the selection becomes the client executing the request. If the new owner (whether a client or None) is not the same as the current owner of the selection and the current owner is not None, the current owner is sent a SelectionClear event. If the client that is the owner of a selection is later terminated (that is, its connection is closed) or if the owner window it has specified in the request is later destroyed, the owner of the selection automatically reverts to None, but the last-change time is not affected. The selection atom is uninterpreted by the X server. returns the owner window, which is reported in SelectionRequest and SelectionClear events. Selections are global to the X server. can generate BadAtom and BadWindow errors. To return the selection owner, use . Selectiongetting the owner XGetSelectionOwner Window XGetSelectionOwner Display *display Atom selection display Specifies the connection to the X server. selection Specifies the selection atom whose owner you want returned. The function returns the window ID associated with the window that currently owns the specified selection. If no selection was specified, the function returns the constant None. If None is returned, there is no owner for the selection. can generate a BadAtom error. To request conversion of a selection, use . Selectionconverting XConvertSelection XConvertSelection Display *display Atom selection Atom target Atom property Window requestor Time time display Specifies the connection to the X server. selection Specifies the selection atom. target Specifies the target atom. property Specifies the property name. You also can pass None. requestor Specifies the requestor. time Specifies the time. You can pass either a timestamp or CurrentTime. requests that the specified selection be converted to the specified target type: If the specified selection has an owner, the X server sends a SelectionRequest event to that owner. If no owner for the specified selection exists, the X server generates a SelectionNotify event to the requestor with property None. The arguments are passed on unchanged in either of the events. There are two predefined selection atoms: PRIMARY and SECONDARY. can generate BadAtom and BadWindow errors. libX11-1.8.12/specs/libX11/CH03.xml0000644014310600000120000035072614763154126011676 Window Functions Visual Types Visual Type On some display hardware, it may be possible to deal with color resources in more than one way. For example, you may be able to deal with a screen of either 12-bit depth with arbitrary mapping of pixel to color (pseudo-color) or 24-bit depth with 8 bits of the pixel dedicated to each of red, green, and blue. These different ways of dealing with the visual aspects of the screen are called visuals. For each screen of the display, there may be a list of valid visual types supported at different depths of the screen. Because default windows and visual types are defined for each screen, most simple applications need not deal with this complexity. Xlib provides macros and functions that return the default root window, the default depth of the default root window, and the default visual type (see sections 2.2.1 and 16.7). Xlib uses an opaque Visual Visual structure that contains information about the possible color mapping. The visual utility functions (see section 16.7) use an XVisualInfo structure to return this information to an application. The members of this structure pertinent to this discussion are class, red_mask, green_mask, blue_mask, bits_per_rgb, and colormap_size. The class member specifies one of the possible visual classes of the screen and can be Visual ClassesStaticGray Visual ClassesStaticColor Visual ClassesTrueColor Visual ClassesStaticColor Visual ClassesGrayScale Visual ClassesPseudoColor StaticGray, StaticColor, TrueColor, GrayScale, PseudoColor, or DirectColor. The following concepts may serve to make the explanation of visual types clearer. The screen can be color or grayscale, can have a colormap that is writable or read-only, and can also have a colormap whose indices are decomposed into separate RGB pieces, provided one is not on a grayscale screen. This leads to the following diagram: Color Gray-Scale R/O R/W R/O R/W ---------------------------------------------- Undecomposed Static Pseudo Static Gray Colormap Color Color Gray Scale Decomposed True Direct Colormap Color Color ---------------------------------------------- Conceptually, as each pixel is read out of video memory for display on the screen, it goes through a look-up stage by indexing into a colormap. Colormaps can be manipulated arbitrarily on some hardware, in limited ways on other hardware, and not at all on other hardware. The visual types affect the colormap and the RGB values in the following ways: For PseudoColor, a pixel value indexes a colormap to produce independent RGB values, and the RGB values can be changed dynamically. GrayScale is treated the same way as PseudoColor except that the primary that drives the screen is undefined. Thus, the client should always store the same value for red, green, and blue in the colormaps. For DirectColor, a pixel value is decomposed into separate RGB subfields, and each subfield separately indexes the colormap for the corresponding value. The RGB values can be changed dynamically. TrueColor is treated the same way as DirectColor except that the colormap has predefined, read-only RGB values. These RGB values are server dependent but provide linear or near-linear ramps in each primary. StaticColor is treated the same way as PseudoColor except that the colormap has predefined, read-only, server-dependent RGB values. StaticGray is treated the same way as StaticColor except that the RGB values are equal for any single pixel value, thus resulting in shades of gray. StaticGray with a two-entry colormap can be thought of as monochrome. The red_mask, green_mask, and blue_mask members are only defined for DirectColor and TrueColor. Each has one contiguous set of bits with no intersections. The bits_per_rgb member specifies the log base 2 of the number of distinct color values (individually) of red, green, and blue. Actual RGB values are unsigned 16-bit numbers. The colormap_size member defines the number of available colormap entries in a newly created colormap. For DirectColor and TrueColor, this is the size of an individual pixel subfield. To obtain the visual ID from a Visual, use . XVisualIDFromVisual VisualID XVisualIDFromVisual Visual *visual visual Specifies the visual type. The function returns the visual ID for the specified visual type. Window Attributes Window Windowattributes All InputOutput windows have a border width of zero or more pixels, an optional background, an event suppression mask (which suppresses propagation of events from children), and a property list (see section 4.3). The window border and background can be a solid color or a pattern, called a tile. All windows except the root have a parent and are clipped by their parent. If a window is stacked on top of another window, it obscures that other window for the purpose of input. If a window has a background (almost all do), it obscures the other window for purposes of output. Attempts to output to the obscured area do nothing, and no input events (for example, pointer motion) are generated for the obscured area. Windows also have associated property lists (see section 4.3). Both InputOutput and InputOnly windows have the following common attributes, which are the only attributes of an InputOnly window: win-gravity event-mask do-not-propagate-mask override-redirect cursor If you specify any other attributes for an InputOnly window, a BadMatch error results. InputOnly windows are used for controlling input events in situations where InputOutput windows are unnecessary. InputOnly windows are invisible; can only be used to control such things as cursors, input event generation, and grabbing; and cannot be used in any graphics requests. Note that InputOnly windows cannot have InputOutput windows as inferiors. Windows have borders of a programmable width and pattern as well as a background pattern or tile. Tilepixmaps Pixel values can be used for solid colors. Resource IDsfreeing Freeingresources The background and border pixmaps can be destroyed immediately after creating the window if no further explicit references to them are to be made. Tilemode The pattern can either be relative to the parent or absolute. If ParentRelative, the parent's background is used. When windows are first created, they are not visible (not mapped) on the screen. Any output to a window that is not visible on the screen and that does not have backing store will be discarded. Windowmapping An application may wish to create a window long before it is mapped to the screen. When a window is eventually mapped to the screen (using ), XMapWindow the X server generates an Expose event for the window if backing store has not been maintained. A window manager can override your choice of size, border width, and position for a top-level window. Your program must be prepared to use the actual size and position of the top window. It is not acceptable for a client application to resize itself unless in direct response to a human command to do so. Instead, either your program should use the space given to it, or if the space is too small for any useful work, your program might ask the user to resize the window. The border of your top-level window is considered fair game for window managers. To set an attribute of a window, set the appropriate member of the XSetWindowAttributes structure and OR in the corresponding value bitmask in your subsequent calls to and , or use one of the other convenience functions that set the appropriate attribute. The symbols for the value mask bits and the XSetWindowAttributes structure are: /* Window attribute value mask bits */ /* Window attribute value mask bits */ #define CWBackPixmap (1L<<0) #define CWBackPixel (1L<<1) #define CWBorderPixmap (1L<<2) #define CWBorderPixel (1L<<3) #define CWBitGravity (1L<<4) #define CWWinGravity (1L<<5) #define CWBackingStore (1L<<6) #define CWBackingPlanes (1L<<7) #define CWBackingPixel (1L<<8) #define CWOverrideRedirect (1L<<9) #define CWSaveUnder (1L<<10) #define CWEventMask (1L<<11) #define CWDontPropagate (1L<<12) #define CWColormap (1L<<13) #define CWCursor (1L<<14) XSetWindowAttributes /* Values */ typedef struct { Pixmap background_pixmap; /* background, None, or ParentRelative */ unsigned long background_pixel; /* background pixel */ Pixmap border_pixmap; /* border of the window or CopyFromParent */ unsigned long border_pixel; /* border pixel value */ int bit_gravity; /* one of bit gravity values */ int win_gravity; /* one of the window gravity values */ int backing_store; /* NotUseful, WhenMapped, Always */ unsigned long backing_planes; /* planes to be preserved if possible */ unsigned long backing_pixel; /* value to use in restoring planes */ Bool save_under; /* should bits under be saved? (popups) */ long event_mask; /* set of events that should be saved */ long do_not_propagate_mask; /* set of events that should not propagate */ Bool override_redirect; /* boolean value for override_redirect */ Colormap colormap; /* color map to be associated with window */ Cursor cursor; /* cursor to be displayed (or None) */ } XSetWindowAttributes; The following lists the defaults for each window attribute and indicates whether the attribute is applicable to InputOutput and InputOnly windows: Attribute Default InputOutput InputOnly background-pixmap None Yes No background-pixel Undefined Yes No border-pixmap CopyFromParent Yes No border-pixel Undefined Yes No bit-gravity ForgetGravity Yes No win-gravity NorthWestGravity Yes Yes backing-store NotUseful Yes No backing-planes All ones Yes No backing-pixel zero Yes No save-under False Yes No event-mask empty set Yes Yes do-not-propagate-mask empty set Yes Yes override-redirect False Yes Yes colormap CopyFromParent Yes No cursor None Yes Yes Background Attribute Only InputOutput windows can have a background. You can set the background of an InputOutput window by using a pixel or a pixmap. The background-pixmap attribute of a window specifies the pixmap to be used for a window's background. This pixmap can be of any size, although some sizes may be faster than others. The background-pixel attribute of a window specifies a pixel value used to paint a window's background in a single color. You can set the background-pixmap to a pixmap, None (default), or ParentRelative. You can set the background-pixel of a window to any pixel value (no default). If you specify a background-pixel, it overrides either the default background-pixmap or any value you may have set in the background-pixmap. A pixmap of an undefined size that is filled with the background-pixel is used for the background. Range checking is not performed on the background pixel; it simply is truncated to the appropriate number of bits. If you set the background-pixmap, it overrides the default. The background-pixmap and the window must have the same depth, or a BadMatch error results. If you set background-pixmap to None, the window has no defined background. If you set the background-pixmap to ParentRelative: The parent window's background-pixmap is used. The child window, however, must have the same depth as its parent, or a BadMatch error results. If the parent window has a background-pixmap of None, the window also has a background-pixmap of None. A copy of the parent window's background-pixmap is not made. The parent's background-pixmap is examined each time the child window's background-pixmap is required. The background tile origin always aligns with the parent window's background tile origin. If the background-pixmap is not ParentRelative, the background tile origin is the child window's origin. Setting a new background, whether by setting background-pixmap or background-pixel, overrides any previous background. The background-pixmap can be freed immediately if no further explicit reference is made to it (the X server will keep a copy to use when needed). If you later draw into the pixmap used for the background, what happens is undefined because the X implementation is free to make a copy of the pixmap or to use the same pixmap. When no valid contents are available for regions of a window and either the regions are visible or the server is maintaining backing store, the server automatically tiles the regions with the window's background unless the window has a background of None. If the background is None, the previous screen contents from other windows of the same depth as the window are simply left in place as long as the contents come from the parent of the window or an inferior of the parent. Otherwise, the initial contents of the exposed regions are undefined. Expose events are then generated for the regions, even if the background-pixmap is None (see section 10.9). Border Attribute Only InputOutput windows can have a border. You can set the border of an InputOutput window by using a pixel or a pixmap. The border-pixmap attribute of a window specifies the pixmap to be used for a window's border. The border-pixel attribute of a window specifies a pixmap of undefined size filled with that pixel be used for a window's border. Range checking is not performed on the background pixel; it simply is truncated to the appropriate number of bits. The border tile origin is always the same as the background tile origin. You can also set the border-pixmap to a pixmap of any size (some may be faster than others) or to CopyFromParent (default). You can set the border-pixel to any pixel value (no default). If you set a border-pixmap, it overrides the default. The border-pixmap and the window must have the same depth, or a BadMatch error results. If you set the border-pixmap to CopyFromParent, the parent window's border-pixmap is copied. Subsequent changes to the parent window's border attribute do not affect the child window. However, the child window must have the same depth as the parent window, or a BadMatch error results. The border-pixmap can be freed immediately if no further explicit reference is made to it. If you later draw into the pixmap used for the border, what happens is undefined because the X implementation is free either to make a copy of the pixmap or to use the same pixmap. If you specify a border-pixel, it overrides either the default border-pixmap or any value you may have set in the border-pixmap. All pixels in the window's border will be set to the border-pixel. Setting a new border, whether by setting border-pixel or by setting border-pixmap, overrides any previous border. Output to a window is always clipped to the inside of the window. Therefore, graphics operations never affect the window border. Gravity Attributes The bit gravity of a window defines which region of the window should be retained when an InputOutput window is resized. The default value for the bit-gravity attribute is ForgetGravity. The window gravity of a window allows you to define how the InputOutput or InputOnly window should be repositioned if its parent is resized. The default value for the win-gravity attribute is NorthWestGravity. If the inside width or height of a window is not changed and if the window is moved or its border is changed, then the contents of the window are not lost but move with the window. Changing the inside width or height of the window causes its contents to be moved or lost (depending on the bit-gravity of the window) and causes children to be reconfigured (depending on their win-gravity). For a change of width and height, the (x, y) pairs are defined: Gravity Direction Coordinates NorthWestGravity (0, 0) NorthGravity (Width/2, 0) NorthEastGravity (Width, 0) WestGravity (0, Height/2) CenterGravity (Width/2, Height/2) EastGravity (Width, Height/2) SouthWestGravity (0, Height) SouthGravity (Width/2, Height) SouthEastGravity (Width, Height) When a window with one of these bit-gravity values is resized, the corresponding pair defines the change in position of each pixel in the window. When a window with one of these win-gravities has its parent window resized, the corresponding pair defines the change in position of the window within the parent. When a window is so repositioned, a GravityNotify event is generated (see section 10.10.5). A bit-gravity of StaticGravity indicates that the contents or origin should not move relative to the origin of the root window. If the change in size of the window is coupled with a change in position (x, y), then for bit-gravity the change in position of each pixel is (−x, −y), and for win-gravity the change in position of a child when its parent is so resized is (−x, −y). Note that StaticGravity still only takes effect when the width or height of the window is changed, not when the window is moved. A bit-gravity of ForgetGravity indicates that the window's contents are always discarded after a size change, even if a backing store or save under has been requested. The window is tiled with its background and zero or more Expose events are generated. If no background is defined, the existing screen contents are not altered. Some X servers may also ignore the specified bit-gravity and always generate Expose events. The contents and borders of inferiors are not affected by their parent's bit-gravity. A server is permitted to ignore the specified bit-gravity and use Forget instead. A win-gravity of UnmapGravity is like NorthWestGravity (the window is not moved), except the child is also unmapped when the parent is resized, and an UnmapNotify event is generated. Backing Store Attribute Some implementations of the X server may choose to maintain the contents of InputOutput windows. If the X server maintains the contents of a window, the off-screen saved pixels are known as backing store. The backing store advises the X server on what to do with the contents of a window. The backing-store attribute can be set to NotUseful (default), WhenMapped, or Always. A backing-store attribute of NotUseful advises the X server that maintaining contents is unnecessary, although some X implementations may still choose to maintain contents and, therefore, not generate Expose events. A backing-store attribute of WhenMapped advises the X server that maintaining contents of obscured regions when the window is mapped would be beneficial. In this case, the server may generate an Expose event when the window is created. A backing-store attribute of Always advises the X server that maintaining contents even when the window is unmapped would be beneficial. Even if the window is larger than its parent, this is a request to the X server to maintain complete contents, not just the region within the parent window boundaries. While the X server maintains the window's contents, Expose events normally are not generated, but the X server may stop maintaining contents at any time. When the contents of obscured regions of a window are being maintained, regions obscured by noninferior windows are included in the destination of graphics requests (and source, when the window is the source). However, regions obscured by inferior windows are not included. Save Under Flag Save Unders Some server implementations may preserve contents of InputOutput windows under other InputOutput windows. This is not the same as preserving the contents of a window for you. You may get better visual appeal if transient windows (for example, pop-up menus) request that the system preserve the screen contents under them, so the temporarily obscured applications do not have to repaint. You can set the save-under flag to True or False (default). If save-under is True, the X server is advised that, when this window is mapped, saving the contents of windows it obscures would be beneficial. Backing Planes and Backing Pixel Attributes You can set backing planes to indicate (with bits set to 1) which bit planes of an InputOutput window hold dynamic data that must be preserved in backing store and during save unders. The default value for the backing-planes attribute is all bits set to 1. You can set backing pixel to specify what bits to use in planes not covered by backing planes. The default value for the backing-pixel attribute is all bits set to 0. The X server is free to save only the specified bit planes in the backing store or the save under and is free to regenerate the remaining planes with the specified pixel value. Any extraneous bits in these values (that is, those bits beyond the specified depth of the window) may be simply ignored. If you request backing store or save unders, you should use these members to minimize the amount of off-screen memory required to store your window. Event Mask and Do Not Propagate Mask Attributes The event mask defines which events the client is interested in for this InputOutput or InputOnly window (or, for some event types, inferiors of this window). The event mask is the bitwise inclusive OR of zero or more of the valid event mask bits. You can specify that no maskable events are reported by setting NoEventMask (default). The do-not-propagate-mask attribute defines which events should not be propagated to ancestor windows when no client has the event type selected in this InputOutput or InputOnly window. The do-not-propagate-mask is the bitwise inclusive OR of zero or more of the following masks: KeyPress, KeyRelease, ButtonPress, ButtonRelease, PointerMotion, Button1Motion, Button2Motion, Button3Motion, Button4Motion, Button5Motion, and ButtonMotion. You can specify that all events are propagated by setting NoEventMask (default). Override Redirect Flag To control window placement or to add decoration, a window manager often needs to intercept (redirect) any map or configure request. Pop-up windows, however, often need to be mapped without a window manager getting in the way. To control whether an InputOutput or InputOnly window is to ignore these structure control facilities, use the override-redirect flag. The override-redirect flag specifies whether map and configure requests on this window should override a SubstructureRedirectMask on the parent. You can set the override-redirect flag to True or False (default). Window managers use this information to avoid tampering with pop-up windows (see also chapter 14). Colormap Attribute The colormap attribute specifies which colormap best reflects the true colors of the InputOutput window. The colormap must have the same visual type as the window, or a BadMatch error results. X servers capable of supporting multiple hardware colormaps can use this information, and window managers can use it for calls to . You can set the colormap attribute to a colormap or to CopyFromParent (default). If you set the colormap to CopyFromParent, the parent window's colormap is copied and used by its child. However, the child window must have the same visual type as the parent, or a BadMatch error results. The parent window must not have a colormap of None, or a BadMatch error results. The colormap is copied by sharing the colormap object between the child and parent, not by making a complete copy of the colormap contents. Subsequent changes to the parent window's colormap attribute do not affect the child window. Cursor Attribute The cursor attribute specifies which cursor is to be used when the pointer is in the InputOutput or InputOnly window. You can set the cursor to a cursor or None (default). If you set the cursor to None, the parent's cursor is used when the pointer is in the InputOutput or InputOnly window, and any change in the parent's cursor will cause an immediate change in the displayed cursor. By calling , the cursor can be freed immediately as long as no further explicit reference to it is made. Creating Windows Xlib provides basic ways for creating windows, and toolkits often supply higher-level functions specifically for creating and placing top-level windows, which are discussed in the appropriate toolkit documentation. If you do not use a toolkit, however, you must provide some standard information or hints for the window manager by using the Xlib inter-client communication functions (see chapter 14). If you use Xlib to create your own top-level windows (direct children of the root window), you must observe the following rules so that all applications interact reasonably across the different styles of window management: You must never fight with the window manager for the size or placement of your top-level window. You must be able to deal with whatever size window you get, even if this means that your application just prints a message like ``Please make me bigger'' in its window. You should only attempt to resize or move top-level windows in direct response to a user request. If a request to change the size of a top-level window fails, you must be prepared to live with what you get. You are free to resize or move the children of top-level windows as necessary. (Toolkits often have facilities for automatic relayout.) If you do not use a toolkit that automatically sets standard window properties, you should set these properties for top-level windows before mapping them. For further information, see chapter 14 and the Inter-Client Communication Conventions Manual. is the more general function that allows you to set specific window attributes when you create a window. creates a window that inherits its attributes from its parent window. WindowInputOnly The X server acts as if InputOnly windows do not exist for the purposes of graphics requests, exposure processing, and VisibilityNotify events. An InputOnly window cannot be used as a drawable (that is, as a source or destination for graphics requests). InputOnly and InputOutput windows act identically in other respects (properties, grabs, input control, and so on). Extension packages can define other classes of windows. To create an unmapped window and set its window attributes, use . XCreateWindow Window XCreateWindow Display *display Window parent int x int y unsigned int width unsigned int height unsigned int border_width int depth unsigned int class Visual *visual unsigned long valuemask XSetWindowAttributes *attributes display Specifies the connection to the X server. parent Specifies the parent window. x y Specify the x and y coordinates, which are the top-left outside corner of the created window's borders and are relative to the inside of the parent window's borders. width height Specify the width and height, which are the created window's inside dimensions and do not include the created window's borders. The dimensions must be nonzero, or a BadValue error results. border_width Specifies the width of the created window's border in pixels. depth Specifies the window's depth. A depth of CopyFromParent means the depth is taken from the parent. class Specifies the created window's class. You can pass InputOutput, InputOnly, or CopyFromParent. A class of CopyFromParent means the class is taken from the parent. visual Specifies the visual type. A visual of CopyFromParent means the visual type is taken from the parent. valuemask Specifies which window attributes are defined in the attributes argument. This mask is the bitwise inclusive OR of the valid attribute mask bits. If valuemask is zero, the attributes are ignored and are not referenced. attributes Specifies the structure from which the values (as specified by the value mask) are to be taken. The value mask should have the appropriate bits set to indicate which attributes have been set in the structure. The function creates an unmapped subwindow for a specified parent window, returns the window ID of the created window, and causes the X server to generate a CreateNotify event. The created window is placed on top in the stacking order with respect to siblings. The coordinate system has the X axis horizontal and the Y axis vertical with the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms of pixels, and coincide with pixel centers. Each window and pixmap has its own coordinate system. For a window, the origin is inside the border at the inside, upper-left corner. The border_width for an InputOnly window must be zero, or a BadMatch error results. For class InputOutput, the visual type and depth must be a combination supported for the screen, or a BadMatch error results. The depth need not be the same as the parent, but the parent must not be a window of class InputOnly, or a BadMatch error results. For an InputOnly window, the depth must be zero, and the visual must be one supported by the screen. If either condition is not met, a BadMatch error results. The parent window, however, may have any depth and class. If you specify any invalid window attribute for a window, a BadMatch error results. The created window is not yet displayed (mapped) on the user's display. To display the window, call . The new window initially uses the same cursor as its parent. A new cursor can be defined for the new window by calling . CursorInitial State XDefineCursor The window will not be visible on the screen unless it and all of its ancestors are mapped and it is not obscured by any of its ancestors. can generate BadAlloc, BadColor, BadCursor, BadMatch, BadPixmap, BadValue, and BadWindow errors. To create an unmapped InputOutput subwindow of a given parent window, use . XCreateSimpleWindow Window XCreateSimpleWindow Display *display Window parent int x int y unsigned int width unsigned int height unsigned int border_width unsigned long border unsigned long background display Specifies the connection to the X server. parent Specifies the parent window. x y Specify the x and y coordinates, which are the top-left outside corner of the new window's borders and are relative to the inside of the parent window's borders. width height Specify the width and height, which are the created window's inside dimensions and do not include the created window's borders. The dimensions must be nonzero, or a BadValue error results. border_width Specifies the width of the created window's border in pixels. border Specifies the border pixel value of the window. background Specifies the background pixel value of the window. The function creates an unmapped InputOutput subwindow for a specified parent window, returns the window ID of the created window, and causes the X server to generate a CreateNotify event. The created window is placed on top in the stacking order with respect to siblings. Any part of the window that extends outside its parent window is clipped. The border_width for an InputOnly window must be zero, or a BadMatch error results. inherits its depth, class, and visual from its parent. All other window attributes, except background and border, have their default values. can generate BadAlloc, BadMatch, BadValue, and BadWindow errors. Destroying Windows Xlib provides functions that you can use to destroy a window or destroy all subwindows of a window. To destroy a window and all of its subwindows, use . XDestroyWindow XDestroyWindow Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function destroys the specified window as well as all of its subwindows and causes the X server to generate a DestroyNotify event for each window. The window should never be referenced again. If the window specified by the w argument is mapped, it is unmapped automatically. The ordering of the DestroyNotify events is such that for any given window being destroyed, DestroyNotify is generated on any inferiors of the window before being generated on the window itself. The ordering among siblings and across subhierarchies is not otherwise constrained. If the window you specified is a root window, no windows are destroyed. Destroying a mapped window will generate Expose events on other windows that were obscured by the window being destroyed. can generate a BadWindow error. To destroy all subwindows of a specified window, use . XDestroySubwindows XDestroySubwindows Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function destroys all inferior windows of the specified window, in bottom-to-top stacking order. It causes the X server to generate a DestroyNotify event for each window. If any mapped subwindows were actually destroyed, causes the X server to generate Expose events on the specified window. This is much more efficient than deleting many windows one at a time because much of the work need be performed only once for all of the windows, rather than for each window. The subwindows should never be referenced again. can generate a BadWindow error. Mapping Windows A window is considered mapped if an call has been made on it. It may not be visible on the screen for one of the following reasons: It is obscured by another opaque window. One of its ancestors is not mapped. It is entirely clipped by an ancestor. Expose events are generated for the window when part or all of it becomes visible on the screen. A client receives the Expose events only if it has asked for them. Windows retain their position in the stacking order when they are unmapped. A window manager may want to control the placement of subwindows. If SubstructureRedirectMask has been selected by a window manager on a parent window (usually a root window), a map request initiated by other clients on a child window is not performed, and the window manager is sent a MapRequest event. However, if the override-redirect flag on the child had been set to True (usually only on pop-up menus), the map request is performed. A tiling window manager might decide to reposition and resize other clients' windows and then decide to map the window to its final location. A window manager that wants to provide decoration might reparent the child into a frame first. For further information, see sections 3.2.8 and 10.10. Only a single client at a time can select for SubstructureRedirectMask. Similarly, a single client can select for ResizeRedirectMask on a parent window. Then, any attempt to resize the window by another client is suppressed, and the client receives a ResizeRequest event. To map a given window, use . XMapWindow XMapWindow Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function maps the window and all of its subwindows that have had map requests. Mapping a window that has an unmapped ancestor does not display the window but marks it as eligible for display when the ancestor becomes mapped. Such a window is called unviewable. When all its ancestors are mapped, the window becomes viewable and will be visible on the screen if it is not obscured by another window. This function has no effect if the window is already mapped. If the override-redirect of the window is False and if some other client has selected SubstructureRedirectMask on the parent window, then the X server generates a MapRequest event, and the function does not map the window. Otherwise, the window is mapped, and the X server generates a MapNotify event. If the window becomes viewable and no earlier contents for it are remembered, the X server tiles the window with its background. If the window's background is undefined, the existing screen contents are not altered, and the X server generates zero or more Expose events. If backing-store was maintained while the window was unmapped, no Expose events are generated. If backing-store will now be maintained, a full-window exposure is always generated. Otherwise, only visible regions may be reported. Similar tiling and exposure take place for any newly viewable inferiors. XMapWindow If the window is an InputOutput window, generates Expose events on each InputOutput window that it causes to be displayed. If the client maps and paints the window and if the client begins processing events, the window is painted twice. To avoid this, first ask for Expose events and then map the window, so the client processes input events as usual. The event list will include Expose for each window that has appeared on the screen. The client's normal response to an Expose event should be to repaint the window. This method usually leads to simpler programs and to proper interaction with window managers. can generate a BadWindow error. To map and raise a window, use . XMapRaised XMapRaised Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function essentially is similar to in that it maps the window and all of its subwindows that have had map requests. However, it also raises the specified window to the top of the stack. For additional information, see . can generate multiple BadWindow errors. To map all subwindows for a specified window, use . XMapSubwindows XMapSubwindows Display *display Window w display Specifies the connection to the X server. w Specifies the window. The XMapSubwindows function maps all subwindows for a specified window in top-to-bottom stacking order. The X server generates Expose events on each newly displayed window. This may be much more efficient than mapping many windows one at a time because the server needs to perform much of the work only once, for all of the windows, rather than for each window. can generate a BadWindow error. Unmapping Windows Xlib provides functions that you can use to unmap a window or all subwindows. To unmap a window, use . XUnmapWindow XUnmapWindow Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function unmaps the specified window and causes the X server to generate an UnmapNotify UnmapNotify Event XUnmapWindow event. If the specified window is already unmapped, has no effect. Normal exposure processing on formerly obscured windows is performed. Any child window will no longer be visible until another map call is made on the parent. In other words, the subwindows are still mapped but are not visible until the parent is mapped. Unmapping a window will generate Expose events on windows that were formerly obscured by it. can generate a BadWindow error. To unmap all subwindows for a specified window, use . XUnmapSubwindows XUnmapSubwindows Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function unmaps all subwindows for the specified window in bottom-to-top stacking order. It causes the X server to generate an UnmapNotify event on each subwindow and Expose events on formerly obscured windows. UnmapNotify Event Using this function is much more efficient than unmapping multiple windows one at a time because the server needs to perform much of the work only once, for all of the windows, rather than for each window. can generate a BadWindow error. Configuring Windows Xlib provides functions that you can use to move a window, resize a window, move and resize a window, or change a window's border width. To change one of these parameters, set the appropriate member of the XWindowChanges structure and OR in the corresponding value mask in subsequent calls to . The symbols for the value mask bits and the XWindowChanges structure are: /* Configure window value mask bits */ #define CWX (1<<0) #define CWY (1<<1) #define CWWidth (1<<2) #define CWHeight (1<<3) #define CWBorderWidth (1<<4) #define CWSibling (1<<5) #define CWStackMode (1<<6) XWindowChanges /* Values */ typedef struct { int x, y; int width, height; int border_width; Window sibling; int stack_mode; } XWindowChanges; The x and y members are used to set the window's x and y coordinates, which are relative to the parent's origin and indicate the position of the upper-left outer corner of the window. The width and height members are used to set the inside size of the window, not including the border, and must be nonzero, or a BadValue error results. Attempts to configure a root window have no effect. The border_width member is used to set the width of the border in pixels. Note that setting just the border width leaves the outer-left corner of the window in a fixed position but moves the absolute position of the window's origin. If you attempt to set the border-width attribute of an InputOnly window nonzero, a BadMatch error results. The sibling member is used to set the sibling window for stacking operations. The stack_mode member is used to set how the window is to be restacked and can be set to Above, Below, TopIf, BottomIf, or Opposite. If the override-redirect flag of the window is False and if some other client has selected SubstructureRedirectMask on the parent, the X server generates a ConfigureRequest event, and no further processing is performed. Otherwise, if some other client has selected ResizeRedirectMask on the window and the inside width or height of the window is being changed, a ResizeRequest event is generated, and the current inside width and height are used instead. Note that the override-redirect flag of the window has no effect on ResizeRedirectMask and that SubstructureRedirectMask on the parent has precedence over ResizeRedirectMask on the window. When the geometry of the window is changed as specified, the window is restacked among siblings, and a ConfigureNotify event is generated if the state of the window actually changes. GravityNotify events are generated after ConfigureNotify events. If the inside width or height of the window has actually changed, children of the window are affected as specified. If a window's size actually changes, the window's subwindows move according to their window gravity. Depending on the window's bit gravity, the contents of the window also may be moved (see section 3.2.3). If regions of the window were obscured but now are not, exposure processing is performed on these formerly obscured windows, including the window itself and its inferiors. As a result of increasing the width or height, exposure processing is also performed on any new regions of the window and any regions where window contents are lost. The restack check (specifically, the computation for BottomIf, TopIf, and Opposite) is performed with respect to the window's final size and position (as controlled by the other arguments of the request), not its initial position. If a sibling is specified without a stack_mode, a BadMatch error results. If a sibling and a stack_mode are specified, the window is restacked as follows: Above The window is placed just above the sibling. Below The window is placed just below the sibling. TopIf If the sibling occludes the window, the window is placed at the top of the stack. BottomIf If the window occludes the sibling, the window is placed at the bottom of the stack. Opposite If the sibling occludes the window, the window is placed at the top of the stack. If the window occludes the sibling, the window is placed at the bottom of the stack. If a stack_mode is specified but no sibling is specified, the window is restacked as follows: Above The window is placed at the top of the stack. Below The window is placed at the bottom of the stack. TopIf If any sibling occludes the window, the window is placed at the top of the stack. BottomIf If the window occludes any sibling, the window is placed at the bottom of the stack. Opposite If any sibling occludes the window, the window is placed at the top of the stack. If the window occludes any sibling, the window is placed at the bottom of the stack. Attempts to configure a root window have no effect. To configure a window's size, location, stacking, or border, use . XConfigureWindow XConfigureWindow Display *display Window w unsigned int value_mask XWindowChanges *values display Specifies the connection to the X server. w Specifies the window to be reconfigured. value_mask Specifies which values are to be set using information in the values structure. This mask is the bitwise inclusive OR of the valid configure window values bits. values Specifies the XWindowChanges structure. The function uses the values specified in the XWindowChanges structure to reconfigure a window's size, position, border, and stacking order. Values not specified are taken from the existing geometry of the window. If a sibling is specified without a stack_mode or if the window is not actually a sibling, a BadMatch error results. Note that the computations for BottomIf, TopIf, and Opposite are performed with respect to the window's final geometry (as controlled by the other arguments passed to ), not its initial geometry. Any backing store contents of the window, its inferiors, and other newly visible windows are either discarded or changed to reflect the current screen contents (depending on the implementation). can generate BadMatch, BadValue, and BadWindow errors. To move a window without changing its size, use . XMoveWindow XMoveWindow Display *display Window w int x int y display Specifies the connection to the X server. w Specifies the window to be moved. x y Specify the x and y coordinates, which define the new location of the top-left pixel of the window's border or the window itself if it has no border. The function moves the specified window to the specified x and y coordinates, but it does not change the window's size, raise the window, or change the mapping state of the window. Moving a mapped window may or may not lose the window's contents depending on if the window is obscured by nonchildren and if no backing store exists. If the contents of the window are lost, the X server generates Expose events. Moving a mapped window generates Expose events on any formerly obscured windows. If the override-redirect flag of the window is False and some other client has selected SubstructureRedirectMask on the parent, the X server generates a ConfigureRequest event, and no further processing is performed. Otherwise, the window is moved. can generate a BadWindow error. To change a window's size without changing the upper-left coordinate, use . XResizeWindow XResizeWindow Display *display Window w unsigned int width unsigned int height display Specifies the connection to the X server. w Specifies the window. width height Specify the width and height, which are the interior dimensions of the window after the call completes. The function changes the inside dimensions of the specified window, not including its borders. This function does not change the window's upper-left coordinate or the origin and does not restack the window. Changing the size of a mapped window may lose its contents and generate Expose events. If a mapped window is made smaller, changing its size generates Expose events on windows that the mapped window formerly obscured. If the override-redirect flag of the window is False and some other client has selected SubstructureRedirectMask on the parent, the X server generates a ConfigureRequest event, and no further processing is performed. If either width or height is zero, a BadValue error results. can generate BadValue and BadWindow errors. To change the size and location of a window, use . XMoveResizeWindow XMoveResizeWindow Display *display Window w int x int y unsigned int width unsigned int height display Specifies the connection to the X server. w Specifies the window to be reconfigured. x y Specify the x and y coordinates, which define the new position of the window relative to its parent. width height Specify the width and height, which define the interior size of the window. The function changes the size and location of the specified window without raising it. Moving and resizing a mapped window may generate an Expose event on the window. Depending on the new size and location parameters, moving and resizing a window may generate Expose events on windows that the window formerly obscured. If the override-redirect flag of the window is False and some other client has selected SubstructureRedirectMask on the parent, the X server generates a ConfigureRequest event, and no further processing is performed. Otherwise, the window size and location are changed. can generate BadValue and BadWindow errors. To change the border width of a given window, use . XSetWindowBorderWidth XSetWindowBorderWidth Display *display Window w unsigned int width display Specifies the connection to the X server. w Specifies the window. width Specifies the width of the window border. The function sets the specified window's border width to the specified width. can generate a BadWindow error. Changing Window Stacking Order Xlib provides functions that you can use to raise, lower, circulate, or restack windows. To raise a window so that no sibling window obscures it, use . XRaiseWindow XRaiseWindow Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function raises the specified window to the top of the stack so that no sibling window obscures it. If the windows are regarded as overlapping sheets of paper stacked on a desk, then raising a window is analogous to moving the sheet to the top of the stack but leaving its x and y location on the desk constant. Raising a mapped window may generate Expose events for the window and any mapped subwindows that were formerly obscured. If the override-redirect attribute of the window is False and some other client has selected SubstructureRedirectMask on the parent, the X server generates a ConfigureRequest event, and no processing is performed. Otherwise, the window is raised. can generate a BadWindow error. To lower a window so that it does not obscure any sibling windows, use . XLowerWindow XLowerWindow Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function lowers the specified window to the bottom of the stack so that it does not obscure any sibling windows. If the windows are regarded as overlapping sheets of paper stacked on a desk, then lowering a window is analogous to moving the sheet to the bottom of the stack but leaving its x and y location on the desk constant. Lowering a mapped window will generate Expose events on any windows it formerly obscured. If the override-redirect attribute of the window is False and some other client has selected SubstructureRedirectMask on the parent, the X server generates a ConfigureRequest event, and no processing is performed. Otherwise, the window is lowered to the bottom of the stack. can generate a BadWindow error. To circulate a subwindow up or down, use . XCirculateSubwindows XCirculateSubwindows Display *display Window w int direction display Specifies the connection to the X server. w Specifies the window. direction Specifies the direction (up or down) that you want to circulate the window. You can pass RaiseLowest or LowerHighest. The function circulates children of the specified window in the specified direction. If you specify RaiseLowest, raises the lowest mapped child (if any) that is occluded by another child to the top of the stack. If you specify LowerHighest, lowers the highest mapped child (if any) that occludes another child to the bottom of the stack. Exposure processing is then performed on formerly obscured windows. If some other client has selected SubstructureRedirectMask on the window, the X server generates a CirculateRequest event, and no further processing is performed. If a child is actually restacked, the X server generates a CirculateNotify event. can generate BadValue and BadWindow errors. To raise the lowest mapped child of a window that is partially or completely occluded by another child, use . XCirculateSubwindowsUp XCirculateSubwindowsUp Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function raises the lowest mapped child of the specified window that is partially or completely occluded by another child. Completely unobscured children are not affected. This is a convenience function equivalent to with RaiseLowest specified. can generate a BadWindow error. To lower the highest mapped child of a window that partially or completely occludes another child, use . XCirculateSubwindowsDown XCirculateSubwindowsDown Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function lowers the highest mapped child of the specified window that partially or completely occludes another child. Completely unobscured children are not affected. This is a convenience function equivalent to with LowerHighest specified. can generate a BadWindow error. To restack a set of windows from top to bottom, use . XRestackWindows XRestackWindows Display *display Window windows[] int nwindows display Specifies the connection to the X server. windows Specifies an array containing the windows to be restacked. nwindows Specifies the number of windows to be restacked. The function restacks the windows in the order specified, from top to bottom. The stacking order of the first window in the windows array is unaffected, but the other windows in the array are stacked underneath the first window, in the order of the array. The stacking order of the other windows is not affected. For each window in the window array that is not a child of the specified window, a BadMatch error results. If the override-redirect attribute of a window is False and some other client has selected SubstructureRedirectMask on the parent, the X server generates ConfigureRequest events for each window whose override-redirect flag is not set, and no further processing is performed. Otherwise, the windows will be restacked in top-to-bottom order. can generate a BadWindow error. Changing Window Attributes Xlib provides functions that you can use to set window attributes. is the more general function that allows you to set one or more window attributes provided by the XSetWindowAttributes structure. The other functions described in this section allow you to set one specific window attribute, such as a window's background. To change one or more attributes for a given window, use . XChangeWindowAttributes XChangeWindowAttributes Display *display Window w unsigned long valuemask XSetWindowAttributes *attributes display Specifies the connection to the X server. w Specifies the window. valuemask Specifies which window attributes are defined in the attributes argument. This mask is the bitwise inclusive OR of the valid attribute mask bits. If valuemask is zero, the attributes are ignored and are not referenced. The values and restrictions are the same as for . attributes Specifies the structure from which the values (as specified by the value mask) are to be taken. The value mask should have the appropriate bits set to indicate which attributes have been set in the structure (see section 3.2). Depending on the valuemask, the function uses the window attributes in the XSetWindowAttributes structure to change the specified window attributes. Changing the background does not cause the window contents to be changed. To repaint the window and its background, use . Setting the border or changing the background such that the border tile origin changes causes the border to be repainted. Changing the background of a root window to None or ParentRelative restores the default background pixmap. Changing the border of a root window to CopyFromParent restores the default border pixmap. Changing the win-gravity does not affect the current position of the window. Changing the backing-store of an obscured window to WhenMapped or Always, or changing the backing-planes, backing-pixel, or save-under of a mapped window may have no immediate effect. Changing the colormap of a window (that is, defining a new map, not changing the contents of the existing map) generates a ColormapNotify event. Changing the colormap of a visible window may have no immediate effect on the screen because the map may not be installed (see ). Changing the cursor of a root window to None restores the default cursor. Whenever possible, you are encouraged to share colormaps. Multiple clients can select input on the same window. Their event masks are maintained separately. When an event is generated, it is reported to all interested clients. However, only one client at a time can select for SubstructureRedirectMask, ResizeRedirectMask, and ButtonPressMask. If a client attempts to select any of these event masks and some other client has already selected one, a BadAccess error results. There is only one do-not-propagate-mask for a window, not one per client. can generate BadAccess, BadColor, BadCursor, BadMatch, BadPixmap, BadValue, and BadWindow errors. To set the background of a window to a given pixel, use . XSetWindowBackground XSetWindowBackground Display *display Window w unsigned long background_pixel display Specifies the connection to the X server. w Specifies the window. background_pixel Specifies the pixel that is to be used for the background. The function sets the background of the window to the specified pixel value. Changing the background does not cause the window contents to be changed. uses a pixmap of undefined size filled with the pixel value you passed. If you try to change the background of an InputOnly window, a BadMatch error results. can generate BadMatch and BadWindow errors. To set the background of a window to a given pixmap, use . Windowbackground XSetWindowBackgroundPixmap XSetWindowBackgroundPixmap Display *display Window w Pixmap background_pixmap display Specifies the connection to the X server. w Specifies the window. background_pixmap Specifies the background pixmap, ParentRelative, or None. Resource IDsfreeing Freeingresources The function sets the background pixmap of the window to the specified pixmap. The background pixmap can immediately be freed if no further explicit references to it are to be made. If ParentRelative is specified, the background pixmap of the window's parent is used, or on the root window, the default background is restored. If you try to change the background of an InputOnly window, a BadMatch error results. If the background is set to None, the window has no defined background. can generate BadMatch, BadPixmap, and BadWindow errors. and do not change the current contents of the window. To change and repaint a window's border to a given pixel, use . XSetWindowBorder XSetWindowBorder Display *display Window w unsigned long border_pixel display Specifies the connection to the X server. w Specifies the window. border_pixel Specifies the entry in the colormap. The function sets the border of the window to the pixel value you specify. If you attempt to perform this on an InputOnly window, a BadMatch error results. can generate BadMatch and BadWindow errors. To change and repaint the border tile of a given window, use . XSetWindowBorderPixmap XSetWindowBorderPixmap Display *display Window w Pixmap border_pixmap display Specifies the connection to the X server. w Specifies the window. border_pixmap Specifies the border pixmap or CopyFromParent. The function sets the border pixmap of the window to the pixmap you specify. The border pixmap can be freed immediately if no further explicit references to it are to be made. If you specify CopyFromParent, a copy of the parent window's border pixmap is used. If you attempt to perform this on an InputOnly window, a BadMatch error results. Resource IDsfreeing Freeingresources can generate BadMatch, BadPixmap, and BadWindow errors. To set the colormap of a given window, use . XSetWindowColormap XSetWindowColormap Display *display Window w Colormap colormap display Specifies the connection to the X server. w Specifies the window. colormap Specifies the colormap. The function sets the specified colormap of the specified window. The colormap must have the same visual type as the window, or a BadMatch error results. can generate BadColor, BadMatch, and BadWindow errors. To define which cursor will be used in a window, use . Windowdefining the cursor XDefineCursor XDefineCursor Display *display Window w Cursor cursor display Specifies the connection to the X server. w Specifies the window. cursor Specifies the cursor that is to be displayed or None. If a cursor is set, it will be used when the pointer is in the window. If the cursor is None, it is equivalent to . can generate BadCursor and BadWindow errors. To undefine the cursor in a given window, use . Windowundefining the cursor XUndefineCursor XUndefineCursor Display *display Window w display Specifies the connection to the X server. w Specifies the window. The function undoes the effect of a previous for this window. When the pointer is in the window, the parent's cursor will now be used. On the root window, the default cursor is restored. can generate a BadWindow error. libX11-1.8.12/nls/0000755014310600000120000000000014763154167007206 5libX11-1.8.12/nls/iso8859-1/0000755014310600000120000000000014763154167010474 5libX11-1.8.12/nls/iso8859-1/XLC_LOCALE.pre0000644014310600000120000000157714763154126012576 XCOMM XLocale Database Sample for iso8859-1. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-1:GR } font { primary ISO8859-1:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-1 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-1:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-1/Compose.pre0000644014310600000120000010572114763154126012532 XCOMM XCOMM ISO 8859-1 (Latin1) Compose Sequence XCOMM XCOMM XCOMM XCOMM Sequence Definition XCOMM XCOMM Means XCOMM Special Character : "#" numbersign : "'" apostrophe : "'" apostrophe : "@" at : "[" bracketleft : "\\" backslash : "\\" backslash : "\\" backslash : "]" bracketright : "^" asciicircum : "^" asciicircum : "^" asciicircum : "^" asciicircum : "`" grave : "`" grave : "{" braceleft : "{" braceleft : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "}" braceright : "}" braceright : "~" asciitilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "\241" exclamdown : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency <0> : "\244" currency <0> : "\244" currency <0> : "\244" currency <0> : "\244" currency : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright : "\251" copyright : "\252" ordfeminine : "\252" ordfeminine : "\252" ordfeminine : "\252" ordfeminine : "\272" masculine : "\272" masculine : "\272" masculine : "\272" masculine : "\253" guillemotleft : "\273" guillemotright <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree : "\261" plusminus : "\261" plusminus : "\265" mu : "\265" mu : "\265" mu : "\265" mu <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph : "\267" periodcentered : "\267" periodcentered : "\267" periodcentered <1> <4> : "\274" onequarter <1> <2> : "\275" onehalf <3> <4> : "\276" threequarters : "\277" questiondown : "\240" nobreakspace : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\254" notsign : "\254" notsign : "\255" hyphen : "\256" registered : "\256" registered : "\256" registered : "\257" macron : "\257" macron : "\257" macron : "\257" macron : "\257" macron : "\367" division : "\367" division : "\327" multiply : "\264" acute : "\270" cedilla : "\250" diaeresis XCOMM Accented Alphabet : "\300" Agrave : "\300" Agrave : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\303" Atilde : "\303" Atilde : "\303" Atilde : "\303" Atilde : "\304" Adiaeresis : "\304" Adiaeresis : "\304" Adiaeresis : "\304" Adiaeresis : "\305" Aring : "\305" Aring : "\305" Aring : "\305" Aring : "\306" AE : "\340" agrave : "\340" agrave : "\341" aacute : "\341" aacute : "\341" aacute : "\341" aacute : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\343" atilde : "\343" atilde : "\343" atilde : "\343" atilde : "\344" adiaeresis : "\344" adiaeresis : "\344" adiaeresis : "\344" adiaeresis : "\345" aring : "\345" aring : "\345" aring : "\345" aring : "\346" ae : "\307" Ccedilla : "\347" ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\320" ETH : "\320" ETH : "\360" eth : "\360" eth : "\310" Egrave : "\310" Egrave : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\312" Ecircumflex : "\312" Ecircumflex : "\312" Ecircumflex : "\312" Ecircumflex : "\313" Ediaeresis : "\313" Ediaeresis : "\313" Ediaeresis : "\313" Ediaeresis : "\350" egrave : "\350" egrave : "\351" eacute : "\351" eacute : "\351" eacute : "\351" eacute : "\352" ecircumflex : "\352" ecircumflex : "\352" ecircumflex : "\352" ecircumflex : "\353" ediaeresis : "\353" ediaeresis : "\353" ediaeresis : "\353" ediaeresis : "\314" Igrave : "\314" Igrave : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\317" Idiaeresis : "\317" Idiaeresis : "\317" Idiaeresis : "\317" Idiaeresis : "\354" igrave : "\354" igrave : "\355" iacute : "\355" iacute : "\355" iacute : "\355" iacute : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\357" idiaeresis : "\357" idiaeresis : "\357" idiaeresis : "\357" idiaeresis : "\321" Ntilde : "\321" Ntilde : "\321" Ntilde : "\321" Ntilde : "\361" ntilde : "\361" ntilde : "\361" ntilde : "\361" ntilde : "\322" Ograve : "\322" Ograve : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\325" Otilde : "\325" Otilde : "\325" Otilde : "\325" Otilde : "\326" Odiaeresis : "\326" Odiaeresis : "\326" Odiaeresis : "\326" Odiaeresis : "\330" Ooblique : "\330" Ooblique : "\362" ograve : "\362" ograve : "\363" oacute : "\363" oacute : "\363" oacute : "\363" oacute : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\365" otilde : "\365" otilde : "\365" otilde : "\365" otilde : "\366" odiaeresis : "\366" odiaeresis : "\366" odiaeresis : "\366" odiaeresis : "\370" oslash : "\370" oslash : "\331" Ugrave : "\331" Ugrave : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\334" Udiaeresis : "\334" Udiaeresis : "\334" Udiaeresis : "\334" Udiaeresis : "\371" ugrave : "\371" ugrave : "\372" uacute : "\372" uacute : "\372" uacute : "\372" uacute : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\374" udiaeresis : "\374" udiaeresis : "\374" udiaeresis : "\374" udiaeresis : "\337" ssharp : "\336" THORN : "\376" thorn : "\335" Yacute : "\335" Yacute : "\335" Yacute : "\335" Yacute : "\375" yacute : "\375" yacute : "\375" yacute : "\375" yacute : "\377" ydiaeresis : "\377" ydiaeresis : "\377" ydiaeresis : "\377" ydiaeresis XCOMM XCOMM XCOMM dead key accent keysyms XCOMM Special Character : "|" bar : "^" asciicircum : "^" asciicircum : "~" asciitilde : "~" asciitilde : "`" grave : "`" grave XCOMM These are for us_intl, that does not have diaeresis, etc : "'" apostrophe : "\264" acute : "\"" quotedbl : "\250" diaeresis : "\"" quotedbl : "\260" degree : "\260" degree <0> : "\260" degree <1> : "\271" onesuperior <2> : "\262" twosuperior <3> : "\263" threesuperior : "\267" periodcentered : "\246" brokenbar : "\254" notsign : "\257" macron : "\257" macron : "\264" acute : "\270" cedilla : "\250" diaeresis XCOMM Accented Alphabet : "\305" Aring : "\300" Agrave : "\301" Aacute : "\302" Acircumflex : "\303" Atilde : "\304" Adiaeresis : "\345" aring : "\340" agrave : "\341" aacute : "\342" acircumflex : "\343" atilde : "\344" adiaeresis : "\307" Ccedilla : "\347" ccedilla : "\310" Egrave : "\311" Eacute : "\312" Ecircumflex : "\313" Ediaeresis : "\350" egrave : "\351" eacute : "\352" ecircumflex : "\353" ediaeresis : "\314" Igrave : "\315" Iacute : "\316" Icircumflex : "\317" Idiaeresis : "\354" igrave : "\355" iacute : "\356" icircumflex : "\357" idiaeresis : "\321" Ntilde : "\361" ntilde : "\322" Ograve : "\323" Oacute : "\324" Ocircumflex : "\325" Otilde : "\326" Odiaeresis : "\362" ograve : "\363" oacute : "\364" ocircumflex : "\365" otilde : "\366" odiaeresis : "\331" Ugrave : "\332" Uacute : "\333" Ucircumflex : "\334" Udiaeresis : "\334" Udiaeresis : "\371" ugrave : "\372" uacute : "\373" ucircumflex : "\374" udiaeresis : "\374" udiaeresis : "\335" Yacute : "\375" yacute : "\377" ydiaeresis XCOMM Useful for portuguese language : "\307" Ccedilla : "\347" ccedilla XCOMM #ifdef USE_CTRL_SHIFT_T_SEQS XCOMM Ctrl Means XCOMM Special Character Ctrl : "#" numbersign Ctrl : "'" apostrophe Ctrl : "'" apostrophe Ctrl : "@" at Ctrl : "[" bracketleft Ctrl : "\\" backslash Ctrl : "\\" backslash Ctrl : "\\" backslash Ctrl : "]" bracketright Ctrl : "^" asciicircum Ctrl : "^" asciicircum Ctrl : "^" asciicircum Ctrl : "^" asciicircum Ctrl : "`" grave Ctrl : "`" grave Ctrl : "{" braceleft Ctrl : "{" braceleft Ctrl : "|" bar Ctrl : "|" bar Ctrl : "|" bar Ctrl : "|" bar Ctrl : "|" bar Ctrl : "|" bar Ctrl : "}" braceright Ctrl : "}" braceright Ctrl : "~" asciitilde Ctrl : "~" asciitilde Ctrl : "~" asciitilde Ctrl : "~" asciitilde Ctrl : "\241" exclamdown Ctrl : "\242" cent Ctrl : "\242" cent Ctrl : "\242" cent Ctrl : "\242" cent Ctrl : "\242" cent Ctrl : "\242" cent Ctrl : "\242" cent Ctrl : "\242" cent Ctrl : "\243" sterling Ctrl : "\243" sterling Ctrl : "\243" sterling Ctrl : "\243" sterling Ctrl : "\243" sterling Ctrl : "\243" sterling Ctrl : "\243" sterling Ctrl : "\243" sterling Ctrl : "\245" yen Ctrl : "\245" yen Ctrl : "\245" yen Ctrl : "\245" yen Ctrl : "\245" yen Ctrl : "\245" yen Ctrl : "\245" yen Ctrl : "\245" yen Ctrl : "\247" section Ctrl : "\247" section Ctrl : "\247" section Ctrl : "\247" section Ctrl : "\247" section Ctrl : "\247" section Ctrl : "\247" section Ctrl : "\247" section Ctrl <0> : "\247" section Ctrl <0> : "\247" section Ctrl <0> : "\247" section Ctrl <0> : "\247" section Ctrl : "\244" currency Ctrl : "\244" currency Ctrl : "\244" currency Ctrl : "\244" currency Ctrl : "\244" currency Ctrl : "\244" currency Ctrl : "\244" currency Ctrl : "\244" currency Ctrl <0> : "\244" currency Ctrl <0> : "\244" currency Ctrl <0> : "\244" currency Ctrl <0> : "\244" currency Ctrl : "\251" copyright Ctrl : "\251" copyright Ctrl : "\251" copyright Ctrl : "\251" copyright Ctrl : "\251" copyright Ctrl : "\251" copyright Ctrl : "\251" copyright Ctrl : "\251" copyright Ctrl <0> : "\251" copyright Ctrl <0> : "\251" copyright Ctrl <0> : "\251" copyright Ctrl <0> : "\251" copyright Ctrl : "\252" ordfeminine Ctrl : "\252" ordfeminine Ctrl : "\252" ordfeminine Ctrl : "\252" ordfeminine Ctrl : "\272" masculine Ctrl : "\272" masculine Ctrl : "\272" masculine Ctrl : "\272" masculine Ctrl : "\253" guillemotleft Ctrl : "\273" guillemotright Ctrl <0> : "\260" degree Ctrl <0> : "\260" degree Ctrl <0> : "\260" degree Ctrl <0> : "\260" degree Ctrl : "\261" plusminus Ctrl : "\261" plusminus Ctrl : "\265" mu Ctrl : "\265" mu Ctrl : "\265" mu Ctrl : "\265" mu Ctrl <1> : "\271" onesuperior Ctrl <1> : "\271" onesuperior Ctrl <1> : "\271" onesuperior Ctrl <1> : "\271" onesuperior Ctrl <1> : "\271" onesuperior Ctrl <1> : "\271" onesuperior Ctrl <2> : "\262" twosuperior Ctrl <2> : "\262" twosuperior Ctrl <2> : "\262" twosuperior Ctrl <2> : "\262" twosuperior Ctrl <2> : "\262" twosuperior Ctrl <2> : "\262" twosuperior Ctrl <3> : "\263" threesuperior Ctrl <3> : "\263" threesuperior Ctrl <3> : "\263" threesuperior Ctrl <3> : "\263" threesuperior Ctrl <3> : "\263" threesuperior Ctrl <3> : "\263" threesuperior Ctrl

: "\266" paragraph Ctrl

: "\266" paragraph Ctrl

: "\266" paragraph Ctrl

: "\266" paragraph Ctrl : "\267" periodcentered Ctrl : "\267" periodcentered Ctrl : "\267" periodcentered Ctrl <1> <4> : "\274" onequarter Ctrl <1> <2> : "\275" onehalf Ctrl <3> <4> : "\276" threequarters Ctrl : "\277" questiondown Ctrl : "\240" nobreakspace Ctrl : "\246" brokenbar Ctrl : "\246" brokenbar Ctrl : "\246" brokenbar Ctrl : "\246" brokenbar Ctrl : "\246" brokenbar Ctrl : "\246" brokenbar Ctrl : "\246" brokenbar Ctrl : "\254" notsign Ctrl : "\254" notsign Ctrl : "\255" hyphen Ctrl : "\256" registered Ctrl : "\256" registered Ctrl : "\257" macron Ctrl : "\257" macron Ctrl : "\257" macron Ctrl : "\257" macron Ctrl : "\257" macron Ctrl : "\367" division Ctrl : "\367" division Ctrl : "\327" multiply Ctrl : "\264" acute Ctrl : "\270" cedilla Ctrl : "\250" diaeresis XCOMM Accented Alphabet Ctrl : "\300" Agrave Ctrl : "\300" Agrave Ctrl : "\301" Aacute Ctrl : "\301" Aacute Ctrl : "\301" Aacute Ctrl : "\301" Aacute Ctrl : "\302" Acircumflex Ctrl : "\302" Acircumflex Ctrl : "\302" Acircumflex Ctrl : "\302" Acircumflex Ctrl : "\303" Atilde Ctrl : "\303" Atilde Ctrl : "\303" Atilde Ctrl : "\303" Atilde Ctrl : "\304" Adiaeresis Ctrl : "\304" Adiaeresis Ctrl : "\304" Adiaeresis Ctrl : "\304" Adiaeresis Ctrl : "\305" Aring Ctrl : "\305" Aring Ctrl : "\305" Aring Ctrl : "\305" Aring Ctrl : "\306" AE Ctrl : "\340" agrave Ctrl : "\340" agrave Ctrl : "\341" aacute Ctrl : "\341" aacute Ctrl : "\341" aacute Ctrl : "\341" aacute Ctrl : "\342" acircumflex Ctrl : "\342" acircumflex Ctrl : "\342" acircumflex Ctrl : "\342" acircumflex Ctrl : "\343" atilde Ctrl : "\343" atilde Ctrl : "\343" atilde Ctrl : "\343" atilde Ctrl : "\344" adiaeresis Ctrl : "\344" adiaeresis Ctrl : "\344" adiaeresis Ctrl : "\344" adiaeresis Ctrl : "\345" aring Ctrl : "\345" aring Ctrl : "\345" aring Ctrl : "\345" aring Ctrl : "\346" ae Ctrl : "\307" Ccedilla Ctrl : "\307" Ccedilla Ctrl : "\347" ccedilla Ctrl : "\347" ccedilla Ctrl : "\320" ETH Ctrl : "\320" ETH Ctrl : "\360" eth Ctrl : "\360" eth Ctrl : "\310" Egrave Ctrl : "\310" Egrave Ctrl : "\311" Eacute Ctrl : "\311" Eacute Ctrl : "\311" Eacute Ctrl : "\311" Eacute Ctrl : "\312" Ecircumflex Ctrl : "\312" Ecircumflex Ctrl : "\312" Ecircumflex Ctrl : "\312" Ecircumflex Ctrl : "\313" Ediaeresis Ctrl : "\313" Ediaeresis Ctrl : "\313" Ediaeresis Ctrl : "\313" Ediaeresis Ctrl : "\350" egrave Ctrl : "\350" egrave Ctrl : "\351" eacute Ctrl : "\351" eacute Ctrl : "\351" eacute Ctrl : "\351" eacute Ctrl : "\352" ecircumflex Ctrl : "\352" ecircumflex Ctrl : "\352" ecircumflex Ctrl : "\352" ecircumflex Ctrl : "\353" ediaeresis Ctrl : "\353" ediaeresis Ctrl : "\353" ediaeresis Ctrl : "\353" ediaeresis Ctrl : "\314" Igrave Ctrl : "\314" Igrave Ctrl : "\315" Iacute Ctrl : "\315" Iacute Ctrl : "\315" Iacute Ctrl : "\315" Iacute Ctrl : "\316" Icircumflex Ctrl : "\316" Icircumflex Ctrl : "\316" Icircumflex Ctrl : "\316" Icircumflex Ctrl : "\317" Idiaeresis Ctrl : "\317" Idiaeresis Ctrl : "\317" Idiaeresis Ctrl : "\317" Idiaeresis Ctrl : "\354" igrave Ctrl : "\354" igrave Ctrl : "\355" iacute Ctrl : "\355" iacute Ctrl : "\355" iacute Ctrl : "\355" iacute Ctrl : "\356" icircumflex Ctrl : "\356" icircumflex Ctrl : "\356" icircumflex Ctrl : "\356" icircumflex Ctrl : "\357" idiaeresis Ctrl : "\357" idiaeresis Ctrl : "\357" idiaeresis Ctrl : "\357" idiaeresis Ctrl : "\321" Ntilde Ctrl : "\321" Ntilde Ctrl : "\321" Ntilde Ctrl : "\321" Ntilde Ctrl : "\361" ntilde Ctrl : "\361" ntilde Ctrl : "\361" ntilde Ctrl : "\361" ntilde Ctrl : "\322" Ograve Ctrl : "\322" Ograve Ctrl : "\323" Oacute Ctrl : "\323" Oacute Ctrl : "\323" Oacute Ctrl : "\323" Oacute Ctrl : "\324" Ocircumflex Ctrl : "\324" Ocircumflex Ctrl : "\324" Ocircumflex Ctrl : "\324" Ocircumflex Ctrl : "\325" Otilde Ctrl : "\325" Otilde Ctrl : "\325" Otilde Ctrl : "\325" Otilde Ctrl : "\326" Odiaeresis Ctrl : "\326" Odiaeresis Ctrl : "\326" Odiaeresis Ctrl : "\326" Odiaeresis Ctrl : "\330" Ooblique Ctrl : "\330" Ooblique Ctrl : "\362" ograve Ctrl : "\362" ograve Ctrl : "\363" oacute Ctrl : "\363" oacute Ctrl : "\363" oacute Ctrl : "\363" oacute Ctrl : "\364" ocircumflex Ctrl : "\364" ocircumflex Ctrl : "\364" ocircumflex Ctrl : "\364" ocircumflex Ctrl : "\365" otilde Ctrl : "\365" otilde Ctrl : "\365" otilde Ctrl : "\365" otilde Ctrl : "\366" odiaeresis Ctrl : "\366" odiaeresis Ctrl : "\366" odiaeresis Ctrl : "\366" odiaeresis Ctrl : "\370" oslash Ctrl : "\370" oslash Ctrl : "\331" Ugrave Ctrl : "\331" Ugrave Ctrl : "\332" Uacute Ctrl : "\332" Uacute Ctrl : "\332" Uacute Ctrl : "\332" Uacute Ctrl : "\333" Ucircumflex Ctrl : "\333" Ucircumflex Ctrl : "\333" Ucircumflex Ctrl : "\333" Ucircumflex Ctrl : "\334" Udiaeresis Ctrl : "\334" Udiaeresis Ctrl : "\334" Udiaeresis Ctrl : "\334" Udiaeresis Ctrl : "\371" ugrave Ctrl : "\371" ugrave Ctrl : "\372" uacute Ctrl : "\372" uacute Ctrl : "\372" uacute Ctrl : "\372" uacute Ctrl : "\373" ucircumflex Ctrl : "\373" ucircumflex Ctrl : "\373" ucircumflex Ctrl : "\373" ucircumflex Ctrl : "\374" udiaeresis Ctrl : "\374" udiaeresis Ctrl : "\374" udiaeresis Ctrl : "\374" udiaeresis Ctrl : "\337" ssharp Ctrl : "\336" THORN Ctrl : "\376" thorn Ctrl : "\335" Yacute Ctrl : "\335" Yacute Ctrl : "\335" Yacute Ctrl : "\335" Yacute Ctrl : "\375" yacute Ctrl : "\375" yacute Ctrl : "\375" yacute Ctrl : "\375" yacute Ctrl : "\377" ydiaeresis Ctrl : "\377" ydiaeresis Ctrl : "\377" ydiaeresis Ctrl : "\377" ydiaeresis #endif /* USE_CTRL_SHIFT_T_SEQS */ XCOMM End of Sequence Definition libX11-1.8.12/nls/iso8859-1/XI18N_OBJS0000644014310600000120000000052414763154126011757 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for euro locales # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/nokhchi-1/0000755014310600000120000000000014763154167010767 5libX11-1.8.12/nls/nokhchi-1/Compose.pre0000644014310600000120000000000014763154126013005 libX11-1.8.12/nls/nokhchi-1/XI18N_OBJS0000644014310600000120000000052514763154126012253 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for nokhchi-1 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/nokhchi-1/XLC_LOCALE.pre0000644014310600000120000000211014763154126013051 XCOMM XLocale Database Sample for mulelao-1. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary NOKHCHI-1:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset NOKHCHI-1:GR font NOKHCHI-1:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name NOKHCHI-1 side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name NOKHCHI-1 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding NOKHCHI-1:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding NOKHCHI-1:GR } END XLC_XLOCALE libX11-1.8.12/nls/pt_PT.UTF-8/0000755014310600000120000000000014763154167011036 5libX11-1.8.12/nls/pt_PT.UTF-8/Compose.pre0000644014310600000120000000027414763154126013071 include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" : "Ç" Ccedilla # LATIN CAPITAL LETTER C WITH CEDILLA : "ç" ccedilla # LATIN SMALL LETTER C WITH CEDILLA libX11-1.8.12/nls/pt_PT.UTF-8/XI18N_OBJS0000644014310600000120000000053114763154126012317 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for pt_PT.UTF-8 locale # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/pt_PT.UTF-8/XLC_LOCALE.pre0000644014310600000120000000411114763154126013123 XCOMM XLocale Database Sample for pt_PT.UTF-8 XCOMM XCOMM Based on XLocale Database Sample for en_US.UTF-8 XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET on_demand_loading True object_name generic XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class (ISO8859 families) fs1 { charset { name ISO8859-1:GR } font { primary ISO8859-1:GR } } XCOMM fs2 class (Kanji) fs2 { charset { name JISX0208.1983-0:GL } font { primary JISX0208.1983-0:GL } } XCOMM fs3 class (Korean Character) fs3 { charset { name KSC5601.1987-0:GL } font { primary KSC5601.1987-0:GL } } XCOMM fs4 class (Chinese Han Character) fs4 { charset { name GB2312.1980-0:GL } font { primary GB2312.1980-0:GL } } XCOMM fs5 class (Half Kana) fs5 { charset { name JISX0201.1976-0:GR } font { primary JISX0201.1976-0:GR vertical_rotate all } } XCOMM ISO10646 is last, per Roland Mainz in XCOMM http://bugs.freedesktop.org/show_bug.cgi?id=1896 fs6 { charset { name ISO10646-1 } font { primary ISO10646-1 } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name UTF-8 mb_cur_max 6 state_depend_encoding False XCOMM cs0 class cs0 { side GL:Default length 1 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 ct_encoding ISO8859-1:GR } XCOMM cs2 class cs2 { side GR length 2 ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\ JISX0208.1983-1:GL; JISX0208.1983-1:GR } XCOMM cs3 class cs3 { side GL length 2 ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\ KSC5601.1987-1:GL; KSC5601.1987-1:GR } XCOMM cs4 class cs4 { side GR length 2 ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR } XCOMM cs5 class cs5 { side GR length 1 ct_encoding JISX0201.1976-0:GR } XCOMM cs6 class cs6 { side none ct_encoding ISO10646-1 } END XLC_XLOCALE libX11-1.8.12/nls/el_GR.UTF-8/0000755014310600000120000000000014763154167011000 5libX11-1.8.12/nls/el_GR.UTF-8/XLC_LOCALE.pre0000644014310600000120000000000014763154126013056 libX11-1.8.12/nls/el_GR.UTF-8/XI18N_OBJS0000644014310600000120000000000014763154126012250 libX11-1.8.12/nls/el_GR.UTF-8/Compose.pre0000644014310600000120000036423114763154126013041 XCOMM XCOMM XCOMM UTF-8 compose sequence definitions for the greek keyboard layout. XCOMM XCOMM This file is mostly meant to be used along with the xkb/symbols/el XCOMM symbols definition file. In addition, the dead key definitions in XCOMM the machine generated part are really only relevant to the XCOMM "polytonic" variant in that file. XCOMM XCOMM The definitions herein cover the following ISO 10646 / Unicode XCOMM ranges: XCOMM - Basic Latin (0000-007F) (complete coverage) XCOMM - Latin-1 Supplement (0080-00FF) (complete coverage) XCOMM - Greek and Coptic (0370-03FF) (only the big ISO 8859-7 based XCOMM part at the beginning) XCOMM - Greek Extended (1F00-1FFF) (complete coverage) XCOMM - There are also six (6) characters from other ranges. XCOMM Moreover, the following character sets are completely covered: XCOMM - ISO 8859-1 XCOMM - ISO 8859-7 XCOMM XCOMM This file consists of three parts. Two of them have been adapted XCOMM from the iso8859-1/Compose and iso8859-7/Compose files. The other XCOMM (middle) part has been created by: XCOMM Vasilis Vasaitis XCOMM based on the idea and initial implementation by: XCOMM Alejandros Diamandidis XCOMM Part 1 XCOMM XCOMM ISO 8859-1 (Latin-1) multi-key definitions extracted and converted XCOMM from the iso8859-1/Compose file. XCOMM Special Character : "#" numbersign : "'" apostrophe : "'" apostrophe : "@" at : "[" bracketleft : "\\" backslash : "\\" backslash : "]" bracketright : "^" asciicircum : "^" asciicircum : "^" asciicircum : "^" asciicircum : "`" grave : "`" grave : "{" braceleft : "{" braceleft : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "}" braceright : "}" braceright : "~" asciitilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "¡" exclamdown : "¢" cent : "¢" cent : "¢" cent : "¢" cent : "¢" cent : "¢" cent : "¢" cent : "¢" cent : "£" sterling : "£" sterling : "£" sterling : "£" sterling : "£" sterling : "£" sterling : "£" sterling : "£" sterling : "¥" yen : "¥" yen : "¥" yen : "¥" yen : "¥" yen : "¥" yen : "¥" yen : "¥" yen : "§" section : "§" section : "§" section : "§" section : "§" section : "§" section : "§" section : "§" section <0> : "§" section <0> : "§" section <0> : "§" section <0> : "§" section : "¤" currency : "¤" currency : "¤" currency : "¤" currency : "¤" currency : "¤" currency : "¤" currency : "¤" currency <0> : "¤" currency <0> : "¤" currency <0> : "¤" currency <0> : "¤" currency : "©" copyright : "©" copyright : "©" copyright : "©" copyright : "©" copyright : "©" copyright : "©" copyright : "©" copyright <0> : "©" copyright <0> : "©" copyright <0> : "©" copyright <0> : "©" copyright : "©" copyright : "ª" ordfeminine : "ª" ordfeminine : "ª" ordfeminine : "ª" ordfeminine : "º" masculine : "º" masculine : "º" masculine : "º" masculine : "«" guillemotleft : "»" guillemotright <0> : "°" degree <0> : "°" degree <0> : "°" degree <0> : "°" degree : "±" plusminus : "±" plusminus : "µ" mu : "µ" mu : "µ" mu : "µ" mu <1> : "¹" onesuperior <1> : "¹" onesuperior <1> : "¹" onesuperior <1> : "¹" onesuperior <1> : "¹" onesuperior <1> : "¹" onesuperior <2> : "²" twosuperior <2> : "²" twosuperior <2> : "²" twosuperior <2> : "²" twosuperior <2> : "²" twosuperior <2> : "²" twosuperior <3> : "³" threesuperior <3> : "³" threesuperior <3> : "³" threesuperior <3> : "³" threesuperior <3> : "³" threesuperior <3> : "³" threesuperior

: "¶" paragraph

: "¶" paragraph

: "¶" paragraph

: "¶" paragraph : "·" periodcentered : "·" periodcentered : "·" periodcentered : "•" enfilledcircbullet : "…" ellipsis <1> <4> : "¼" onequarter <1> <2> : "½" onehalf <3> <4> : "¾" threequarters : "¿" questiondown : " " nobreakspace : "¦" brokenbar : "¦" brokenbar : "¦" brokenbar : "¦" brokenbar : "¦" brokenbar : "¦" brokenbar : "¦" brokenbar : "¬" notsign : "¬" notsign : "­" hyphen : "®" registered : "®" registered : "®" registered : "¯" macron : "¯" macron : "¯" macron : "¯" macron : "¯" macron : "÷" division : "÷" division : "×" multiply : "´" acute : "¸" cedilla : "¨" diaeresis XCOMM Accented Alphabet : "À" Agrave : "À" Agrave : "Á" Aacute : "Á" Aacute : "Á" Aacute : "Á" Aacute : "Â" Acircumflex : "Â" Acircumflex : "Â" Acircumflex : "Â" Acircumflex : "Ã" Atilde : "Ã" Atilde : "Ã" Atilde : "Ã" Atilde : "Ä" Adiaeresis : "Ä" Adiaeresis : "Ä" Adiaeresis : "Ä" Adiaeresis : "Å" Aring : "Å" Aring : "Å" Aring : "Å" Aring : "Æ" AE : "à" agrave : "à" agrave : "á" aacute : "á" aacute : "á" aacute : "á" aacute : "â" acircumflex : "â" acircumflex : "â" acircumflex : "â" acircumflex : "ã" atilde : "ã" atilde : "ã" atilde : "ã" atilde : "ä" adiaeresis : "ä" adiaeresis : "ä" adiaeresis : "ä" adiaeresis : "å" aring : "å" aring : "å" aring : "å" aring : "æ" ae : "Ç" Ccedilla : "ç" ccedilla : "Ç" Ccedilla : "Ç" Ccedilla : "Ç" Ccedilla : "Ç" Ccedilla : "ç" ccedilla : "ç" ccedilla : "ç" ccedilla : "ç" ccedilla : "Ð" ETH : "Ð" ETH : "ð" eth : "ð" eth : "È" Egrave : "È" Egrave : "É" Eacute : "É" Eacute : "É" Eacute : "É" Eacute : "Ê" Ecircumflex : "Ê" Ecircumflex : "Ê" Ecircumflex : "Ê" Ecircumflex : "Ë" Ediaeresis : "Ë" Ediaeresis : "Ë" Ediaeresis : "Ë" Ediaeresis : "è" egrave : "è" egrave : "é" eacute : "é" eacute : "é" eacute : "é" eacute : "ê" ecircumflex : "ê" ecircumflex : "ê" ecircumflex : "ê" ecircumflex : "ë" ediaeresis : "ë" ediaeresis : "ë" ediaeresis : "ë" ediaeresis : "Ì" Igrave : "Ì" Igrave : "Í" Iacute : "Í" Iacute : "Í" Iacute : "Í" Iacute : "Î" Icircumflex : "Î" Icircumflex : "Î" Icircumflex : "Î" Icircumflex : "Ï" Idiaeresis : "Ï" Idiaeresis : "Ï" Idiaeresis : "Ï" Idiaeresis : "ì" igrave : "ì" igrave : "í" iacute : "í" iacute : "í" iacute : "í" iacute : "î" icircumflex : "î" icircumflex : "î" icircumflex : "î" icircumflex : "ï" idiaeresis : "ï" idiaeresis : "ï" idiaeresis : "ï" idiaeresis : "Ñ" Ntilde : "Ñ" Ntilde : "Ñ" Ntilde : "Ñ" Ntilde : "ñ" ntilde : "ñ" ntilde : "ñ" ntilde : "ñ" ntilde : "Ò" Ograve : "Ò" Ograve : "Ó" Oacute : "Ó" Oacute : "Ó" Oacute : "Ó" Oacute : "Ô" Ocircumflex : "Ô" Ocircumflex : "Ô" Ocircumflex : "Ô" Ocircumflex : "Õ" Otilde : "Õ" Otilde : "Õ" Otilde : "Õ" Otilde : "Ö" Odiaeresis : "Ö" Odiaeresis : "Ö" Odiaeresis : "Ö" Odiaeresis : "Ø" Ooblique : "Ø" Ooblique : "ò" ograve : "ò" ograve : "ó" oacute : "ó" oacute : "ó" oacute : "ó" oacute : "ô" ocircumflex : "ô" ocircumflex : "ô" ocircumflex : "ô" ocircumflex : "õ" otilde : "õ" otilde : "õ" otilde : "õ" otilde : "ö" odiaeresis : "ö" odiaeresis : "ö" odiaeresis : "ö" odiaeresis : "ø" oslash : "ø" oslash : "Ù" Ugrave : "Ù" Ugrave : "Ú" Uacute : "Ú" Uacute : "Ú" Uacute : "Ú" Uacute : "Û" Ucircumflex : "Û" Ucircumflex : "Û" Ucircumflex : "Û" Ucircumflex : "Ü" Udiaeresis : "Ü" Udiaeresis : "Ü" Udiaeresis : "Ü" Udiaeresis : "ù" ugrave : "ù" ugrave : "ú" uacute : "ú" uacute : "ú" uacute : "ú" uacute : "û" ucircumflex : "û" ucircumflex : "û" ucircumflex : "û" ucircumflex : "ü" udiaeresis : "ü" udiaeresis : "ü" udiaeresis : "ü" udiaeresis : "ß" ssharp : "Þ" THORN : "þ" thorn : "Ý" Yacute : "Ý" Yacute : "Ý" Yacute : "Ý" Yacute : "ý" yacute : "ý" yacute : "ý" yacute : "ý" yacute : "ÿ" ydiaeresis : "ÿ" ydiaeresis : "ÿ" ydiaeresis : "ÿ" ydiaeresis XCOMM Part 2 XCOMM XCOMM Greek Extended multi-key and dead key definitions. These have been XCOMM machine-generated by a perl script, found at: XCOMM http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl : "ἀ" U1f00 : "ἀ" U1f00 : "ἀ" U1f00 : "ἁ" U1f01 : "ἁ" U1f01 : "ἁ" U1f01 : "ἂ" U1f02 : "ἂ" U1f02 : "ἂ" U1f02 : "ἂ" U1f02 : "ἂ" U1f02 : "ἂ" U1f02 : "ἃ" U1f03 : "ἃ" U1f03 : "ἃ" U1f03 : "ἃ" U1f03 : "ἃ" U1f03 : "ἃ" U1f03 : "ἄ" U1f04 : "ἄ" U1f04 : "ἄ" U1f04 : "ἄ" U1f04 : "ἄ" U1f04 : "ἄ" U1f04 : "ἅ" U1f05 : "ἅ" U1f05 : "ἅ" U1f05 : "ἅ" U1f05 : "ἅ" U1f05 : "ἅ" U1f05 : "ἆ" U1f06 : "ἆ" U1f06 : "ἆ" U1f06 : "ἆ" U1f06 : "ἆ" U1f06 : "ἆ" U1f06 : "ἇ" U1f07 : "ἇ" U1f07 : "ἇ" U1f07 : "ἇ" U1f07 : "ἇ" U1f07 : "ἇ" U1f07 : "Ἀ" U1f08 : "Ἀ" U1f08 : "Ἀ" U1f08 : "Ἁ" U1f09 : "Ἁ" U1f09 : "Ἁ" U1f09 : "Ἂ" U1f0a : "Ἂ" U1f0a : "Ἂ" U1f0a : "Ἂ" U1f0a : "Ἂ" U1f0a : "Ἂ" U1f0a : "Ἃ" U1f0b : "Ἃ" U1f0b : "Ἃ" U1f0b : "Ἃ" U1f0b : "Ἃ" U1f0b : "Ἃ" U1f0b : "Ἄ" U1f0c : "Ἄ" U1f0c : "Ἄ" U1f0c : "Ἄ" U1f0c : "Ἄ" U1f0c : "Ἄ" U1f0c : "Ἅ" U1f0d : "Ἅ" U1f0d : "Ἅ" U1f0d : "Ἅ" U1f0d : "Ἅ" U1f0d : "Ἅ" U1f0d : "Ἆ" U1f0e : "Ἆ" U1f0e : "Ἆ" U1f0e : "Ἆ" U1f0e : "Ἆ" U1f0e : "Ἆ" U1f0e : "Ἇ" U1f0f : "Ἇ" U1f0f : "Ἇ" U1f0f : "Ἇ" U1f0f : "Ἇ" U1f0f : "Ἇ" U1f0f : "ἐ" U1f10 : "ἐ" U1f10 : "ἐ" U1f10 : "ἑ" U1f11 : "ἑ" U1f11 : "ἑ" U1f11 : "ἒ" U1f12 : "ἒ" U1f12 : "ἒ" U1f12 : "ἒ" U1f12 : "ἒ" U1f12 : "ἒ" U1f12 : "ἓ" U1f13 : "ἓ" U1f13 : "ἓ" U1f13 : "ἓ" U1f13 : "ἓ" U1f13 : "ἓ" U1f13 : "ἔ" U1f14 : "ἔ" U1f14 : "ἔ" U1f14 : "ἔ" U1f14 : "ἔ" U1f14 : "ἔ" U1f14 : "ἕ" U1f15 : "ἕ" U1f15 : "ἕ" U1f15 : "ἕ" U1f15 : "ἕ" U1f15 : "ἕ" U1f15 : "Ἐ" U1f18 : "Ἐ" U1f18 : "Ἐ" U1f18 : "Ἑ" U1f19 : "Ἑ" U1f19 : "Ἑ" U1f19 : "Ἒ" U1f1a : "Ἒ" U1f1a : "Ἒ" U1f1a : "Ἒ" U1f1a : "Ἒ" U1f1a : "Ἒ" U1f1a : "Ἓ" U1f1b : "Ἓ" U1f1b : "Ἓ" U1f1b : "Ἓ" U1f1b : "Ἓ" U1f1b : "Ἓ" U1f1b : "Ἔ" U1f1c : "Ἔ" U1f1c : "Ἔ" U1f1c : "Ἔ" U1f1c : "Ἔ" U1f1c : "Ἔ" U1f1c : "Ἕ" U1f1d : "Ἕ" U1f1d : "Ἕ" U1f1d : "Ἕ" U1f1d : "Ἕ" U1f1d : "Ἕ" U1f1d : "ἠ" U1f20 : "ἠ" U1f20 : "ἠ" U1f20 : "ἡ" U1f21 : "ἡ" U1f21 : "ἡ" U1f21 : "ἢ" U1f22 : "ἢ" U1f22 : "ἢ" U1f22 : "ἢ" U1f22 : "ἢ" U1f22 : "ἢ" U1f22 : "ἣ" U1f23 : "ἣ" U1f23 : "ἣ" U1f23 : "ἣ" U1f23 : "ἣ" U1f23 : "ἣ" U1f23 : "ἤ" U1f24 : "ἤ" U1f24 : "ἤ" U1f24 : "ἤ" U1f24 : "ἤ" U1f24 : "ἤ" U1f24 : "ἥ" U1f25 : "ἥ" U1f25 : "ἥ" U1f25 : "ἥ" U1f25 : "ἥ" U1f25 : "ἥ" U1f25 : "ἦ" U1f26 : "ἦ" U1f26 : "ἦ" U1f26 : "ἦ" U1f26 : "ἦ" U1f26 : "ἦ" U1f26 : "ἧ" U1f27 : "ἧ" U1f27 : "ἧ" U1f27 : "ἧ" U1f27 : "ἧ" U1f27 : "ἧ" U1f27 : "Ἠ" U1f28 : "Ἠ" U1f28 : "Ἠ" U1f28 : "Ἡ" U1f29 : "Ἡ" U1f29 : "Ἡ" U1f29 : "Ἢ" U1f2a : "Ἢ" U1f2a : "Ἢ" U1f2a : "Ἢ" U1f2a : "Ἢ" U1f2a : "Ἢ" U1f2a : "Ἣ" U1f2b : "Ἣ" U1f2b : "Ἣ" U1f2b : "Ἣ" U1f2b : "Ἣ" U1f2b : "Ἣ" U1f2b : "Ἤ" U1f2c : "Ἤ" U1f2c : "Ἤ" U1f2c : "Ἤ" U1f2c : "Ἤ" U1f2c : "Ἤ" U1f2c : "Ἥ" U1f2d : "Ἥ" U1f2d : "Ἥ" U1f2d : "Ἥ" U1f2d : "Ἥ" U1f2d : "Ἥ" U1f2d : "Ἦ" U1f2e : "Ἦ" U1f2e : "Ἦ" U1f2e : "Ἦ" U1f2e : "Ἦ" U1f2e : "Ἦ" U1f2e : "Ἧ" U1f2f : "Ἧ" U1f2f : "Ἧ" U1f2f : "Ἧ" U1f2f : "Ἧ" U1f2f : "Ἧ" U1f2f : "ἰ" U1f30 : "ἰ" U1f30 : "ἰ" U1f30 : "ἱ" U1f31 : "ἱ" U1f31 : "ἱ" U1f31 : "ἲ" U1f32 : "ἲ" U1f32 : "ἲ" U1f32 : "ἲ" U1f32 : "ἲ" U1f32 : "ἲ" U1f32 : "ἳ" U1f33 : "ἳ" U1f33 : "ἳ" U1f33 : "ἳ" U1f33 : "ἳ" U1f33 : "ἳ" U1f33 : "ἴ" U1f34 : "ἴ" U1f34 : "ἴ" U1f34 : "ἴ" U1f34 : "ἴ" U1f34 : "ἴ" U1f34 : "ἵ" U1f35 : "ἵ" U1f35 : "ἵ" U1f35 : "ἵ" U1f35 : "ἵ" U1f35 : "ἵ" U1f35 : "ἶ" U1f36 : "ἶ" U1f36 : "ἶ" U1f36 : "ἶ" U1f36 : "ἶ" U1f36 : "ἶ" U1f36 : "ἷ" U1f37 : "ἷ" U1f37 : "ἷ" U1f37 : "ἷ" U1f37 : "ἷ" U1f37 : "ἷ" U1f37 : "Ἰ" U1f38 : "Ἰ" U1f38 : "Ἰ" U1f38 : "Ἱ" U1f39 : "Ἱ" U1f39 : "Ἱ" U1f39 : "Ἲ" U1f3a : "Ἲ" U1f3a : "Ἲ" U1f3a : "Ἲ" U1f3a : "Ἲ" U1f3a : "Ἲ" U1f3a : "Ἳ" U1f3b : "Ἳ" U1f3b : "Ἳ" U1f3b : "Ἳ" U1f3b : "Ἳ" U1f3b : "Ἳ" U1f3b : "Ἴ" U1f3c : "Ἴ" U1f3c : "Ἴ" U1f3c : "Ἴ" U1f3c : "Ἴ" U1f3c : "Ἴ" U1f3c : "Ἵ" U1f3d : "Ἵ" U1f3d : "Ἵ" U1f3d : "Ἵ" U1f3d : "Ἵ" U1f3d : "Ἵ" U1f3d : "Ἶ" U1f3e : "Ἶ" U1f3e : "Ἶ" U1f3e : "Ἶ" U1f3e : "Ἶ" U1f3e : "Ἶ" U1f3e : "Ἷ" U1f3f : "Ἷ" U1f3f : "Ἷ" U1f3f : "Ἷ" U1f3f : "Ἷ" U1f3f : "Ἷ" U1f3f : "ὀ" U1f40 : "ὀ" U1f40 : "ὀ" U1f40 : "ὁ" U1f41 : "ὁ" U1f41 : "ὁ" U1f41 : "ὂ" U1f42 : "ὂ" U1f42 : "ὂ" U1f42 : "ὂ" U1f42 : "ὂ" U1f42 : "ὂ" U1f42 : "ὃ" U1f43 : "ὃ" U1f43 : "ὃ" U1f43 : "ὃ" U1f43 : "ὃ" U1f43 : "ὃ" U1f43 : "ὄ" U1f44 : "ὄ" U1f44 : "ὄ" U1f44 : "ὄ" U1f44 : "ὄ" U1f44 : "ὄ" U1f44 : "ὅ" U1f45 : "ὅ" U1f45 : "ὅ" U1f45 : "ὅ" U1f45 : "ὅ" U1f45 : "ὅ" U1f45 : "Ὀ" U1f48 : "Ὀ" U1f48 : "Ὀ" U1f48 : "Ὁ" U1f49 : "Ὁ" U1f49 : "Ὁ" U1f49 : "Ὂ" U1f4a : "Ὂ" U1f4a : "Ὂ" U1f4a : "Ὂ" U1f4a : "Ὂ" U1f4a : "Ὂ" U1f4a : "Ὃ" U1f4b : "Ὃ" U1f4b : "Ὃ" U1f4b : "Ὃ" U1f4b : "Ὃ" U1f4b : "Ὃ" U1f4b : "Ὄ" U1f4c : "Ὄ" U1f4c : "Ὄ" U1f4c : "Ὄ" U1f4c : "Ὄ" U1f4c : "Ὄ" U1f4c : "Ὅ" U1f4d : "Ὅ" U1f4d : "Ὅ" U1f4d : "Ὅ" U1f4d : "Ὅ" U1f4d : "Ὅ" U1f4d : "ὐ" U1f50 : "ὐ" U1f50 : "ὐ" U1f50 : "ὑ" U1f51 : "ὑ" U1f51 : "ὑ" U1f51 : "ὒ" U1f52 : "ὒ" U1f52 : "ὒ" U1f52 : "ὒ" U1f52 : "ὒ" U1f52 : "ὒ" U1f52 : "ὓ" U1f53 : "ὓ" U1f53 : "ὓ" U1f53 : "ὓ" U1f53 : "ὓ" U1f53 : "ὓ" U1f53 : "ὔ" U1f54 : "ὔ" U1f54 : "ὔ" U1f54 : "ὔ" U1f54 : "ὔ" U1f54 : "ὔ" U1f54 : "ὕ" U1f55 : "ὕ" U1f55 : "ὕ" U1f55 : "ὕ" U1f55 : "ὕ" U1f55 : "ὕ" U1f55 : "ὖ" U1f56 : "ὖ" U1f56 : "ὖ" U1f56 : "ὖ" U1f56 : "ὖ" U1f56 : "ὖ" U1f56 : "ὗ" U1f57 : "ὗ" U1f57 : "ὗ" U1f57 : "ὗ" U1f57 : "ὗ" U1f57 : "ὗ" U1f57 : "Ὑ" U1f59 : "Ὑ" U1f59 : "Ὑ" U1f59 : "Ὓ" U1f5b : "Ὓ" U1f5b : "Ὓ" U1f5b : "Ὓ" U1f5b : "Ὓ" U1f5b : "Ὓ" U1f5b : "Ὕ" U1f5d : "Ὕ" U1f5d : "Ὕ" U1f5d : "Ὕ" U1f5d : "Ὕ" U1f5d : "Ὕ" U1f5d : "Ὗ" U1f5f : "Ὗ" U1f5f : "Ὗ" U1f5f : "Ὗ" U1f5f : "Ὗ" U1f5f : "Ὗ" U1f5f : "ὠ" U1f60 : "ὠ" U1f60 : "ὠ" U1f60 : "ὡ" U1f61 : "ὡ" U1f61 : "ὡ" U1f61 : "ὢ" U1f62 : "ὢ" U1f62 : "ὢ" U1f62 : "ὢ" U1f62 : "ὢ" U1f62 : "ὢ" U1f62 : "ὣ" U1f63 : "ὣ" U1f63 : "ὣ" U1f63 : "ὣ" U1f63 : "ὣ" U1f63 : "ὣ" U1f63 : "ὤ" U1f64 : "ὤ" U1f64 : "ὤ" U1f64 : "ὤ" U1f64 : "ὤ" U1f64 : "ὤ" U1f64 : "ὥ" U1f65 : "ὥ" U1f65 : "ὥ" U1f65 : "ὥ" U1f65 : "ὥ" U1f65 : "ὥ" U1f65 : "ὦ" U1f66 : "ὦ" U1f66 : "ὦ" U1f66 : "ὦ" U1f66 : "ὦ" U1f66 : "ὦ" U1f66 : "ὧ" U1f67 : "ὧ" U1f67 : "ὧ" U1f67 : "ὧ" U1f67 : "ὧ" U1f67 : "ὧ" U1f67 : "Ὠ" U1f68 : "Ὠ" U1f68 : "Ὠ" U1f68 : "Ὡ" U1f69 : "Ὡ" U1f69 : "Ὡ" U1f69 : "Ὢ" U1f6a : "Ὢ" U1f6a : "Ὢ" U1f6a : "Ὢ" U1f6a : "Ὢ" U1f6a : "Ὢ" U1f6a : "Ὣ" U1f6b : "Ὣ" U1f6b : "Ὣ" U1f6b : "Ὣ" U1f6b : "Ὣ" U1f6b : "Ὣ" U1f6b : "Ὤ" U1f6c : "Ὤ" U1f6c : "Ὤ" U1f6c : "Ὤ" U1f6c : "Ὤ" U1f6c : "Ὤ" U1f6c : "Ὥ" U1f6d : "Ὥ" U1f6d : "Ὥ" U1f6d : "Ὥ" U1f6d : "Ὥ" U1f6d : "Ὥ" U1f6d : "Ὦ" U1f6e : "Ὦ" U1f6e : "Ὦ" U1f6e : "Ὦ" U1f6e : "Ὦ" U1f6e : "Ὦ" U1f6e : "Ὧ" U1f6f : "Ὧ" U1f6f : "Ὧ" U1f6f : "Ὧ" U1f6f : "Ὧ" U1f6f : "Ὧ" U1f6f : "ὰ" U1f70 : "ὰ" U1f70 : "ὲ" U1f72 : "ὲ" U1f72 : "ὴ" U1f74 : "ὴ" U1f74 : "ὶ" U1f76 : "ὶ" U1f76 : "ὸ" U1f78 : "ὸ" U1f78 : "ὺ" U1f7a : "ὺ" U1f7a : "ὼ" U1f7c : "ὼ" U1f7c : "ᾀ" U1f80 : "ᾀ" U1f80 : "ᾀ" U1f80 : "ᾀ" U1f80 : "ᾀ" U1f80 : "ᾀ" U1f80 : "ᾁ" U1f81 : "ᾁ" U1f81 : "ᾁ" U1f81 : "ᾁ" U1f81 : "ᾁ" U1f81 : "ᾁ" U1f81 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾂ" U1f82 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾃ" U1f83 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾄ" U1f84 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾅ" U1f85 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾆ" U1f86 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾇ" U1f87 : "ᾈ" U1f88 : "ᾈ" U1f88 : "ᾈ" U1f88 : "ᾈ" U1f88 : "ᾈ" U1f88 : "ᾈ" U1f88 : "ᾉ" U1f89 : "ᾉ" U1f89 : "ᾉ" U1f89 : "ᾉ" U1f89 : "ᾉ" U1f89 : "ᾉ" U1f89 : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾊ" U1f8a : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾋ" U1f8b : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾌ" U1f8c : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾍ" U1f8d : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾎ" U1f8e : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾏ" U1f8f : "ᾐ" U1f90 : "ᾐ" U1f90 : "ᾐ" U1f90 : "ᾐ" U1f90 : "ᾐ" U1f90 : "ᾐ" U1f90 : "ᾑ" U1f91 : "ᾑ" U1f91 : "ᾑ" U1f91 : "ᾑ" U1f91 : "ᾑ" U1f91 : "ᾑ" U1f91 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾒ" U1f92 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾓ" U1f93 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾔ" U1f94 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾕ" U1f95 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾖ" U1f96 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾗ" U1f97 : "ᾘ" U1f98 : "ᾘ" U1f98 : "ᾘ" U1f98 : "ᾘ" U1f98 : "ᾘ" U1f98 : "ᾘ" U1f98 : "ᾙ" U1f99 : "ᾙ" U1f99 : "ᾙ" U1f99 : "ᾙ" U1f99 : "ᾙ" U1f99 : "ᾙ" U1f99 : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾚ" U1f9a : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾛ" U1f9b : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾜ" U1f9c : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾝ" U1f9d : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾞ" U1f9e : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾟ" U1f9f : "ᾠ" U1fa0 : "ᾠ" U1fa0 : "ᾠ" U1fa0 : "ᾠ" U1fa0 : "ᾠ" U1fa0 : "ᾠ" U1fa0 : "ᾡ" U1fa1 : "ᾡ" U1fa1 : "ᾡ" U1fa1 : "ᾡ" U1fa1 : "ᾡ" U1fa1 : "ᾡ" U1fa1 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾢ" U1fa2 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾣ" U1fa3 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾤ" U1fa4 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾥ" U1fa5 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾦ" U1fa6 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾧ" U1fa7 : "ᾨ" U1fa8 : "ᾨ" U1fa8 : "ᾨ" U1fa8 : "ᾨ" U1fa8 : "ᾨ" U1fa8 : "ᾨ" U1fa8 : "ᾩ" U1fa9 : "ᾩ" U1fa9 : "ᾩ" U1fa9 : "ᾩ" U1fa9 : "ᾩ" U1fa9 : "ᾩ" U1fa9 : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾪ" U1faa : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾫ" U1fab : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾬ" U1fac : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾭ" U1fad : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾮ" U1fae : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾯ" U1faf : "ᾰ" U1fb0 : "ᾱ" U1fb1 : "Ᾰ" U1fb8 : "Ᾱ" U1fb9 : "ῐ" U1fd0 : "ῑ" U1fd1 : "Ῐ" U1fd8 : "Ῑ" U1fd9 : "ῠ" U1fe0 : "ῡ" U1fe1 : "Ῠ" U1fe8 : "Ῡ" U1fe9 : "Ὰ" U1fba : "Ὰ" U1fba : "Ὲ" U1fc8 : "Ὲ" U1fc8 : "Ὴ" U1fca : "Ὴ" U1fca : "Ὶ" U1fda : "Ὶ" U1fda : "Ὺ" U1fea : "Ὺ" U1fea : "Ὸ" U1ff8 : "Ὸ" U1ff8 : "Ὼ" U1ffa : "Ὼ" U1ffa : "ᾲ" U1fb2 : "ᾲ" U1fb2 : "ᾲ" U1fb2 : "ᾲ" U1fb2 : "ᾳ" U1fb3 : "ᾳ" U1fb3 : "ᾴ" U1fb4 : "ᾴ" U1fb4 : "ᾴ" U1fb4 : "ᾴ" U1fb4 : "ᾶ" U1fb6 : "ᾶ" U1fb6 : "ᾷ" U1fb7 : "ᾷ" U1fb7 : "ᾷ" U1fb7 : "ᾷ" U1fb7 : "ῂ" U1fc2 : "ῂ" U1fc2 : "ῂ" U1fc2 : "ῂ" U1fc2 : "ῃ" U1fc3 : "ῃ" U1fc3 : "ῄ" U1fc4 : "ῄ" U1fc4 : "ῄ" U1fc4 : "ῄ" U1fc4 : "ῆ" U1fc6 : "ῆ" U1fc6 : "ῇ" U1fc7 : "ῇ" U1fc7 : "ῇ" U1fc7 : "ῇ" U1fc7 : "ῒ" U1fd2 : "ῒ" U1fd2 : "ῒ" U1fd2 : "ῒ" U1fd2 : "ῖ" U1fd6 : "ῖ" U1fd6 : "ῗ" U1fd7 : "ῗ" U1fd7 : "ῗ" U1fd7 : "ῗ" U1fd7 : "ῢ" U1fe2 : "ῢ" U1fe2 : "ῢ" U1fe2 : "ῢ" U1fe2 : "ῦ" U1fe6 : "ῦ" U1fe6 : "ῧ" U1fe7 : "ῧ" U1fe7 : "ῧ" U1fe7 : "ῧ" U1fe7 : "ῲ" U1ff2 : "ῲ" U1ff2 : "ῲ" U1ff2 : "ῲ" U1ff2 : "ῳ" U1ff3 : "ῳ" U1ff3 : "ῴ" U1ff4 : "ῴ" U1ff4 : "ῴ" U1ff4 : "ῴ" U1ff4 : "ῶ" U1ff6 : "ῶ" U1ff6 : "ῷ" U1ff7 : "ῷ" U1ff7 : "ῷ" U1ff7 : "ῷ" U1ff7 : "ᾼ" U1fbc : "ᾼ" U1fbc : "ῌ" U1fcc : "ῌ" U1fcc : "ῼ" U1ffc : "ῼ" U1ffc : "ῤ" U1fe4 : "ῤ" U1fe4 : "ῤ" U1fe4 : "ῥ" U1fe5 : "ῥ" U1fe5 : "ῥ" U1fe5 : "Ῥ" U1fec : "Ῥ" U1fec : "Ῥ" U1fec : "῍" U1fcd : "῍" U1fcd : "῍" U1fcd : "῍" U1fcd : "῎" U1fce : "῎" U1fce : "῎" U1fce : "῎" U1fce : "῏" U1fcf : "῏" U1fcf : "῏" U1fcf : "῏" U1fcf : "῝" U1fdd : "῝" U1fdd : "῝" U1fdd : "῝" U1fdd : "῞" U1fde : "῞" U1fde : "῞" U1fde : "῞" U1fde : "῟" U1fdf : "῟" U1fdf : "῟" U1fdf : "῟" U1fdf : "῭" U1fed : "῭" U1fed : "῁" U1fc1 : "῁" U1fc1 : "᾿" U1fbf : "᾿" U1fbf : "᾿" U1fbf : "᾿" U1fbf : "῾" U1ffe : "῾" U1ffe : "῾" U1ffe : "῾" U1ffe : "`" U1fef : "`" U1fef : "῀" U1fc0 : "῀" U1fc0 : "᾽" U1fbd : "᾽" U1fbd : "ι" U1fbe : "ͺ" U037a : "ͺ" U037a XCOMM Part 3 XCOMM XCOMM ISO 8859-7 (Greek) multi-key and dead key definitions extracted and XCOMM converted from the iso8859-7/Compose file. : "Ά" Greek_ALPHAaccent : "Ά" Greek_ALPHAaccent : "Έ" Greek_EPSILONaccent : "Έ" Greek_EPSILONaccent : "Ή" Greek_ETAaccent : "Ή" Greek_ETAaccent : "Ί" Greek_IOTAaccent : "Ί" Greek_IOTAaccent : "Ό" Greek_OMICRONaccent : "Ό" Greek_OMICRONaccent : "Ύ" Greek_UPSILONaccent : "Ύ" Greek_UPSILONaccent : "Ώ" Greek_OMEGAaccent : "Ώ" Greek_OMEGAaccent : "Ϊ" Greek_IOTAdieresis : "Ϊ" Greek_IOTAdieresis : "Ϋ" Greek_UPSILONdieresis : "Ϋ" Greek_UPSILONdieresis : "ά" Greek_alphaaccent : "ά" Greek_alphaaccent : "έ" Greek_epsilonaccent : "έ" Greek_epsilonaccent : "ή" Greek_etaaccent : "ή" Greek_etaaccent : "ί" Greek_iotaaccent : "ί" Greek_iotaaccent : "ό" Greek_omicronaccent : "ό" Greek_omicronaccent : "ύ" Greek_upsilonaccent : "ύ" Greek_upsilonaccent : "ώ" Greek_omegaaccent : "ώ" Greek_omegaaccent : "ϊ" Greek_iotadieresis : "ϊ" Greek_iotadieresis : "ϋ" Greek_upsilondieresis : "ϋ" Greek_upsilondieresis : "ΐ" Greek_iotaaccentdieresis : "ΐ" Greek_iotaaccentdieresis : "ΰ" Greek_upsilonaccentdieresis : "ΰ" Greek_upsilonaccentdieresis : "΅" Greek_accentdieresis : "΅" Greek_accentdieresis : "ά" Greek_alphaaccent : "έ" Greek_epsilonaccent : "ή" Greek_etaaccent : "ί" Greek_iotaaccent : "ό" Greek_omicronaccent : "ύ" Greek_upsilonaccent : "ώ" Greek_omegaaccent : "Ά" Greek_ALPHAaccent : "Έ" Greek_EPSILONaccent : "Ή" Greek_ETAaccent : "Ί" Greek_IOTAaccent : "Ό" Greek_OMICRONaccent : "Ύ" Greek_UPSILONaccent : "Ώ" Greek_OMEGAaccent : "΄" U0384 : "΄" U0384 : "·" periodcentered : "«" guillemotleft : "»" guillemotright : "ϊ" Greek_iotadieresis : "ϋ" Greek_upsilondieresis : "Ϊ" Greek_IOTAdieresis : "Ϋ" Greek_UPSILONdieresis : "¨" diaeresis : "¨" diaeresis : "·" periodcentered : "«" guillemotleft : "»" guillemotright : "ΐ" Greek_iotaaccentdieresis : "ΰ" Greek_upsilonaccentdieresis : "΅" Greek_accentdieresis : "ΐ" Greek_iotaaccentdieresis : "ΰ" Greek_upsilonaccentdieresis : "΅" Greek_accentdieresis XCOMM Part 4 XCOMM XCOMM Miscellaneous extensions. : "¯" macron : "¯" macron : "˘" breve : "˘" breve : "`" grave : "´" acute : "~" asciitilde : "‘" leftsinglequotemark : "‘" leftsinglequotemark : "’" rightsinglequotemark : "’" rightsinglequotemark : "―" Greek_horizbar : "˘" breve : "ʹ" U0374 : "͵" U0375 : ";" U037e : "·" U0387 : "€" EuroSign : "€" EuroSign : "€" EuroSign : "€" EuroSign : "€" EuroSign : "€" EuroSign : "€" EuroSign : "€" EuroSign : "€" EuroSign : "€" EuroSign : "€" EuroSign : "€" EuroSign : "₯" U20af : "₯" U20af : "₯" U20af : "₯" U20af : "‽" U203D # INTERROBANG : "‽" U203D # INTERROBANG <1> <3> : "⅓" U2153 # VULGAR FRACTION ONE THIRD <2> <3> : "⅔" U2154 # VULGAR FRACTION TWO THIRDS <1> <5> : "⅕" U2155 # VULGAR FRACTION ONE FIFTH <2> <5> : "⅖" U2156 # VULGAR FRACTION TWO FIFTHS <3> <5> : "⅗" U2157 # VULGAR FRACTION THREE FIFTHS <4> <5> : "⅘" U2158 # VULGAR FRACTION FOUR FIFTHS <1> <6> : "⅙" U2159 # VULGAR FRACTION ONE SIXTH <5> <6> : "⅚" U215A # VULGAR FRACTION FIVE SIXTHS <1> <8> : "⅛" U215B # VULGAR FRACTION ONE EIGHTH <3> <8> : "⅜" U215C # VULGAR FRACTION THREE EIGHTHS <5> <8> : "⅝" U215D # VULGAR FRACTION FIVE EIGHTHS <7> <8> : "⅞" U215E # VULGAR FRACTION SEVEN EIGHTHS XCOMM End libX11-1.8.12/nls/isiri-3342/0000755014310600000120000000000014763154167010716 5libX11-1.8.12/nls/isiri-3342/XLC_LOCALE.pre0000644014310600000120000000211714763154126013007 XCOMM XLocale Database Sample for mulelao-1. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISIRI-3342:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset ISIRI-3342:GR font ISIRI-3342:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name ISIRI-3342 side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISIRI-3342 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISIRI-3342:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISIRI-3342:GR } END XLC_XLOCALE libX11-1.8.12/nls/isiri-3342/Compose.pre0000644014310600000120000000000014763154126012734 libX11-1.8.12/nls/isiri-3342/XI18N_OBJS0000644014310600000120000000052614763154126012203 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for isiri-3342 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/compose-check.pl0000755014310600000120000001071414763154126012204 #! /usr/bin/perl # # Copyright (c) 2009, Oracle and/or its affiliates. # # 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. # # # Check a compose file for duplicate/conflicting entries and other common errors # # Compose file grammar is defined in modules/im/ximcp/imLcPrs.c use strict; use warnings; my $error_count = 0; if (scalar(@ARGV) == 0) { if ( -f 'Compose' ) { push @ARGV, 'Compose'; } else { push @ARGV, glob '*/Compose'; } } foreach my $cf (@ARGV) { # print "Checking $cf\n"; $error_count += check_compose_file($cf); } exit($error_count); sub check_compose_file { my ($filename) = @_; my $errors = 0; my %compose_table = (); my $line = 0; my $pre_file = ($filename =~ m{\.pre$}) ? 1 : 0; my $in_c_comment = 0; open my $COMPOSE, '<', $filename or die "Could not open $filename: $!"; COMPOSE_LINE: while (my $cl = <$COMPOSE>) { $line++; chomp($cl); my $original_line = $cl; # Special handling for changes cpp makes to .pre files if ($pre_file == 1) { if ($in_c_comment) { # Look for end of multi-line C comment if ($cl =~ m{\*/(.*)$}) { $cl = $1; $in_c_comment = 0; } else { next; } } $cl =~ s{/\*.\**/}{}; # Remove single line C comments if ($cl =~ m{^(.*)/\*}) { # Start of a multi-line C comment $cl = $1; $in_c_comment = 1; } next if $cl =~ m{^\s*XCOMM}; # Skip pre-processing comments } $cl =~ s{#.*$}{}; # Remove comments next if $cl =~ m{^\s*$}; # Skip blank (or comment-only) lines chomp($cl); if ($cl =~ m{^(STATE\s+|END_STATE)}) { # Sun extension to compose file syntax %compose_table = (); } elsif ($cl =~ m{^([^:]+)\s*:\s*(.+)$}) { my ($seq, $action) = ($1, $2); $seq =~ s{\s+$}{}; my @keys = grep { $_ !~ m/^\s*$/ } split /[\s\<\>]+/, $seq; my $final_key = pop @keys; my $keytable = \%compose_table; foreach my $k (@keys) { if ($k =~ m{^U([[:xdigit:]]+)$}) { $k = 'U' . lc($1); } if (exists $keytable->{$k}) { $keytable = $keytable->{$k}; if (ref($keytable) ne 'HASH') { print "Clash with existing sequence in $filename on line $line: $seq\n"; print_sequences([$line, $original_line]); print_sequences($keytable); $errors++; next COMPOSE_LINE; } } else { my $new_keytable = {}; $keytable->{$k} = $new_keytable; $keytable = $new_keytable; } } if (exists $keytable->{$final_key}) { print "Clash with existing sequence in $filename on line $line: $seq\n"; print_sequences([$line, $original_line]); print_sequences($keytable->{$final_key}); $errors++; } else { $keytable->{$final_key} = [$line, $original_line]; } } elsif ($cl =~ m{^(STATE_TYPE:|\@StartDeadKeyMap|\@EndDeadKeyMap)}) { # ignore } elsif ($cl =~ m{^include "(.*)"}) { my $incpath = $1; if (($pre_file == 1) && ($incpath !~ m{^X11_LOCALEDATADIR/})) { print "Include path starts with $incpath instead of X11_LOCALEDATADIR\n", " -- may not find include files when installed in alternate paths\n\n"; } } else { print 'Unrecognized pattern in ', $filename, ' on line #', $line, ":\n ", $cl, "\n"; } } close $COMPOSE; return $errors; } sub print_sequences { my ($entry_ref) = @_; if (ref($entry_ref) eq 'HASH') { foreach my $h (values %{$entry_ref}) { print_sequences($h); } } else { my ($line, $seq) = @{$entry_ref}; print " line #", $line, ": ", $seq, "\n"; } } libX11-1.8.12/nls/C/0000755014310600000120000000000014763154167007370 5libX11-1.8.12/nls/C/Compose.pre0000644014310600000120000000000014763154126011406 libX11-1.8.12/nls/C/XLC_LOCALE.pre0000644014310600000120000000144214763154126011461 XCOMM XLocale Database Sample for C. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name STRING mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-1:GR } END XLC_XLOCALE libX11-1.8.12/nls/C/XI18N_OBJS0000644014310600000120000000052414763154126010653 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for euro locales # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/en_US.UTF-8/0000755014310600000120000000000014763154167011021 5libX11-1.8.12/nls/en_US.UTF-8/Compose.pre0000644014310600000120000157522414763154126013071 XCOMM UTF-8 (Unicode) Compose sequences XCOMM /* Originally by . */ XCOMM Spacing versions of accents (mostly) : "~" asciitilde # TILDE : "~" asciitilde # TILDE : "~" asciitilde # TILDE : "~" asciitilde # TILDE : "'" apostrophe # APOSTROPHE : "´" acute # ACUTE ACCENT : "´" acute # ACUTE ACCENT : "`" grave # GRAVE ACCENT : "`" grave # GRAVE ACCENT : "^" asciicircum # CIRCUMFLEX ACCENT : "^" asciicircum # CIRCUMFLEX ACCENT : "^" asciicircum # CIRCUMFLEX ACCENT : "^" asciicircum # CIRCUMFLEX ACCENT : "°" degree # DEGREE SIGN : "°" degree # DEGREE SIGN : "°" degree # DEGREE SIGN <0> : "°" degree # DEGREE SIGN <0> : "°" degree # DEGREE SIGN : "¯" macron # MACRON : "¯" macron # MACRON : "¯" macron # MACRON : "¯" macron # MACRON : "¯" macron # MACRON : "¯" macron # MACRON : "¯" macron # MACRON : "˘" breve # BREVE : "˘" breve # BREVE : "˘" breve # BREVE : "˘" breve # BREVE : "˙" abovedot # DOT ABOVE : "˙" abovedot # DOT ABOVE : "˙" abovedot # DOT ABOVE : "¨" diaeresis # DIAERESIS : "¨" diaeresis # DIAERESIS : "¨" diaeresis # DIAERESIS : "\"" quotedbl # QUOTATION MARK : "˝" U2dd # DOUBLE ACUTE ACCENT : "˝" U2dd # DOUBLE ACUTE ACCENT : "ˇ" caron # CARON : "ˇ" caron # CARON : "ˇ" caron # CARON : "ˇ" caron # CARON : "¸" cedilla # CEDILLA : "¸" cedilla # CEDILLA : "¸" cedilla # CEDILLA : "¸" cedilla # CEDILLA : "¸" cedilla # CEDILLA : "˛" ogonek # OGONEK : "˛" ogonek # OGONEK : "˛" ogonek # OGONEK : "ͺ" U37a # GREEK YPOGEGRAMMENI : "ͺ" U37a # GREEK YPOGEGRAMMENI XCOMM ASCII characters that may be difficult to access on some keyboards. : "#" numbersign # NUMBER SIGN : "@" at # COMMERCIAL AT : "[" bracketleft # LEFT SQUARE BRACKET : "]" bracketright # RIGHT SQUARE BRACKET : "\\" backslash # REVERSE SOLIDUS : "\\" backslash # REVERSE SOLIDUS : "{" braceleft # LEFT CURLY BRACKET : "{" braceleft # LEFT CURLY BRACKET : "}" braceright # RIGHT CURLY BRACKET : "}" braceright # RIGHT CURLY BRACKET : "|" bar # VERTICAL LINE : "|" bar # VERTICAL LINE : "|" bar # VERTICAL LINE : "|" bar # VERTICAL LINE : "|" bar # VERTICAL LINE : "|" bar # VERTICAL LINE : "<" less # LESS-THAN : "<" less # LESS-THAN : ">" greater # GREATER-THAN : ">" greater # GREATER-THAN XCOMM Two special spaces : " " nobreakspace # NO-BREAK SPACE : " " U2008 # PUNCTUATION SPACE : "©" copyright # COPYRIGHT SIGN : "©" copyright # COPYRIGHT SIGN : "©" copyright # COPYRIGHT SIGN : "®" registered # REGISTERED SIGN : "®" registered # REGISTERED SIGN : "®" registered # REGISTERED SIGN : "🄯" U1F12F # COPYLEFT SYMBOL XCOMM Special punctuation : "…" ellipsis # HORIZONTAL ELLIPSIS : "·" periodcentered # MIDDLE DOT : "·" periodcentered # MIDDLE DOT : "·" periodcentered # MIDDLE DOT : "·" periodcentered # MIDDLE DOT : "•" enfilledcircbullet # BULLET : "¦" brokenbar # BROKEN BAR : "¡" exclamdown # INVERTED EXCLAMATION MARK : "±" plusminus # PLUS-MINUS SIGN : "±" plusminus # PLUS-MINUS SIGN : "¿" questiondown # INVERTED QUESTION MARK : "‽" U203D # INTERROBANG : "⸘" U2E18 # INVERTED INTERROBANG : "­" U00ad # SOFT HYPHEN : "†" U2020 # DAGGER : "‡" U2021 # DOUBLE DAGGER : "‰" U2030 # PER MILLE SIGN XCOMM Some ligatures : "æ" ae # LATIN SMALL LETTER AE : "Æ" AE # LATIN CAPITAL LETTER AE : "œ" oe # LATIN SMALL LIGATURE OE : "Œ" OE # LATIN CAPITAL LIGATURE OE : "ß" ssharp # LATIN SMALL LETTER SHARP S : "ẞ" U1e9e # LATIN CAPITAL LETTER SHARP S : "ff" Ufb00 # LATIN SMALL LIGATURE FF : "fi" Ufb01 # LATIN SMALL LIGATURE FI : "fl" Ufb02 # LATIN SMALL LIGATURE FL : "ffi" Ufb03 # LATIN SMALL LIGATURE FFI : "ffl" Ufb04 # LATIN SMALL LIGATURE FFL : "ij" U0133 # LATIN SMALL LIGATURE IJ : "IJ" U0132 # LATIN CAPITAL LIGATURE IJ : "IJ" U0132 # LATIN CAPITAL LIGATURE IJ XCOMM Quotation marks : "«" guillemotleft # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK : "»" guillemotright # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK : "‹" U2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK : "›" U203a # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK : "‘" U2018 # LEFT SINGLE QUOTATION MARK : "‘" U2018 # LEFT SINGLE QUOTATION MARK : "’" U2019 # RIGHT SINGLE QUOTATION MARK : "’" U2019 # RIGHT SINGLE QUOTATION MARK : "‚" U201a # SINGLE LOW-9 QUOTATION MARK : "‚" U201a # SINGLE LOW-9 QUOTATION MARK : "“" U201c # LEFT DOUBLE QUOTATION MARK : "“" U201c # LEFT DOUBLE QUOTATION MARK : "”" U201d # RIGHT DOUBLE QUOTATION MARK : "”" U201d # RIGHT DOUBLE QUOTATION MARK : "„" U201e # DOUBLE LOW-9 QUOTATION MARK : "„" U201e # DOUBLE LOW-9 QUOTATION MARK XCOMM Currencies : "$" dollar # DOLLAR SIGN : "$" dollar # DOLLAR SIGN : "¢" cent # CENT SIGN : "¢" cent # CENT SIGN : "¢" cent # CENT SIGN : "¢" cent # CENT SIGN : "£" sterling # POUND SIGN : "£" sterling # POUND SIGN : "£" sterling # POUND SIGN : "£" sterling # POUND SIGN : "¥" yen # YEN SIGN : "¥" yen # YEN SIGN : "¥" yen # YEN SIGN : "¥" yen # YEN SIGN : "฿" U0e3f # THAI CURRENCY SYMBOL BAHT : "฿" U0e3f # THAI CURRENCY SYMBOL BAHT : "₠" U20a0 # EURO-CURRENCY SIGN : "₡" U20a1 # COLON SIGN : "₡" U20a1 # COLON SIGN : "₢" U20a2 # CRUZEIRO SIGN : "₣" U20a3 # FRENCH FRANC SIGN : "₤" U20a4 # LIRA SIGN : "₤" U20a4 # LIRA SIGN : "₥" U20a5 # MILL SIGN : "₥" U20a5 # MILL SIGN : "₦" U20a6 # NAIRA SIGN : "₦" U20a6 # NAIRA SIGN

: "₧" U20a7 # PESETA SIGN : "₨" U20a8 # RUPEE SIGN : "₩" U20a9 # WON SIGN : "₩" U20a9 # WON SIGN XCOMM "₪" U20aa NEW SHEQEL SIGN : "₫" U20ab # DONG SIGN : "₫" U20ab # DONG SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "₭" U20ad # KIP SIGN : "₭" U20ad # KIP SIGN : "₮" U20ae # TUGRIK SIGN : "₮" U20ae # TUGRIK SIGN XCOMM "₱" U20b1 PESO SIGN : "₲" U20b2 # GUARANI SIGN : "₲" U20b2 # GUARANI SIGN : "₴" U20b4 # HRYVNIA SIGN : "₴" U20b4 # HRYVNIA SIGN : "₴" U20b4 # HRYVNIA SIGN : "₴" U20b4 # HRYVNIA SIGN : "₴" U20b4 # HRYVNIA SIGN : "₴" U20b4 # HRYVNIA SIGN : "₴" U20b4 # HRYVNIA SIGN : "₴" U20b4 # HRYVNIA SIGN : "₵" U20b5 # CEDI SIGN : "₵" U20b5 # CEDI SIGN : "₹" U20b9 # INDIAN RUPEE SIGN : "₹" U20b9 # INDIAN RUPEE SIGN : "₹" U20b9 # INDIAN RUPEE SIGN : "₹" U20b9 # INDIAN RUPEE SIGN

: "₽" U20bd # ROUBLE SIGN

: "₽" U20bd # ROUBLE SIGN

: "₽" U20bd # ROUBLE SIGN

: "₽" U20bd # ROUBLE SIGN : "₽" U20bd # ROUBLE SIGN : "₽" U20bd # ROUBLE SIGN : "₽" U20bd # ROUBLE SIGN : "₽" U20bd # ROUBLE SIGN XCOMM Dashes : "–" U2013 # EN DASH : "—" U2014 # EM DASH XCOMM Musical alterations : "♩" U2669 # QUARTER NOTE : "♪" U266a # EIGHTH NOTE : "♫" U266b # BEAMED EIGHTH NOTES : "♬" U266c # BEAMED SIXTEENTH NOTES : "♭" U266d # MUSIC FLAT SIGN : "♮" U266e # MUSIC NATURAL SIGN : "♯" U266f # MUSIC SHARP SIGN XCOMM Other symbols : "§" section # SECTION SIGN : "§" section # SECTION SIGN : "§" section # SECTION SIGN : "§" section # SECTION SIGN : "§" section # SECTION SIGN : "§" section # SECTION SIGN : "§" section # SECTION SIGN

: "¶" paragraph # PILCROW SIGN

: "¶" paragraph # PILCROW SIGN

: "¶" paragraph # PILCROW SIGN : "¤" currency # CURRENCY SIGN : "¤" currency # CURRENCY SIGN : "¤" currency # CURRENCY SIGN : "¤" currency # CURRENCY SIGN : "№" numerosign # NUMERO SIGN : "№" numerosign # NUMERO SIGN : "№" numerosign # NUMERO SIGN : "№" numerosign # NUMERO SIGN : "☭" U262D # HAMMER AND SICKLE : "☭" U262D # HAMMER AND SICKLE : "☮" U262E # PEACE SYMBOL : "Ⓐ" U24B6 # CIRCLED LATIN CAPITAL LETTER A <3> : "♥" U2665 # BLACK HEART SUIT : "☺" U263A # WHITE SMILING FACE : "☹" U2639 # WHITE FROWNING FACE : "🙌" U1F64C # PERSON RAISING BOTH HANDS IN CELEBRATION

: "💩" U1F4A9 # PILE OF POO : "🖕" U1F595 # REVERSED HAND WITH MIDDLE FINGER EXTENDED

: "🖖" U1F596 # RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS XCOMM Latin-1 Supplement : "¬" notsign # NOT SIGN : "¬" notsign # NOT SIGN : "ª" ordfeminine # FEMININE ORDINAL INDICATOR : "ª" ordfeminine # FEMININE ORDINAL INDICATOR : "º" masculine # MASCULINE ORDINAL INDICATOR : "º" masculine # MASCULINE ORDINAL INDICATOR <1> : "¹" onesuperior # SUPERSCRIPT ONE <1> : "¹" onesuperior # SUPERSCRIPT ONE <1> : "¹" onesuperior # SUPERSCRIPT ONE : "¹" onesuperior # SUPERSCRIPT ONE : "¹" onesuperior # SUPERSCRIPT ONE <2> : "²" twosuperior # SUPERSCRIPT TWO <2> : "²" twosuperior # SUPERSCRIPT TWO <2> : "²" twosuperior # SUPERSCRIPT TWO : "²" twosuperior # SUPERSCRIPT TWO : "²" twosuperior # SUPERSCRIPT TWO <3> : "³" threesuperior # SUPERSCRIPT THREE <3> : "³" threesuperior # SUPERSCRIPT THREE <3> : "³" threesuperior # SUPERSCRIPT THREE : "³" threesuperior # SUPERSCRIPT THREE : "³" threesuperior # SUPERSCRIPT THREE : "µ" mu # MICRO SIGN : "µ" mu # MICRO SIGN : "µ" mu # MICRO SIGN <1> <4> : "¼" onequarter # VULGAR FRACTION ONE QUARTER <1> <2> : "½" onehalf # VULGAR FRACTION ONE HALF <3> <4> : "¾" threequarters # VULGAR FRACTION THREE QUARTERS : "À" Agrave # LATIN CAPITAL LETTER A WITH GRAVE : "À" Agrave # LATIN CAPITAL LETTER A WITH GRAVE : "À" Agrave # LATIN CAPITAL LETTER A WITH GRAVE : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE : "Â" Acircumflex # LATIN CAPITAL LETTER A WITH CIRCUMFLEX : "Â" Acircumflex # LATIN CAPITAL LETTER A WITH CIRCUMFLEX : "Â" Acircumflex # LATIN CAPITAL LETTER A WITH CIRCUMFLEX : "Â" Acircumflex # LATIN CAPITAL LETTER A WITH CIRCUMFLEX : "Â" Acircumflex # LATIN CAPITAL LETTER A WITH CIRCUMFLEX : "Ã" Atilde # LATIN CAPITAL LETTER A WITH TILDE : "Ã" Atilde # LATIN CAPITAL LETTER A WITH TILDE : "Ã" Atilde # LATIN CAPITAL LETTER A WITH TILDE : "Ä" Adiaeresis # LATIN CAPITAL LETTER A WITH DIAERESIS : "Ä" Adiaeresis # LATIN CAPITAL LETTER A WITH DIAERESIS : "Ä" Adiaeresis # LATIN CAPITAL LETTER A WITH DIAERESIS : "Ä" Adiaeresis # LATIN CAPITAL LETTER A WITH DIAERESIS : "Ä" Adiaeresis # LATIN CAPITAL LETTER A WITH DIAERESIS : "Å" Aring # LATIN CAPITAL LETTER A WITH RING ABOVE : "Å" Aring # LATIN CAPITAL LETTER A WITH RING ABOVE : "Å" Aring # LATIN CAPITAL LETTER A WITH RING ABOVE : "Å" Aring # LATIN CAPITAL LETTER A WITH RING ABOVE : "Å" Aring # LATIN CAPITAL LETTER A WITH RING ABOVE : "Ç" Ccedilla # LATIN CAPITAL LETTER C WITH CEDILLA : "Ç" Ccedilla # LATIN CAPITAL LETTER C WITH CEDILLA : "Ç" Ccedilla # LATIN CAPITAL LETTER C WITH CEDILLA : "Ç" Ccedilla # LATIN CAPITAL LETTER C WITH CEDILLA : "È" Egrave # LATIN CAPITAL LETTER E WITH GRAVE : "È" Egrave # LATIN CAPITAL LETTER E WITH GRAVE : "È" Egrave # LATIN CAPITAL LETTER E WITH GRAVE : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE : "Ê" Ecircumflex # LATIN CAPITAL LETTER E WITH CIRCUMFLEX : "Ê" Ecircumflex # LATIN CAPITAL LETTER E WITH CIRCUMFLEX : "Ê" Ecircumflex # LATIN CAPITAL LETTER E WITH CIRCUMFLEX : "Ê" Ecircumflex # LATIN CAPITAL LETTER E WITH CIRCUMFLEX : "Ê" Ecircumflex # LATIN CAPITAL LETTER E WITH CIRCUMFLEX : "Ë" Ediaeresis # LATIN CAPITAL LETTER E WITH DIAERESIS : "Ë" Ediaeresis # LATIN CAPITAL LETTER E WITH DIAERESIS : "Ë" Ediaeresis # LATIN CAPITAL LETTER E WITH DIAERESIS : "Ë" Ediaeresis # LATIN CAPITAL LETTER E WITH DIAERESIS : "Ë" Ediaeresis # LATIN CAPITAL LETTER E WITH DIAERESIS : "Ì" Igrave # LATIN CAPITAL LETTER I WITH GRAVE : "Ì" Igrave # LATIN CAPITAL LETTER I WITH GRAVE : "Ì" Igrave # LATIN CAPITAL LETTER I WITH GRAVE : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE : "Î" Icircumflex # LATIN CAPITAL LETTER I WITH CIRCUMFLEX : "Î" Icircumflex # LATIN CAPITAL LETTER I WITH CIRCUMFLEX : "Î" Icircumflex # LATIN CAPITAL LETTER I WITH CIRCUMFLEX : "Î" Icircumflex # LATIN CAPITAL LETTER I WITH CIRCUMFLEX : "Î" Icircumflex # LATIN CAPITAL LETTER I WITH CIRCUMFLEX : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS : "J́" # LATIN CAPITAL LETTER J plus COMBINING ACUTE : "J́" # LATIN CAPITAL LETTER J plus COMBINING ACUTE : "J́" # LATIN CAPITAL LETTER J plus COMBINING ACUTE : "J́" # LATIN CAPITAL LETTER J plus COMBINING ACUTE : "J́" # LATIN CAPITAL LETTER J plus COMBINING ACUTE : "Ð" ETH # LATIN CAPITAL LETTER ETH : "Ñ" Ntilde # LATIN CAPITAL LETTER N WITH TILDE : "Ñ" Ntilde # LATIN CAPITAL LETTER N WITH TILDE : "Ñ" Ntilde # LATIN CAPITAL LETTER N WITH TILDE : "Ò" Ograve # LATIN CAPITAL LETTER O WITH GRAVE : "Ò" Ograve # LATIN CAPITAL LETTER O WITH GRAVE : "Ò" Ograve # LATIN CAPITAL LETTER O WITH GRAVE : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE : "Ô" Ocircumflex # LATIN CAPITAL LETTER O WITH CIRCUMFLEX : "Ô" Ocircumflex # LATIN CAPITAL LETTER O WITH CIRCUMFLEX : "Ô" Ocircumflex # LATIN CAPITAL LETTER O WITH CIRCUMFLEX : "Ô" Ocircumflex # LATIN CAPITAL LETTER O WITH CIRCUMFLEX : "Ô" Ocircumflex # LATIN CAPITAL LETTER O WITH CIRCUMFLEX : "Õ" Otilde # LATIN CAPITAL LETTER O WITH TILDE : "Õ" Otilde # LATIN CAPITAL LETTER O WITH TILDE : "Õ" Otilde # LATIN CAPITAL LETTER O WITH TILDE : "Ö" Odiaeresis # LATIN CAPITAL LETTER O WITH DIAERESIS : "Ö" Odiaeresis # LATIN CAPITAL LETTER O WITH DIAERESIS : "Ö" Odiaeresis # LATIN CAPITAL LETTER O WITH DIAERESIS : "Ö" Odiaeresis # LATIN CAPITAL LETTER O WITH DIAERESIS : "Ö" Odiaeresis # LATIN CAPITAL LETTER O WITH DIAERESIS : "×" multiply # MULTIPLICATION SIGN : "Ø" Oslash # LATIN CAPITAL LETTER O WITH STROKE : "Ø" Oslash # LATIN CAPITAL LETTER O WITH STROKE : "Ø" Oslash # LATIN CAPITAL LETTER O WITH STROKE : "Ø" Oslash # LATIN CAPITAL LETTER O WITH STROKE : "Ù" Ugrave # LATIN CAPITAL LETTER U WITH GRAVE : "Ù" Ugrave # LATIN CAPITAL LETTER U WITH GRAVE : "Ù" Ugrave # LATIN CAPITAL LETTER U WITH GRAVE : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE : "Û" Ucircumflex # LATIN CAPITAL LETTER U WITH CIRCUMFLEX : "Û" Ucircumflex # LATIN CAPITAL LETTER U WITH CIRCUMFLEX : "Û" Ucircumflex # LATIN CAPITAL LETTER U WITH CIRCUMFLEX : "Û" Ucircumflex # LATIN CAPITAL LETTER U WITH CIRCUMFLEX : "Û" Ucircumflex # LATIN CAPITAL LETTER U WITH CIRCUMFLEX : "Ü" Udiaeresis # LATIN CAPITAL LETTER U WITH DIAERESIS : "Ü" Udiaeresis # LATIN CAPITAL LETTER U WITH DIAERESIS : "Ü" Udiaeresis # LATIN CAPITAL LETTER U WITH DIAERESIS : "Ü" Udiaeresis # LATIN CAPITAL LETTER U WITH DIAERESIS : "Ü" Udiaeresis # LATIN CAPITAL LETTER U WITH DIAERESIS : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE : "Þ" THORN # LATIN CAPITAL LETTER THORN : "à" agrave # LATIN SMALL LETTER A WITH GRAVE : "à" agrave # LATIN SMALL LETTER A WITH GRAVE : "à" agrave # LATIN SMALL LETTER A WITH GRAVE : "á" aacute # LATIN SMALL LETTER A WITH ACUTE : "á" aacute # LATIN SMALL LETTER A WITH ACUTE : "á" aacute # LATIN SMALL LETTER A WITH ACUTE : "á" aacute # LATIN SMALL LETTER A WITH ACUTE : "á" aacute # LATIN SMALL LETTER A WITH ACUTE : "â" acircumflex # LATIN SMALL LETTER A WITH CIRCUMFLEX : "â" acircumflex # LATIN SMALL LETTER A WITH CIRCUMFLEX : "â" acircumflex # LATIN SMALL LETTER A WITH CIRCUMFLEX : "â" acircumflex # LATIN SMALL LETTER A WITH CIRCUMFLEX : "â" acircumflex # LATIN SMALL LETTER A WITH CIRCUMFLEX : "ã" atilde # LATIN SMALL LETTER A WITH TILDE : "ã" atilde # LATIN SMALL LETTER A WITH TILDE : "ã" atilde # LATIN SMALL LETTER A WITH TILDE : "ä" adiaeresis # LATIN SMALL LETTER A WITH DIAERESIS : "ä" adiaeresis # LATIN SMALL LETTER A WITH DIAERESIS : "ä" adiaeresis # LATIN SMALL LETTER A WITH DIAERESIS : "ä" adiaeresis # LATIN SMALL LETTER A WITH DIAERESIS : "ä" adiaeresis # LATIN SMALL LETTER A WITH DIAERESIS : "å" aring # LATIN SMALL LETTER A WITH RING ABOVE : "å" aring # LATIN SMALL LETTER A WITH RING ABOVE : "å" aring # LATIN SMALL LETTER A WITH RING ABOVE : "å" aring # LATIN SMALL LETTER A WITH RING ABOVE : "å" aring # LATIN SMALL LETTER A WITH RING ABOVE : "ç" ccedilla # LATIN SMALL LETTER C WITH CEDILLA : "ç" ccedilla # LATIN SMALL LETTER C WITH CEDILLA : "ç" ccedilla # LATIN SMALL LETTER C WITH CEDILLA : "ç" ccedilla # LATIN SMALL LETTER C WITH CEDILLA : "è" egrave # LATIN SMALL LETTER E WITH GRAVE : "è" egrave # LATIN SMALL LETTER E WITH GRAVE : "è" egrave # LATIN SMALL LETTER E WITH GRAVE : "é" eacute # LATIN SMALL LETTER E WITH ACUTE : "é" eacute # LATIN SMALL LETTER E WITH ACUTE : "é" eacute # LATIN SMALL LETTER E WITH ACUTE : "é" eacute # LATIN SMALL LETTER E WITH ACUTE : "é" eacute # LATIN SMALL LETTER E WITH ACUTE : "ê" ecircumflex # LATIN SMALL LETTER E WITH CIRCUMFLEX : "ê" ecircumflex # LATIN SMALL LETTER E WITH CIRCUMFLEX : "ê" ecircumflex # LATIN SMALL LETTER E WITH CIRCUMFLEX : "ê" ecircumflex # LATIN SMALL LETTER E WITH CIRCUMFLEX : "ê" ecircumflex # LATIN SMALL LETTER E WITH CIRCUMFLEX : "ë" ediaeresis # LATIN SMALL LETTER E WITH DIAERESIS : "ë" ediaeresis # LATIN SMALL LETTER E WITH DIAERESIS : "ë" ediaeresis # LATIN SMALL LETTER E WITH DIAERESIS : "ë" ediaeresis # LATIN SMALL LETTER E WITH DIAERESIS : "ë" ediaeresis # LATIN SMALL LETTER E WITH DIAERESIS : "ì" igrave # LATIN SMALL LETTER I WITH GRAVE : "ì" igrave # LATIN SMALL LETTER I WITH GRAVE : "ì" igrave # LATIN SMALL LETTER I WITH GRAVE : "í" iacute # LATIN SMALL LETTER I WITH ACUTE : "í" iacute # LATIN SMALL LETTER I WITH ACUTE : "í" iacute # LATIN SMALL LETTER I WITH ACUTE : "í" iacute # LATIN SMALL LETTER I WITH ACUTE : "í" iacute # LATIN SMALL LETTER I WITH ACUTE : "î" icircumflex # LATIN SMALL LETTER I WITH CIRCUMFLEX : "î" icircumflex # LATIN SMALL LETTER I WITH CIRCUMFLEX : "î" icircumflex # LATIN SMALL LETTER I WITH CIRCUMFLEX : "î" icircumflex # LATIN SMALL LETTER I WITH CIRCUMFLEX : "î" icircumflex # LATIN SMALL LETTER I WITH CIRCUMFLEX : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS : "j́" # LATIN SMALL LETTER J plus COMBINING ACUTE : "j́" # LATIN SMALL LETTER J plus COMBINING ACUTE : "j́" # LATIN SMALL LETTER J plus COMBINING ACUTE : "j́" # LATIN SMALL LETTER J plus COMBINING ACUTE : "j́" # LATIN SMALL LETTER J plus COMBINING ACUTE : "ð" eth # LATIN SMALL LETTER ETH : "ñ" ntilde # LATIN SMALL LETTER N WITH TILDE : "ñ" ntilde # LATIN SMALL LETTER N WITH TILDE : "ñ" ntilde # LATIN SMALL LETTER N WITH TILDE : "ò" ograve # LATIN SMALL LETTER O WITH GRAVE : "ò" ograve # LATIN SMALL LETTER O WITH GRAVE : "ò" ograve # LATIN SMALL LETTER O WITH GRAVE : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE : "ô" ocircumflex # LATIN SMALL LETTER O WITH CIRCUMFLEX : "ô" ocircumflex # LATIN SMALL LETTER O WITH CIRCUMFLEX : "ô" ocircumflex # LATIN SMALL LETTER O WITH CIRCUMFLEX : "ô" ocircumflex # LATIN SMALL LETTER O WITH CIRCUMFLEX : "ô" ocircumflex # LATIN SMALL LETTER O WITH CIRCUMFLEX : "õ" otilde # LATIN SMALL LETTER O WITH TILDE : "õ" otilde # LATIN SMALL LETTER O WITH TILDE : "õ" otilde # LATIN SMALL LETTER O WITH TILDE : "ö" odiaeresis # LATIN SMALL LETTER O WITH DIAERESIS : "ö" odiaeresis # LATIN SMALL LETTER O WITH DIAERESIS : "ö" odiaeresis # LATIN SMALL LETTER O WITH DIAERESIS : "ö" odiaeresis # LATIN SMALL LETTER O WITH DIAERESIS : "ö" odiaeresis # LATIN SMALL LETTER O WITH DIAERESIS : "÷" division # DIVISION SIGN : "÷" division # DIVISION SIGN : "ø" oslash # LATIN SMALL LETTER O WITH STROKE : "ø" oslash # LATIN SMALL LETTER O WITH STROKE : "ø" oslash # LATIN SMALL LETTER O WITH STROKE : "ø" oslash # LATIN SMALL LETTER O WITH STROKE : "ù" ugrave # LATIN SMALL LETTER U WITH GRAVE : "ù" ugrave # LATIN SMALL LETTER U WITH GRAVE : "ù" ugrave # LATIN SMALL LETTER U WITH GRAVE : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE : "û" ucircumflex # LATIN SMALL LETTER U WITH CIRCUMFLEX : "û" ucircumflex # LATIN SMALL LETTER U WITH CIRCUMFLEX : "û" ucircumflex # LATIN SMALL LETTER U WITH CIRCUMFLEX : "û" ucircumflex # LATIN SMALL LETTER U WITH CIRCUMFLEX : "û" ucircumflex # LATIN SMALL LETTER U WITH CIRCUMFLEX : "ü" udiaeresis # LATIN SMALL LETTER U WITH DIAERESIS : "ü" udiaeresis # LATIN SMALL LETTER U WITH DIAERESIS : "ü" udiaeresis # LATIN SMALL LETTER U WITH DIAERESIS : "ü" udiaeresis # LATIN SMALL LETTER U WITH DIAERESIS : "ü" udiaeresis # LATIN SMALL LETTER U WITH DIAERESIS : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE : "þ" thorn # LATIN SMALL LETTER THORN : "ÿ" ydiaeresis # LATIN SMALL LETTER Y WITH DIAERESIS : "ÿ" ydiaeresis # LATIN SMALL LETTER Y WITH DIAERESIS : "ÿ" ydiaeresis # LATIN SMALL LETTER Y WITH DIAERESIS : "ÿ" ydiaeresis # LATIN SMALL LETTER Y WITH DIAERESIS : "ÿ" ydiaeresis # LATIN SMALL LETTER Y WITH DIAERESIS XCOMM Latin Extended-A : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK : "ą" U0105 # LATIN SMALL LETTER A WITH OGONEK : "ą" U0105 # LATIN SMALL LETTER A WITH OGONEK : "ą" U0105 # LATIN SMALL LETTER A WITH OGONEK : "ą" U0105 # LATIN SMALL LETTER A WITH OGONEK : "ą" U0105 # LATIN SMALL LETTER A WITH OGONEK : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE : "Ĉ" U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX : "Ĉ" U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX : "ĉ" U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX : "ĉ" U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX : "Ċ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE : "Ċ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE : "Ċ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE : "ċ" U010B # LATIN SMALL LETTER C WITH DOT ABOVE : "ċ" U010B # LATIN SMALL LETTER C WITH DOT ABOVE : "ċ" U010B # LATIN SMALL LETTER C WITH DOT ABOVE : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON : "č" U010D # LATIN SMALL LETTER C WITH CARON : "č" U010D # LATIN SMALL LETTER C WITH CARON : "č" U010D # LATIN SMALL LETTER C WITH CARON : "č" U010D # LATIN SMALL LETTER C WITH CARON : "č" U010D # LATIN SMALL LETTER C WITH CARON : "Ď" U010E # LATIN CAPITAL LETTER D WITH CARON : "Ď" U010E # LATIN CAPITAL LETTER D WITH CARON : "Ď" U010E # LATIN CAPITAL LETTER D WITH CARON : "Ď" U010E # LATIN CAPITAL LETTER D WITH CARON : "Ď" U010E # LATIN CAPITAL LETTER D WITH CARON : "ď" U010F # LATIN SMALL LETTER D WITH CARON : "ď" U010F # LATIN SMALL LETTER D WITH CARON : "ď" U010F # LATIN SMALL LETTER D WITH CARON : "ď" U010F # LATIN SMALL LETTER D WITH CARON : "ď" U010F # LATIN SMALL LETTER D WITH CARON : "Đ" Dstroke # LATIN CAPITAL LETTER D WITH STROKE : "Đ" Dstroke # LATIN CAPITAL LETTER D WITH STROKE : "Đ" Dstroke # LATIN CAPITAL LETTER D WITH STROKE : "Đ" Dstroke # LATIN CAPITAL LETTER D WITH STROKE : "Đ" Dstroke # LATIN CAPITAL LETTER D WITH STROKE : "đ" dstroke # LATIN SMALL LETTER D WITH STROKE : "đ" dstroke # LATIN SMALL LETTER D WITH STROKE : "đ" dstroke # LATIN SMALL LETTER D WITH STROKE : "đ" dstroke # LATIN SMALL LETTER D WITH STROKE : "đ" dstroke # LATIN SMALL LETTER D WITH STROKE : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON : "Ĕ" U0114 # LATIN CAPITAL LETTER E WITH BREVE : "Ĕ" U0114 # LATIN CAPITAL LETTER E WITH BREVE : "Ĕ" U0114 # LATIN CAPITAL LETTER E WITH BREVE : "Ĕ" U0114 # LATIN CAPITAL LETTER E WITH BREVE : "ĕ" U0115 # LATIN SMALL LETTER E WITH BREVE : "ĕ" U0115 # LATIN SMALL LETTER E WITH BREVE : "ĕ" U0115 # LATIN SMALL LETTER E WITH BREVE : "ĕ" U0115 # LATIN SMALL LETTER E WITH BREVE : "Ė" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE : "Ė" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE : "Ė" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE : "ė" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE : "ė" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE : "ė" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK : "ę" U0119 # LATIN SMALL LETTER E WITH OGONEK : "ę" U0119 # LATIN SMALL LETTER E WITH OGONEK : "ę" U0119 # LATIN SMALL LETTER E WITH OGONEK : "ę" U0119 # LATIN SMALL LETTER E WITH OGONEK : "ę" U0119 # LATIN SMALL LETTER E WITH OGONEK : "Ě" U011A # LATIN CAPITAL LETTER E WITH CARON : "Ě" U011A # LATIN CAPITAL LETTER E WITH CARON : "Ě" U011A # LATIN CAPITAL LETTER E WITH CARON : "Ě" U011A # LATIN CAPITAL LETTER E WITH CARON : "Ě" U011A # LATIN CAPITAL LETTER E WITH CARON : "ě" U011B # LATIN SMALL LETTER E WITH CARON : "ě" U011B # LATIN SMALL LETTER E WITH CARON : "ě" U011B # LATIN SMALL LETTER E WITH CARON : "ě" U011B # LATIN SMALL LETTER E WITH CARON : "ě" U011B # LATIN SMALL LETTER E WITH CARON : "Ĝ" U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX : "Ĝ" U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX : "ĝ" U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX : "ĝ" U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE : "Ġ" U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE : "Ġ" U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE : "Ġ" U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE : "ġ" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE : "ġ" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE : "ġ" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE : "Ģ" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA : "Ģ" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA : "Ģ" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA : "Ģ" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA : "ģ" U0123 # LATIN SMALL LETTER G WITH CEDILLA : "ģ" U0123 # LATIN SMALL LETTER G WITH CEDILLA : "ģ" U0123 # LATIN SMALL LETTER G WITH CEDILLA : "ģ" U0123 # LATIN SMALL LETTER G WITH CEDILLA : "Ĥ" U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX : "Ĥ" U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX : "ĥ" U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX : "ĥ" U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX : "Ħ" U0126 # LATIN CAPITAL LETTER H WITH STROKE : "Ħ" U0126 # LATIN CAPITAL LETTER H WITH STROKE : "Ħ" U0126 # LATIN CAPITAL LETTER H WITH STROKE : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE : "ĩ" U0129 # LATIN SMALL LETTER I WITH TILDE : "ĩ" U0129 # LATIN SMALL LETTER I WITH TILDE : "ĩ" U0129 # LATIN SMALL LETTER I WITH TILDE : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON : "ī" U012B # LATIN SMALL LETTER I WITH MACRON : "ī" U012B # LATIN SMALL LETTER I WITH MACRON : "ī" U012B # LATIN SMALL LETTER I WITH MACRON : "ī" U012B # LATIN SMALL LETTER I WITH MACRON : "ī" U012B # LATIN SMALL LETTER I WITH MACRON : "ī" U012B # LATIN SMALL LETTER I WITH MACRON : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE : "ĭ" U012D # LATIN SMALL LETTER I WITH BREVE : "ĭ" U012D # LATIN SMALL LETTER I WITH BREVE : "ĭ" U012D # LATIN SMALL LETTER I WITH BREVE : "ĭ" U012D # LATIN SMALL LETTER I WITH BREVE : "Į" U012E # LATIN CAPITAL LETTER I WITH OGONEK : "Į" U012E # LATIN CAPITAL LETTER I WITH OGONEK : "Į" U012E # LATIN CAPITAL LETTER I WITH OGONEK : "Į" U012E # LATIN CAPITAL LETTER I WITH OGONEK : "Į" U012E # LATIN CAPITAL LETTER I WITH OGONEK : "į" U012F # LATIN SMALL LETTER I WITH OGONEK : "į" U012F # LATIN SMALL LETTER I WITH OGONEK : "į" U012F # LATIN SMALL LETTER I WITH OGONEK : "į" U012F # LATIN SMALL LETTER I WITH OGONEK : "į" U012F # LATIN SMALL LETTER I WITH OGONEK : "İ" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE : "İ" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE : "İ" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE : "ı" U0131 # LATIN SMALL LETTER DOTLESS I : "ı" U0131 # LATIN SMALL LETTER DOTLESS I : "ı" U0131 # LATIN SMALL LETTER DOTLESS I : "Ĵ" U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX : "Ĵ" U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX : "ĵ" U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX : "ĵ" U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA : "ķ" U0137 # LATIN SMALL LETTER K WITH CEDILLA : "ķ" U0137 # LATIN SMALL LETTER K WITH CEDILLA : "ķ" U0137 # LATIN SMALL LETTER K WITH CEDILLA : "ķ" U0137 # LATIN SMALL LETTER K WITH CEDILLA : "ĸ" U0138 # LATIN SMALL LETTER KRA : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE : "Ļ" U013B # LATIN CAPITAL LETTER L WITH CEDILLA : "Ļ" U013B # LATIN CAPITAL LETTER L WITH CEDILLA : "Ļ" U013B # LATIN CAPITAL LETTER L WITH CEDILLA : "Ļ" U013B # LATIN CAPITAL LETTER L WITH CEDILLA : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON : "ľ" U013E # LATIN SMALL LETTER L WITH CARON : "ľ" U013E # LATIN SMALL LETTER L WITH CARON : "ľ" U013E # LATIN SMALL LETTER L WITH CARON : "ľ" U013E # LATIN SMALL LETTER L WITH CARON : "Ł" U0141 # LATIN CAPITAL LETTER L WITH STROKE : "Ł" U0141 # LATIN CAPITAL LETTER L WITH STROKE : "Ł" U0141 # LATIN CAPITAL LETTER L WITH STROKE : "Ł" U0141 # LATIN CAPITAL LETTER L WITH STROKE : "ł" U0142 # LATIN SMALL LETTER L WITH STROKE : "ł" U0142 # LATIN SMALL LETTER L WITH STROKE : "ł" U0142 # LATIN SMALL LETTER L WITH STROKE : "ł" U0142 # LATIN SMALL LETTER L WITH STROKE : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE : "Ņ" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA : "Ņ" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA : "Ņ" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA : "Ņ" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON : "ň" U0148 # LATIN SMALL LETTER N WITH CARON : "ň" U0148 # LATIN SMALL LETTER N WITH CARON : "ň" U0148 # LATIN SMALL LETTER N WITH CARON : "ň" U0148 # LATIN SMALL LETTER N WITH CARON : "ň" U0148 # LATIN SMALL LETTER N WITH CARON : "Ŋ" U014A # LATIN CAPITAL LETTER ENG : "ŋ" U014B # LATIN SMALL LETTER ENG : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON : "ō" U014D # LATIN SMALL LETTER O WITH MACRON : "ō" U014D # LATIN SMALL LETTER O WITH MACRON : "ō" U014D # LATIN SMALL LETTER O WITH MACRON : "ō" U014D # LATIN SMALL LETTER O WITH MACRON : "ō" U014D # LATIN SMALL LETTER O WITH MACRON : "ō" U014D # LATIN SMALL LETTER O WITH MACRON : "Ŏ" U014E # LATIN CAPITAL LETTER O WITH BREVE : "Ŏ" U014E # LATIN CAPITAL LETTER O WITH BREVE : "Ŏ" U014E # LATIN CAPITAL LETTER O WITH BREVE : "Ŏ" U014E # LATIN CAPITAL LETTER O WITH BREVE : "ŏ" U014F # LATIN SMALL LETTER O WITH BREVE : "ŏ" U014F # LATIN SMALL LETTER O WITH BREVE : "ŏ" U014F # LATIN SMALL LETTER O WITH BREVE : "ŏ" U014F # LATIN SMALL LETTER O WITH BREVE : "Ő" U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE : "Ő" U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE : "ő" U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE : "ő" U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE : "Ŗ" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA : "Ŗ" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA : "Ŗ" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA : "Ŗ" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA : "ŗ" U0157 # LATIN SMALL LETTER R WITH CEDILLA : "ŗ" U0157 # LATIN SMALL LETTER R WITH CEDILLA : "ŗ" U0157 # LATIN SMALL LETTER R WITH CEDILLA : "ŗ" U0157 # LATIN SMALL LETTER R WITH CEDILLA : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON : "ř" U0159 # LATIN SMALL LETTER R WITH CARON : "ř" U0159 # LATIN SMALL LETTER R WITH CARON : "ř" U0159 # LATIN SMALL LETTER R WITH CARON : "ř" U0159 # LATIN SMALL LETTER R WITH CARON : "ř" U0159 # LATIN SMALL LETTER R WITH CARON : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE : "Ŝ" U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX : "Ŝ" U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX : "ŝ" U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX : "ŝ" U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX : "Ş" U015E # LATIN CAPITAL LETTER S WITH CEDILLA : "Ş" U015E # LATIN CAPITAL LETTER S WITH CEDILLA : "Ş" U015E # LATIN CAPITAL LETTER S WITH CEDILLA : "Ş" U015E # LATIN CAPITAL LETTER S WITH CEDILLA : "ş" U015F # LATIN SMALL LETTER S WITH CEDILLA : "ş" U015F # LATIN SMALL LETTER S WITH CEDILLA : "ş" U015F # LATIN SMALL LETTER S WITH CEDILLA : "ş" U015F # LATIN SMALL LETTER S WITH CEDILLA : "Š" U0160 # LATIN CAPITAL LETTER S WITH CARON : "Š" U0160 # LATIN CAPITAL LETTER S WITH CARON : "Š" U0160 # LATIN CAPITAL LETTER S WITH CARON : "Š" U0160 # LATIN CAPITAL LETTER S WITH CARON : "Š" U0160 # LATIN CAPITAL LETTER S WITH CARON : "š" U0161 # LATIN SMALL LETTER S WITH CARON : "š" U0161 # LATIN SMALL LETTER S WITH CARON : "š" U0161 # LATIN SMALL LETTER S WITH CARON : "š" U0161 # LATIN SMALL LETTER S WITH CARON : "š" U0161 # LATIN SMALL LETTER S WITH CARON : "Ţ" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA : "Ţ" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA : "Ţ" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA : "Ţ" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA : "ţ" U0163 # LATIN SMALL LETTER T WITH CEDILLA : "ţ" U0163 # LATIN SMALL LETTER T WITH CEDILLA : "ţ" U0163 # LATIN SMALL LETTER T WITH CEDILLA : "ţ" U0163 # LATIN SMALL LETTER T WITH CEDILLA : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON : "ť" U0165 # LATIN SMALL LETTER T WITH CARON : "ť" U0165 # LATIN SMALL LETTER T WITH CARON : "ť" U0165 # LATIN SMALL LETTER T WITH CARON : "ť" U0165 # LATIN SMALL LETTER T WITH CARON : "ť" U0165 # LATIN SMALL LETTER T WITH CARON : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE : "ũ" U0169 # LATIN SMALL LETTER U WITH TILDE : "ũ" U0169 # LATIN SMALL LETTER U WITH TILDE : "ũ" U0169 # LATIN SMALL LETTER U WITH TILDE : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON : "ū" U016B # LATIN SMALL LETTER U WITH MACRON : "ū" U016B # LATIN SMALL LETTER U WITH MACRON : "ū" U016B # LATIN SMALL LETTER U WITH MACRON : "ū" U016B # LATIN SMALL LETTER U WITH MACRON : "ū" U016B # LATIN SMALL LETTER U WITH MACRON : "ū" U016B # LATIN SMALL LETTER U WITH MACRON : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE : "Ů" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE : "Ů" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE : "Ů" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE : "Ů" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE : "Ű" U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE : "Ű" U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE : "ű" U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE : "ű" U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK : "Ŵ" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX : "Ŵ" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX : "Ŵ" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX : "ŷ" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX : "ŷ" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX : "ŷ" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE : "Ż" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE : "Ż" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE : "Ż" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE : "ż" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE : "ż" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE : "ż" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON : "ž" U017E # LATIN SMALL LETTER Z WITH CARON : "ž" U017E # LATIN SMALL LETTER Z WITH CARON : "ž" U017E # LATIN SMALL LETTER Z WITH CARON : "ž" U017E # LATIN SMALL LETTER Z WITH CARON : "ž" U017E # LATIN SMALL LETTER Z WITH CARON : "ſ" U017F # LATIN SMALL LETTER LONG S : "ſ" U017F # LATIN SMALL LETTER LONG S XCOMM Latin Extended-B : "ƀ" U0180 # LATIN SMALL LETTER B WITH STROKE : "ƀ" U0180 # LATIN SMALL LETTER B WITH STROKE : "ƀ" U0180 # LATIN SMALL LETTER B WITH STROKE : "Ə" U018F # LATIN CAPITAL LETTER SCHWA : "Ɨ" U0197 # LATIN CAPITAL LETTER I WITH STROKE : "Ɨ" U0197 # LATIN CAPITAL LETTER I WITH STROKE : "Ɨ" U0197 # LATIN CAPITAL LETTER I WITH STROKE : "Ơ" U01A0 # LATIN CAPITAL LETTER O WITH HORN : "Ơ" U01A0 # LATIN CAPITAL LETTER O WITH HORN : "ơ" U01A1 # LATIN SMALL LETTER O WITH HORN : "ơ" U01A1 # LATIN SMALL LETTER O WITH HORN : "Ư" U01AF # LATIN CAPITAL LETTER U WITH HORN : "Ư" U01AF # LATIN CAPITAL LETTER U WITH HORN : "ư" U01B0 # LATIN SMALL LETTER U WITH HORN : "ư" U01B0 # LATIN SMALL LETTER U WITH HORN : "Ƶ" U01B5 # LATIN CAPITAL LETTER Z WITH STROKE : "Ƶ" U01B5 # LATIN CAPITAL LETTER Z WITH STROKE : "Ƶ" U01B5 # LATIN CAPITAL LETTER Z WITH STROKE : "ƶ" U01B6 # LATIN SMALL LETTER Z WITH STROKE : "ƶ" U01B6 # LATIN SMALL LETTER Z WITH STROKE : "ƶ" U01B6 # LATIN SMALL LETTER Z WITH STROKE : "Ʒ" U01B7 # LATIN CAPITAL LETTER EZH : "Ǎ" U01CD # LATIN CAPITAL LETTER A WITH CARON : "Ǎ" U01CD # LATIN CAPITAL LETTER A WITH CARON : "Ǎ" U01CD # LATIN CAPITAL LETTER A WITH CARON : "ǎ" U01CE # LATIN SMALL LETTER A WITH CARON : "ǎ" U01CE # LATIN SMALL LETTER A WITH CARON : "ǎ" U01CE # LATIN SMALL LETTER A WITH CARON : "Ǐ" U01CF # LATIN CAPITAL LETTER I WITH CARON : "Ǐ" U01CF # LATIN CAPITAL LETTER I WITH CARON : "Ǐ" U01CF # LATIN CAPITAL LETTER I WITH CARON : "ǐ" U01D0 # LATIN SMALL LETTER I WITH CARON : "ǐ" U01D0 # LATIN SMALL LETTER I WITH CARON : "ǐ" U01D0 # LATIN SMALL LETTER I WITH CARON : "Ǒ" U01D1 # LATIN CAPITAL LETTER O WITH CARON : "Ǒ" U01D1 # LATIN CAPITAL LETTER O WITH CARON : "Ǒ" U01D1 # LATIN CAPITAL LETTER O WITH CARON : "ǒ" U01D2 # LATIN SMALL LETTER O WITH CARON : "ǒ" U01D2 # LATIN SMALL LETTER O WITH CARON : "ǒ" U01D2 # LATIN SMALL LETTER O WITH CARON : "Ǔ" U01D3 # LATIN CAPITAL LETTER U WITH CARON : "Ǔ" U01D3 # LATIN CAPITAL LETTER U WITH CARON : "Ǔ" U01D3 # LATIN CAPITAL LETTER U WITH CARON : "ǔ" U01D4 # LATIN SMALL LETTER U WITH CARON : "ǔ" U01D4 # LATIN SMALL LETTER U WITH CARON : "ǔ" U01D4 # LATIN SMALL LETTER U WITH CARON : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON : "Ǣ" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON : "Ǣ" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON : "Ǣ" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON : "ǣ" U01E3 # LATIN SMALL LETTER AE WITH MACRON : "ǣ" U01E3 # LATIN SMALL LETTER AE WITH MACRON : "ǣ" U01E3 # LATIN SMALL LETTER AE WITH MACRON : "Ǥ" U01E4 # LATIN CAPITAL LETTER G WITH STROKE : "Ǥ" U01E4 # LATIN CAPITAL LETTER G WITH STROKE : "Ǥ" U01E4 # LATIN CAPITAL LETTER G WITH STROKE : "ǥ" U01E5 # LATIN SMALL LETTER G WITH STROKE : "ǥ" U01E5 # LATIN SMALL LETTER G WITH STROKE : "ǥ" U01E5 # LATIN SMALL LETTER G WITH STROKE : "Ǧ" U01E6 # LATIN CAPITAL LETTER G WITH CARON : "Ǧ" U01E6 # LATIN CAPITAL LETTER G WITH CARON : "Ǧ" U01E6 # LATIN CAPITAL LETTER G WITH CARON : "ǧ" U01E7 # LATIN SMALL LETTER G WITH CARON : "ǧ" U01E7 # LATIN SMALL LETTER G WITH CARON : "ǧ" U01E7 # LATIN SMALL LETTER G WITH CARON : "Ǩ" U01E8 # LATIN CAPITAL LETTER K WITH CARON : "Ǩ" U01E8 # LATIN CAPITAL LETTER K WITH CARON : "Ǩ" U01E8 # LATIN CAPITAL LETTER K WITH CARON : "ǩ" U01E9 # LATIN SMALL LETTER K WITH CARON : "ǩ" U01E9 # LATIN SMALL LETTER K WITH CARON : "ǩ" U01E9 # LATIN SMALL LETTER K WITH CARON : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK : "ǫ" U01EB # LATIN SMALL LETTER O WITH OGONEK : "ǫ" U01EB # LATIN SMALL LETTER O WITH OGONEK : "ǫ" U01EB # LATIN SMALL LETTER O WITH OGONEK : "ǫ" U01EB # LATIN SMALL LETTER O WITH OGONEK : "ǫ" U01EB # LATIN SMALL LETTER O WITH OGONEK : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON : "Ǯ" U01EE # LATIN CAPITAL LETTER EZH WITH CARON : "Ǯ" U01EE # LATIN CAPITAL LETTER EZH WITH CARON : "Ǯ" U01EE # LATIN CAPITAL LETTER EZH WITH CARON : "Ǯ" U01EE # LATIN CAPITAL LETTER EZH WITH CARON : "Ǯ" U01EE # LATIN CAPITAL LETTER EZH WITH CARON : "Ǯ" U01EE # LATIN CAPITAL LETTER EZH WITH CARON : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON : "ǰ" U01F0 # LATIN SMALL LETTER J WITH CARON : "ǰ" U01F0 # LATIN SMALL LETTER J WITH CARON : "ǰ" U01F0 # LATIN SMALL LETTER J WITH CARON : "Ǵ" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE : "Ǵ" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE : "Ǵ" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE : "Ǹ" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE : "Ǹ" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE : "Ȁ" U0200 # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE : "ȁ" U0201 # LATIN SMALL LETTER A WITH DOUBLE GRAVE : "Ȃ" U0202 # LATIN CAPITAL LETTER A WITH INVERTED BREVE : "ȃ" U0203 # LATIN SMALL LETTER A WITH INVERTED BREVE : "Ȅ" U0204 # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE : "ȅ" U0205 # LATIN SMALL LETTER E WITH DOUBLE GRAVE : "Ȇ" U0206 # LATIN CAPITAL LETTER E WITH INVERTED BREVE : "ȇ" U0207 # LATIN SMALL LETTER E WITH INVERTED BREVE : "Ȉ" U0208 # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE : "ȉ" U0209 # LATIN SMALL LETTER I WITH DOUBLE GRAVE : "Ȋ" U020A # LATIN CAPITAL LETTER I WITH INVERTED BREVE : "ȋ" U020B # LATIN SMALL LETTER I WITH INVERTED BREVE : "Ȍ" U020C # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE : "ȍ" U020D # LATIN SMALL LETTER O WITH DOUBLE GRAVE : "Ȏ" U020E # LATIN CAPITAL LETTER O WITH INVERTED BREVE : "ȏ" U020F # LATIN SMALL LETTER O WITH INVERTED BREVE : "Ȑ" U0210 # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE : "ȑ" U0211 # LATIN SMALL LETTER R WITH DOUBLE GRAVE : "Ȓ" U0212 # LATIN CAPITAL LETTER R WITH INVERTED BREVE : "ȓ" U0213 # LATIN SMALL LETTER R WITH INVERTED BREVE : "Ȕ" U0214 # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE : "ȕ" U0215 # LATIN SMALL LETTER U WITH DOUBLE GRAVE : "Ȗ" U0216 # LATIN CAPITAL LETTER U WITH INVERTED BREVE : "ȗ" U0217 # LATIN SMALL LETTER U WITH INVERTED BREVE : "Ș" U0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW : "Ș" U0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW : "Ș" U0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW : "ș" U0219 # LATIN SMALL LETTER S WITH COMMA BELOW : "ș" U0219 # LATIN SMALL LETTER S WITH COMMA BELOW : "ș" U0219 # LATIN SMALL LETTER S WITH COMMA BELOW : "Ț" U021A # LATIN CAPITAL LETTER T WITH COMMA BELOW : "Ț" U021A # LATIN CAPITAL LETTER T WITH COMMA BELOW : "Ț" U021A # LATIN CAPITAL LETTER T WITH COMMA BELOW : "ț" U021B # LATIN SMALL LETTER T WITH COMMA BELOW : "ț" U021B # LATIN SMALL LETTER T WITH COMMA BELOW : "ț" U021B # LATIN SMALL LETTER T WITH COMMA BELOW : "Ȟ" U021E # LATIN CAPITAL LETTER H WITH CARON : "Ȟ" U021E # LATIN CAPITAL LETTER H WITH CARON : "Ȟ" U021E # LATIN CAPITAL LETTER H WITH CARON : "ȟ" U021F # LATIN SMALL LETTER H WITH CARON : "ȟ" U021F # LATIN SMALL LETTER H WITH CARON : "ȟ" U021F # LATIN SMALL LETTER H WITH CARON : "Ȧ" U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE : "Ȧ" U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE : "ȧ" U0227 # LATIN SMALL LETTER A WITH DOT ABOVE : "ȧ" U0227 # LATIN SMALL LETTER A WITH DOT ABOVE : "Ȩ" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA : "Ȩ" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA : "ȩ" U0229 # LATIN SMALL LETTER E WITH CEDILLA : "ȩ" U0229 # LATIN SMALL LETTER E WITH CEDILLA : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON : "Ȯ" U022E # LATIN CAPITAL LETTER O WITH DOT ABOVE : "Ȯ" U022E # LATIN CAPITAL LETTER O WITH DOT ABOVE : "ȯ" U022F # LATIN SMALL LETTER O WITH DOT ABOVE : "ȯ" U022F # LATIN SMALL LETTER O WITH DOT ABOVE : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON : "Ƀ" U0243 # LATIN CAPITAL LETTER B WITH STROKE : "Ƀ" U0243 # LATIN CAPITAL LETTER B WITH STROKE : "Ƀ" U0243 # LATIN CAPITAL LETTER B WITH STROKE /* Four sequences for Samogitian. */ : "Ė̄" # LATIN CAPITAL LETTER E WITH DOT ABOVE plus combining macron : "Ė̄" # LATIN CAPITAL LETTER E WITH DOT ABOVE plus combining macron : "ė̄" # LATIN SMALL LETTER E WITH DOT ABOVE plus combining macron : "ė̄" # LATIN SMALL LETTER E WITH DOT ABOVE plus combining macron XCOMM IPA Extensions : "ə" U0259 # LATIN SMALL LETTER SCHWA : "ɨ" U0268 # LATIN SMALL LETTER I WITH STROKE : "ɨ" U0268 # LATIN SMALL LETTER I WITH STROKE : "ɨ" U0268 # LATIN SMALL LETTER I WITH STROKE : "ʒ" U0292 # LATIN SMALL LETTER EZH XCOMM Spacing Modifier Letters : "ʡ" U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE : "ʡ" U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE : "ʰ" U02B0 # MODIFIER LETTER SMALL H : "ʰ" U02B0 # MODIFIER LETTER SMALL H : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK : "ʲ" U02B2 # MODIFIER LETTER SMALL J : "ʲ" U02B2 # MODIFIER LETTER SMALL J : "ʳ" U02B3 # MODIFIER LETTER SMALL R : "ʳ" U02B3 # MODIFIER LETTER SMALL R : "ʴ" U02B4 # MODIFIER LETTER SMALL TURNED R : "ʴ" U02B4 # MODIFIER LETTER SMALL TURNED R : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R : "ʷ" U02B7 # MODIFIER LETTER SMALL W : "ʷ" U02B7 # MODIFIER LETTER SMALL W : "ʸ" U02B8 # MODIFIER LETTER SMALL Y : "ʸ" U02B8 # MODIFIER LETTER SMALL Y : "ˠ" U02E0 # MODIFIER LETTER SMALL GAMMA : "ˠ" U02E0 # MODIFIER LETTER SMALL GAMMA : "ˡ" U02E1 # MODIFIER LETTER SMALL L : "ˡ" U02E1 # MODIFIER LETTER SMALL L : "ˢ" U02E2 # MODIFIER LETTER SMALL S : "ˢ" U02E2 # MODIFIER LETTER SMALL S : "ˣ" U02E3 # MODIFIER LETTER SMALL X : "ˣ" U02E3 # MODIFIER LETTER SMALL X : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP XCOMM Greek : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS : "΅" U0385 # GREEK DIALYTIKA TONOS : "΅" U0385 # GREEK DIALYTIKA TONOS : "΅" U0385 # GREEK DIALYTIKA TONOS : "΅" U0385 # GREEK DIALYTIKA TONOS : "΅" U0385 # GREEK DIALYTIKA TONOS : "΅" U0385 # GREEK DIALYTIKA TONOS : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS : "Ύ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS : "Ύ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS : "Ύ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS : "Ύ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS : "Ώ" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS : "Ώ" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS : "Ώ" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS : "Ώ" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS : "Ϊ" U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA : "Ϊ" U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA : "Ϊ" U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA : "Ϋ" U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA : "Ϋ" U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA : "Ϋ" U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS : "ϊ" U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA : "ϊ" U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA : "ϊ" U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA : "ϋ" U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA : "ϋ" U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA : "ϋ" U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS : "ύ" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS : "ύ" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS : "ύ" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS : "ύ" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS : "ώ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS : "ώ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS : "ώ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS : "ώ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS : "ϔ" U03D4 # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL XCOMM Cyrillic : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE : "Ё" U0401 # CYRILLIC CAPITAL LETTER IO : "Ё" U0401 # CYRILLIC CAPITAL LETTER IO : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE : "Ї" U0407 # CYRILLIC CAPITAL LETTER YI : "Ї" U0407 # CYRILLIC CAPITAL LETTER YI : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE : "Ѝ" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE : "Ѝ" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE : "Ў" U040E # CYRILLIC CAPITAL LETTER SHORT U : "Ў" U040E # CYRILLIC CAPITAL LETTER SHORT U : "Ў" U040E # CYRILLIC CAPITAL LETTER SHORT U : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I : "й" U0439 # CYRILLIC SMALL LETTER SHORT I : "й" U0439 # CYRILLIC SMALL LETTER SHORT I : "й" U0439 # CYRILLIC SMALL LETTER SHORT I : "ѐ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE : "ѐ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE : "ё" U0451 # CYRILLIC SMALL LETTER IO : "ё" U0451 # CYRILLIC SMALL LETTER IO : "ѓ" U0453 # CYRILLIC SMALL LETTER GJE : "ѓ" U0453 # CYRILLIC SMALL LETTER GJE : "ѓ" U0453 # CYRILLIC SMALL LETTER GJE : "ї" U0457 # CYRILLIC SMALL LETTER YI : "ї" U0457 # CYRILLIC SMALL LETTER YI : "ќ" U045C # CYRILLIC SMALL LETTER KJE : "ќ" U045C # CYRILLIC SMALL LETTER KJE : "ќ" U045C # CYRILLIC SMALL LETTER KJE : "ѝ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE : "ѝ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE : "ў" U045E # CYRILLIC SMALL LETTER SHORT U : "ў" U045E # CYRILLIC SMALL LETTER SHORT U : "ў" U045E # CYRILLIC SMALL LETTER SHORT U : "Ѷ" U0476 # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT : "ѷ" U0477 # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT : "Ғ" U0492 # CYRILLIC CAPITAL LETTER GHE WITH STROKE : "Ғ" U0492 # CYRILLIC CAPITAL LETTER GHE WITH STROKE : "ғ" U0493 # CYRILLIC SMALL LETTER GHE WITH STROKE : "ғ" U0493 # CYRILLIC SMALL LETTER GHE WITH STROKE : "Ҟ" U049E # CYRILLIC CAPITAL LETTER KA WITH STROKE : "Ҟ" U049E # CYRILLIC CAPITAL LETTER KA WITH STROKE : "ҟ" U049F # CYRILLIC SMALL LETTER KA WITH STROKE : "ҟ" U049F # CYRILLIC SMALL LETTER KA WITH STROKE : "Ұ" U04B0 # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE : "Ұ" U04B0 # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE : "ұ" U04B1 # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE : "ұ" U04B1 # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE : "Ӂ" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE : "Ӂ" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE : "Ӂ" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE : "ӂ" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE : "ӂ" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE : "ӂ" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE : "Ӑ" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE : "Ӑ" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE : "Ӑ" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE : "ӑ" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE : "ӑ" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE : "ӑ" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE : "Ӓ" U04D2 # CYRILLIC CAPITAL LETTER A WITH DIAERESIS : "Ӓ" U04D2 # CYRILLIC CAPITAL LETTER A WITH DIAERESIS : "ӓ" U04D3 # CYRILLIC SMALL LETTER A WITH DIAERESIS : "ӓ" U04D3 # CYRILLIC SMALL LETTER A WITH DIAERESIS : "Ӗ" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE : "Ӗ" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE : "Ӗ" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE : "ӗ" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE : "ӗ" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE : "ӗ" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE : "Ӛ" U04DA # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS : "Ӛ" U04DA # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS : "ӛ" U04DB # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS : "ӛ" U04DB # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS : "Ӝ" U04DC # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS : "Ӝ" U04DC # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS : "ӝ" U04DD # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS : "ӝ" U04DD # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS : "Ӟ" U04DE # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS : "Ӟ" U04DE # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS : "ӟ" U04DF # CYRILLIC SMALL LETTER ZE WITH DIAERESIS : "ӟ" U04DF # CYRILLIC SMALL LETTER ZE WITH DIAERESIS : "Ӣ" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON : "Ӣ" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON : "Ӣ" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON : "ӣ" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON : "ӣ" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON : "ӣ" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON : "Ӥ" U04E4 # CYRILLIC CAPITAL LETTER I WITH DIAERESIS : "Ӥ" U04E4 # CYRILLIC CAPITAL LETTER I WITH DIAERESIS : "ӥ" U04E5 # CYRILLIC SMALL LETTER I WITH DIAERESIS : "ӥ" U04E5 # CYRILLIC SMALL LETTER I WITH DIAERESIS : "Ӧ" U04E6 # CYRILLIC CAPITAL LETTER O WITH DIAERESIS : "Ӧ" U04E6 # CYRILLIC CAPITAL LETTER O WITH DIAERESIS : "ӧ" U04E7 # CYRILLIC SMALL LETTER O WITH DIAERESIS : "ӧ" U04E7 # CYRILLIC SMALL LETTER O WITH DIAERESIS : "Ӫ" U04EA # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS : "Ӫ" U04EA # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS : "ӫ" U04EB # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS : "ӫ" U04EB # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS : "Ӭ" U04EC # CYRILLIC CAPITAL LETTER E WITH DIAERESIS : "Ӭ" U04EC # CYRILLIC CAPITAL LETTER E WITH DIAERESIS : "ӭ" U04ED # CYRILLIC SMALL LETTER E WITH DIAERESIS : "ӭ" U04ED # CYRILLIC SMALL LETTER E WITH DIAERESIS : "Ӯ" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON : "Ӯ" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON : "Ӯ" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON : "ӯ" U04EF # CYRILLIC SMALL LETTER U WITH MACRON : "ӯ" U04EF # CYRILLIC SMALL LETTER U WITH MACRON : "ӯ" U04EF # CYRILLIC SMALL LETTER U WITH MACRON : "Ӱ" U04F0 # CYRILLIC CAPITAL LETTER U WITH DIAERESIS : "Ӱ" U04F0 # CYRILLIC CAPITAL LETTER U WITH DIAERESIS : "ӱ" U04F1 # CYRILLIC SMALL LETTER U WITH DIAERESIS : "ӱ" U04F1 # CYRILLIC SMALL LETTER U WITH DIAERESIS : "Ӳ" U04F2 # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE : "Ӳ" U04F2 # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE : "ӳ" U04F3 # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE : "ӳ" U04F3 # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE : "Ӵ" U04F4 # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS : "Ӵ" U04F4 # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS : "ӵ" U04F5 # CYRILLIC SMALL LETTER CHE WITH DIAERESIS : "ӵ" U04F5 # CYRILLIC SMALL LETTER CHE WITH DIAERESIS : "Ӹ" U04F8 # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS : "Ӹ" U04F8 # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS : "ӹ" U04F9 # CYRILLIC SMALL LETTER YERU WITH DIAERESIS : "ӹ" U04F9 # CYRILLIC SMALL LETTER YERU WITH DIAERESIS XCOMM Arabic : "ء" Arabic_hamza # ARABIC LETTER HAMZA : "ء" Arabic_hamza # ARABIC LETTER HAMZA : "أ" Arabic_hamzaonalef # ARABIC LETTER ALEF WITH HAMZA ABOVE : "ؤ" Arabic_hamzaonwaw # ARABIC LETTER WAW WITH HAMZA ABOVE : "ئ" Arabic_hamzaonyeh # ARABIC LETTER YEH WITH HAMZA ABOVE : "آ" U0622 # ARABIC LETTER ALEF WITH MADDA ABOVE : "أ" U0623 # ARABIC LETTER ALEF WITH HAMZA ABOVE : "ؤ" U0624 # ARABIC LETTER WAW WITH HAMZA ABOVE : "إ" U0625 # ARABIC LETTER ALEF WITH HAMZA BELOW : "ئ" U0626 # ARABIC LETTER YEH WITH HAMZA ABOVE : "ۀ" U06C0 # ARABIC LETTER HEH WITH YEH ABOVE : "ۂ" U06C2 # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE : "ۓ" U06D3 # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE XCOMM Several other scripts : "ऩ" U0929 # DEVANAGARI LETTER NNNA : "ऱ" U0931 # DEVANAGARI LETTER RRA : "ऴ" U0934 # DEVANAGARI LETTER LLLA : "क़" U0958 # DEVANAGARI LETTER QA : "ख़" U0959 # DEVANAGARI LETTER KHHA : "ग़" U095A # DEVANAGARI LETTER GHHA : "ज़" U095B # DEVANAGARI LETTER ZA : "ड़" U095C # DEVANAGARI LETTER DDDHA : "ढ़" U095D # DEVANAGARI LETTER RHA : "फ़" U095E # DEVANAGARI LETTER FA : "य़" U095F # DEVANAGARI LETTER YYA : "ো" U09CB # BENGALI VOWEL SIGN O : "ৌ" U09CC # BENGALI VOWEL SIGN AU : "ড়" U09DC # BENGALI LETTER RRA : "ঢ়" U09DD # BENGALI LETTER RHA : "য়" U09DF # BENGALI LETTER YYA : "ਲ਼" U0A33 # GURMUKHI LETTER LLA : "ਸ਼" U0A36 # GURMUKHI LETTER SHA : "ਖ਼" U0A59 # GURMUKHI LETTER KHHA : "ਗ਼" U0A5A # GURMUKHI LETTER GHHA : "ਜ਼" U0A5B # GURMUKHI LETTER ZA : "ਫ਼" U0A5E # GURMUKHI LETTER FA : "ୈ" U0B48 # ORIYA VOWEL SIGN AI : "ୋ" U0B4B # ORIYA VOWEL SIGN O : "ୌ" U0B4C # ORIYA VOWEL SIGN AU : "ଡ଼" U0B5C # ORIYA LETTER RRA : "ଢ଼" U0B5D # ORIYA LETTER RHA : "ஔ" U0B94 # TAMIL LETTER AU : "ொ" U0BCA # TAMIL VOWEL SIGN O : "ோ" U0BCB # TAMIL VOWEL SIGN OO : "ௌ" U0BCC # TAMIL VOWEL SIGN AU : "ై" U0C48 # TELUGU VOWEL SIGN AI : "ೀ" U0CC0 # KANNADA VOWEL SIGN II : "ೇ" U0CC7 # KANNADA VOWEL SIGN EE : "ೈ" U0CC8 # KANNADA VOWEL SIGN AI : "ೊ" U0CCA # KANNADA VOWEL SIGN O : "ೋ" U0CCB # KANNADA VOWEL SIGN OO : "ൊ" U0D4A # MALAYALAM VOWEL SIGN O : "ോ" U0D4B # MALAYALAM VOWEL SIGN OO : "ൌ" U0D4C # MALAYALAM VOWEL SIGN AU : "ේ" U0DDA # SINHALA VOWEL SIGN DIGA KOMBUVA : "ො" U0DDC # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA : "ෝ" U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA : "ෞ" U0DDE # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA : "གྷ" U0F43 # TIBETAN LETTER GHA : "ཌྷ" U0F4D # TIBETAN LETTER DDHA : "དྷ" U0F52 # TIBETAN LETTER DHA : "བྷ" U0F57 # TIBETAN LETTER BHA : "ཛྷ" U0F5C # TIBETAN LETTER DZHA : "ཀྵ" U0F69 # TIBETAN LETTER KSSA : "ཱི" U0F73 # TIBETAN VOWEL SIGN II : "ཱུ" U0F75 # TIBETAN VOWEL SIGN UU : "ྲྀ" U0F76 # TIBETAN VOWEL SIGN VOCALIC R : "ླྀ" U0F78 # TIBETAN VOWEL SIGN VOCALIC L : "ཱྀ" U0F81 # TIBETAN VOWEL SIGN REVERSED II : "ྒྷ" U0F93 # TIBETAN SUBJOINED LETTER GHA : "ྜྷ" U0F9D # TIBETAN SUBJOINED LETTER DDHA : "ྡྷ" U0FA2 # TIBETAN SUBJOINED LETTER DHA : "ྦྷ" U0FA7 # TIBETAN SUBJOINED LETTER BHA : "ྫྷ" U0FAC # TIBETAN SUBJOINED LETTER DZHA : "ྐྵ" U0FB9 # TIBETAN SUBJOINED LETTER KSSA : "ဦ" U1026 # MYANMAR LETTER UU XCOMM Conjoining Jamo for Korean Hangul /* Originally generated by Jungshik Shin , 2002-10-17, * from https://www.unicode.org/Public/2.0-Update/UnicodeData-2.0.14.txt. */ : "ᄁ" U1101 # HANGUL CHOSEONG SSANGKIYEOK : "ᄄ" U1104 # HANGUL CHOSEONG SSANGTIKEUT : "ᄈ" U1108 # HANGUL CHOSEONG SSANGPIEUP : "ᄊ" U110a # HANGUL CHOSEONG SSANGSIOS : "ᄍ" U110d # HANGUL CHOSEONG SSANGCIEUC : "ᄓ" U1113 # HANGUL CHOSEONG NIEUN-KIYEOK : "ᄔ" U1114 # HANGUL CHOSEONG SSANGNIEUN : "ᄕ" U1115 # HANGUL CHOSEONG NIEUN-TIKEUT : "ᄖ" U1116 # HANGUL CHOSEONG NIEUN-PIEUP : "ᄗ" U1117 # HANGUL CHOSEONG TIKEUT-KIYEOK : "ᄘ" U1118 # HANGUL CHOSEONG RIEUL-NIEUN : "ᄙ" U1119 # HANGUL CHOSEONG SSANGRIEUL : "ᄚ" U111a # HANGUL CHOSEONG RIEUL-HIEUH : "ᄛ" U111b # HANGUL CHOSEONG KAPYEOUNRIEUL : "ᄜ" U111c # HANGUL CHOSEONG MIEUM-PIEUP : "ᄝ" U111d # HANGUL CHOSEONG KAPYEOUNMIEUM : "ᄞ" U111e # HANGUL CHOSEONG PIEUP-KIYEOK : "ᄟ" U111f # HANGUL CHOSEONG PIEUP-NIEUN : "ᄠ" U1120 # HANGUL CHOSEONG PIEUP-TIKEUT : "ᄡ" U1121 # HANGUL CHOSEONG PIEUP-SIOS : "ᄧ" U1127 # HANGUL CHOSEONG PIEUP-CIEUC : "ᄨ" U1128 # HANGUL CHOSEONG PIEUP-CHIEUCH : "ᄩ" U1129 # HANGUL CHOSEONG PIEUP-THIEUTH : "ᄪ" U112a # HANGUL CHOSEONG PIEUP-PHIEUPH : "ᄫ" U112b # HANGUL CHOSEONG KAPYEOUNPIEUP : "ᄭ" U112d # HANGUL CHOSEONG SIOS-KIYEOK : "ᄮ" U112e # HANGUL CHOSEONG SIOS-NIEUN : "ᄯ" U112f # HANGUL CHOSEONG SIOS-TIKEUT : "ᄰ" U1130 # HANGUL CHOSEONG SIOS-RIEUL : "ᄱ" U1131 # HANGUL CHOSEONG SIOS-MIEUM : "ᄲ" U1132 # HANGUL CHOSEONG SIOS-PIEUP : "ᄵ" U1135 # HANGUL CHOSEONG SIOS-IEUNG : "ᄶ" U1136 # HANGUL CHOSEONG SIOS-CIEUC : "ᄷ" U1137 # HANGUL CHOSEONG SIOS-CHIEUCH : "ᄸ" U1138 # HANGUL CHOSEONG SIOS-KHIEUKH : "ᄹ" U1139 # HANGUL CHOSEONG SIOS-THIEUTH : "ᄺ" U113a # HANGUL CHOSEONG SIOS-PHIEUPH : "ᄻ" U113b # HANGUL CHOSEONG SIOS-HIEUH : "ᄽ" U113d # HANGUL CHOSEONG CHITUEUMSSANGSIOS : "ᄿ" U113f # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS : "ᅁ" U1141 # HANGUL CHOSEONG IEUNG-KIYEOK : "ᅂ" U1142 # HANGUL CHOSEONG IEUNG-TIKEUT : "ᅃ" U1143 # HANGUL CHOSEONG IEUNG-MIEUM : "ᅄ" U1144 # HANGUL CHOSEONG IEUNG-PIEUP : "ᅅ" U1145 # HANGUL CHOSEONG IEUNG-SIOS : "ᅆ" U1146 # HANGUL CHOSEONG IEUNG-PANSIOS : "ᅇ" U1147 # HANGUL CHOSEONG SSANGIEUNG : "ᅈ" U1148 # HANGUL CHOSEONG IEUNG-CIEUC : "ᅉ" U1149 # HANGUL CHOSEONG IEUNG-CHIEUCH : "ᅊ" U114a # HANGUL CHOSEONG IEUNG-THIEUTH : "ᅋ" U114b # HANGUL CHOSEONG IEUNG-PHIEUPH : "ᅍ" U114d # HANGUL CHOSEONG CIEUC-IEUNG : "ᅏ" U114f # HANGUL CHOSEONG CHITUEUMSSANGCIEUC : "ᅑ" U1151 # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC : "ᅒ" U1152 # HANGUL CHOSEONG CHIEUCH-KHIEUKH : "ᅓ" U1153 # HANGUL CHOSEONG CHIEUCH-HIEUH : "ᅖ" U1156 # HANGUL CHOSEONG PHIEUPH-PIEUP : "ᅗ" U1157 # HANGUL CHOSEONG KAPYEOUNPHIEUPH : "ᅘ" U1158 # HANGUL CHOSEONG SSANGHIEUH : "ᅢ" U1162 # HANGUL JUNGSEONG AE : "ᅤ" U1164 # HANGUL JUNGSEONG YAE : "ᅦ" U1166 # HANGUL JUNGSEONG E : "ᅨ" U1168 # HANGUL JUNGSEONG YE : "ᅪ" U116a # HANGUL JUNGSEONG WA : "ᅬ" U116c # HANGUL JUNGSEONG OE : "ᅯ" U116f # HANGUL JUNGSEONG WEO : "ᅱ" U1171 # HANGUL JUNGSEONG WI : "ᅴ" U1174 # HANGUL JUNGSEONG YI : "ᅶ" U1176 # HANGUL JUNGSEONG A-O : "ᅷ" U1177 # HANGUL JUNGSEONG A-U : "ᅸ" U1178 # HANGUL JUNGSEONG YA-O : "ᅹ" U1179 # HANGUL JUNGSEONG YA-YO : "ᅺ" U117a # HANGUL JUNGSEONG EO-O : "ᅻ" U117b # HANGUL JUNGSEONG EO-U : "ᅼ" U117c # HANGUL JUNGSEONG EO-EU : "ᅽ" U117d # HANGUL JUNGSEONG YEO-O : "ᅾ" U117e # HANGUL JUNGSEONG YEO-U : "ᅿ" U117f # HANGUL JUNGSEONG O-EO : "ᆀ" U1180 # HANGUL JUNGSEONG O-E : "ᆁ" U1181 # HANGUL JUNGSEONG O-YE : "ᆂ" U1182 # HANGUL JUNGSEONG O-O : "ᆃ" U1183 # HANGUL JUNGSEONG O-U : "ᆄ" U1184 # HANGUL JUNGSEONG YO-YA : "ᆅ" U1185 # HANGUL JUNGSEONG YO-YAE : "ᆆ" U1186 # HANGUL JUNGSEONG YO-YEO : "ᆇ" U1187 # HANGUL JUNGSEONG YO-O : "ᆈ" U1188 # HANGUL JUNGSEONG YO-I : "ᆉ" U1189 # HANGUL JUNGSEONG U-A : "ᆊ" U118a # HANGUL JUNGSEONG U-AE : "ᆌ" U118c # HANGUL JUNGSEONG U-YE : "ᆍ" U118d # HANGUL JUNGSEONG U-U : "ᆎ" U118e # HANGUL JUNGSEONG YU-A : "ᆏ" U118f # HANGUL JUNGSEONG YU-EO : "ᆐ" U1190 # HANGUL JUNGSEONG YU-E : "ᆑ" U1191 # HANGUL JUNGSEONG YU-YEO : "ᆒ" U1192 # HANGUL JUNGSEONG YU-YE : "ᆓ" U1193 # HANGUL JUNGSEONG YU-U : "ᆔ" U1194 # HANGUL JUNGSEONG YU-I : "ᆕ" U1195 # HANGUL JUNGSEONG EU-U : "ᆖ" U1196 # HANGUL JUNGSEONG EU-EU : "ᆗ" U1197 # HANGUL JUNGSEONG YI-U : "ᆘ" U1198 # HANGUL JUNGSEONG I-A : "ᆙ" U1199 # HANGUL JUNGSEONG I-YA : "ᆚ" U119a # HANGUL JUNGSEONG I-O : "ᆛ" U119b # HANGUL JUNGSEONG I-U : "ᆜ" U119c # HANGUL JUNGSEONG I-EU : "ᆝ" U119d # HANGUL JUNGSEONG I-ARAEA : "ᆟ" U119f # HANGUL JUNGSEONG ARAEA-EO : "ᆠ" U11a0 # HANGUL JUNGSEONG ARAEA-U : "ᆡ" U11a1 # HANGUL JUNGSEONG ARAEA-I : "ᆢ" U11a2 # HANGUL JUNGSEONG SSANGARAEA : "ᆩ" U11a9 # HANGUL JONGSEONG SSANGKIYEOK : "ᆪ" U11aa # HANGUL JONGSEONG KIYEOK-SIOS : "ᆬ" U11ac # HANGUL JONGSEONG NIEUN-CIEUC : "ᆭ" U11ad # HANGUL JONGSEONG NIEUN-HIEUH : "ᆰ" U11b0 # HANGUL JONGSEONG RIEUL-KIYEOK : "ᆱ" U11b1 # HANGUL JONGSEONG RIEUL-MIEUM : "ᆲ" U11b2 # HANGUL JONGSEONG RIEUL-PIEUP : "ᆳ" U11b3 # HANGUL JONGSEONG RIEUL-SIOS : "ᆴ" U11b4 # HANGUL JONGSEONG RIEUL-THIEUTH : "ᆵ" U11b5 # HANGUL JONGSEONG RIEUL-PHIEUPH : "ᆶ" U11b6 # HANGUL JONGSEONG RIEUL-HIEUH : "ᆹ" U11b9 # HANGUL JONGSEONG PIEUP-SIOS : "ᆻ" U11bb # HANGUL JONGSEONG SSANGSIOS : "ᇃ" U11c3 # HANGUL JONGSEONG KIYEOK-RIEUL : "ᇅ" U11c5 # HANGUL JONGSEONG NIEUN-KIYEOK : "ᇆ" U11c6 # HANGUL JONGSEONG NIEUN-TIKEUT : "ᇇ" U11c7 # HANGUL JONGSEONG NIEUN-SIOS : "ᇈ" U11c8 # HANGUL JONGSEONG NIEUN-PANSIOS : "ᇉ" U11c9 # HANGUL JONGSEONG NIEUN-THIEUTH : "ᇊ" U11ca # HANGUL JONGSEONG TIKEUT-KIYEOK : "ᇋ" U11cb # HANGUL JONGSEONG TIKEUT-RIEUL : "ᇍ" U11cd # HANGUL JONGSEONG RIEUL-NIEUN : "ᇎ" U11ce # HANGUL JONGSEONG RIEUL-TIKEUT : "ᇐ" U11d0 # HANGUL JONGSEONG SSANGRIEUL : "ᇗ" U11d7 # HANGUL JONGSEONG RIEUL-PANSIOS : "ᇘ" U11d8 # HANGUL JONGSEONG RIEUL-KHIEUKH : "ᇙ" U11d9 # HANGUL JONGSEONG RIEUL-YEORINHIEUH : "ᇚ" U11da # HANGUL JONGSEONG MIEUM-KIYEOK : "ᇛ" U11db # HANGUL JONGSEONG MIEUM-RIEUL : "ᇜ" U11dc # HANGUL JONGSEONG MIEUM-PIEUP : "ᇝ" U11dd # HANGUL JONGSEONG MIEUM-SIOS : "ᇟ" U11df # HANGUL JONGSEONG MIEUM-PANSIOS : "ᇠ" U11e0 # HANGUL JONGSEONG MIEUM-CHIEUCH : "ᇡ" U11e1 # HANGUL JONGSEONG MIEUM-HIEUH : "ᇢ" U11e2 # HANGUL JONGSEONG KAPYEOUNMIEUM : "ᇣ" U11e3 # HANGUL JONGSEONG PIEUP-RIEUL : "ᇤ" U11e4 # HANGUL JONGSEONG PIEUP-PHIEUPH : "ᇥ" U11e5 # HANGUL JONGSEONG PIEUP-HIEUH : "ᇦ" U11e6 # HANGUL JONGSEONG KAPYEOUNPIEUP : "ᇧ" U11e7 # HANGUL JONGSEONG SIOS-KIYEOK : "ᇨ" U11e8 # HANGUL JONGSEONG SIOS-TIKEUT : "ᇩ" U11e9 # HANGUL JONGSEONG SIOS-RIEUL : "ᇪ" U11ea # HANGUL JONGSEONG SIOS-PIEUP : "ᇬ" U11ec # HANGUL JONGSEONG IEUNG-KIYEOK : "ᇮ" U11ee # HANGUL JONGSEONG SSANGIEUNG : "ᇯ" U11ef # HANGUL JONGSEONG IEUNG-KHIEUKH : "ᇱ" U11f1 # HANGUL JONGSEONG YESIEUNG-SIOS : "ᇲ" U11f2 # HANGUL JONGSEONG YESIEUNG-PANSIOS : "ᇳ" U11f3 # HANGUL JONGSEONG PHIEUPH-PIEUP : "ᇴ" U11f4 # HANGUL JONGSEONG KAPYEOUNPHIEUPH : "ᇵ" U11f5 # HANGUL JONGSEONG HIEUH-NIEUN : "ᇶ" U11f6 # HANGUL JONGSEONG HIEUH-RIEUL : "ᇷ" U11f7 # HANGUL JONGSEONG HIEUH-MIEUM : "ᇸ" U11f8 # HANGUL JONGSEONG HIEUH-PIEUP : "ᄢ" U1122 # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK : "ᄣ" U1123 # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT : "ᄤ" U1124 # HANGUL CHOSEONG PIEUP-SIOS-PIEUP : "ᄥ" U1125 # HANGUL CHOSEONG PIEUP-SSANGSIOS : "ᄦ" U1126 # HANGUL CHOSEONG PIEUP-SIOS-CIEUC : "ᄬ" U112c # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP : "ᄳ" U1133 # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK : "ᄴ" U1134 # HANGUL CHOSEONG SIOS-SSANGSIOS : "ᅫ" U116b # HANGUL JUNGSEONG WAE : "ᅰ" U1170 # HANGUL JUNGSEONG WE : "ᆋ" U118b # HANGUL JUNGSEONG U-EO-EU : "ᇄ" U11c4 # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK : "ᇌ" U11cc # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS : "ᇏ" U11cf # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH : "ᇑ" U11d1 # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK : "ᇒ" U11d2 # HANGUL JONGSEONG RIEUL-MIEUM-SIOS : "ᇓ" U11d3 # HANGUL JONGSEONG RIEUL-PIEUP-SIOS : "ᇔ" U11d4 # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH : "ᇕ" U11d5 # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP : "ᇖ" U11d6 # HANGUL JONGSEONG RIEUL-SSANGSIOS : "ᇞ" U11de # HANGUL JONGSEONG MIEUM-SSANGSIOS : "ᇭ" U11ed # HANGUL JONGSEONG IEUNG-SSANGKIYEOK : "ᄢ" U1122 # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK : "ᄣ" U1123 # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT : "ᄤ" U1124 # HANGUL CHOSEONG PIEUP-SIOS-PIEUP : "ᄥ" U1125 # HANGUL CHOSEONG PIEUP-SSANGSIOS : "ᄦ" U1126 # HANGUL CHOSEONG PIEUP-SIOS-CIEUC : "ᄬ" U112c # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP : "ᄳ" U1133 # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK : "ᄴ" U1134 # HANGUL CHOSEONG SIOS-SSANGSIOS : "ᅫ" U116b # HANGUL JUNGSEONG WAE : "ᅰ" U1170 # HANGUL JUNGSEONG WE : "ᆋ" U118b # HANGUL JUNGSEONG U-EO-EU : "ᇄ" U11c4 # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK : "ᇌ" U11cc # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS : "ᇑ" U11d1 # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK : "ᇒ" U11d2 # HANGUL JONGSEONG RIEUL-MIEUM-SIOS : "ᇓ" U11d3 # HANGUL JONGSEONG RIEUL-PIEUP-SIOS : "ᇔ" U11d4 # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH : "ᇕ" U11d5 # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP : "ᇖ" U11d6 # HANGUL JONGSEONG RIEUL-SSANGSIOS : "ᇞ" U11de # HANGUL JONGSEONG MIEUM-SSANGSIOS : "ᇭ" U11ed # HANGUL JONGSEONG IEUNG-SSANGKIYEOK XCOMM Latin Extended Additional : "Ḁ" U1E00 # LATIN CAPITAL LETTER A WITH RING BELOW : "ḁ" U1E01 # LATIN SMALL LETTER A WITH RING BELOW : "Ḃ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE : "Ḃ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE : "Ḃ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE : "ḃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE : "ḃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE : "ḃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE : "Ḅ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW : "Ḅ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW : "ḅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW : "ḅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW : "Ḇ" U1E06 # LATIN CAPITAL LETTER B WITH LINE BELOW : "ḇ" U1E07 # LATIN SMALL LETTER B WITH LINE BELOW : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "Ḋ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE : "Ḋ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE : "Ḋ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE : "ḋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE : "ḋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE : "ḋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE : "Ḍ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW : "Ḍ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW : "ḍ" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW : "ḍ" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW : "Ḏ" U1E0E # LATIN CAPITAL LETTER D WITH LINE BELOW : "ḏ" U1E0F # LATIN SMALL LETTER D WITH LINE BELOW : "Ḑ" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA : "Ḑ" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA : "Ḑ" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA : "Ḑ" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA : "ḑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA : "ḑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA : "ḑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA : "ḑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA : "Ḓ" U1E12 # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW : "ḓ" U1E13 # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "Ḙ" U1E18 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW : "ḙ" U1E19 # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW : "Ḛ" U1E1A # LATIN CAPITAL LETTER E WITH TILDE BELOW : "ḛ" U1E1B # LATIN SMALL LETTER E WITH TILDE BELOW : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE : "Ḟ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE : "Ḟ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE : "Ḟ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE : "ḟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE : "ḟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE : "ḟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE : "Ḡ" U1E20 # LATIN CAPITAL LETTER G WITH MACRON : "Ḡ" U1E20 # LATIN CAPITAL LETTER G WITH MACRON : "Ḡ" U1E20 # LATIN CAPITAL LETTER G WITH MACRON : "ḡ" U1E21 # LATIN SMALL LETTER G WITH MACRON : "ḡ" U1E21 # LATIN SMALL LETTER G WITH MACRON : "ḡ" U1E21 # LATIN SMALL LETTER G WITH MACRON : "Ḣ" U1E22 # LATIN CAPITAL LETTER H WITH DOT ABOVE : "Ḣ" U1E22 # LATIN CAPITAL LETTER H WITH DOT ABOVE : "ḣ" U1E23 # LATIN SMALL LETTER H WITH DOT ABOVE : "ḣ" U1E23 # LATIN SMALL LETTER H WITH DOT ABOVE : "Ḥ" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW : "Ḥ" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW : "ḥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW : "ḥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW : "Ḧ" U1E26 # LATIN CAPITAL LETTER H WITH DIAERESIS : "Ḧ" U1E26 # LATIN CAPITAL LETTER H WITH DIAERESIS : "ḧ" U1E27 # LATIN SMALL LETTER H WITH DIAERESIS : "ḧ" U1E27 # LATIN SMALL LETTER H WITH DIAERESIS : "Ḩ" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA : "Ḩ" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA : "Ḩ" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA : "Ḩ" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA : "ḩ" U1E29 # LATIN SMALL LETTER H WITH CEDILLA : "ḩ" U1E29 # LATIN SMALL LETTER H WITH CEDILLA : "ḩ" U1E29 # LATIN SMALL LETTER H WITH CEDILLA : "ḩ" U1E29 # LATIN SMALL LETTER H WITH CEDILLA : "Ḫ" U1E2A # LATIN CAPITAL LETTER H WITH BREVE BELOW : "ḫ" U1E2B # LATIN SMALL LETTER H WITH BREVE BELOW : "Ḭ" U1E2C # LATIN CAPITAL LETTER I WITH TILDE BELOW : "ḭ" U1E2D # LATIN SMALL LETTER I WITH TILDE BELOW : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE : "Ḳ" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW : "Ḳ" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW : "ḳ" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW : "ḳ" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW : "Ḵ" U1E34 # LATIN CAPITAL LETTER K WITH LINE BELOW : "ḵ" U1E35 # LATIN SMALL LETTER K WITH LINE BELOW : "Ḷ" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW : "Ḷ" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW : "ḷ" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW : "ḷ" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON : "Ḻ" U1E3A # LATIN CAPITAL LETTER L WITH LINE BELOW : "ḻ" U1E3B # LATIN SMALL LETTER L WITH LINE BELOW : "Ḽ" U1E3C # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW : "ḽ" U1E3D # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE : "Ṁ" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE : "Ṁ" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE : "Ṁ" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE : "ṁ" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE : "ṁ" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE : "ṁ" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW : "Ṅ" U1E44 # LATIN CAPITAL LETTER N WITH DOT ABOVE : "Ṅ" U1E44 # LATIN CAPITAL LETTER N WITH DOT ABOVE : "ṅ" U1E45 # LATIN SMALL LETTER N WITH DOT ABOVE : "ṅ" U1E45 # LATIN SMALL LETTER N WITH DOT ABOVE : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW : "Ṉ" U1E48 # LATIN CAPITAL LETTER N WITH LINE BELOW : "ṉ" U1E49 # LATIN SMALL LETTER N WITH LINE BELOW : "Ṋ" U1E4A # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW : "ṋ" U1E4B # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE

: "Ṕ" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE

: "Ṕ" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE

: "Ṕ" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE

: "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE

: "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE

: "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE

: "Ṗ" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE

: "Ṗ" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE

: "Ṗ" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE

: "ṗ" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE

: "ṗ" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE

: "ṗ" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE : "Ṙ" U1E58 # LATIN CAPITAL LETTER R WITH DOT ABOVE : "Ṙ" U1E58 # LATIN CAPITAL LETTER R WITH DOT ABOVE : "ṙ" U1E59 # LATIN SMALL LETTER R WITH DOT ABOVE : "ṙ" U1E59 # LATIN SMALL LETTER R WITH DOT ABOVE : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW : "ṛ" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW : "ṛ" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON : "Ṟ" U1E5E # LATIN CAPITAL LETTER R WITH LINE BELOW : "ṟ" U1E5F # LATIN SMALL LETTER R WITH LINE BELOW : "Ṡ" U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE : "Ṡ" U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE : "Ṡ" U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE : "Ṣ" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW : "Ṣ" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW : "ṣ" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW : "ṣ" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW : "ṭ" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW : "ṭ" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW : "Ṯ" U1E6E # LATIN CAPITAL LETTER T WITH LINE BELOW : "ṯ" U1E6F # LATIN SMALL LETTER T WITH LINE BELOW : "Ṱ" U1E70 # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW : "ṱ" U1E71 # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW : "Ṳ" U1E72 # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW : "ṳ" U1E73 # LATIN SMALL LETTER U WITH DIAERESIS BELOW : "Ṵ" U1E74 # LATIN CAPITAL LETTER U WITH TILDE BELOW : "ṵ" U1E75 # LATIN SMALL LETTER U WITH TILDE BELOW : "Ṷ" U1E76 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW : "ṷ" U1E77 # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS : "Ṽ" U1E7C # LATIN CAPITAL LETTER V WITH TILDE : "Ṽ" U1E7C # LATIN CAPITAL LETTER V WITH TILDE : "ṽ" U1E7D # LATIN SMALL LETTER V WITH TILDE : "ṽ" U1E7D # LATIN SMALL LETTER V WITH TILDE : "Ṿ" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW : "Ṿ" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE : "ẁ" U1E81 # LATIN SMALL LETTER W WITH GRAVE : "ẁ" U1E81 # LATIN SMALL LETTER W WITH GRAVE : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE : "Ẅ" U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS : "Ẅ" U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS : "ẅ" U1E85 # LATIN SMALL LETTER W WITH DIAERESIS : "ẅ" U1E85 # LATIN SMALL LETTER W WITH DIAERESIS : "Ẇ" U1E86 # LATIN CAPITAL LETTER W WITH DOT ABOVE : "Ẇ" U1E86 # LATIN CAPITAL LETTER W WITH DOT ABOVE : "ẇ" U1E87 # LATIN SMALL LETTER W WITH DOT ABOVE : "ẇ" U1E87 # LATIN SMALL LETTER W WITH DOT ABOVE : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW : "Ẋ" U1E8A # LATIN CAPITAL LETTER X WITH DOT ABOVE : "Ẋ" U1E8A # LATIN CAPITAL LETTER X WITH DOT ABOVE : "ẋ" U1E8B # LATIN SMALL LETTER X WITH DOT ABOVE : "ẋ" U1E8B # LATIN SMALL LETTER X WITH DOT ABOVE : "Ẍ" U1E8C # LATIN CAPITAL LETTER X WITH DIAERESIS : "Ẍ" U1E8C # LATIN CAPITAL LETTER X WITH DIAERESIS : "ẍ" U1E8D # LATIN SMALL LETTER X WITH DIAERESIS : "ẍ" U1E8D # LATIN SMALL LETTER X WITH DIAERESIS : "Ẏ" U1E8E # LATIN CAPITAL LETTER Y WITH DOT ABOVE : "Ẏ" U1E8E # LATIN CAPITAL LETTER Y WITH DOT ABOVE : "ẏ" U1E8F # LATIN SMALL LETTER Y WITH DOT ABOVE : "ẏ" U1E8F # LATIN SMALL LETTER Y WITH DOT ABOVE : "Ẑ" U1E90 # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX : "Ẑ" U1E90 # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX : "ẑ" U1E91 # LATIN SMALL LETTER Z WITH CIRCUMFLEX : "ẑ" U1E91 # LATIN SMALL LETTER Z WITH CIRCUMFLEX : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW : "Ẕ" U1E94 # LATIN CAPITAL LETTER Z WITH LINE BELOW : "ẕ" U1E95 # LATIN SMALL LETTER Z WITH LINE BELOW : "ẖ" U1E96 # LATIN SMALL LETTER H WITH LINE BELOW : "ẗ" U1E97 # LATIN SMALL LETTER T WITH DIAERESIS : "ẗ" U1E97 # LATIN SMALL LETTER T WITH DIAERESIS : "ẘ" U1E98 # LATIN SMALL LETTER W WITH RING ABOVE : "ẘ" U1E98 # LATIN SMALL LETTER W WITH RING ABOVE : "ẙ" U1E99 # LATIN SMALL LETTER Y WITH RING ABOVE : "ẙ" U1E99 # LATIN SMALL LETTER Y WITH RING ABOVE : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW : "Ẹ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW : "Ẹ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE : "Ẽ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE : "Ẽ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE : "ẽ" U1EBD # LATIN SMALL LETTER E WITH TILDE : "ẽ" U1EBD # LATIN SMALL LETTER E WITH TILDE : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW : "ọ" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW : "ọ" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE : "ỏ" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE : "ỏ" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW : "Ụ" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW : "Ụ" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW : "Ủ" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE : "Ủ" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE : "Ỵ" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW : "Ỵ" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE : "ỷ" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE : "ỷ" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE : "Ỹ" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE : "Ỹ" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE XCOMM Greek Extended : "ἀ" U1F00 # GREEK SMALL LETTER ALPHA WITH PSILI : "ἀ" U1F00 # GREEK SMALL LETTER ALPHA WITH PSILI : "ἁ" U1F01 # GREEK SMALL LETTER ALPHA WITH DASIA : "ἁ" U1F01 # GREEK SMALL LETTER ALPHA WITH DASIA : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI : "Ἀ" U1F08 # GREEK CAPITAL LETTER ALPHA WITH PSILI : "Ἀ" U1F08 # GREEK CAPITAL LETTER ALPHA WITH PSILI : "Ἁ" U1F09 # GREEK CAPITAL LETTER ALPHA WITH DASIA : "Ἁ" U1F09 # GREEK CAPITAL LETTER ALPHA WITH DASIA : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI : "Ἇ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI : "Ἇ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI : "Ἇ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI : "Ἇ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI : "ἐ" U1F10 # GREEK SMALL LETTER EPSILON WITH PSILI : "ἐ" U1F10 # GREEK SMALL LETTER EPSILON WITH PSILI : "ἑ" U1F11 # GREEK SMALL LETTER EPSILON WITH DASIA : "ἑ" U1F11 # GREEK SMALL LETTER EPSILON WITH DASIA : "ἒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA : "ἒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA : "ἒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA : "ἒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA : "Ἐ" U1F18 # GREEK CAPITAL LETTER EPSILON WITH PSILI : "Ἐ" U1F18 # GREEK CAPITAL LETTER EPSILON WITH PSILI : "Ἑ" U1F19 # GREEK CAPITAL LETTER EPSILON WITH DASIA : "Ἑ" U1F19 # GREEK CAPITAL LETTER EPSILON WITH DASIA : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA : "Ἓ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA : "Ἓ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA : "Ἓ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA : "Ἓ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA : "ἠ" U1F20 # GREEK SMALL LETTER ETA WITH PSILI : "ἠ" U1F20 # GREEK SMALL LETTER ETA WITH PSILI : "ἡ" U1F21 # GREEK SMALL LETTER ETA WITH DASIA : "ἡ" U1F21 # GREEK SMALL LETTER ETA WITH DASIA : "ἢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA : "ἢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA : "ἢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA : "ἢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA : "ἣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA : "ἣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA : "ἣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA : "ἣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI : "Ἠ" U1F28 # GREEK CAPITAL LETTER ETA WITH PSILI : "Ἠ" U1F28 # GREEK CAPITAL LETTER ETA WITH PSILI : "Ἡ" U1F29 # GREEK CAPITAL LETTER ETA WITH DASIA : "Ἡ" U1F29 # GREEK CAPITAL LETTER ETA WITH DASIA : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA : "Ἦ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI : "Ἦ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI : "Ἦ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI : "Ἦ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI : "ἰ" U1F30 # GREEK SMALL LETTER IOTA WITH PSILI : "ἰ" U1F30 # GREEK SMALL LETTER IOTA WITH PSILI : "ἱ" U1F31 # GREEK SMALL LETTER IOTA WITH DASIA : "ἱ" U1F31 # GREEK SMALL LETTER IOTA WITH DASIA : "ἲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA : "ἲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA : "ἲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA : "ἲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA : "ἳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA : "ἳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA : "ἳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA : "ἳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI : "ἷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI : "ἷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI : "ἷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI : "ἷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI : "Ἰ" U1F38 # GREEK CAPITAL LETTER IOTA WITH PSILI : "Ἰ" U1F38 # GREEK CAPITAL LETTER IOTA WITH PSILI : "Ἱ" U1F39 # GREEK CAPITAL LETTER IOTA WITH DASIA : "Ἱ" U1F39 # GREEK CAPITAL LETTER IOTA WITH DASIA : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA : "Ἳ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA : "Ἳ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA : "Ἳ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA : "Ἳ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA : "Ἶ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI : "Ἶ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI : "Ἶ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI : "Ἶ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI : "ὀ" U1F40 # GREEK SMALL LETTER OMICRON WITH PSILI : "ὀ" U1F40 # GREEK SMALL LETTER OMICRON WITH PSILI : "ὁ" U1F41 # GREEK SMALL LETTER OMICRON WITH DASIA : "ὁ" U1F41 # GREEK SMALL LETTER OMICRON WITH DASIA : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA : "Ὀ" U1F48 # GREEK CAPITAL LETTER OMICRON WITH PSILI : "Ὀ" U1F48 # GREEK CAPITAL LETTER OMICRON WITH PSILI : "Ὁ" U1F49 # GREEK CAPITAL LETTER OMICRON WITH DASIA : "Ὁ" U1F49 # GREEK CAPITAL LETTER OMICRON WITH DASIA : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA : "ὐ" U1F50 # GREEK SMALL LETTER UPSILON WITH PSILI : "ὐ" U1F50 # GREEK SMALL LETTER UPSILON WITH PSILI : "ὑ" U1F51 # GREEK SMALL LETTER UPSILON WITH DASIA : "ὑ" U1F51 # GREEK SMALL LETTER UPSILON WITH DASIA : "ὒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA : "ὒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA : "ὒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA : "ὒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA : "ὖ" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI : "ὖ" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI : "ὖ" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI : "ὖ" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI : "ὗ" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI : "ὗ" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI : "ὗ" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI : "ὗ" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI : "Ὑ" U1F59 # GREEK CAPITAL LETTER UPSILON WITH DASIA : "Ὑ" U1F59 # GREEK CAPITAL LETTER UPSILON WITH DASIA : "Ὓ" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA : "Ὓ" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA : "Ὓ" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA : "Ὓ" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI : "ὠ" U1F60 # GREEK SMALL LETTER OMEGA WITH PSILI : "ὠ" U1F60 # GREEK SMALL LETTER OMEGA WITH PSILI : "ὡ" U1F61 # GREEK SMALL LETTER OMEGA WITH DASIA : "ὡ" U1F61 # GREEK SMALL LETTER OMEGA WITH DASIA : "ὢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA : "ὢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA : "ὢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA : "ὢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA : "ὣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA : "ὣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA : "ὣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA : "ὣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI : "Ὠ" U1F68 # GREEK CAPITAL LETTER OMEGA WITH PSILI : "Ὠ" U1F68 # GREEK CAPITAL LETTER OMEGA WITH PSILI : "Ὡ" U1F69 # GREEK CAPITAL LETTER OMEGA WITH DASIA : "Ὡ" U1F69 # GREEK CAPITAL LETTER OMEGA WITH DASIA : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA : "Ὦ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI : "Ὦ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI : "Ὦ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI : "Ὦ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI : "ὰ" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA : "ὰ" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA : "ὲ" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA : "ὲ" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA : "ὴ" U1F74 # GREEK SMALL LETTER ETA WITH VARIA : "ὴ" U1F74 # GREEK SMALL LETTER ETA WITH VARIA : "ὶ" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA : "ὶ" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA : "ὸ" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA : "ὸ" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA : "ὺ" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA : "ὺ" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA : "ὼ" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA : "ὼ" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA : "ᾀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI : "ᾀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI : "ᾀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI : "ᾀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI : "ᾁ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI : "ᾁ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI : "ᾁ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI : "ᾁ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾐ" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI : "ᾐ" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI : "ᾐ" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI : "ᾐ" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI : "ᾙ" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI : "ᾙ" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI : "ᾙ" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI : "ᾙ" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾠ" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI : "ᾠ" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI : "ᾠ" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI : "ᾠ" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : "ᾰ" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY : "ᾰ" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY : "ᾰ" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY : "ᾱ" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON : "ᾱ" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON : "ᾱ" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON : "ᾲ" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI : "ᾲ" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI : "ᾲ" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI : "ᾲ" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI : "ᾳ" U1FB3 # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI : "ᾳ" U1FB3 # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI : "ᾶ" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI : "ᾶ" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI : "ᾷ" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI : "ᾷ" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI : "ᾷ" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI : "ᾷ" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI : "Ᾰ" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY : "Ᾰ" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY : "Ᾰ" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY : "Ᾱ" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON : "Ᾱ" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON : "Ᾱ" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON : "Ὰ" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA : "Ὰ" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA : "ᾼ" U1FBC # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI : "ᾼ" U1FBC # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI : "῁" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI : "῁" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI : "ῃ" U1FC3 # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI : "ῃ" U1FC3 # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA : "Ὴ" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA : "Ὴ" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA : "ῌ" U1FCC # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI : "ῌ" U1FCC # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI : "ῐ" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY : "ῐ" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY : "ῐ" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA : "ῖ" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI : "ῖ" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON : "Ὶ" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA : "Ὶ" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA : "ῠ" U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY : "ῠ" U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY : "ῠ" U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY : "ῡ" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON : "ῡ" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON : "ῡ" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON : "ῢ" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA : "ῢ" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA : "ῢ" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA : "ῢ" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA : "ῤ" U1FE4 # GREEK SMALL LETTER RHO WITH PSILI : "ῤ" U1FE4 # GREEK SMALL LETTER RHO WITH PSILI : "ῥ" U1FE5 # GREEK SMALL LETTER RHO WITH DASIA : "ῥ" U1FE5 # GREEK SMALL LETTER RHO WITH DASIA : "ῦ" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI : "ῦ" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI : "Ῠ" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY : "Ῠ" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY : "Ῠ" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY : "Ῡ" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON : "Ῡ" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON : "Ῡ" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA : "Ῥ" U1FEC # GREEK CAPITAL LETTER RHO WITH DASIA : "Ῥ" U1FEC # GREEK CAPITAL LETTER RHO WITH DASIA : "῭" U1FED # GREEK DIALYTIKA AND VARIA : "῭" U1FED # GREEK DIALYTIKA AND VARIA : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI : "ῳ" U1FF3 # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI : "ῳ" U1FF3 # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI : "ῷ" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI : "ῷ" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI : "ῷ" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI : "ῷ" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI : "Ὸ" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA : "Ὸ" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA : "ῼ" U1FFC # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI : "ῼ" U1FFC # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI XCOMM Superscripts and Subscripts <0> : "⁰" U2070 # SUPERSCRIPT ZERO <0> : "⁰" U2070 # SUPERSCRIPT ZERO : "⁰" U2070 # SUPERSCRIPT ZERO : "⁰" U2070 # SUPERSCRIPT ZERO : "ⁱ" U2071 # SUPERSCRIPT LATIN SMALL LETTER I : "ⁱ" U2071 # SUPERSCRIPT LATIN SMALL LETTER I <4> : "⁴" U2074 # SUPERSCRIPT FOUR <4> : "⁴" U2074 # SUPERSCRIPT FOUR : "⁴" U2074 # SUPERSCRIPT FOUR : "⁴" U2074 # SUPERSCRIPT FOUR <5> : "⁵" U2075 # SUPERSCRIPT FIVE <5> : "⁵" U2075 # SUPERSCRIPT FIVE : "⁵" U2075 # SUPERSCRIPT FIVE : "⁵" U2075 # SUPERSCRIPT FIVE <6> : "⁶" U2076 # SUPERSCRIPT SIX <6> : "⁶" U2076 # SUPERSCRIPT SIX : "⁶" U2076 # SUPERSCRIPT SIX : "⁶" U2076 # SUPERSCRIPT SIX <7> : "⁷" U2077 # SUPERSCRIPT SEVEN <7> : "⁷" U2077 # SUPERSCRIPT SEVEN : "⁷" U2077 # SUPERSCRIPT SEVEN : "⁷" U2077 # SUPERSCRIPT SEVEN <8> : "⁸" U2078 # SUPERSCRIPT EIGHT <8> : "⁸" U2078 # SUPERSCRIPT EIGHT : "⁸" U2078 # SUPERSCRIPT EIGHT : "⁸" U2078 # SUPERSCRIPT EIGHT <9> : "⁹" U2079 # SUPERSCRIPT NINE <9> : "⁹" U2079 # SUPERSCRIPT NINE : "⁹" U2079 # SUPERSCRIPT NINE : "⁹" U2079 # SUPERSCRIPT NINE : "⁺" U207A # SUPERSCRIPT PLUS SIGN : "⁺" U207A # SUPERSCRIPT PLUS SIGN : "⁺" U207A # SUPERSCRIPT PLUS SIGN : "⁺" U207A # SUPERSCRIPT PLUS SIGN : "⁻" U207B # SUPERSCRIPT MINUS : "⁻" U207B # SUPERSCRIPT MINUS : "⁻" U207B # SUPERSCRIPT MINUS : "⁻" U207B # SUPERSCRIPT MINUS : "⁼" U207C # SUPERSCRIPT EQUALS SIGN : "⁼" U207C # SUPERSCRIPT EQUALS SIGN : "⁼" U207C # SUPERSCRIPT EQUALS SIGN : "⁼" U207C # SUPERSCRIPT EQUALS SIGN : "⁽" U207D # SUPERSCRIPT LEFT PARENTHESIS : "⁽" U207D # SUPERSCRIPT LEFT PARENTHESIS : "⁾" U207E # SUPERSCRIPT RIGHT PARENTHESIS : "⁾" U207E # SUPERSCRIPT RIGHT PARENTHESIS : "ⁿ" U207F # SUPERSCRIPT LATIN SMALL LETTER N : "ⁿ" U207F # SUPERSCRIPT LATIN SMALL LETTER N <0> : "₀" U2080 # SUBSCRIPT ZERO <0> : "₀" U2080 # SUBSCRIPT ZERO : "₀" U2080 # SUBSCRIPT ZERO <1> : "₁" U2081 # SUBSCRIPT ONE <1> : "₁" U2081 # SUBSCRIPT ONE : "₁" U2081 # SUBSCRIPT ONE <2> : "₂" U2082 # SUBSCRIPT TWO <2> : "₂" U2082 # SUBSCRIPT TWO : "₂" U2082 # SUBSCRIPT TWO <3> : "₃" U2083 # SUBSCRIPT THREE <3> : "₃" U2083 # SUBSCRIPT THREE : "₃" U2083 # SUBSCRIPT THREE <4> : "₄" U2084 # SUBSCRIPT FOUR <4> : "₄" U2084 # SUBSCRIPT FOUR : "₄" U2084 # SUBSCRIPT FOUR <5> : "₅" U2085 # SUBSCRIPT FIVE <5> : "₅" U2085 # SUBSCRIPT FIVE : "₅" U2085 # SUBSCRIPT FIVE <6> : "₆" U2086 # SUBSCRIPT SIX <6> : "₆" U2086 # SUBSCRIPT SIX : "₆" U2086 # SUBSCRIPT SIX <7> : "₇" U2087 # SUBSCRIPT SEVEN <7> : "₇" U2087 # SUBSCRIPT SEVEN : "₇" U2087 # SUBSCRIPT SEVEN <8> : "₈" U2088 # SUBSCRIPT EIGHT <8> : "₈" U2088 # SUBSCRIPT EIGHT : "₈" U2088 # SUBSCRIPT EIGHT <9> : "₉" U2089 # SUBSCRIPT NINE <9> : "₉" U2089 # SUBSCRIPT NINE : "₉" U2089 # SUBSCRIPT NINE : "₊" U208A # SUBSCRIPT PLUS SIGN : "₊" U208A # SUBSCRIPT PLUS SIGN : "₊" U208A # SUBSCRIPT PLUS SIGN : "₋" U208B # SUBSCRIPT MINUS : "₋" U208B # SUBSCRIPT MINUS : "₋" U208B # SUBSCRIPT MINUS : "₌" U208C # SUBSCRIPT EQUALS SIGN : "₌" U208C # SUBSCRIPT EQUALS SIGN : "₌" U208C # SUBSCRIPT EQUALS SIGN : "₍" U208D # SUBSCRIPT LEFT PARENTHESIS : "₍" U208D # SUBSCRIPT LEFT PARENTHESIS : "₎" U208E # SUBSCRIPT RIGHT PARENTHESIS : "₎" U208E # SUBSCRIPT RIGHT PARENTHESIS XCOMM Letterlike Symbols : "ℂ" U2102 # DOUBLE-STRUCK CAPITAL C : "ℕ" U2115 # DOUBLE-STRUCK CAPITAL N : "ℚ" U211A # DOUBLE-STRUCK CAPITAL Q : "ℝ" U211D # DOUBLE-STRUCK CAPITAL R : "ℤ" U2124 # DOUBLE-STRUCK CAPITAL Z : "℠" U2120 # SERVICE MARK : "℠" U2120 # SERVICE MARK : "℠" U2120 # SERVICE MARK : "℠" U2120 # SERVICE MARK : "™" U2122 # TRADE MARK SIGN : "™" U2122 # TRADE MARK SIGN : "™" U2122 # TRADE MARK SIGN : "™" U2122 # TRADE MARK SIGN XCOMM Number Forms <1> <7> : "⅐" U2150 # VULGAR FRACTION ONE SEVENTH <1> <9> : "⅑" U2151 # VULGAR FRACTION ONE NINTH <1> <1> <0> : "⅒" U2152 # VULGAR FRACTION ONE TENTH <1> <3> : "⅓" U2153 # VULGAR FRACTION ONE THIRD <2> <3> : "⅔" U2154 # VULGAR FRACTION TWO THIRDS <1> <5> : "⅕" U2155 # VULGAR FRACTION ONE FIFTH <2> <5> : "⅖" U2156 # VULGAR FRACTION TWO FIFTHS <3> <5> : "⅗" U2157 # VULGAR FRACTION THREE FIFTHS <4> <5> : "⅘" U2158 # VULGAR FRACTION FOUR FIFTHS <1> <6> : "⅙" U2159 # VULGAR FRACTION ONE SIXTH <5> <6> : "⅚" U215A # VULGAR FRACTION FIVE SIXTHS <1> <8> : "⅛" U215B # VULGAR FRACTION ONE EIGHTH <3> <8> : "⅜" U215C # VULGAR FRACTION THREE EIGHTHS <5> <8> : "⅝" U215D # VULGAR FRACTION FIVE EIGHTHS <7> <8> : "⅞" U215E # VULGAR FRACTION SEVEN EIGHTHS <0> <3> : "↉" U2189 # VULGAR FRACTION ZERO THIRDS XCOMM Arrows : "↚" U219A # LEFTWARDS ARROW WITH STROKE : "↚" U219A # LEFTWARDS ARROW WITH STROKE : "↛" U219B # RIGHTWARDS ARROW WITH STROKE : "↛" U219B # RIGHTWARDS ARROW WITH STROKE : "↮" U21AE # LEFT RIGHT ARROW WITH STROKE : "↮" U21AE # LEFT RIGHT ARROW WITH STROKE : "←" U2190 # LEFTWARDS ARROW : "↑" U2191 # UPWARDS ARROW : "↑" U2191 # UPWARDS ARROW : "↑" U2191 # UPWARDS ARROW : "↑" U2191 # UPWARDS ARROW : "→" U2192 # RIGHTWARDS ARROW : "↓" U2193 # DOWNWARDS ARROW : "↓" U2193 # DOWNWARDS ARROW : "⇐" U21D0 # LEFTWARDS DOUBLE ARROW : "⇑" U21D1 # UPWARDS DOUBLE ARROW : "⇒" U21D2 # RIGHTWARDS DOUBLE ARROW : "⇓" U21D3 # DOWNWARDS DOUBLE ARROW XCOMM Mathematical Operators : "∄" U2204 # THERE DOES NOT EXIST : "∅" U2205 # EMPTY SET : "∉" U2209 # NOT AN ELEMENT OF : "∌" U220C # DOES NOT CONTAIN AS MEMBER : "−" U2212 # MINUS SIGN : "∤" U2224 # DOES NOT DIVIDE : "∦" U2226 # NOT PARALLEL TO : "≁" U2241 # NOT TILDE : "≄" U2244 # NOT ASYMPTOTICALLY EQUAL TO : "≇" U2247 # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO : "≉" U2249 # NOT ALMOST EQUAL TO : "≠" U2260 # NOT EQUAL TO : "≠" U2260 # NOT EQUAL TO : "≠" U2260 # NOT EQUAL TO : "≢" U2262 # NOT IDENTICAL TO : "≤" U2264 # LESS-THAN OR EQUAL TO : "≥" U2265 # GREATER-THAN OR EQUAL TO : "≭" U226D # NOT EQUIVALENT TO : "≮" U226E # NOT LESS-THAN : "≯" U226F # NOT GREATER-THAN : "≰" U2270 # NEITHER LESS-THAN NOR EQUAL TO : "≱" U2271 # NEITHER GREATER-THAN NOR EQUAL TO : "≴" U2274 # NEITHER LESS-THAN NOR EQUIVALENT TO : "≵" U2275 # NEITHER GREATER-THAN NOR EQUIVALENT TO : "≸" U2278 # NEITHER LESS-THAN NOR GREATER-THAN : "≹" U2279 # NEITHER GREATER-THAN NOR LESS-THAN : "⊀" U2280 # DOES NOT PRECEDE : "⊁" U2281 # DOES NOT SUCCEED : "⊄" U2284 # NOT A SUBSET OF : "⊅" U2285 # NOT A SUPERSET OF : "⊈" U2288 # NEITHER A SUBSET OF NOR EQUAL TO : "⊉" U2289 # NEITHER A SUPERSET OF NOR EQUAL TO : "⊬" U22AC # DOES NOT PROVE : "⊭" U22AD # NOT TRUE : "⊮" U22AE # DOES NOT FORCE : "⊯" U22AF # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE : "⋠" U22E0 # DOES NOT PRECEDE OR EQUAL : "⋡" U22E1 # DOES NOT SUCCEED OR EQUAL : "⋢" U22E2 # NOT SQUARE IMAGE OF OR EQUAL TO : "⋣" U22E3 # NOT SQUARE ORIGINAL OF OR EQUAL TO : "⋪" U22EA # NOT NORMAL SUBGROUP OF : "⋫" U22EB # DOES NOT CONTAIN AS NORMAL SUBGROUP : "⋬" U22EC # NOT NORMAL SUBGROUP OF OR EQUAL TO : "⋭" U22ED # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL : "⌀" U2300 # DIAMETER SIGN XCOMM Enclosed Alphanumerics <1> : "①" U2460 # CIRCLED DIGIT ONE : "①" U2460 # CIRCLED DIGIT ONE <2> : "②" U2461 # CIRCLED DIGIT TWO : "②" U2461 # CIRCLED DIGIT TWO <3> : "③" U2462 # CIRCLED DIGIT THREE : "③" U2462 # CIRCLED DIGIT THREE <4> : "④" U2463 # CIRCLED DIGIT FOUR : "④" U2463 # CIRCLED DIGIT FOUR <5> : "⑤" U2464 # CIRCLED DIGIT FIVE : "⑤" U2464 # CIRCLED DIGIT FIVE <6> : "⑥" U2465 # CIRCLED DIGIT SIX : "⑥" U2465 # CIRCLED DIGIT SIX <7> : "⑦" U2466 # CIRCLED DIGIT SEVEN : "⑦" U2466 # CIRCLED DIGIT SEVEN <8> : "⑧" U2467 # CIRCLED DIGIT EIGHT : "⑧" U2467 # CIRCLED DIGIT EIGHT <9> : "⑨" U2468 # CIRCLED DIGIT NINE : "⑨" U2468 # CIRCLED DIGIT NINE <1> <0> : "⑩" U2469 # CIRCLED NUMBER TEN : "⑩" U2469 # CIRCLED NUMBER TEN <1> <1> : "⑪" U246A # CIRCLED NUMBER ELEVEN : "⑪" U246A # CIRCLED NUMBER ELEVEN <1> <2> : "⑫" U246B # CIRCLED NUMBER TWELVE : "⑫" U246B # CIRCLED NUMBER TWELVE <1> <3> : "⑬" U246C # CIRCLED NUMBER THIRTEEN : "⑬" U246C # CIRCLED NUMBER THIRTEEN <1> <4> : "⑭" U246D # CIRCLED NUMBER FOURTEEN : "⑭" U246D # CIRCLED NUMBER FOURTEEN <1> <5> : "⑮" U246E # CIRCLED NUMBER FIFTEEN : "⑮" U246E # CIRCLED NUMBER FIFTEEN <1> <6> : "⑯" U246F # CIRCLED NUMBER SIXTEEN : "⑯" U246F # CIRCLED NUMBER SIXTEEN <1> <7> : "⑰" U2470 # CIRCLED NUMBER SEVENTEEN : "⑰" U2470 # CIRCLED NUMBER SEVENTEEN <1> <8> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN <1> <9> : "⑲" U2472 # CIRCLED NUMBER NINETEEN : "⑲" U2472 # CIRCLED NUMBER NINETEEN <2> <0> : "⑳" U2473 # CIRCLED NUMBER TWENTY : "⑳" U2473 # CIRCLED NUMBER TWENTY : "Ⓐ" U24B6 # CIRCLED LATIN CAPITAL LETTER A : "Ⓑ" U24B7 # CIRCLED LATIN CAPITAL LETTER B : "Ⓒ" U24B8 # CIRCLED LATIN CAPITAL LETTER C : "Ⓓ" U24B9 # CIRCLED LATIN CAPITAL LETTER D : "Ⓔ" U24BA # CIRCLED LATIN CAPITAL LETTER E : "Ⓕ" U24BB # CIRCLED LATIN CAPITAL LETTER F : "Ⓖ" U24BC # CIRCLED LATIN CAPITAL LETTER G : "Ⓗ" U24BD # CIRCLED LATIN CAPITAL LETTER H : "Ⓘ" U24BE # CIRCLED LATIN CAPITAL LETTER I : "Ⓙ" U24BF # CIRCLED LATIN CAPITAL LETTER J : "Ⓚ" U24C0 # CIRCLED LATIN CAPITAL LETTER K : "Ⓛ" U24C1 # CIRCLED LATIN CAPITAL LETTER L : "Ⓜ" U24C2 # CIRCLED LATIN CAPITAL LETTER M : "Ⓝ" U24C3 # CIRCLED LATIN CAPITAL LETTER N : "Ⓞ" U24C4 # CIRCLED LATIN CAPITAL LETTER O

: "Ⓟ" U24C5 # CIRCLED LATIN CAPITAL LETTER P : "Ⓠ" U24C6 # CIRCLED LATIN CAPITAL LETTER Q : "Ⓡ" U24C7 # CIRCLED LATIN CAPITAL LETTER R : "Ⓢ" U24C8 # CIRCLED LATIN CAPITAL LETTER S : "Ⓣ" U24C9 # CIRCLED LATIN CAPITAL LETTER T : "Ⓤ" U24CA # CIRCLED LATIN CAPITAL LETTER U : "Ⓥ" U24CB # CIRCLED LATIN CAPITAL LETTER V : "Ⓦ" U24CC # CIRCLED LATIN CAPITAL LETTER W : "Ⓧ" U24CD # CIRCLED LATIN CAPITAL LETTER X : "Ⓨ" U24CE # CIRCLED LATIN CAPITAL LETTER Y : "Ⓩ" U24CF # CIRCLED LATIN CAPITAL LETTER Z : "ⓐ" U24D0 # CIRCLED LATIN SMALL LETTER A : "ⓑ" U24D1 # CIRCLED LATIN SMALL LETTER B : "ⓒ" U24D2 # CIRCLED LATIN SMALL LETTER C : "ⓓ" U24D3 # CIRCLED LATIN SMALL LETTER D : "ⓔ" U24D4 # CIRCLED LATIN SMALL LETTER E : "ⓕ" U24D5 # CIRCLED LATIN SMALL LETTER F : "ⓖ" U24D6 # CIRCLED LATIN SMALL LETTER G : "ⓗ" U24D7 # CIRCLED LATIN SMALL LETTER H : "ⓘ" U24D8 # CIRCLED LATIN SMALL LETTER I : "ⓙ" U24D9 # CIRCLED LATIN SMALL LETTER J : "ⓚ" U24DA # CIRCLED LATIN SMALL LETTER K : "ⓛ" U24DB # CIRCLED LATIN SMALL LETTER L : "ⓜ" U24DC # CIRCLED LATIN SMALL LETTER M : "ⓝ" U24DD # CIRCLED LATIN SMALL LETTER N : "ⓞ" U24DE # CIRCLED LATIN SMALL LETTER O

: "ⓟ" U24DF # CIRCLED LATIN SMALL LETTER P : "ⓠ" U24E0 # CIRCLED LATIN SMALL LETTER Q : "ⓡ" U24E1 # CIRCLED LATIN SMALL LETTER R : "ⓢ" U24E2 # CIRCLED LATIN SMALL LETTER S : "ⓣ" U24E3 # CIRCLED LATIN SMALL LETTER T : "ⓤ" U24E4 # CIRCLED LATIN SMALL LETTER U : "ⓥ" U24E5 # CIRCLED LATIN SMALL LETTER V : "ⓦ" U24E6 # CIRCLED LATIN SMALL LETTER W : "ⓧ" U24E7 # CIRCLED LATIN SMALL LETTER X : "ⓨ" U24E8 # CIRCLED LATIN SMALL LETTER Y : "ⓩ" U24E9 # CIRCLED LATIN SMALL LETTER Z <0> : "⓪" U24EA # CIRCLED DIGIT ZERO : "⓪" U24EA # CIRCLED DIGIT ZERO XCOMM Supplemental Mathematical Operators : "⨥" U2A25 # PLUS SIGN WITH DOT BELOW : "⨦" U2A26 # PLUS SIGN WITH TILDE BELOW : "⨪" U2A2A # MINUS SIGN WITH DOT BELOW : "⩦" U2A66 # EQUALS SIGN WITH DOT BELOW : "⩷" U2A77 # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW : "⩷" U2A77 # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW : "⫝̸" U2ADC # FORKING : "⫰" U2AF0 # VERTICAL LINE WITH CIRCLE BELOW XCOMM Hiragana : "が" U304C # HIRAGANA LETTER GA : "ぎ" U304E # HIRAGANA LETTER GI : "ぐ" U3050 # HIRAGANA LETTER GU : "げ" U3052 # HIRAGANA LETTER GE : "ご" U3054 # HIRAGANA LETTER GO : "ざ" U3056 # HIRAGANA LETTER ZA : "じ" U3058 # HIRAGANA LETTER ZI : "ず" U305A # HIRAGANA LETTER ZU : "ぜ" U305C # HIRAGANA LETTER ZE : "ぞ" U305E # HIRAGANA LETTER ZO : "だ" U3060 # HIRAGANA LETTER DA : "ぢ" U3062 # HIRAGANA LETTER DI : "づ" U3065 # HIRAGANA LETTER DU : "で" U3067 # HIRAGANA LETTER DE : "ど" U3069 # HIRAGANA LETTER DO : "ば" U3070 # HIRAGANA LETTER BA : "ぱ" U3071 # HIRAGANA LETTER PA : "び" U3073 # HIRAGANA LETTER BI : "ぴ" U3074 # HIRAGANA LETTER PI : "ぶ" U3076 # HIRAGANA LETTER BU : "ぷ" U3077 # HIRAGANA LETTER PU : "べ" U3079 # HIRAGANA LETTER BE : "ぺ" U307A # HIRAGANA LETTER PE : "ぼ" U307C # HIRAGANA LETTER BO : "ぽ" U307D # HIRAGANA LETTER PO : "ゔ" U3094 # HIRAGANA LETTER VU : "ゞ" U309E # HIRAGANA VOICED ITERATION MARK XCOMM Katakana : "ガ" U30AC # KATAKANA LETTER GA : "ギ" U30AE # KATAKANA LETTER GI : "グ" U30B0 # KATAKANA LETTER GU : "ゲ" U30B2 # KATAKANA LETTER GE : "ゴ" U30B4 # KATAKANA LETTER GO : "ザ" U30B6 # KATAKANA LETTER ZA : "ジ" U30B8 # KATAKANA LETTER ZI : "ズ" U30BA # KATAKANA LETTER ZU : "ゼ" U30BC # KATAKANA LETTER ZE : "ゾ" U30BE # KATAKANA LETTER ZO : "ダ" U30C0 # KATAKANA LETTER DA : "ヂ" U30C2 # KATAKANA LETTER DI : "ヅ" U30C5 # KATAKANA LETTER DU : "デ" U30C7 # KATAKANA LETTER DE : "ド" U30C9 # KATAKANA LETTER DO : "バ" U30D0 # KATAKANA LETTER BA : "パ" U30D1 # KATAKANA LETTER PA : "ビ" U30D3 # KATAKANA LETTER BI : "ピ" U30D4 # KATAKANA LETTER PI : "ブ" U30D6 # KATAKANA LETTER BU : "プ" U30D7 # KATAKANA LETTER PU : "ベ" U30D9 # KATAKANA LETTER BE : "ペ" U30DA # KATAKANA LETTER PE : "ボ" U30DC # KATAKANA LETTER BO : "ポ" U30DD # KATAKANA LETTER PO : "ヴ" U30F4 # KATAKANA LETTER VU : "ヷ" U30F7 # KATAKANA LETTER VA : "ヸ" U30F8 # KATAKANA LETTER VI : "ヹ" U30F9 # KATAKANA LETTER VE : "ヺ" U30FA # KATAKANA LETTER VO : "ヾ" U30FE # KATAKANA VOICED ITERATION MARK XCOMM Kanbun : "㆒" U3192 # IDEOGRAPHIC ANNOTATION ONE MARK : "㆒" U3192 # IDEOGRAPHIC ANNOTATION ONE MARK : "㆓" U3193 # IDEOGRAPHIC ANNOTATION TWO MARK : "㆓" U3193 # IDEOGRAPHIC ANNOTATION TWO MARK : "㆔" U3194 # IDEOGRAPHIC ANNOTATION THREE MARK : "㆔" U3194 # IDEOGRAPHIC ANNOTATION THREE MARK : "㆕" U3195 # IDEOGRAPHIC ANNOTATION FOUR MARK : "㆕" U3195 # IDEOGRAPHIC ANNOTATION FOUR MARK : "㆖" U3196 # IDEOGRAPHIC ANNOTATION TOP MARK : "㆖" U3196 # IDEOGRAPHIC ANNOTATION TOP MARK : "㆗" U3197 # IDEOGRAPHIC ANNOTATION MIDDLE MARK : "㆗" U3197 # IDEOGRAPHIC ANNOTATION MIDDLE MARK : "㆘" U3198 # IDEOGRAPHIC ANNOTATION BOTTOM MARK : "㆘" U3198 # IDEOGRAPHIC ANNOTATION BOTTOM MARK : "㆙" U3199 # IDEOGRAPHIC ANNOTATION FIRST MARK : "㆙" U3199 # IDEOGRAPHIC ANNOTATION FIRST MARK : "㆚" U319A # IDEOGRAPHIC ANNOTATION SECOND MARK : "㆚" U319A # IDEOGRAPHIC ANNOTATION SECOND MARK : "㆛" U319B # IDEOGRAPHIC ANNOTATION THIRD MARK : "㆛" U319B # IDEOGRAPHIC ANNOTATION THIRD MARK : "㆜" U319C # IDEOGRAPHIC ANNOTATION FOURTH MARK : "㆜" U319C # IDEOGRAPHIC ANNOTATION FOURTH MARK : "㆝" U319D # IDEOGRAPHIC ANNOTATION HEAVEN MARK : "㆝" U319D # IDEOGRAPHIC ANNOTATION HEAVEN MARK : "㆞" U319E # IDEOGRAPHIC ANNOTATION EARTH MARK : "㆞" U319E # IDEOGRAPHIC ANNOTATION EARTH MARK : "㆟" U319F # IDEOGRAPHIC ANNOTATION MAN MARK : "㆟" U319F # IDEOGRAPHIC ANNOTATION MAN MARK XCOMM Enclosed CJK Letters and Months <2> <1> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE <2> <2> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO <2> <3> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE <2> <4> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR <2> <5> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE <2> <6> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX <2> <7> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN <2> <8> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT <2> <9> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE <3> <0> : "㉚" U325A # CIRCLED NUMBER THIRTY : "㉚" U325A # CIRCLED NUMBER THIRTY <3> <1> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE : "㉛" U325B # CIRCLED NUMBER THIRTY ONE <3> <2> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO : "㉜" U325C # CIRCLED NUMBER THIRTY TWO <3> <3> : "㉝" U325D # CIRCLED NUMBER THIRTY THREE : "㉝" U325D # CIRCLED NUMBER THIRTY THREE <3> <4> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR <3> <5> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE : "㉠" U3260 # CIRCLED HANGUL KIYEOK : "㉡" U3261 # CIRCLED HANGUL NIEUN : "㉢" U3262 # CIRCLED HANGUL TIKEUT : "㉣" U3263 # CIRCLED HANGUL RIEUL : "㉤" U3264 # CIRCLED HANGUL MIEUM : "㉥" U3265 # CIRCLED HANGUL PIEUP : "㉦" U3266 # CIRCLED HANGUL SIOS : "㉧" U3267 # CIRCLED HANGUL IEUNG : "㉨" U3268 # CIRCLED HANGUL CIEUC : "㉩" U3269 # CIRCLED HANGUL CHIEUCH : "㉪" U326A # CIRCLED HANGUL KHIEUKH : "㉫" U326B # CIRCLED HANGUL THIEUTH : "㉬" U326C # CIRCLED HANGUL PHIEUPH : "㉭" U326D # CIRCLED HANGUL HIEUH : "㉮" U326E # CIRCLED HANGUL KIYEOK A : "㉯" U326F # CIRCLED HANGUL NIEUN A : "㉰" U3270 # CIRCLED HANGUL TIKEUT A : "㉱" U3271 # CIRCLED HANGUL RIEUL A : "㉲" U3272 # CIRCLED HANGUL MIEUM A : "㉳" U3273 # CIRCLED HANGUL PIEUP A : "㉴" U3274 # CIRCLED HANGUL SIOS A : "㉵" U3275 # CIRCLED HANGUL IEUNG A : "㉶" U3276 # CIRCLED HANGUL CIEUC A : "㉷" U3277 # CIRCLED HANGUL CHIEUCH A : "㉸" U3278 # CIRCLED HANGUL KHIEUKH A : "㉹" U3279 # CIRCLED HANGUL THIEUTH A : "㉺" U327A # CIRCLED HANGUL PHIEUPH A : "㉻" U327B # CIRCLED HANGUL HIEUH A : "㊀" U3280 # CIRCLED IDEOGRAPH ONE : "㊁" U3281 # CIRCLED IDEOGRAPH TWO : "㊂" U3282 # CIRCLED IDEOGRAPH THREE : "㊃" U3283 # CIRCLED IDEOGRAPH FOUR : "㊄" U3284 # CIRCLED IDEOGRAPH FIVE : "㊅" U3285 # CIRCLED IDEOGRAPH SIX : "㊆" U3286 # CIRCLED IDEOGRAPH SEVEN : "㊇" U3287 # CIRCLED IDEOGRAPH EIGHT : "㊈" U3288 # CIRCLED IDEOGRAPH NINE : "㊉" U3289 # CIRCLED IDEOGRAPH TEN : "㊊" U328A # CIRCLED IDEOGRAPH MOON : "㊋" U328B # CIRCLED IDEOGRAPH FIRE : "㊌" U328C # CIRCLED IDEOGRAPH WATER : "㊍" U328D # CIRCLED IDEOGRAPH WOOD : "㊎" U328E # CIRCLED IDEOGRAPH METAL : "㊏" U328F # CIRCLED IDEOGRAPH EARTH : "㊐" U3290 # CIRCLED IDEOGRAPH SUN : "㊑" U3291 # CIRCLED IDEOGRAPH STOCK : "㊒" U3292 # CIRCLED IDEOGRAPH HAVE : "㊓" U3293 # CIRCLED IDEOGRAPH SOCIETY : "㊔" U3294 # CIRCLED IDEOGRAPH NAME : "㊕" U3295 # CIRCLED IDEOGRAPH SPECIAL : "㊖" U3296 # CIRCLED IDEOGRAPH FINANCIAL : "㊗" U3297 # CIRCLED IDEOGRAPH CONGRATULATION : "㊘" U3298 # CIRCLED IDEOGRAPH LABOR : "㊙" U3299 # CIRCLED IDEOGRAPH SECRET : "㊚" U329A # CIRCLED IDEOGRAPH MALE : "㊛" U329B # CIRCLED IDEOGRAPH FEMALE : "㊜" U329C # CIRCLED IDEOGRAPH SUITABLE : "㊝" U329D # CIRCLED IDEOGRAPH EXCELLENT : "㊞" U329E # CIRCLED IDEOGRAPH PRINT : "㊟" U329F # CIRCLED IDEOGRAPH ATTENTION : "㊠" U32A0 # CIRCLED IDEOGRAPH ITEM : "㊡" U32A1 # CIRCLED IDEOGRAPH REST : "㊢" U32A2 # CIRCLED IDEOGRAPH COPY : "㊣" U32A3 # CIRCLED IDEOGRAPH CORRECT : "㊤" U32A4 # CIRCLED IDEOGRAPH HIGH : "㊥" U32A5 # CIRCLED IDEOGRAPH CENTRE : "㊦" U32A6 # CIRCLED IDEOGRAPH LOW : "㊧" U32A7 # CIRCLED IDEOGRAPH LEFT : "㊨" U32A8 # CIRCLED IDEOGRAPH RIGHT : "㊩" U32A9 # CIRCLED IDEOGRAPH MEDICINE : "㊪" U32AA # CIRCLED IDEOGRAPH RELIGION : "㊫" U32AB # CIRCLED IDEOGRAPH STUDY : "㊬" U32AC # CIRCLED IDEOGRAPH SUPERVISE : "㊭" U32AD # CIRCLED IDEOGRAPH ENTERPRISE : "㊮" U32AE # CIRCLED IDEOGRAPH RESOURCE : "㊯" U32AF # CIRCLED IDEOGRAPH ALLIANCE : "㊰" U32B0 # CIRCLED IDEOGRAPH NIGHT <3> <6> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX <3> <7> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN <3> <8> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT <3> <9> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE <4> <0> : "㊵" U32B5 # CIRCLED NUMBER FORTY : "㊵" U32B5 # CIRCLED NUMBER FORTY <4> <1> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE <4> <2> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO <4> <3> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE <4> <4> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR <4> <5> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE <4> <6> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX : "㊻" U32BB # CIRCLED NUMBER FORTY SIX <4> <7> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN <4> <8> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT <4> <9> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE : "㊾" U32BE # CIRCLED NUMBER FORTY NINE <5> <0> : "㊿" U32BF # CIRCLED NUMBER FIFTY : "㊿" U32BF # CIRCLED NUMBER FIFTY : "㋐" U32D0 # CIRCLED KATAKANA A : "㋑" U32D1 # CIRCLED KATAKANA I : "㋒" U32D2 # CIRCLED KATAKANA U : "㋓" U32D3 # CIRCLED KATAKANA E : "㋔" U32D4 # CIRCLED KATAKANA O : "㋕" U32D5 # CIRCLED KATAKANA KA : "㋖" U32D6 # CIRCLED KATAKANA KI : "㋗" U32D7 # CIRCLED KATAKANA KU : "㋘" U32D8 # CIRCLED KATAKANA KE : "㋙" U32D9 # CIRCLED KATAKANA KO : "㋚" U32DA # CIRCLED KATAKANA SA : "㋛" U32DB # CIRCLED KATAKANA SI : "㋜" U32DC # CIRCLED KATAKANA SU : "㋝" U32DD # CIRCLED KATAKANA SE : "㋞" U32DE # CIRCLED KATAKANA SO : "㋟" U32DF # CIRCLED KATAKANA TA : "㋠" U32E0 # CIRCLED KATAKANA TI : "㋡" U32E1 # CIRCLED KATAKANA TU : "㋢" U32E2 # CIRCLED KATAKANA TE : "㋣" U32E3 # CIRCLED KATAKANA TO : "㋤" U32E4 # CIRCLED KATAKANA NA : "㋥" U32E5 # CIRCLED KATAKANA NI : "㋦" U32E6 # CIRCLED KATAKANA NU : "㋧" U32E7 # CIRCLED KATAKANA NE : "㋨" U32E8 # CIRCLED KATAKANA NO : "㋩" U32E9 # CIRCLED KATAKANA HA : "㋪" U32EA # CIRCLED KATAKANA HI : "㋫" U32EB # CIRCLED KATAKANA HU : "㋬" U32EC # CIRCLED KATAKANA HE : "㋭" U32ED # CIRCLED KATAKANA HO : "㋮" U32EE # CIRCLED KATAKANA MA : "㋯" U32EF # CIRCLED KATAKANA MI : "㋰" U32F0 # CIRCLED KATAKANA MU : "㋱" U32F1 # CIRCLED KATAKANA ME : "㋲" U32F2 # CIRCLED KATAKANA MO : "㋳" U32F3 # CIRCLED KATAKANA YA : "㋴" U32F4 # CIRCLED KATAKANA YU : "㋵" U32F5 # CIRCLED KATAKANA YO : "㋶" U32F6 # CIRCLED KATAKANA RA : "㋷" U32F7 # CIRCLED KATAKANA RI : "㋸" U32F8 # CIRCLED KATAKANA RU : "㋹" U32F9 # CIRCLED KATAKANA RE : "㋺" U32FA # CIRCLED KATAKANA RO : "㋻" U32FB # CIRCLED KATAKANA WA : "㋼" U32FC # CIRCLED KATAKANA WI : "㋽" U32FD # CIRCLED KATAKANA WE : "㋾" U32FE # CIRCLED KATAKANA WO XCOMM Hebrew letters with accents : "יִ" UFB1D # HEBREW LETTER YOD WITH HIRIQ : "ײַ" UFB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH : "שׁ" UFB2A # HEBREW LETTER SHIN WITH SHIN DOT : "שׂ" UFB2B # HEBREW LETTER SHIN WITH SIN DOT : "שּׁ" UFB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT : "שּׁ" UFB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT : "שּׂ" UFB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT : "שּׂ" UFB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT : "אַ" UFB2E # HEBREW LETTER ALEF WITH PATAH : "אָ" UFB2F # HEBREW LETTER ALEF WITH QAMATS : "אּ" UFB30 # HEBREW LETTER ALEF WITH MAPIQ : "בּ" UFB31 # HEBREW LETTER BET WITH DAGESH : "גּ" UFB32 # HEBREW LETTER GIMEL WITH DAGESH : "דּ" UFB33 # HEBREW LETTER DALET WITH DAGESH : "הּ" UFB34 # HEBREW LETTER HE WITH MAPIQ : "וּ" UFB35 # HEBREW LETTER VAV WITH DAGESH : "זּ" UFB36 # HEBREW LETTER ZAYIN WITH DAGESH : "טּ" UFB38 # HEBREW LETTER TET WITH DAGESH : "יּ" UFB39 # HEBREW LETTER YOD WITH DAGESH : "ךּ" UFB3A # HEBREW LETTER FINAL KAF WITH DAGESH : "כּ" UFB3B # HEBREW LETTER KAF WITH DAGESH : "לּ" UFB3C # HEBREW LETTER LAMED WITH DAGESH : "מּ" UFB3E # HEBREW LETTER MEM WITH DAGESH : "נּ" UFB40 # HEBREW LETTER NUN WITH DAGESH : "סּ" UFB41 # HEBREW LETTER SAMEKH WITH DAGESH : "ףּ" UFB43 # HEBREW LETTER FINAL PE WITH DAGESH : "פּ" UFB44 # HEBREW LETTER PE WITH DAGESH : "צּ" UFB46 # HEBREW LETTER TSADI WITH DAGESH : "קּ" UFB47 # HEBREW LETTER QOF WITH DAGESH : "רּ" UFB48 # HEBREW LETTER RESH WITH DAGESH : "שּ" UFB49 # HEBREW LETTER SHIN WITH DAGESH : "תּ" UFB4A # HEBREW LETTER TAV WITH DAGESH : "וֹ" UFB4B # HEBREW LETTER VAV WITH HOLAM : "בֿ" UFB4C # HEBREW LETTER BET WITH RAFE : "כֿ" UFB4D # HEBREW LETTER KAF WITH RAFE : "פֿ" UFB4E # HEBREW LETTER PE WITH RAFE XCOMM Musical notes : "𝅗𝅥" U1D15E # MUSICAL SYMBOL HALF NOTE : "𝅘𝅥" U1D15F # MUSICAL SYMBOL QUARTER NOTE : "𝅘𝅥𝅮" U1D160 # MUSICAL SYMBOL EIGHTH NOTE : "𝅘𝅥𝅯" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE : "𝅘𝅥𝅰" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE : "𝅘𝅥𝅱" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE : "𝅘𝅥𝅲" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE : "𝆹𝅥" U1D1BB # MUSICAL SYMBOL MINIMA : "𝆺𝅥" U1D1BC # MUSICAL SYMBOL MINIMA BLACK : "𝆹𝅥𝅮" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE : "𝆺𝅥𝅮" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK : "𝆹𝅥𝅯" U1D1BF # MUSICAL SYMBOL FUSA WHITE : "𝆺𝅥𝅯" U1D1C0 # MUSICAL SYMBOL FUSA BLACK XCOMM Khmer digraphs : "ាំ" # KHMER VOWEL SIGN AA plus KHMER SIGN NIKAHIT : "ោះ" # KHMER VOWEL SIGN OO plus KHMER SIGN REAHMUK : "េះ" # KHMER VOWEL SIGN E plus KHMER SIGN REAHMUK : "ុំ" # KHMER VOWEL SIGN U plus KHMER SIGN NIKAHIT : "ុះ" # KHMER VOWEL SIGN U plus KHMER SIGN REAHMUK XCOMM Decomposition of four Arabic Lam-Alef ligatures : "لا" # ARABIC LETTER LAM plus ARABIC LETTER ALEF : "لأ" # ARABIC LETTER LAM plus ARABIC LETTER ALEF WITH HAMZA ABOVE : "لإ" # ARABIC LETTER LAM plus ARABIC LETTER ALEF WITH HAMZA BELOW : "لآ" # ARABIC LETTER LAM plus ARABIC LETTER ALEF WITH MADDA ABOVE XCOMM Breton N-graphs : "ch" # LATIN SMALL LETTER C plus LATIN SMALL LETTER H : "Ch" # LATIN CAPITAL LETTER C plus LATIN SMALL LETTER H : "CH" # LATIN CAPITAL LETTER C plus LATIN CAPITAL LETTER H : "c’h" # LATIN SMALL LETTER C plus RIGHT SINGLE QUOTATION MARK plus LATIN SMALL LETTER H : "C’h" # LATIN CAPITAL LETTER C plus RIGHT SINGLE QUOTATION MARK plus LATIN SMALL LETTER H : "C’H" # LATIN CAPITAL LETTER C plus RIGHT SINGLE QUOTATION MARK plus LATIN CAPITAL LETTER H XCOMM French-Dvorak Bépo compositions : "ȷ" U0237 # LATIN SMALL LETTER DOTLESS J : "Ŀ" U013F # LATIN CAPITAL LETTER L WITH MIDDLE DOT : "ŀ" U0140 # LATIN SMALL LETTER L WITH MIDDLE DOT : "̇" U0307 # COMBINING DOT ABOVE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "̊" U030A # COMBINING RING ABOVE : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE : "́" U0301 # COMBINING ACUTE ACCENT : "̣" U0323 # COMBINING DOT BELOW : "̣" U0323 # COMBINING DOT BELOW : "̣" U0323 # COMBINING DOT BELOW : "Ắ" Abreveacute # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "ắ" abreveacute # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "Ằ" Abrevegrave # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "ằ" abrevegrave # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "Ẵ" Abrevetilde # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "ẵ" abrevetilde # LATIN SMALL LETTER A WITH BREVE AND TILDE : "̆" U0306 # COMBINING BREVE : "Dž" U01C5 # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON : "̌" U030C # COMBINING CARON : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE : "̧" U0327 # COMBINING CEDILLA : "Ấ" Acircumflexacute # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : "ấ" acircumflexacute # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : "Ầ" Acircumflexgrave # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE : "ầ" acircumflexgrave # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE : "Ẫ" Acircumflextilde # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE : "ẫ" acircumflextilde # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE : "Ế" Ecircumflexacute # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : "ế" ecircumflexacute # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : "Ề" Ecircumflexgrave # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE : "ề" ecircumflexgrave # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE : "Ễ" Ecircumflextilde # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE : "ễ" ecircumflextilde # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE : "Ố" Ocircumflexacute # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : "ố" ocircumflexacute # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : "Ồ" Ocircumflexgrave # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE : "ồ" ocircumflexgrave # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE : "Ỗ" Ocircumflextilde # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE : "ỗ" ocircumflextilde # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE : "̂" U0302 # COMBINING CIRCUMFLEX ACCENT : "," comma # COMMA : "̦" U0326 # COMBINING COMMA BELOW : "," comma # COMMA : "₳" U20B3 # AUSTRAL SIGN : "؋" U060B # AFGHANI SIGN : "₱" U20B1 # PESO SIGN : "฿" Thai_baht # THAI CURRENCY SYMBOL BAHT : "₡" ColonSign # COLON SIGN : "¢" cent # CENT SIGN : "₵" U20B5 # CEDI SIGN : "₵" U20B5 # CEDI SIGN : "₵" U20B5 # CEDI SIGN : "₵" U20B5 # CEDI SIGN : "₯" U20AF # DRACHMA SIGN : "₫" DongSign # DONG SIGN : "₠" EcuSign # EURO-CURRENCY SIGN : "€" EuroSign # EURO SIGN : "₣" FFrancSign # FRENCH FRANC SIGN : "ƒ" function # LATIN SMALL LETTER F WITH HOOK : "₲" U20B2 # GUARANI SIGN : "₲" U20B2 # GUARANI SIGN : "₴" U20B4 # HRYVNIA SIGN : "₴" U20B4 # HRYVNIA SIGN : "៛" U17DB # KHMER CURRENCY SYMBOL RIEL : "﷼" UFDFC # RIAL SIGN : "₭" U20AD # KIP SIGN : "₭" U20AD # KIP SIGN : "₤" LiraSign # LIRA SIGN : "£" sterling # POUND SIGN : "ℳ" U2133 # SCRIPT CAPITAL M : "₥" MillSign # MILL SIGN : "₦" NairaSign # NAIRA SIGN : "₦" NairaSign # NAIRA SIGN : "૱" U0AF1 # GUJARATI RUPEE SIGN : "௹" U0BF9 # TAMIL RUPEE SIGN

: "₧" PesetaSign # PESETA SIGN

: "₰" U20B0 # GERMAN PENNY SIGN : "₢" CruzeiroSign # CRUZEIRO SIGN : "₨" RupeeSign # RUPEE SIGN : "$" dollar # DOLLAR SIGN : "₪" NewSheqelSign # NEW SHEQEL SIGN : "₮" U20AE # TUGRIK SIGN : "৳" U09F3 # BENGALI RUPEE SIGN : "৲" U09F2 # BENGALI RUPEE MARK : "৲" U09F2 # BENGALI RUPEE MARK : "圓" U5713 # YUAN / WEN : "元" U5143 # YUAN / WEN : "₩" WonSign # WON SIGN : "₩" WonSign # WON SIGN : "円" U5186 # YEN : "¥" yen # YEN SIGN : "¤" currency # CURRENCY SIGN : "¤" currency # CURRENCY SIGN : "¤" currency # CURRENCY SIGN : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE : "̈" U0308 # COMBINING DIAERESIS : "̋" U030B # COMBINING DOUBLE ACUTE ACCENT : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE : "̀" U0300 # COMBINING GRAVE ACCENT : "Α" U0391 # GREEK CAPITAL LETTER ALPHA : "α" U03B1 # GREEK SMALL LETTER ALPHA : "Β" U0392 # GREEK CAPITAL LETTER BETA : "β" U03B2 # GREEK SMALL LETTER BETA : "Δ" U0394 # GREEK CAPITAL LETTER DELTA : "δ" U03B4 # GREEK SMALL LETTER DELTA : "Ε" U0395 # GREEK CAPITAL LETTER EPSILON : "ε" U03B5 # GREEK SMALL LETTER EPSILON : "Φ" U03A6 # GREEK CAPITAL LETTER PHI : "φ" U03C6 # GREEK SMALL LETTER PHI : "Γ" U0393 # GREEK CAPITAL LETTER GAMMA : "γ" U03B3 # GREEK SMALL LETTER GAMMA : "Η" U0397 # GREEK CAPITAL LETTER ETA : "η" U03B7 # GREEK SMALL LETTER ETA : "Ι" U0399 # GREEK CAPITAL LETTER IOTA : "ι" U03B9 # GREEK SMALL LETTER IOTA : "Θ" U0398 # GREEK CAPITAL LETTER THETA : "θ" U03B8 # GREEK SMALL LETTER THETA : "Κ" U039A # GREEK CAPITAL LETTER KAPPA : "κ" U03BA # GREEK SMALL LETTER KAPPA : "Λ" U039B # GREEK CAPITAL LETTER LAMDA : "λ" U03BB # GREEK SMALL LETTER LAMDA : "Μ" U039C # GREEK CAPITAL LETTER MU : "μ" U03BC # GREEK SMALL LETTER MU : "Ν" U039D # GREEK CAPITAL LETTER NU : "ν" U03BD # GREEK SMALL LETTER NU : "Ο" U039F # GREEK CAPITAL LETTER OMICRON : "ο" U03BF # GREEK SMALL LETTER OMICRON

: "Π" U03A0 # GREEK CAPITAL LETTER PI

: "π" U03C0 # GREEK SMALL LETTER PI : "Χ" U03A7 # GREEK CAPITAL LETTER CHI : "χ" U03C7 # GREEK SMALL LETTER CHI : "Ρ" U03A1 # GREEK CAPITAL LETTER RHO : "ρ" U03C1 # GREEK SMALL LETTER RHO : "Σ" U03A3 # GREEK CAPITAL LETTER SIGMA : "σ" U03C3 # GREEK SMALL LETTER SIGMA : "Τ" U03A4 # GREEK CAPITAL LETTER TAU : "τ" U03C4 # GREEK SMALL LETTER TAU : "Υ" U03A5 # GREEK CAPITAL LETTER UPSILON : "υ" U03C5 # GREEK SMALL LETTER UPSILON : "Ω" U03A9 # GREEK CAPITAL LETTER OMEGA : "ω" U03C9 # GREEK SMALL LETTER OMEGA : "Ξ" U039E # GREEK CAPITAL LETTER XI : "ξ" U03BE # GREEK SMALL LETTER XI : "Ψ" U03A8 # GREEK CAPITAL LETTER PSI : "ψ" U03C8 # GREEK SMALL LETTER PSI : "Ζ" U0396 # GREEK CAPITAL LETTER ZETA : "ζ" U03B6 # GREEK SMALL LETTER ZETA : "µ" U00B5 # MICRO SIGN : "µ" U00B5 # MICRO SIGN : "µ" U00B5 # MICRO SIGN : "Ɓ" U0181 # LATIN CAPITAL LETTER B WITH HOOK : "ɓ" U0253 # LATIN SMALL LETTER B WITH HOOK : "Ƈ" U0187 # LATIN CAPITAL LETTER C WITH HOOK : "ƈ" U0188 # LATIN SMALL LETTER C WITH HOOK : "Ɗ" U018A # LATIN CAPITAL LETTER D WITH HOOK : "ɗ" U0257 # LATIN SMALL LETTER D WITH HOOK : "Ƒ" U0191 # LATIN CAPITAL LETTER F WITH HOOK : "ƒ" function # LATIN SMALL LETTER F WITH HOOK : "Ɠ" U0193 # LATIN CAPITAL LETTER G WITH HOOK : "ɠ" U0260 # LATIN SMALL LETTER G WITH HOOK : "ɦ" U0266 # LATIN SMALL LETTER H WITH HOOK : "Ƙ" U0198 # LATIN CAPITAL LETTER K WITH HOOK : "ƙ" U0199 # LATIN SMALL LETTER K WITH HOOK : "Ɱ" U2C6E # LATIN CAPITAL LETTER M WITH HOOK : "ɱ" U0271 # LATIN SMALL LETTER M WITH HOOK : "Ɲ" U019D # LATIN CAPITAL LETTER N WITH LEFT HOOK : "ɲ" U0272 # LATIN SMALL LETTER N WITH LEFT HOOK

: "Ƥ" U01A4 # LATIN CAPITAL LETTER P WITH HOOK

: "ƥ" U01A5 # LATIN SMALL LETTER P WITH HOOK : "ʠ" U02A0 # LATIN SMALL LETTER Q WITH HOOK : "ɼ" U027C # LATIN SMALL LETTER R WITH LONG LEG : "ʂ" U0282 # LATIN SMALL LETTER S WITH HOOK : "ɚ" U025A # LATIN SMALL LETTER SCHWA WITH HOOK : "Ƭ" U01AC # LATIN CAPITAL LETTER T WITH HOOK : "ƭ" U01AD # LATIN SMALL LETTER T WITH HOOK : "Ʋ" U01B2 # LATIN CAPITAL LETTER V WITH HOOK : "ʋ" U028B # LATIN SMALL LETTER V WITH HOOK : "Ⱳ" U2C72 # LATIN CAPITAL LETTER W WITH HOOK : "ⱳ" U2C73 # LATIN SMALL LETTER W WITH HOOK : "Ȥ" U0224 # LATIN CAPITAL LETTER Z WITH HOOK : "ȥ" U0225 # LATIN SMALL LETTER Z WITH HOOK : "̉" U0309 # COMBINING HOOK ABOVE : "̉" U0309 # COMBINING HOOK ABOVE : "̉" U0309 # COMBINING HOOK ABOVE : "Ớ" Ohornacute # LATIN CAPITAL LETTER O WITH HORN AND ACUTE : "ớ" ohornacute # LATIN SMALL LETTER O WITH HORN AND ACUTE : "Ờ" Ohorngrave # LATIN CAPITAL LETTER O WITH HORN AND GRAVE : "ờ" ohorngrave # LATIN SMALL LETTER O WITH HORN AND GRAVE : "Ứ" Uhornacute # LATIN CAPITAL LETTER U WITH HORN AND ACUTE : "ứ" uhornacute # LATIN SMALL LETTER U WITH HORN AND ACUTE : "Ừ" Uhorngrave # LATIN CAPITAL LETTER U WITH HORN AND GRAVE : "ừ" uhorngrave # LATIN SMALL LETTER U WITH HORN AND GRAVE : "̛" U031B # COMBINING HORN : "̛" U031B # COMBINING HORN : "̛" U031B # COMBINING HORN : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON : "̄" U0304 # COMBINING MACRON : "̨" U0328 # COMBINING OGONEK <2> : "ƻ" U01BB # LATIN LETTER TWO WITH STROKE : "≠" notequal # NOT EQUAL TO : "Ⱥ" U023A # LATIN CAPITAL LETTER A WITH STROKE : "ⱥ" U2C65 # LATIN SMALL LETTER A WITH STROKE : "Ȼ" U023B # LATIN CAPITAL LETTER C WITH STROKE : "ȼ" U023C # LATIN SMALL LETTER C WITH STROKE : "Ɇ" U0246 # LATIN CAPITAL LETTER E WITH STROKE : "ɇ" U0247 # LATIN SMALL LETTER E WITH STROKE : "≯" U226F # NOT GREATER-THAN : "≱" U2271 # NEITHER GREATER-THAN NOR EQUAL TO : "Ɉ" U0248 # LATIN CAPITAL LETTER J WITH STROKE : "ɉ" U0249 # LATIN SMALL LETTER J WITH STROKE : "ᵼ" U1D7C # LATIN SMALL LETTER IOTA WITH STROKE : "ɟ" U025F # LATIN SMALL LETTER DOTLESS J WITH STROKE : "≮" U226E # NOT LESS-THAN : "≰" U2270 # NEITHER LESS-THAN NOR EQUAL TO : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE

: "Ᵽ" U2C63 # LATIN CAPITAL LETTER P WITH STROKE

: "ᵽ" U1D7D # LATIN SMALL LETTER P WITH STROKE : "Ɍ" U024C # LATIN CAPITAL LETTER R WITH STROKE : "ɍ" U024D # LATIN SMALL LETTER R WITH STROKE : "Ʉ" U0244 # LATIN CAPITAL LETTER U BAR : "ʉ" U0289 # LATIN SMALL LETTER U BAR : "Ɏ" U024E # LATIN CAPITAL LETTER Y WITH STROKE : "ɏ" U024F # LATIN SMALL LETTER Y WITH STROKE : "/" slash # SOLIDUS : "̸" U0338 # COMBINING LONG SOLIDUS OVERLAY : "/" slash # SOLIDUS : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE : "≃" similarequal # ASYMPTOTICALLY EQUAL TO : "≲" U2272 # LESS-THAN OR EQUIVALENT TO : "≳" U2273 # GREATER-THAN OR EQUIVALENT TO : "̃" U0303 # COMBINING TILDE : "ɟ" U025F # LATIN SMALL LETTER DOTLESS J WITH STROKE : "ɟ" U025F # LATIN SMALL LETTER DOTLESS J WITH STROKE : "Ấ" Acircumflexacute # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : "ấ" acircumflexacute # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : "Ế" Ecircumflexacute # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : "ế" ecircumflexacute # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : "Ố" Ocircumflexacute # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : "ố" ocircumflexacute # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : "Ợ" Ohornbelowdot # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW : "ợ" ohornbelowdot # LATIN SMALL LETTER O WITH HORN AND DOT BELOW : "Ự" Uhornbelowdot # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW : "ự" uhornbelowdot # LATIN SMALL LETTER U WITH HORN AND DOT BELOW : "Ầ" Acircumflexgrave # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE : "ầ" acircumflexgrave # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE : "Ề" Ecircumflexgrave # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE : "ề" ecircumflexgrave # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE : "Ồ" Ocircumflexgrave # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE : "ồ" ocircumflexgrave # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE : "Ẩ" Acircumflexhook # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "ẩ" acircumflexhook # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "Ể" Ecircumflexhook # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "ể" ecircumflexhook # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "Ổ" Ocircumflexhook # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "ổ" ocircumflexhook # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "ϒ" U03D2 # GREEK UPSILON WITH HOOK SYMBOL : "ϒ" U03D2 # GREEK UPSILON WITH HOOK SYMBOL : "Ᾱ" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON : "Ᾱ" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON : "ᾱ" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON : "ᾱ" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON : "Ῡ" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON : "Ῡ" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON : "ῡ" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON : "ῡ" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON : "ϼ" U03FC # GREEK RHO WITH STROKE SYMBOL : "ϼ" U03FC # GREEK RHO WITH STROKE SYMBOL XCOMM Cyrillic (NFDs -- Normalized Form Canonical Decomposition) : "а̏" # CYRILLIC SMALL LETTER A plus COMBINING DOUBLE GRAVE : "а̏" # CYRILLIC SMALL LETTER A plus COMBINING DOUBLE GRAVE : "а̑" # CYRILLIC SMALL LETTER A plus COMBINING INVERTED BREVE : "а̀" # CYRILLIC SMALL LETTER A plus COMBINING GRAVE : "а̀" # CYRILLIC SMALL LETTER A plus COMBINING GRAVE : "а́" # CYRILLIC SMALL LETTER A plus COMBINING ACUTE : "а́" # CYRILLIC SMALL LETTER A plus COMBINING ACUTE : "а́" # CYRILLIC SMALL LETTER A plus COMBINING ACUTE : "а̄" # CYRILLIC SMALL LETTER A plus COMBINING MACRON : "а̄" # CYRILLIC SMALL LETTER A plus COMBINING MACRON : "а̄" # CYRILLIC SMALL LETTER A plus COMBINING MACRON : "а̂" # CYRILLIC SMALL LETTER A plus COMBINING CIRCUMFLEX : "а̂" # CYRILLIC SMALL LETTER A plus COMBINING CIRCUMFLEX : "А̏" # CYRILLIC CAPITAL LETTER A plus COMBINING DOUBLE GRAVE : "А̏" # CYRILLIC CAPITAL LETTER A plus COMBINING DOUBLE GRAVE : "А̑" # CYRILLIC CAPITAL LETTER A plus COMBINING INVERTED BREVE : "А̀" # CYRILLIC CAPITAL LETTER A plus COMBINING GRAVE : "А̀" # CYRILLIC CAPITAL LETTER A plus COMBINING GRAVE : "А́" # CYRILLIC CAPITAL LETTER A plus COMBINING ACUTE : "А́" # CYRILLIC CAPITAL LETTER A plus COMBINING ACUTE : "А́" # CYRILLIC CAPITAL LETTER A plus COMBINING ACUTE : "А̄" # CYRILLIC CAPITAL LETTER A plus COMBINING MACRON : "А̄" # CYRILLIC CAPITAL LETTER A plus COMBINING MACRON : "А̄" # CYRILLIC CAPITAL LETTER A plus COMBINING MACRON : "А̂" # CYRILLIC CAPITAL LETTER A plus COMBINING CIRCUMFLEX : "А̂" # CYRILLIC CAPITAL LETTER A plus COMBINING CIRCUMFLEX : "е̏" # CYRILLIC SMALL LETTER IE plus COMBINING DOUBLE GRAVE : "е̏" # CYRILLIC SMALL LETTER IE plus COMBINING DOUBLE GRAVE : "е̑" # CYRILLIC SMALL LETTER IE plus COMBINING INVERTED BREVE : "е́" # CYRILLIC SMALL LETTER IE plus COMBINING ACUTE : "е́" # CYRILLIC SMALL LETTER IE plus COMBINING ACUTE : "е́" # CYRILLIC SMALL LETTER IE plus COMBINING ACUTE : "е̄" # CYRILLIC SMALL LETTER IE plus COMBINING MACRON : "е̄" # CYRILLIC SMALL LETTER IE plus COMBINING MACRON : "е̄" # CYRILLIC SMALL LETTER IE plus COMBINING MACRON : "е̂" # CYRILLIC SMALL LETTER IE plus COMBINING CIRCUMFLEX : "е̂" # CYRILLIC SMALL LETTER IE plus COMBINING CIRCUMFLEX : "Е̏" # CYRILLIC CAPITAL LETTER IE plus COMBINING DOUBLE GRAVE : "Е̏" # CYRILLIC CAPITAL LETTER IE plus COMBINING DOUBLE GRAVE : "Е̑" # CYRILLIC CAPITAL LETTER IE plus COMBINING INVERTED BREVE : "Е́" # CYRILLIC CAPITAL LETTER IE plus COMBINING ACUTE : "Е́" # CYRILLIC CAPITAL LETTER IE plus COMBINING ACUTE : "Е́" # CYRILLIC CAPITAL LETTER IE plus COMBINING ACUTE : "Е̄" # CYRILLIC CAPITAL LETTER IE plus COMBINING MACRON : "Е̄" # CYRILLIC CAPITAL LETTER IE plus COMBINING MACRON : "Е̄" # CYRILLIC CAPITAL LETTER IE plus COMBINING MACRON : "Е̂" # CYRILLIC CAPITAL LETTER IE plus COMBINING CIRCUMFLEX : "Е̂" # CYRILLIC CAPITAL LETTER IE plus COMBINING CIRCUMFLEX : "и̏" # CYRILLIC SMALL LETTER I plus COMBINING DOUBLE GRAVE : "и̏" # CYRILLIC SMALL LETTER I plus COMBINING DOUBLE GRAVE : "и̑" # CYRILLIC SMALL LETTER I plus COMBINING INVERTED BREVE : "и́" # CYRILLIC SMALL LETTER I plus COMBINING ACUTE : "и́" # CYRILLIC SMALL LETTER I plus COMBINING ACUTE : "и́" # CYRILLIC SMALL LETTER I plus COMBINING ACUTE : "и̂" # CYRILLIC SMALL LETTER I plus COMBINING CIRCUMFLEX : "и̂" # CYRILLIC SMALL LETTER I plus COMBINING CIRCUMFLEX : "И̏" # CYRILLIC CAPITAL LETTER I plus COMBINING DOUBLE GRAVE : "И̏" # CYRILLIC CAPITAL LETTER I plus COMBINING DOUBLE GRAVE : "И̑" # CYRILLIC CAPITAL LETTER I plus COMBINING INVERTED BREVE : "И́" # CYRILLIC CAPITAL LETTER I plus COMBINING ACUTE : "И́" # CYRILLIC CAPITAL LETTER I plus COMBINING ACUTE : "И́" # CYRILLIC CAPITAL LETTER I plus COMBINING ACUTE : "И̂" # CYRILLIC CAPITAL LETTER I plus COMBINING CIRCUMFLEX : "И̂" # CYRILLIC CAPITAL LETTER I plus COMBINING CIRCUMFLEX : "о̏" # CYRILLIC SMALL LETTER O plus COMBINING DOUBLE GRAVE : "о̏" # CYRILLIC SMALL LETTER O plus COMBINING DOUBLE GRAVE : "о̑" # CYRILLIC SMALL LETTER O plus COMBINING INVERTED BREVE : "о̀" # CYRILLIC SMALL LETTER O plus COMBINING GRAVE : "о̀" # CYRILLIC SMALL LETTER O plus COMBINING GRAVE : "о́" # CYRILLIC SMALL LETTER O plus COMBINING ACUTE : "о́" # CYRILLIC SMALL LETTER O plus COMBINING ACUTE : "о́" # CYRILLIC SMALL LETTER O plus COMBINING ACUTE : "о̄" # CYRILLIC SMALL LETTER O plus COMBINING MACRON : "о̄" # CYRILLIC SMALL LETTER O plus COMBINING MACRON : "о̄" # CYRILLIC SMALL LETTER O plus COMBINING MACRON : "о̂" # CYRILLIC SMALL LETTER O plus COMBINING CIRCUMFLEX : "о̂" # CYRILLIC SMALL LETTER O plus COMBINING CIRCUMFLEX : "О̏" # CYRILLIC CAPITAL LETTER O plus COMBINING DOUBLE GRAVE : "О̏" # CYRILLIC CAPITAL LETTER O plus COMBINING DOUBLE GRAVE : "О̑" # CYRILLIC CAPITAL LETTER O plus COMBINING INVERTED BREVE : "О̀" # CYRILLIC CAPITAL LETTER O plus COMBINING GRAVE : "О̀" # CYRILLIC CAPITAL LETTER O plus COMBINING GRAVE : "О́" # CYRILLIC CAPITAL LETTER O plus COMBINING ACUTE : "О́" # CYRILLIC CAPITAL LETTER O plus COMBINING ACUTE : "О́" # CYRILLIC CAPITAL LETTER O plus COMBINING ACUTE : "О̄" # CYRILLIC CAPITAL LETTER O plus COMBINING MACRON : "О̄" # CYRILLIC CAPITAL LETTER O plus COMBINING MACRON : "О̄" # CYRILLIC CAPITAL LETTER O plus COMBINING MACRON : "О̂" # CYRILLIC CAPITAL LETTER O plus COMBINING CIRCUMFLEX : "О̂" # CYRILLIC CAPITAL LETTER O plus COMBINING CIRCUMFLEX : "у̏" # CYRILLIC SMALL LETTER U plus COMBINING DOUBLE GRAVE : "у̏" # CYRILLIC SMALL LETTER U plus COMBINING DOUBLE GRAVE : "у̑" # CYRILLIC SMALL LETTER U plus COMBINING INVERTED BREVE : "у̀" # CYRILLIC SMALL LETTER U plus COMBINING GRAVE : "у̀" # CYRILLIC SMALL LETTER U plus COMBINING GRAVE : "у́" # CYRILLIC SMALL LETTER U plus COMBINING ACUTE : "у́" # CYRILLIC SMALL LETTER U plus COMBINING ACUTE : "у́" # CYRILLIC SMALL LETTER U plus COMBINING ACUTE : "у̂" # CYRILLIC SMALL LETTER U plus COMBINING CIRCUMFLEX : "у̂" # CYRILLIC SMALL LETTER U plus COMBINING CIRCUMFLEX : "У̏" # CYRILLIC CAPITAL LETTER U plus COMBINING DOUBLE GRAVE : "У̏" # CYRILLIC CAPITAL LETTER U plus COMBINING DOUBLE GRAVE : "У̑" # CYRILLIC CAPITAL LETTER U plus COMBINING INVERTED BREVE : "У̀" # CYRILLIC CAPITAL LETTER U plus COMBINING GRAVE : "У̀" # CYRILLIC CAPITAL LETTER U plus COMBINING GRAVE : "У́" # CYRILLIC CAPITAL LETTER U plus COMBINING ACUTE : "У́" # CYRILLIC CAPITAL LETTER U plus COMBINING ACUTE : "У́" # CYRILLIC CAPITAL LETTER U plus COMBINING ACUTE : "У̂" # CYRILLIC CAPITAL LETTER U plus COMBINING CIRCUMFLEX : "У̂" # CYRILLIC CAPITAL LETTER U plus COMBINING CIRCUMFLEX : "р̏" # CYRILLIC SMALL LETTER ER plus COMBINING DOUBLE GRAVE : "р̏" # CYRILLIC SMALL LETTER ER plus COMBINING DOUBLE GRAVE : "р̑" # CYRILLIC SMALL LETTER ER plus COMBINING INVERTED BREVE : "р̀" # CYRILLIC SMALL LETTER ER plus COMBINING GRAVE : "р̀" # CYRILLIC SMALL LETTER ER plus COMBINING GRAVE : "р́" # CYRILLIC SMALL LETTER ER plus COMBINING ACUTE : "р́" # CYRILLIC SMALL LETTER ER plus COMBINING ACUTE : "р́" # CYRILLIC SMALL LETTER ER plus COMBINING ACUTE : "р̄" # CYRILLIC SMALL LETTER ER plus COMBINING MACRON : "р̄" # CYRILLIC SMALL LETTER ER plus COMBINING MACRON : "р̄" # CYRILLIC SMALL LETTER ER plus COMBINING MACRON : "р̂" # CYRILLIC SMALL LETTER ER plus COMBINING CIRCUMFLEX : "р̂" # CYRILLIC SMALL LETTER ER plus COMBINING CIRCUMFLEX : "Р̏" # CYRILLIC CAPITAL LETTER ER plus COMBINING DOUBLE GRAVE : "Р̏" # CYRILLIC CAPITAL LETTER ER plus COMBINING DOUBLE GRAVE : "Р̑" # CYRILLIC CAPITAL LETTER ER plus COMBINING INVERTED BREVE : "Р̀" # CYRILLIC CAPITAL LETTER ER plus COMBINING GRAVE : "Р̀" # CYRILLIC CAPITAL LETTER ER plus COMBINING GRAVE : "Р́" # CYRILLIC CAPITAL LETTER ER plus COMBINING ACUTE : "Р́" # CYRILLIC CAPITAL LETTER ER plus COMBINING ACUTE : "Р́" # CYRILLIC CAPITAL LETTER ER plus COMBINING ACUTE : "Р̄" # CYRILLIC CAPITAL LETTER ER plus COMBINING MACRON : "Р̄" # CYRILLIC CAPITAL LETTER ER plus COMBINING MACRON : "Р̄" # CYRILLIC CAPITAL LETTER ER plus COMBINING MACRON : "Р̂" # CYRILLIC CAPITAL LETTER ER plus COMBINING CIRCUMFLEX : "Р̂" # CYRILLIC CAPITAL LETTER ER plus COMBINING CIRCUMFLEX : "ы́" # CYRILLIC SMALL LETTER YERU plus COMBINING ACUTE : "ы́" # CYRILLIC SMALL LETTER YERU plus COMBINING ACUTE : "ы́" # CYRILLIC SMALL LETTER YERU plus COMBINING ACUTE : "Ы́" # CYRILLIC CAPITAL LETTER YERU plus COMBINING ACUTE : "Ы́" # CYRILLIC CAPITAL LETTER YERU plus COMBINING ACUTE : "Ы́" # CYRILLIC CAPITAL LETTER YERU plus COMBINING ACUTE : "э́" # CYRILLIC SMALL LETTER E plus COMBINING ACUTE : "э́" # CYRILLIC SMALL LETTER E plus COMBINING ACUTE : "э́" # CYRILLIC SMALL LETTER E plus COMBINING ACUTE : "Э́" # CYRILLIC CAPITAL LETTER E plus COMBINING ACUTE : "Э́" # CYRILLIC CAPITAL LETTER E plus COMBINING ACUTE : "Э́" # CYRILLIC CAPITAL LETTER E plus COMBINING ACUTE : "ю́" # CYRILLIC SMALL LETTER YU plus COMBINING ACUTE : "ю́" # CYRILLIC SMALL LETTER YU plus COMBINING ACUTE : "ю́" # CYRILLIC SMALL LETTER YU plus COMBINING ACUTE : "Ю́" # CYRILLIC CAPITAL LETTER YU plus COMBINING ACUTE : "Ю́" # CYRILLIC CAPITAL LETTER YU plus COMBINING ACUTE : "Ю́" # CYRILLIC CAPITAL LETTER YU plus COMBINING ACUTE : "я́" # CYRILLIC SMALL LETTER YA plus COMBINING ACUTE : "я́" # CYRILLIC SMALL LETTER YA plus COMBINING ACUTE : "я́" # CYRILLIC SMALL LETTER YA plus COMBINING ACUTE : "Я́" # CYRILLIC CAPITAL LETTER YA plus COMBINING ACUTE : "Я́" # CYRILLIC CAPITAL LETTER YA plus COMBINING ACUTE : "Я́" # CYRILLIC CAPITAL LETTER YA plus COMBINING ACUTE /* * APL support, by Geoff Streeter, 2012-01-04 * * APL was initially an overstruck language. The original APL terminal was an IBM golfball * with a specially designed golfball. This meant that characters could be overstruck to * produce other characters. This gave APL a richness of primitives which is still powerful * today. Overstrikes were always independent of order. * * APLs have extended this into a number of dialects. Let us try to support lots of them. * Together with some that have not been used yet. Some traditional ones are not included. */ XCOMM Characters from "Mathematical Operators" : "√" U221a # v / SQUARE ROOT : "√" U221a # / v SQUARE ROOT <8> <8> : "∞" U221e # 8 8 INFINITY : "∴" U2234 # : . THEREFORE : "∵" U2235 # . : BECAUSE : "≈" U2248 # ~ ~ ALMOST EQUAL TO : "≈" U2248 # ~ ~ ALMOST EQUAL TO : "≡" U2261 # = _ IDENTICAL TO : "≢" U2262 # _ ≠ NOT IDENTICAL TO : "≢" U2262 # ≠ _ NOT IDENTICAL TO : "≤" U2264 # < _ LESS-THAN OR EQUAL TO : "≤" U2264 # _ < LESS-THAN OR EQUAL TO : "≥" U2265 # > _ GREATER-THAN OR EQUAL TO : "≥" U2265 # _ > GREATER-THAN OR EQUAL TO : "⊆" U2286 # _ ⊂ SUBSET OF OR EQUAL TO : "⊆" U2286 # ⊂ _ SUBSET OF OR EQUAL TO : "⊇" U2287 # _ ⊃ SUPERSET OF OR EQUAL TO : "⊇" U2287 # ⊃ _ SUPERSET OF OR EQUAL TO : "⊖" U2296 # ○ - CIRCLED MINUS : "⊖" U2296 # - ○ CIRCLED MINUS : "⊙" U2299 # ○ . CIRCLED DOT OPERATOR : "⊙" U2299 # . ○ CIRCLED DOT OPERATOR : "⋄" U22c4 # < > DIAMOND OPERATOR : "⋄" U22c4 # > < DIAMOND OPERATOR : "⋄" U22c4 # ∧ ∨ DIAMOND OPERATOR : "⋄" U22c4 # ∨ ∧ DIAMOND OPERATOR XCOMM Characters from "Miscellaneous Technical" : "⌶" U2336 # ⊥ ⊤ APL FUNCTIONAL SYMBOL I-BEAM : "⌶" U2336 # ⊥ ⊤ APL FUNCTIONAL SYMBOL I-BEAM : "⌷" U2337 # [ ] APL FUNCTIONAL SYMBOL SQUISH QUAD : "⌷" U2337 # ] [ APL FUNCTIONAL SYMBOL SQUISH QUAD : "⌸" U2338 # ⎕ = APL FUNCTIONAL SYMBOL QUAD EQUAL : "⌸" U2338 # = ⎕ APL FUNCTIONAL SYMBOL QUAD EQUAL : "⌹" U2339 # ⎕ ÷ APL FUNCTIONAL SYMBOL QUAD DIVIDE : "⌹" U2339 # ÷ ⎕ APL FUNCTIONAL SYMBOL QUAD DIVIDE : "⌺" U233a # ⎕ ⋄ APL FUNCTIONAL SYMBOL QUAD DIAMOND : "⌺" U233a # ⋄ ⎕ APL FUNCTIONAL SYMBOL QUAD DIAMOND : "⌻" U233b # ⎕ ∘ APL FUNCTIONAL SYMBOL QUAD JOT : "⌻" U233b # ∘ ⎕ APL FUNCTIONAL SYMBOL QUAD JOT : "⌼" U233c # ⎕ ○ APL FUNCTIONAL SYMBOL QUAD CIRCLE : "⌼" U233c # ○ ⎕ APL FUNCTIONAL SYMBOL QUAD CIRCLE : "⌽" U233d # ○ | APL FUNCTIONAL SYMBOL CIRCLE STILE : "⌽" U233d # | ○ APL FUNCTIONAL SYMBOL CIRCLE STILE : "⌾" U233e # ○ ∘ APL FUNCTIONAL SYMBOL CIRCLE JOT : "⌾" U233e # ∘ ○ APL FUNCTIONAL SYMBOL CIRCLE JOT : "⌿" U233f # / - APL FUNCTIONAL SYMBOL SLASH BAR : "⌿" U233f # - / APL FUNCTIONAL SYMBOL SLASH BAR : "⍀" U2340 # \ - APL FUNCTIONAL SYMBOL BACKSLASH BAR : "⍀" U2340 # - \ APL FUNCTIONAL SYMBOL BACKSLASH BAR : "⍁" U2341 # / ⎕ APL FUNCTIONAL SYMBOL QUAD SLASH : "⍁" U2341 # ⎕ / APL FUNCTIONAL SYMBOL QUAD SLASH : "⍂" U2342 # \ ⎕ APL FUNCTIONAL SYMBOL QUAD BACKSLASH : "⍂" U2342 # ⎕ \ APL FUNCTIONAL SYMBOL QUAD BACKSLASH : "⍃" U2343 # < ⎕ APL FUNCTIONAL SYMBOL QUAD LESS-THAN : "⍃" U2343 # ⎕ < APL FUNCTIONAL SYMBOL QUAD LESS-THAN : "⍄" U2344 # > ⎕ APL FUNCTIONAL SYMBOL QUAD GREATER-THAN : "⍄" U2344 # ⎕ > APL FUNCTIONAL SYMBOL QUAD GREATER-THAN : "⍅" U2345 # ← | APL FUNCTIONAL SYMBOL LEFTWARDS VANE : "⍅" U2345 # | ← APL FUNCTIONAL SYMBOL LEFTWARDS VANE : "⍆" U2346 # → | APL FUNCTIONAL SYMBOL RIGHTWARDS VANE : "⍆" U2346 # | → APL FUNCTIONAL SYMBOL RIGHTWARDS VANE : "⍇" U2347 # ← ⎕ APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW : "⍇" U2347 # ⎕ ← APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW : "⍈" U2348 # → ⎕ APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW : "⍈" U2348 # ⎕ → APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW : "⍉" U2349 # ○ \ APL FUNCTIONAL SYMBOL CIRCLE SLOPE : "⍉" U2349 # \ ○ APL FUNCTIONAL SYMBOL CIRCLE SLOPE : "⍊" U234a # _ ⊥ APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR : "⍊" U234a # ⊥ _ APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR : "⍋" U234b # ∆ | APL FUNCTIONAL SYMBOL DELTA STILE : "⍋" U234b # | ∆ APL FUNCTIONAL SYMBOL DELTA STILE : "⍌" U234c # ∨ ⎕ APL FUNCTIONAL SYMBOL QUAD DOWN CARET : "⍌" U234c # ⎕ ∨ APL FUNCTIONAL SYMBOL QUAD DOWN CARET : "⍍" U234d # ∆ ⎕ APL FUNCTIONAL SYMBOL QUAD DELTA : "⍍" U234d # ⎕ ∆ APL FUNCTIONAL SYMBOL QUAD DELTA : "⍎" U234e # ∘ ⊥ APL FUNCTIONAL SYMBOL DOWN TACK JOT : "⍎" U234e # ⊥ ∘ APL FUNCTIONAL SYMBOL DOWN TACK JOT : "⍏" U234f # ↑ - APL FUNCTIONAL SYMBOL UPWARDS VANE : "⍏" U234f # - ↑ APL FUNCTIONAL SYMBOL UPWARDS VANE : "⍐" U2350 # ↑ ⎕ APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW : "⍐" U2350 # ⎕ ↑ APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW /* The next two somehow don't work. However, no extant APL uses "⍑". */ : "⍑" U2351 # ¯ ⊤ APL FUNCTIONAL SYMBOL UP TACK OVERBAR : "⍑" U2351 # ⊤ ¯ APL FUNCTIONAL SYMBOL UP TACK OVERBAR : "⍒" U2352 # ∇ | APL FUNCTIONAL SYMBOL DEL STILE : "⍒" U2352 # | ∇ APL FUNCTIONAL SYMBOL DEL STILE : "⍓" U2353 # ∧ ⎕ APL FUNCTIONAL SYMBOL QUAD UP CARET : "⍓" U2353 # ⎕ ∧ APL FUNCTIONAL SYMBOL QUAD UP CARET : "⍔" U2354 # ∇ ⎕ APL FUNCTIONAL SYMBOL QUAD DEL : "⍔" U2354 # ⎕ ∇ APL FUNCTIONAL SYMBOL QUAD DEL : "⍕" U2355 # ∘ ⊤ APL FUNCTIONAL SYMBOL UP TACK JOT : "⍕" U2355 # ⊤ ∘ APL FUNCTIONAL SYMBOL UP TACK JOT : "⍖" U2356 # ↓ - APL FUNCTIONAL SYMBOL DOWNWARDS VANE : "⍖" U2356 # - ↓ APL FUNCTIONAL SYMBOL DOWNWARDS VANE : "⍗" U2357 # ↓ ⎕ APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW : "⍗" U2357 # ⎕ ↓ APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW /* The is used elsewhere. However, no extant APL uses "⍘". */ : "⍘" U2358 # _ ' APL FUNCTIONAL SYMBOL QUOTE UNDERBAR : "⍙" U2359 # ∆ _ APL FUNCTIONAL SYMBOL DELTA UNDERBAR : "⍙" U2359 # _ ∆ APL FUNCTIONAL SYMBOL DELTA UNDERBAR : "⍚" U235a # ⋄ _ APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR : "⍚" U235a # _ ⋄ APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR : "⍛" U235b # ∘ _ APL FUNCTIONAL SYMBOL JOT UNDERBAR : "⍛" U235b # _ ∘ APL FUNCTIONAL SYMBOL JOT UNDERBAR : "⍜" U235c # ○ _ APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR : "⍜" U235c # _ ○ APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR : "⍝" U235d # ∘ ∩ APL FUNCTIONAL SYMBOL UP SHOE JOT : "⍝" U235d # ∩ ∘ APL FUNCTIONAL SYMBOL UP SHOE JOT : "⍞" U235e # * ¨ APL FUNCTIONAL SYMBOL QUOTE QUAD : "⍞" U235e # ¨ * APL FUNCTIONAL SYMBOL QUOTE QUAD : "⍟" U235f # ○ * APL FUNCTIONAL SYMBOL CIRCLE STAR : "⍟" U235f # * ○ APL FUNCTIONAL SYMBOL CIRCLE STAR : "⍠" U2360 # : ⎕ APL FUNCTIONAL SYMBOL QUAD COLON : "⍠" U2360 # ⎕ : APL FUNCTIONAL SYMBOL QUAD COLON : "⍡" U2361 # ¨ ⊤ APL FUNCTIONAL SYMBOL UP TACK DIAERESIS : "⍡" U2361 # ⊤ ¨ APL FUNCTIONAL SYMBOL UP TACK DIAERESIS : "⍢" U2362 # ¨ ∇ APL FUNCTIONAL SYMBOL DEL DIAERESIS : "⍢" U2362 # ∇ ¨ APL FUNCTIONAL SYMBOL DEL DIAERESIS : "⍣" U2363 # * ¨ APL FUNCTIONAL SYMBOL STAR DIAERESIS : "⍣" U2363 # ¨ * APL FUNCTIONAL SYMBOL STAR DIAERESIS : "⍤" U2364 # ∘ ¨ APL FUNCTIONAL SYMBOL JOT DIAERESIS : "⍤" U2364 # ¨ ∘ APL FUNCTIONAL SYMBOL JOT DIAERESIS : "⍥" U2365 # ○ ¨ APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS : "⍥" U2365 # ¨ ○ APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS : "⍦" U2366 # ∪ | APL FUNCTIONAL SYMBOL DOWN SHOE STILE : "⍦" U2366 # | ∪ APL FUNCTIONAL SYMBOL DOWN SHOE STILE : "⍧" U2367 # ⊂ | APL FUNCTIONAL SYMBOL LEFT SHOE STILE : "⍧" U2367 # | ⊂ APL FUNCTIONAL SYMBOL LEFT SHOE STILE : "⍨" U2368 # ~ ¨ APL FUNCTIONAL SYMBOL TILDE DIAERESIS : "⍩" U2369 # ¨ > APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS : "⍩" U2369 # > ¨ APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS : "⍫" U236b # ∇ ~ APL FUNCTIONAL SYMBOL DEL TILDE : "⍫" U236b # ~ ∇ APL FUNCTIONAL SYMBOL DEL TILDE <0> : "⍬" U236c # 0 ~ APL FUNCTIONAL SYMBOL ZILDE <0> : "⍬" U236c # ~ 0 APL FUNCTIONAL SYMBOL ZILDE : "⍭" U236d # | ~ APL FUNCTIONAL SYMBOL STILE TILDE : "⍭" U236d # ~ | APL FUNCTIONAL SYMBOL STILE TILDE /* The is used elsewhere. However, no extant APL uses "⍮". */ : "⍮" U236e # ; _ APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR : "⍯" U236f # ≠ ⎕ APL FUNCTIONAL SYMBOL QUAD NOT EQUAL : "⍯" U236f # ⎕ ≠ APL FUNCTIONAL SYMBOL QUAD NOT EQUAL : "⍰" U2370 # ? ⎕ APL FUNCTIONAL SYMBOL QUAD QUESTION : "⍰" U2370 # ⎕ ? APL FUNCTIONAL SYMBOL QUAD QUESTION : "⍱" U2371 # ∨ ~ APL FUNCTIONAL SYMBOL DOWN CARET TILDE : "⍱" U2371 # ~ ∨ APL FUNCTIONAL SYMBOL DOWN CARET TILDE : "⍲" U2372 # ∧ ~ APL FUNCTIONAL SYMBOL UP CARET TILDE : "⍲" U2372 # ~ ∧ APL FUNCTIONAL SYMBOL UP CARET TILDE : "⍶" U2376 # ⍺ _ APL FUNCTIONAL SYMBOL ALPHA UNDERBAR : "⍶" U2376 # _ ⍺ APL FUNCTIONAL SYMBOL ALPHA UNDERBAR : "⍷" U2377 # ∊ _ APL FUNCTIONAL SYMBOL EPSILON UNDERBAR : "⍷" U2377 # _ ∊ APL FUNCTIONAL SYMBOL EPSILON UNDERBAR : "⍸" U2378 # ⍳ _ APL FUNCTIONAL SYMBOL IOTA UNDERBAR : "⍸" U2378 # _ ⍳ APL FUNCTIONAL SYMBOL IOTA UNDERBAR : "⍹" U2379 # ⍵ _ APL FUNCTIONAL SYMBOL OMEGA UNDERBAR : "⍹" U2379 # _ ⍵ APL FUNCTIONAL SYMBOL OMEGA UNDERBAR XCOMM Diacritics used in African languages : "ɛ́" # LATIN SMALL LETTER EPSILON plus COMBINING ACUTE : "ɛ̀" # LATIN SMALL LETTER EPSILON plus COMBINING GRAVE : "ɛ̂" # LATIN SMALL LETTER EPSILON plus COMBINING CIRCUMFLEX : "ɛ̌" # LATIN SMALL LETTER EPSILON plus COMBINING CARON : "ɛ̄" # LATIN SMALL LETTER EPSILON plus COMBINING MACRON : "ɛ̃" # LATIN SMALL LETTER EPSILON plus COMBINING TILDE : "ɛ̃́" # LATIN SMALL LETTER EPSILON plus COMBINING TILDE and COMBINING ACUTE : "ɛ̃̀" # LATIN SMALL LETTER EPSILON plus COMBINING TILDE and COMBINING GRAVE : "Ɛ́" # LATIN CAPITAL LETTER EPSILON plus COMBINING ACUTE : "Ɛ̀" # LATIN CAPITAL LETTER EPSILON plus COMBINING GRAVE : "Ɛ̂" # LATIN CAPITAL LETTER EPSILON plus COMBINING CIRCUMFLEX : "Ɛ̌" # LATIN CAPITAL LETTER EPSILON plus COMBINING CARON : "Ɛ̄" # LATIN CAPITAL LETTER EPSILON plus COMBINING MACRON : "Ɛ̃" # LATIN CAPITAL LETTER EPSILON plus COMBINING TILDE : "Ɛ̃́" # LATIN CAPITAL LETTER EPSILON plus COMBINING TILDE and COMBINING ACUTE : "Ɛ̃̀" # LATIN CAPITAL LETTER EPSILON plus COMBINING TILDE and COMBINING GRAVE : "ɩ́" # LATIN SMALL LETTER IOTA plus COMBINING ACUTE : "ɩ̀" # LATIN SMALL LETTER IOTA plus COMBINING GRAVE : "ɩ̂" # LATIN SMALL LETTER IOTA plus COMBINING CIRCUMFLEX : "ɩ̌" # LATIN SMALL LETTER IOTA plus COMBINING CARON : "ɩ̄" # LATIN SMALL LETTER IOTA plus COMBINING MACRON : "Ɩ́" # LATIN CAPITAL LETTER IOTA plus COMBINING ACUTE : "Ɩ̀" # LATIN CAPITAL LETTER IOTA plus COMBINING GRAVE : "Ɩ̂" # LATIN CAPITAL LETTER IOTA plus COMBINING CIRCUMFLEX : "Ɩ̌" # LATIN CAPITAL LETTER IOTA plus COMBINING CARON : "Ɩ̄" # LATIN CAPITAL LETTER IOTA plus COMBINING MACRON : "ɔ́" # LATIN SMALL LETTER OPEN O plus COMBINING ACUTE : "ɔ̀" # LATIN SMALL LETTER OPEN O plus COMBINING GRAVE : "ɔ̂" # LATIN SMALL LETTER OPEN O plus COMBINING CIRCUMFLEX : "ɔ̌" # LATIN SMALL LETTER OPEN O plus COMBINING CARON : "ɔ̄" # LATIN SMALL LETTER OPEN O plus COMBINING MACRON : "ɔ̃" # LATIN SMALL LETTER OPEN O plus COMBINING TILDE : "ɔ̃́" # LATIN SMALL LETTER OPEN O plus COMBINING TILDE and COMBINING ACUTE : "ɔ̃̀" # LATIN SMALL LETTER OPEN O plus COMBINING TILDE and COMBINING GRAVE : "Ɔ́" # LATIN CAPITAL LETTER OPEN O plus COMBINING ACUTE : "Ɔ̀" # LATIN CAPITAL LETTER OPEN O plus COMBINING GRAVE : "Ɔ̂" # LATIN CAPITAL LETTER OPEN O plus COMBINING CIRCUMFLEX : "Ɔ̌" # LATIN CAPITAL LETTER OPEN O plus COMBINING CARON : "Ɔ̄" # LATIN CAPITAL LETTER OPEN O plus COMBINING MACRON : "Ɔ̃" # LATIN CAPITAL LETTER OPEN O plus COMBINING TILDE : "Ɔ̃́" # LATIN CAPITAL LETTER OPEN O plus COMBINING TILDE and COMBINING ACUTE : "Ɔ̃̀" # LATIN CAPITAL LETTER OPEN O plus COMBINING TILDE and COMBINING GRAVE : "ǝ́" # LATIN SMALL LETTER TURNED E plus COMBINING ACUTE : "ǝ̀" # LATIN SMALL LETTER TURNED E plus COMBINING GRAVE : "ǝ̂" # LATIN SMALL LETTER TURNED E plus COMBINING CIRCUMFLEX : "ǝ̌" # LATIN SMALL LETTER TURNED E plus COMBINING CARON : "ǝ̄" # LATIN SMALL LETTER TURNED E plus COMBINING MACRON : "ǝ̃" # LATIN SMALL LETTER TURNED E plus COMBINING TILDE : "ǝ̃́" # LATIN SMALL LETTER TURNED E plus COMBINING TILDE and COMBINING ACUTE : "ǝ̃̀" # LATIN SMALL LETTER TURNED E plus COMBINING TILDE and COMBINING GRAVE : "Ǝ́" # LATIN CAPITAL LETTER TURNED E plus COMBINING ACUTE : "Ǝ̀" # LATIN CAPITAL LETTER TURNED E plus COMBINING GRAVE : "Ǝ̂" # LATIN CAPITAL LETTER TURNED E plus COMBINING CIRCUMFLEX : "Ǝ̌" # LATIN CAPITAL LETTER TURNED E plus COMBINING CARON : "Ǝ̄" # LATIN CAPITAL LETTER TURNED E plus COMBINING MACRON : "Ǝ̃" # LATIN CAPITAL LETTER TURNED E plus COMBINING TILDE : "Ǝ̃́" # LATIN CAPITAL LETTER TURNED E plus COMBINING TILDE and COMBINING ACUTE : "Ǝ̃̀" # LATIN CAPITAL LETTER TURNED E plus COMBINING TILDE and COMBINING GRAVE : "ʋ́" # LATIN SMALL LETTER V WITH HOOK plus COMBINING ACUTE : "ʋ̀" # LATIN SMALL LETTER V WITH HOOK plus COMBINING GRAVE : "ʋ̂" # LATIN SMALL LETTER V WITH HOOK plus COMBINING CIRCUMFLEX : "ʋ̌" # LATIN SMALL LETTER V WITH HOOK plus COMBINING CARON : "ʋ̄" # LATIN SMALL LETTER V WITH HOOK plus COMBINING MACRON : "Ʋ́" # LATIN CAPITAL LETTER V WITH HOOK plus COMBINING ACUTE : "Ʋ̀" # LATIN CAPITAL LETTER V WITH HOOK plus COMBINING GRAVE : "Ʋ̂" # LATIN CAPITAL LETTER V WITH HOOK plus COMBINING CIRCUMFLEX : "Ʋ̌" # LATIN CAPITAL LETTER V WITH HOOK plus COMBINING CARON : "Ʋ̄" # LATIN CAPITAL LETTER V WITH HOOK plus COMBINING MACRON : "ʊ́" # LATIN SMALL LETTER UPSILON plus COMBINING ACUTE : "ʊ̀" # LATIN SMALL LETTER UPSILONK plus COMBINING GRAVE : "ʊ̂" # LATIN SMALL LETTER UPSILON plus COMBINING CIRCUMFLEX : "ʊ̌" # LATIN SMALL LETTER UPSILON plus COMBINING CARON : "ʊ̄" # LATIN SMALL LETTER UPSILON plus COMBINING MACRON : "Ʊ́" # LATIN CAPITAL LETTER UPSILON plus COMBINING ACUTE : "Ʊ̀" # LATIN CAPITAL LETTER UPSILONK plus COMBINING GRAVE : "Ʊ̂" # LATIN CAPITAL LETTER UPSILON plus COMBINING CIRCUMFLEX : "Ʊ̌" # LATIN CAPITAL LETTER UPSILON plus COMBINING CARON : "Ʊ̄" # LATIN CAPITAL LETTER UPSILON plus COMBINING MACRON : "ã́" # LATIN SMALL LETTER A plus COMBINING TILDE and COMBINING ACUTE : "ã̀" # LATIN SMALL LETTER A plus COMBINING TILDE and COMBINING GRAVE : "Ã́" # LATIN CAPITAL LETTER A plus COMBINING TILDE and COMBINING ACUTE : "Ã̀" # LATIN CAPITAL LETTER A plus COMBINING TILDE and COMBINING GRAVE : "ẽ́" # LATIN SMALL LETTER E plus COMBINING TILDE and COMBINING ACUTE : "ẽ̀" # LATIN SMALL LETTER E plus COMBINING TILDE and COMBINING GRAVE : "Ẽ́" # LATIN CAPITAL LETTER E plus COMBINING TILDE and COMBINING ACUTE : "Ẽ̀" # LATIN CAPITAL LETTER E plus COMBINING TILDE and COMBINING GRAVE : "ĩ́" # LATIN SMALL LETTER I plus COMBINING TILDE and COMBINING ACUTE : "ĩ̀" # LATIN SMALL LETTER I plus COMBINING TILDE and COMBINING GRAVE : "Ĩ́" # LATIN CAPITAL LETTER I plus COMBINING TILDE and COMBINING ACUTE : "Ĩ̀" # LATIN CAPITAL LETTER I plus COMBINING TILDE and COMBINING GRAVE : "õ̀" # LATIN SMALL LETTER O plus COMBINING TILDE and COMBINING GRAVE : "Õ̀" # LATIN CAPITAL LETTER O plus COMBINING TILDE and COMBINING GRAVE : "ũ̀" # LATIN SMALL LETTER U plus COMBINING TILDE and COMBINING GRAVE : "Ũ̀" # LATIN CAPITAL LETTER U plus COMBINING TILDE and COMBINING GRAVE : "m̀" # LATIN SMALL LETTER M plus COMBINING GRAVE : "M̀" # LATIN CAPITAL LETTER M plus COMBINING GRAVE : "ŋ́" # LATIN SMALL LETTER ENG plus COMBINING ACUTE : "ŋ̀" # LATIN SMALL LETTER ENG plus COMBINING GRAVE : "Ŋ́" # LATIN CAPITAL LETTER ENG plus COMBINING ACUTE : "Ŋ̀" # LATIN CAPITAL LETTER ENG plus COMBINING GRAVE libX11-1.8.12/nls/en_US.UTF-8/XLC_LOCALE.pre0000644014310600000120000001024014763154126013106 XCOMM XLocale Database Sample for en_US.UTF-8 XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET on_demand_loading True object_name generic XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class (ISO8859 families) fs1 { charset { name ISO8859-1:GR } font { primary ISO8859-1:GR } } XCOMM fs2 class (ISO8859 families) fs2 { charset { name ISO8859-2:GR } font { primary ISO8859-2:GR } } XCOMM fs3 class (ISO8859 families) fs3 { charset { name ISO8859-3:GR } font { primary ISO8859-3:GR } } XCOMM fs4 class (ISO8859 families) fs4 { charset { name ISO8859-4:GR } font { primary ISO8859-4:GR } } XCOMM fs5 class (ISO8859 families) fs5 { charset { name ISO8859-5:GR } font { primary ISO8859-5:GR } } XCOMM fs6 class (koi8-r) fs6 { charset { name KOI8-R:GR } font { primary KOI8-R:GR } } XCOMM fs7 class (ISO8859 families) fs7 { charset { name ISO8859-7:GR } font { primary ISO8859-7:GR } } XCOMM fs8 class (ISO8859 families) fs8 { charset { name ISO8859-9:GR } font { primary ISO8859-9:GR } } XCOMM fs9 class (ISO8859 families) fs9 { charset { name ISO8859-13:GR } font { primary ISO8859-13:GR } } XCOMM fs10 class (ISO8859 families) fs10 { charset { name ISO8859-14:GR } font { primary ISO8859-14:GR } } XCOMM fs11 class (ISO8859 families) fs11 { charset { name ISO8859-15:GR } font { primary ISO8859-15:GR } } XCOMM fs12 class (Kanji) fs12 { charset { name JISX0208.1983-0:GL } font { primary JISX0208.1983-0:GL } } XCOMM fs13 class (Korean Character) fs13 { charset { name KSC5601.1987-0:GL } font { primary KSC5601.1987-0:GL } } XCOMM fs14 class (Chinese Han Character) fs14 { charset { name GB2312.1980-0:GL } font { primary GB2312.1980-0:GL } } XCOMM fs15 class (Half Kana) fs15 { charset { name JISX0201.1976-0:GR } font { primary JISX0201.1976-0:GR vertical_rotate all } } XCOMM ISO10646 should come last so the fonts above will actually be used XCOMM fs16 class fs16 { charset { name ISO10646-1 } font { primary ISO10646-1 } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name UTF-8 mb_cur_max 6 state_depend_encoding False XCOMM cs0 class cs0 { side GL:Default length 1 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 ct_encoding ISO8859-1:GR } XCOMM cs2 class cs2 { side GR length 1 ct_encoding ISO8859-2:GR } XCOMM cs3 class cs3 { side GR length 1 ct_encoding ISO8859-3:GR } XCOMM cs4 class cs4 { side GR length 1 ct_encoding ISO8859-4:GR } XCOMM cs5 class cs5 { side GR length 1 ct_encoding ISO8859-5:GR } XCOMM cs6 class cs6 { side GR length 1 ct_encoding ISO8859-7:GR } XCOMM cs7 class cs7 { side GR length 1 ct_encoding ISO8859-9:GR } XCOMM cs8 class cs8 { side GR length 1 ct_encoding ISO8859-13:GR } XCOMM cs9 class cs9 { side GR length 1 ct_encoding ISO8859-14:GR } XCOMM cs10 class cs10 { side GR length 1 ct_encoding ISO8859-15:GR } XCOMM cs11 class cs11 { side GR length 2 ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\ JISX0208.1983-1:GL; JISX0208.1983-1:GR } XCOMM cs12 class cs12 { side GL length 2 ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\ KSC5601.1987-1:GL; KSC5601.1987-1:GR } XCOMM cs13 class cs13 { side GR length 2 ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR } XCOMM cs14 class cs14 { side GR length 1 ct_encoding JISX0201.1976-0:GR } XCOMM cs15 class cs15 { side none ct_encoding ISO10646-1 } END XLC_XLOCALE libX11-1.8.12/nls/en_US.UTF-8/XI18N_OBJS0000644014310600000120000000053214763154126012303 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for euro locales # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XOM common/xomGeneric _XomGenericOpenOM # XOM_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister libX11-1.8.12/nls/microsoft-cp1255/0000755014310600000120000000000014763154167012130 5libX11-1.8.12/nls/microsoft-cp1255/XLC_LOCALE.pre0000644014310600000120000000223214763154126014217 XCOMM XLocale Database Sample for microsoft-cp1255. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary MICROSOFT-CP1255:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name MICROSOFT-CP1255:GR } font { primary MICROSOFT-CP1255:GR } } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name MICROSOFT-CP1255 side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name MICROSOFT-CP1255 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding MICROSOFT-CP1255:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding MICROSOFT-CP1255:GR } END XLC_XLOCALE libX11-1.8.12/nls/microsoft-cp1255/XI18N_OBJS0000644014310600000120000000053414763154126013414 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for microsoft-cp1255 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/microsoft-cp1255/Compose.pre0000644014310600000120000000000014763154126014146 libX11-1.8.12/nls/fi_FI.UTF-8/0000755014310600000120000000000014763154167010764 5libX11-1.8.12/nls/fi_FI.UTF-8/XI18N_OBJS0000644014310600000120000000000014763154126012234 libX11-1.8.12/nls/fi_FI.UTF-8/Compose.pre0000644014310600000120000010712014763154126013015 XCOMM XCOMM Official compose sequences for Finland based on SFS 5966:2019 standard XCOMM XCOMM This compose sequence map implements all the functionality of Annex 3 XCOMM and Annex 4 of the standard and additionally defines the sequences XCOMM provided in en_US.UTF-8/Compose. SFS 5966 sequences override any XCOMM conflicting rules from en_US.UTF-8/Compose. XCOMM XCOMM Annex 1 of the standard is implemented in the keymap symbols/fi XCOMM XCOMM Complete rewrite by Marko Myllynen XCOMM Original version by Troy Korjuslommi XCOMM XCOMM Use en_US.UTF-8/Compose as the base compose sequence definition set include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" XCOMM Define all the sequences of the standard overriding any sequence XCOMM from en_US.UTF-8/Compose if such a sequence was provided already XCOMM Sequences from Annex 3 XCOMM Sequences with COMBINING ACUTE ACCENT / : "´" U00B4 # ACUTE ACCENT : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE : "Á" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE : "Í" U00CD # LATIN CAPITAL LETTER I WITH ACUTE : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE : "ý" U00FD # LATIN SMALL LETTER Y WITH ACUTE : "Ý" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE XCOMM Sequences with COMBINING BREVE / : "˘" U02D8 # BREVE : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE : "ĕ" U0115 # LATIN SMALL LETTER E WITH BREVE : "Ĕ" U0114 # LATIN CAPITAL LETTER E WITH BREVE : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE : "ĭ" U012D # LATIN SMALL LETTER I WITH BREVE : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE : "ŏ" U014F # LATIN SMALL LETTER O WITH BREVE : "Ŏ" U014E # LATIN CAPITAL LETTER O WITH BREVE : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE XCOMM Sequences with COMBINING CARON / : "ˇ" U02C7 # CARON : "ǎ" U01CE # LATIN SMALL LETTER A WITH CARON : "Ǎ" U01CD # LATIN CAPITAL LETTER A WITH CARON : "č" U010D # LATIN SMALL LETTER C WITH CARON : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON : "ď" U010F # LATIN SMALL LETTER D WITH CARON : "Ď" U010E # LATIN CAPITAL LETTER D WITH CARON : "ě" U011B # LATIN SMALL LETTER E WITH CARON : "Ě" U011A # LATIN CAPITAL LETTER E WITH CARON : "ǧ" U01E7 # LATIN SMALL LETTER G WITH CARON : "Ǧ" U01E6 # LATIN CAPITAL LETTER G WITH CARON : "ȟ" U021F # LATIN SMALL LETTER H WITH CARON : "Ȟ" U021E # LATIN CAPITAL LETTER H WITH CARON : "ǐ" U01D0 # LATIN SMALL LETTER I WITH CARON : "Ǐ" U01CF # LATIN CAPITAL LETTER I WITH CARON : "ǩ" U01E9 # LATIN SMALL LETTER K WITH CARON : "Ǩ" U01E8 # LATIN CAPITAL LETTER K WITH CARON : "ľ" U013E # LATIN SMALL LETTER L WITH CARON : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON : "ň" U0148 # LATIN SMALL LETTER N WITH CARON : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON : "ǒ" U01D2 # LATIN SMALL LETTER O WITH CARON : "Ǒ" U01D1 # LATIN CAPITAL LETTER O WITH CARON : "ř" U0159 # LATIN SMALL LETTER R WITH CARON : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON : "š" U0161 # LATIN SMALL LETTER S WITH CARON : "Š" U0160 # LATIN CAPITAL LETTER S WITH CARON : "ť" U0165 # LATIN SMALL LETTER T WITH CARON : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON : "ǔ" U01D4 # LATIN SMALL LETTER U WITH CARON : "Ǔ" U01D3 # LATIN CAPITAL LETTER U WITH CARON : "ž" U017E # LATIN SMALL LETTER Z WITH CARON : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON : "Ǯ" U01EE # LATIN CAPITAL LETTER EZH WITH CARON XCOMM Sequences with COMBINING CEDILLA / : "¸" U00B8 # CEDILLA : "ç" U00E7 # LATIN SMALL LETTER C WITH CEDILLA : "Ç" U00C7 # LATIN CAPITAL LETTER C WITH CEDILLA : "ģ" U0123 # LATIN SMALL LETTER G WITH CEDILLA : "Ģ" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA : "ķ" U0137 # LATIN SMALL LETTER K WITH CEDILLA : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA : "Ļ" U013B # LATIN CAPITAL LETTER L WITH CEDILLA : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA : "Ņ" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA : "ŗ" U0157 # LATIN SMALL LETTER R WITH CEDILLA : "Ŗ" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA : "ş" U015F # LATIN SMALL LETTER S WITH CEDILLA : "Ş" U015E # LATIN CAPITAL LETTER S WITH CEDILLA : "ţ" U0163 # LATIN SMALL LETTER T WITH CEDILLA : "Ţ" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA XCOMM Sequences with COMBINING CIRCUMFLEX ACCENT / : "^" U005E # CIRCUMFLEX : "â" U00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX : "Â" U00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX : "ĉ" U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX : "Ĉ" U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX : "ê" U00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX : "Ê" U00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX : "ĝ" U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX : "Ĝ" U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX : "ĥ" U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX : "Ĥ" U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX : "î" U00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX : "Î" U00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX : "ĵ" U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX : "Ĵ" U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX : "ô" U00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX : "Ô" U00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX : "ŝ" U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX : "Ŝ" U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX : "û" U00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX : "Û" U00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX : "Ŵ" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX : "ŷ" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX XCOMM Sequences with COMBINING COMMA BELOW / : "ș" U0219 # LATIN SMALL LETTER S WITH COMMA BELOW : "Ș" U0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW : "ț" U021B # LATIN SMALL LETTER T WITH COMMA BELOW : "Ț" U021A # LATIN CAPITAL LETTER T WITH COMMA BELOW XCOMM Sequences with COMBINING DIAERESIS / : "¨" U00A8 # DIAERESIS : "ä" U00E4 # LATIN SMALL LETTER A WITH DIAERESIS : "Ä" U00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS : "ë" U00EB # LATIN SMALL LETTER E WITH DIAERESIS : "Ë" U00CB # LATIN CAPITAL LETTER E WITH DIAERESIS : "ï" U00EF # LATIN SMALL LETTER I WITH DIAERESIS : "Ï" U00CF # LATIN CAPITAL LETTER I WITH DIAERESIS : "ö" U00F6 # LATIN SMALL LETTER O WITH DIAERESIS : "Ö" U00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS : "ü" U00FC # LATIN SMALL LETTER U WITH DIAERESIS : "Ü" U00DC # LATIN CAPITAL LETTER U WITH DIAERESIS : "ẅ" U1E85 # LATIN SMALL LETTER W WITH DIAERESIS : "Ẅ" U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS : "ÿ" U00FF # LATIN SMALL LETTER Y WITH DIAERESIS : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS XCOMM Sequences with COMBINING DOT ABOVE / : "˙" U02D9 # DOT ABOVE : "ḃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE : "Ḃ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE : "ċ" U010B # LATIN SMALL LETTER C WITH DOT ABOVE : "Ċ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE : "ḋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE : "Ḋ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE : "ė" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE : "Ė" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE : "ḟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE : "Ḟ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE : "ġ" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE : "Ġ" U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE : "İ" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE : "ṁ" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE : "Ṁ" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE

: "ṗ" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE

: "Ṗ" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE : "Ṡ" U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE : "ż" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE : "Ż" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE XCOMM Sequences with COMBINING DOT BELOW / XCOMM : " " U.... # DOT BELOW : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW : "Ẹ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW : "ọ" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW : "Ụ" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW : "Ỵ" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW XCOMM Sequences with COMBINING DOUBLE ACUTE ACCENT / : "˝" U02DD # DOUBLE ACUTE ACCENT : "ő" U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE : "Ő" U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE : "ű" U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE : "Ű" U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE XCOMM Sequences with COMBINING GRAVE ACCENT / : "`" U0060 # GRAVE ACCENT : "à" U00E0 # LATIN SMALL LETTER A WITH GRAVE : "À" U00C0 # LATIN CAPITAL LETTER A WITH GRAVE : "è" U00E8 # LATIN SMALL LETTER E WITH GRAVE : "È" U00C8 # LATIN CAPITAL LETTER E WITH GRAVE : "ì" U00EC # LATIN SMALL LETTER I WITH GRAVE : "Ì" U00CC # LATIN CAPITAL LETTER I WITH GRAVE : "ò" U00F2 # LATIN SMALL LETTER O WITH GRAVE : "Ò" U00D2 # LATIN CAPITAL LETTER O WITH GRAVE : "ù" U00F9 # LATIN SMALL LETTER U WITH GRAVE : "Ù" U00D9 # LATIN CAPITAL LETTER U WITH GRAVE : "ẁ" U1E81 # LATIN SMALL LETTER W WITH GRAVE : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE XCOMM Sequences with COMBINING MACRON / : "¯" U00AF # MACRON : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON : "ī" U012B # LATIN SMALL LETTER I WITH MACRON : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON : "ō" U014D # LATIN SMALL LETTER O WITH MACRON : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON : "ū" U016B # LATIN SMALL LETTER U WITH MACRON : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON : "ǣ" U01E3 # LATIN SMALL LETTER AE WITH MACRON : "Ǣ" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON XCOMM Sequences with COMBINING OGONEK / : "˛" U02DB # OGONEK : "ą" U0105 # LATIN SMALL LETTER A WITH OGONEK : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK : "ę" U0119 # LATIN SMALL LETTER E WITH OGONEK : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK : "į" U012F # LATIN SMALL LETTER I WITH OGONEK : "Į" U012E # LATIN CAPITAL LETTER I WITH OGONEK : "ǫ" U01EB # LATIN SMALL LETTER O WITH OGONEK : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK XCOMM Sequences with COMBINING RING ABOVE / : "˚" U02DA # RING ABOVE : "å" U00E5 # LATIN SMALL LETTER A WITH RING ABOVE : "Å" U00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE : "Ů" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE XCOMM Sequences with COMBINING TILDE / : "~" U007E # TILDE : "ã" U00E3 # LATIN SMALL LETTER A WITH TILDE : "Ã" U00C3 # LATIN CAPITAL LETTER A WITH TILDE : "ẽ" U1EBD # LATIN SMALL LETTER E WITH TILDE : "Ẽ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE : "ĩ" U0129 # LATIN SMALL LETTER I WITH TILDE : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE : "ñ" U00F1 # LATIN SMALL LETTER N WITH TILDE : "Ñ" U00D1 # LATIN CAPITAL LETTER N WITH TILDE : "õ" U00F5 # LATIN SMALL LETTER O WITH TILDE : "Õ" U00D5 # LATIN CAPITAL LETTER O WITH TILDE : "ũ" U0169 # LATIN SMALL LETTER U WITH TILDE : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE : "Ỹ" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE XCOMM Sequences with AUXILIARY STROKE / : "đ" U0111 # LATIN SMALL LETTER D WITH STROKE : "Đ" U0110 # LATIN CAPITAL LETTER D WITH STROKE : "ǥ" U01E5 # LATIN SMALL LETTER G WITH STROKE : "Ǥ" U01E4 # LATIN CAPITAL LETTER G WITH STROKE : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE : "Ħ" U0126 # LATIN CAPITAL LETTER H WITH STROKE : "ł" U0142 # LATIN SMALL LETTER L WITH STROKE : "Ł" U0141 # LATIN CAPITAL LETTER L WITH STROKE : "ø" U00F8 # LATIN SMALL LETTER O WITH STROKE : "Ø" U00D8 # LATIN CAPITAL LETTER O WITH STROKE : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE XCOMM Sequences from Annex 4 XCOMM Sequences with COMBINING BREVE / : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE XCOMM Sequences with COMBINING CIRCUMFLEX ACCENT / : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE XCOMM Sequences with COMBINING DIAERESIS / : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON XCOMM Sequences with COMBINING DOT ABOVE / : "ȧ" U0227 # LATIN SMALL LETTER A WITH DOT ABOVE : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON : "Ȧ" U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON XCOMM Sequences with COMBINING HOOK ABOVE / : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE : "ỏ" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE : "Ủ" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE : "ỷ" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE XCOMM Sequences with COMBINING HORN / : "ơ" U01A1 # LATIN SMALL LETTER O WITH HORN : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE : "Ơ" U01A0 # LATIN CAPITAL LETTER O WITH HORN : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE : "ư" U01B0 # LATIN SMALL LETTER U WITH HORN : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE : "Ư" U01AF # LATIN CAPITAL LETTER U WITH HORN : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE XCOMM Sequences with COMBINING OGONEK / : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON XCOMM Sequences with COMBINING RING ABOVE / : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE XCOMM Additional sequences from Annex 5 for the reportoire of the MES-2 XCOMM (Multilingual European Subset No. 2 in ISO/IEC 10646, Collection 282) : "ƒ" U0192 # LATIN SMALL LETTER F WITH HOOK : "fi" UFB01 # LATIN SMALL LIGATURE FI : "fl" UFB02 # LATIN SMALL LIGATURE FL : "ij" U0133 # LATIN SMALL LIGATURE IJ : "IJ" U0132 # LATIN CAPITAL LIGATURE IJ : "ŀ" U0140 # LATIN SMALL LETTER L WITH MIDDLE DOT : "Ŀ" U013F # LATIN CAPITAL LETTER L WITH MIDDLE DOT : "ʼn" U0149 # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE : "ɼ" U027C # LATIN SMALL LETTER R WITH LONG LEG : "ſ" U017F # LATIN SMALL LETTER LONG S : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE libX11-1.8.12/nls/fi_FI.UTF-8/XLC_LOCALE.pre0000644014310600000120000000000014763154126013042 libX11-1.8.12/nls/Makefile.in0000644014310600000120000010646014763154147011200 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Makefile -*- # Rules for generating files using the C pre-processor # (Replaces CppFileTarget from Imake) VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = nls ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(nobase_dist_x11locale_DATA) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(x11localedir)" \ "$(DESTDIR)$(x11localedir)" "$(DESTDIR)$(x11localedir)" DATA = $(nobase_dist_x11locale_DATA) $(nobase_x11locale_DATA) \ $(x11locale_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ $$am__collect_skipped_logs \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(IGNORE_SKIPPED_LOGS)'; then \ am__collect_skipped_logs='--collect-skipped-logs no'; \ else \ am__collect_skipped_logs=''; \ fi; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)' RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/cpprules.in \ $(top_srcdir)/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ x11localedir = $(X11_LOCALEDATADIR) CLEANFILES = locale.alias locale.alias.l1 locale.alias.l2 compose.dir \ compose.dir.l1 compose.dir.l2 locale.dir locale.dir.l1 \ locale.dir.l2 XLC_LOCALE $(nobase_x11locale_DATA) SUFFIXES = .pre EXTRA_DIST = locale.alias.pre compose.dir.pre locale.dir.pre \ compose-check.pl $(nobase_x11locale_DATA:%=%.pre) x11locale_DATA = locale.alias locale.dir compose.dir C_SED = LC_CTYPE=C $(SED) WCHAR32_FLAGS = -DWCHAR32=@WCHAR32@ CPP_FILES_FLAGS = $(WCHAR32_FLAGS) # Translate XCOMM into pound sign with sed, rather than passing -DXCOMM=XCOMM # to cpp, because that trick does not work on all ANSI C preprocessors. # Delete line numbers from the cpp output (-P is not portable, I guess). # Allow XCOMM to be preceded by whitespace and provide a means of generating # output lines with trailing backslashes. # Allow XHASH to always be substituted, even in cases where XCOMM isn't. CPP_SED_MAGIC = $(C_SED) -e '/^\# *[0-9][0-9]* *.*$$/d' \ -e '/^\#line *[0-9][0-9]* *.*$$/d' \ -e '/^[ ]*XCOMM$$/s/XCOMM/\#/' \ -e '/^[ ]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/\#/' \ -e '/^[ ]*XHASH/s/XHASH/\#/' \ -e 's,X11_LOCALEDATADIR,$(X11_LOCALEDATADIR),g' \ -e '/\@\@$$/s/\@\@$$/\\/' \ -e '/^$$/d' @HAVE_PERL_TRUE@LOG_COMPILER = $(PERL) @HAVE_PERL_TRUE@TESTS = compose-check.pl # Per-locale data files nobase_dist_x11locale_DATA = $(locales:%=%/XI18N_OBJS) nobase_x11locale_DATA = $(locales:%=%/XLC_LOCALE) $(locales:%=%/Compose) all: all-am .SUFFIXES: .SUFFIXES: .pre .log .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/cpprules.in $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign nls/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign nls/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/cpprules.in $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-nobase_dist_x11localeDATA: $(nobase_dist_x11locale_DATA) @$(NORMAL_INSTALL) @list='$(nobase_dist_x11locale_DATA)'; test -n "$(x11localedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(x11localedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(x11localedir)" || exit 1; \ fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ echo " $(MKDIR_P) '$(DESTDIR)$(x11localedir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(x11localedir)/$$dir"; }; \ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(x11localedir)/$$dir'"; \ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(x11localedir)/$$dir" || exit $$?; }; \ done uninstall-nobase_dist_x11localeDATA: @$(NORMAL_UNINSTALL) @list='$(nobase_dist_x11locale_DATA)'; test -n "$(x11localedir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ dir='$(DESTDIR)$(x11localedir)'; $(am__uninstall_files_from_dir) install-nobase_x11localeDATA: $(nobase_x11locale_DATA) @$(NORMAL_INSTALL) @list='$(nobase_x11locale_DATA)'; test -n "$(x11localedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(x11localedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(x11localedir)" || exit 1; \ fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ echo " $(MKDIR_P) '$(DESTDIR)$(x11localedir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(x11localedir)/$$dir"; }; \ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(x11localedir)/$$dir'"; \ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(x11localedir)/$$dir" || exit $$?; }; \ done uninstall-nobase_x11localeDATA: @$(NORMAL_UNINSTALL) @list='$(nobase_x11locale_DATA)'; test -n "$(x11localedir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ dir='$(DESTDIR)$(x11localedir)'; $(am__uninstall_files_from_dir) install-x11localeDATA: $(x11locale_DATA) @$(NORMAL_INSTALL) @list='$(x11locale_DATA)'; test -n "$(x11localedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(x11localedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(x11localedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(x11localedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(x11localedir)" || exit $$?; \ done uninstall-x11localeDATA: @$(NORMAL_UNINSTALL) @list='$(x11locale_DATA)'; test -n "$(x11localedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(x11localedir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ output_system_information () \ { \ echo; \ { uname -a | $(AWK) '{ \ printf "System information (uname -a):"; \ for (i = 1; i < NF; ++i) \ { \ if (i != 2) \ printf " %s", $$i; \ } \ printf "\n"; \ }'; } 2>&1; \ if test -r /etc/os-release; then \ echo "Distribution information (/etc/os-release):"; \ sed 8q /etc/os-release; \ elif test -r /etc/issue; then \ echo "Distribution information (/etc/issue):"; \ cat /etc/issue; \ fi; \ }; \ please_report () \ { \ echo "Some test(s) failed. Please report this to $(PACKAGE_BUGREPORT),"; \ echo "together with the test-suite.log file (gzipped) and your system"; \ echo "information. Thanks."; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ output_system_information; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG) for debugging.$${std}";\ if test -n "$(PACKAGE_BUGREPORT)"; then \ please_report | sed -e "s/^/$${col}/" -e s/'$$'/"$${std}"/; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @$(am__rm_f) $(RECHECK_LOGS) @$(am__rm_f) $(RECHECK_LOGS:.log=.trs) @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? compose-check.pl.log: compose-check.pl @p='compose-check.pl'; \ b='compose-check.pl'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(x11localedir)" "$(DESTDIR)$(x11localedir)" "$(DESTDIR)$(x11localedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -$(am__rm_f) $(TEST_LOGS) -$(am__rm_f) $(TEST_LOGS:.log=.trs) -$(am__rm_f) $(TEST_SUITE_LOG) clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-nobase_dist_x11localeDATA \ install-nobase_x11localeDATA install-x11localeDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-nobase_dist_x11localeDATA \ uninstall-nobase_x11localeDATA uninstall-x11localeDATA .MAKE: check-am install-am install-strip .PHONY: all all-am check check-TESTS check-am clean clean-generic \ clean-libtool cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-nobase_dist_x11localeDATA \ install-nobase_x11localeDATA install-pdf install-pdf-am \ install-ps install-ps-am install-strip install-x11localeDATA \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \ uninstall uninstall-am uninstall-nobase_dist_x11localeDATA \ uninstall-nobase_x11localeDATA uninstall-x11localeDATA .PRECIOUS: Makefile .pre: @$(MKDIR_P) $(@D) $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $< | $(CPP_SED_MAGIC) > $@ # Global data files locale.alias: locale.alias.pre $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $(srcdir)/locale.alias.pre | $(CPP_SED_MAGIC) > locale.alias.l1 $(C_SED) -e '/^[^#][^ ]*:/s/://' -e '/^[^#].*[ ].*:/d' \ < locale.alias.l1 > locale.alias.l2 cat locale.alias.l2 locale.alias.l1 > locale.alias compose.dir: compose.dir.pre $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $(srcdir)/compose.dir.pre | $(CPP_SED_MAGIC) > compose.dir.l1 $(C_SED) -e '/^[^#][^ ]*:/s/://' -e '/^[^#].*[ ].*:/d' \ < compose.dir.l1 > compose.dir.l2 cat compose.dir.l2 compose.dir.l1 > compose.dir locale.dir: locale.dir.pre $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $(srcdir)/locale.dir.pre | $(CPP_SED_MAGIC) > locale.dir.l1 $(C_SED) -e '/^[^#][^ ]*:/s/://' -e '/^[^#].*[ ].*:/d' \ < locale.dir.l1 > locale.dir.l2 cat locale.dir.l2 locale.dir.l1 > locale.dir # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/nls/mulelao-1/0000755014310600000120000000000014763154167011002 5libX11-1.8.12/nls/mulelao-1/XLC_LOCALE.pre0000644014310600000120000000210714763154126013072 XCOMM XLocale Database Sample for mulelao-1. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary MULELAO-1:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset MULELAO-1:GR font MULELAO-1:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name MULELAO-1 side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name MULELAO-1 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding MULELAO-1:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding MULELAO-1:GR } END XLC_XLOCALE libX11-1.8.12/nls/mulelao-1/XI18N_OBJS0000644014310600000120000000052514763154126012266 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for mulelao-1 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/mulelao-1/Compose.pre0000644014310600000120000000054714763154126013040 XCOMM XCOMM mulelao-1 Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/th_TH/0000755014310600000120000000000014763154167010214 5libX11-1.8.12/nls/th_TH/XLC_LOCALE.pre0000644014310600000120000000165614763154126012314 XCOMM XLocale Database Sample for th_TH XCOMM XCOMM XCOMM Modified from original th_TH.TACTIS XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset ISO8859-1:GL font ISO8859-1:GL } XCOMM fs1 class (Thai) fs1 { charset ISO8859-11:GR font ISO8859-11:GR } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name TIS620 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-11:GR } END XLC_XLOCALE libX11-1.8.12/nls/th_TH/Compose.pre0000644014310600000120000000000014763154126012232 libX11-1.8.12/nls/th_TH/XI18N_OBJS0000644014310600000120000000052114763154126011474 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for th_TH locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/locale.dir.pre0000644014310600000120000004336114763154126011654 XCOMM XCOMM This file contains locale database file names XCOMM The first word is the locale database file name and XCOMM the second word is the full locale name. XCOMM XCOMM C/XLC_LOCALE: C iso8859-1/XLC_LOCALE: af_ZA.ISO8859-1 iso8859-6/XLC_LOCALE: ar_AA.ISO8859-6 iso8859-6/XLC_LOCALE: ar_AE.ISO8859-6 iso8859-6/XLC_LOCALE: ar_BH.ISO8859-6 iso8859-6/XLC_LOCALE: ar_DZ.ISO8859-6 iso8859-6/XLC_LOCALE: ar_EG.ISO8859-6 iso8859-6/XLC_LOCALE: ar_IQ.ISO8859-6 iso8859-6/XLC_LOCALE: ar_JO.ISO8859-6 iso8859-6/XLC_LOCALE: ar_KW.ISO8859-6 iso8859-6/XLC_LOCALE: ar_LB.ISO8859-6 iso8859-6/XLC_LOCALE: ar_LY.ISO8859-6 iso8859-6/XLC_LOCALE: ar_MA.ISO8859-6 iso8859-6/XLC_LOCALE: ar_OM.ISO8859-6 iso8859-6/XLC_LOCALE: ar_QA.ISO8859-6 iso8859-6/XLC_LOCALE: ar_SA.ISO8859-6 iso8859-6/XLC_LOCALE: ar_SD.ISO8859-6 iso8859-6/XLC_LOCALE: ar_SY.ISO8859-6 iso8859-6/XLC_LOCALE: ar_TN.ISO8859-6 iso8859-6/XLC_LOCALE: ar_YE.ISO8859-6 iso8859-9e/XLC_LOCALE: az_AZ.ISO8859-9E koi8-c/XLC_LOCALE: az_AZ.KOI8-C iso8859-5/XLC_LOCALE: be_BY.ISO8859-5 microsoft-cp1251/XLC_LOCALE: be_BY.CP1251 iso8859-5/XLC_LOCALE: bg_BG.ISO8859-5 microsoft-cp1251/XLC_LOCALE: bg_BG.CP1251 koi8-r/XLC_LOCALE: bg_BG.KOI8-R iso8859-1/XLC_LOCALE: br_FR.ISO8859-1 iso8859-14/XLC_LOCALE: br_FR.ISO8859-14 iso8859-15/XLC_LOCALE: br_FR.ISO8859-15 iso8859-2/XLC_LOCALE: bs_BA.ISO8859-2 iso8859-1/XLC_LOCALE: ca_AD.ISO8859-1 iso8859-15/XLC_LOCALE: ca_AD.ISO8859-15 iso8859-1/XLC_LOCALE: ca_ES.ISO8859-1 iso8859-15/XLC_LOCALE: ca_ES.ISO8859-15 iso8859-1/XLC_LOCALE: ca_FR.ISO8859-1 iso8859-15/XLC_LOCALE: ca_FR.ISO8859-15 iso8859-1/XLC_LOCALE: ca_IT.ISO8859-1 iso8859-15/XLC_LOCALE: ca_IT.ISO8859-15 iso8859-2/XLC_LOCALE: cs_CZ.ISO8859-2 iso8859-1/XLC_LOCALE: cy_GB.ISO8859-1 iso8859-14/XLC_LOCALE: cy_GB.ISO8859-14 iso8859-15/XLC_LOCALE: cy_GB.ISO8859-15 iso8859-1/XLC_LOCALE: da_DK.ISO8859-1 iso8859-15/XLC_LOCALE: da_DK.ISO8859-15 iso8859-1/XLC_LOCALE: de_AT.ISO8859-1 iso8859-15/XLC_LOCALE: de_AT.ISO8859-15 iso8859-1/XLC_LOCALE: de_BE.ISO8859-1 iso8859-15/XLC_LOCALE: de_BE.ISO8859-15 iso8859-1/XLC_LOCALE: de_CH.ISO8859-1 iso8859-15/XLC_LOCALE: de_CH.ISO8859-15 iso8859-1/XLC_LOCALE: de_DE.ISO8859-1 iso8859-15/XLC_LOCALE: de_DE.ISO8859-15 iso8859-1/XLC_LOCALE: de_LI.ISO8859-1 iso8859-15/XLC_LOCALE: de_LI.ISO8859-15 iso8859-1/XLC_LOCALE: de_LU.ISO8859-1 iso8859-15/XLC_LOCALE: de_LU.ISO8859-15 iso8859-4/XLC_LOCALE: ee_EE.ISO8859-4 iso8859-7/XLC_LOCALE: el_GR.ISO8859-7 iso8859-15/XLC_LOCALE: el_GR.ISO8859-15 iso8859-1/XLC_LOCALE: en_AU.ISO8859-1 iso8859-1/XLC_LOCALE: en_BE.ISO8859-1 iso8859-15/XLC_LOCALE: en_BE.ISO8859-15 iso8859-1/XLC_LOCALE: en_BW.ISO8859-1 iso8859-1/XLC_LOCALE: en_BZ.ISO8859-1 iso8859-1/XLC_LOCALE: en_CA.ISO8859-1 iso8859-1/XLC_LOCALE: en_EN.ISO8859-1 iso8859-1/XLC_LOCALE: en_GB.ISO8859-1 iso8859-15/XLC_LOCALE: en_GB.ISO8859-15 iso8859-1/XLC_LOCALE: en_HK.ISO8859-1 iso8859-1/XLC_LOCALE: en_IE.ISO8859-1 iso8859-15/XLC_LOCALE: en_IE.ISO8859-15 iso8859-1/XLC_LOCALE: en_IL.ISO8859-1 iso8859-15/XLC_LOCALE: en_IN.ISO8859-15 iso8859-1/XLC_LOCALE: en_JM.ISO8859-1 iso8859-1/XLC_LOCALE: en_NZ.ISO8859-1 iso8859-1/XLC_LOCALE: en_PH.ISO8859-1 iso8859-1/XLC_LOCALE: en_SG.ISO8859-1 iso8859-1/XLC_LOCALE: en_TT.ISO8859-1 iso8859-1/XLC_LOCALE: en_UK.ISO8859-1 iso8859-15/XLC_LOCALE: en_UK.ISO8859-15 iso8859-1/XLC_LOCALE: en_US.ISO8859-1 iso8859-15/XLC_LOCALE: en_US.ISO8859-15 iso8859-1/XLC_LOCALE: en_ZA.ISO8859-1 iso8859-15/XLC_LOCALE: en_ZA.ISO8859-15 iso8859-1/XLC_LOCALE: en_ZW.ISO8859-1 iso8859-3/XLC_LOCALE: eo_XX.ISO8859-3 iso8859-1/XLC_LOCALE: es_AR.ISO8859-1 iso8859-1/XLC_LOCALE: es_BO.ISO8859-1 iso8859-1/XLC_LOCALE: es_CL.ISO8859-1 iso8859-1/XLC_LOCALE: es_CO.ISO8859-1 iso8859-1/XLC_LOCALE: es_CR.ISO8859-1 iso8859-1/XLC_LOCALE: es_CU.ISO8859-1 iso8859-1/XLC_LOCALE: es_DO.ISO8859-1 iso8859-1/XLC_LOCALE: es_EC.ISO8859-1 iso8859-1/XLC_LOCALE: es_ES.ISO8859-1 iso8859-15/XLC_LOCALE: es_ES.ISO8859-15 iso8859-1/XLC_LOCALE: es_GT.ISO8859-1 iso8859-1/XLC_LOCALE: es_HN.ISO8859-1 iso8859-1/XLC_LOCALE: es_MX.ISO8859-1 iso8859-1/XLC_LOCALE: es_NI.ISO8859-1 iso8859-1/XLC_LOCALE: es_PA.ISO8859-1 iso8859-15/XLC_LOCALE: es_PA.ISO8859-15 iso8859-1/XLC_LOCALE: es_PE.ISO8859-1 iso8859-15/XLC_LOCALE: es_PE.ISO8859-15 iso8859-1/XLC_LOCALE: es_PR.ISO8859-1 iso8859-1/XLC_LOCALE: es_PY.ISO8859-1 iso8859-15/XLC_LOCALE: es_PY.ISO8859-15 iso8859-1/XLC_LOCALE: es_SV.ISO8859-1 iso8859-15/XLC_LOCALE: es_SV.ISO8859-15 iso8859-1/XLC_LOCALE: es_US.ISO8859-1 iso8859-1/XLC_LOCALE: es_UY.ISO8859-1 iso8859-15/XLC_LOCALE: es_UY.ISO8859-15 iso8859-1/XLC_LOCALE: es_VE.ISO8859-1 iso8859-15/XLC_LOCALE: es_VE.ISO8859-15 iso8859-1/XLC_LOCALE: et_EE.ISO8859-1 iso8859-4/XLC_LOCALE: et_EE.ISO8859-4 iso8859-13/XLC_LOCALE: et_EE.ISO8859-13 iso8859-15/XLC_LOCALE: et_EE.ISO8859-15 iso8859-1/XLC_LOCALE: eu_ES.ISO8859-1 iso8859-15/XLC_LOCALE: eu_ES.ISO8859-15 isiri-3342/XLC_LOCALE: fa_IR.ISIRI-3342 iso8859-1/XLC_LOCALE: fi_FI.ISO8859-1 iso8859-15/XLC_LOCALE: fi_FI.ISO8859-15 iso8859-1/XLC_LOCALE: fo_FO.ISO8859-1 iso8859-15/XLC_LOCALE: fo_FO.ISO8859-15 iso8859-1/XLC_LOCALE: fr_BE.ISO8859-1 iso8859-15/XLC_LOCALE: fr_BE.ISO8859-15 iso8859-1/XLC_LOCALE: fr_CA.ISO8859-1 iso8859-15/XLC_LOCALE: fr_CA.ISO8859-15 iso8859-1/XLC_LOCALE: fr_CH.ISO8859-1 iso8859-15/XLC_LOCALE: fr_CH.ISO8859-15 iso8859-1/XLC_LOCALE: fr_FR.ISO8859-1 iso8859-15/XLC_LOCALE: fr_FR.ISO8859-15 iso8859-1/XLC_LOCALE: fr_LU.ISO8859-1 iso8859-15/XLC_LOCALE: fr_LU.ISO8859-15 iso8859-1/XLC_LOCALE: ga_IE.ISO8859-1 iso8859-14/XLC_LOCALE: ga_IE.ISO8859-14 iso8859-15/XLC_LOCALE: ga_IE.ISO8859-15 iso8859-1/XLC_LOCALE: gd_GB.ISO8859-1 iso8859-14/XLC_LOCALE: gd_GB.ISO8859-14 iso8859-15/XLC_LOCALE: gd_GB.ISO8859-15 iso8859-1/XLC_LOCALE: gl_ES.ISO8859-1 iso8859-15/XLC_LOCALE: gl_ES.ISO8859-15 iso8859-1/XLC_LOCALE: gv_GB.ISO8859-1 iso8859-14/XLC_LOCALE: gv_GB.ISO8859-14 iso8859-15/XLC_LOCALE: gv_GB.ISO8859-15 iso8859-8/XLC_LOCALE: he_IL.ISO8859-8 microsoft-cp1255/XLC_LOCALE: he_IL.CP1255 iscii-dev/XLC_LOCALE: hi_IN.ISCII-DEV iso8859-2/XLC_LOCALE: hr_HR.ISO8859-2 iso8859-2/XLC_LOCALE: hu_HU.ISO8859-2 armscii-8/XLC_LOCALE: hy_AM.ARMSCII-8 iso8859-1/XLC_LOCALE: id_ID.ISO8859-1 iso8859-1/XLC_LOCALE: id_ID.ISO8859-15 iso8859-1/XLC_LOCALE: is_IS.ISO8859-1 iso8859-15/XLC_LOCALE: is_IS.ISO8859-15 iso8859-1/XLC_LOCALE: it_CH.ISO8859-1 iso8859-15/XLC_LOCALE: it_CH.ISO8859-15 iso8859-1/XLC_LOCALE: it_IT.ISO8859-1 iso8859-15/XLC_LOCALE: it_IT.ISO8859-15 ja/XLC_LOCALE: ja_JP.eucJP ja.SJIS/XLC_LOCALE: ja_JP.SJIS ja.JIS/XLC_LOCALE: ja_JP.JIS7 georgian-academy/XLC_LOCALE: ka_GE.GEORGIAN-ACADEMY georgian-ps/XLC_LOCALE: ka_GE.GEORGIAN-PS iso8859-1/XLC_LOCALE: kl_GL.ISO8859-1 iso8859-15/XLC_LOCALE: kl_GL.ISO8859-15 ko/XLC_LOCALE: ko_KR.eucKR iso8859-1/XLC_LOCALE: kw_GB.ISO8859-1 iso8859-14/XLC_LOCALE: kw_GB.ISO8859-14 iso8859-15/XLC_LOCALE: kw_GB.ISO8859-15 ibm-cp1133/XLC_LOCALE: lo_LA.IBM-CP1133 mulelao-1/XLC_LOCALE: lo_LA.MULELAO-1 iso8859-4/XLC_LOCALE: lt_LT.ISO8859-4 iso8859-13/XLC_LOCALE: lt_LT.ISO8859-13 iso8859-4/XLC_LOCALE: lv_LV.ISO8859-4 iso8859-13/XLC_LOCALE: lv_LV.ISO8859-13 iso8859-13/XLC_LOCALE: mi_NZ.ISO8859-13 iso8859-5/XLC_LOCALE: mk_MK.ISO8859-5 microsoft-cp1251/XLC_LOCALE: mk_MK.CP1251 iso8859-1/XLC_LOCALE: ms_MY.ISO8859-1 iso8859-3/XLC_LOCALE: mt_MT.ISO8859-3 iso8859-1/XLC_LOCALE: nb_NO.ISO8859-1 iso8859-1/XLC_LOCALE: nb_NO.ISO8859-15 iso8859-1/XLC_LOCALE: nl_BE.ISO8859-1 iso8859-15/XLC_LOCALE: nl_BE.ISO8859-15 iso8859-1/XLC_LOCALE: nl_NL.ISO8859-1 iso8859-15/XLC_LOCALE: nl_NL.ISO8859-15 iso8859-1/XLC_LOCALE: nn_NO.ISO8859-1 iso8859-1/XLC_LOCALE: nn_NO.ISO8859-15 iso8859-1/XLC_LOCALE: nr_ZA.ISO8859-1 iso8859-15/XLC_LOCALE: nso_ZA.ISO8859-15 iso8859-1/XLC_LOCALE: oc_FR.ISO8859-1 iso8859-15/XLC_LOCALE: oc_FR.ISO8859-15 iso8859-1/XLC_LOCALE: pd_DE.ISO8859-1 iso8859-15/XLC_LOCALE: pd_DE.ISO8859-15 iso8859-1/XLC_LOCALE: pd_US.ISO8859-1 iso8859-15/XLC_LOCALE: pd_US.ISO8859-15 iso8859-1/XLC_LOCALE: ph_PH.ISO8859-1 iso8859-2/XLC_LOCALE: pl_PL.ISO8859-2 iso8859-1/XLC_LOCALE: pp_AN.ISO8859-1 iso8859-1/XLC_LOCALE: pt_BR.ISO8859-1 iso8859-15/XLC_LOCALE: pt_BR.ISO8859-15 iso8859-1/XLC_LOCALE: pt_PT.ISO8859-1 iso8859-15/XLC_LOCALE: pt_PT.ISO8859-15 iso8859-2/XLC_LOCALE: ro_RO.ISO8859-2 iso8859-5/XLC_LOCALE: ru_RU.ISO8859-5 microsoft-cp1251/XLC_LOCALE: ru_RU.CP1251 koi8-r/XLC_LOCALE: ru_RU.KOI8-R microsoft-cp1251/XLC_LOCALE: ru_UA.CP1251 koi8-u/XLC_LOCALE: ru_UA.KOI8-U iso8859-1/XLC_LOCALE: rw_RW.ISO8859-1 iso8859-2/XLC_LOCALE: sk_SK.ISO8859-2 iso8859-2/XLC_LOCALE: sl_SI.ISO8859-2 iso8859-2/XLC_LOCALE: sq_AL.ISO8859-2 iso8859-1/XLC_LOCALE: ss_ZA.ISO8859-1 iso8859-1/XLC_LOCALE: st_ZA.ISO8859-1 iso8859-1/XLC_LOCALE: sv_FI.ISO8859-1 iso8859-15/XLC_LOCALE: sv_FI.ISO8859-15 iso8859-1/XLC_LOCALE: sv_SE.ISO8859-1 iso8859-15/XLC_LOCALE: sv_SE.ISO8859-15 tscii-0/XLC_LOCALE: ta_IN.TSCII-0 koi8-c/XLC_LOCALE: tg_TJ.KOI8-C th_TH/XLC_LOCALE: th_TH.TIS620 iso8859-11/XLC_LOCALE: th_TH.ISO8859-11 iso8859-1/XLC_LOCALE: tl_PH.ISO8859-1 iso8859-15/XLC_LOCALE: tn_ZA.ISO8859-15 iso8859-9/XLC_LOCALE: tr_TR.ISO8859-9 iso8859-1/XLC_LOCALE: ts_ZA.ISO8859-1 tatar-cyr/XLC_LOCALE: tt_RU.TATAR-CYR koi8-c/XLC_LOCALE: tt_RU.KOI8-C iso8859-5/XLC_LOCALE: uk_UA.ISO8859-5 microsoft-cp1251/XLC_LOCALE: uk_UA.CP1251 koi8-u/XLC_LOCALE: uk_UA.KOI8-U microsoft-cp1256/XLC_LOCALE: ur_PK.CP1256 iso8859-1/XLC_LOCALE: uz_UZ.ISO8859-1 vi_VN.tcvn/XLC_LOCALE: vi_VN.TCVN vi_VN.viscii/XLC_LOCALE: vi_VN.VISCII iso8859-1/XLC_LOCALE: wa_BE.ISO8859-1 iso8859-15/XLC_LOCALE: wa_BE.ISO8859-15 iso8859-1/XLC_LOCALE: xh_ZA.ISO8859-1 microsoft-cp1255/XLC_LOCALE: yi_US.CP1255 zh_CN/XLC_LOCALE: zh_CN.eucCN zh_CN/XLC_LOCALE: zh_CN.gb2312 zh_CN.gbk/XLC_LOCALE: zh_CN.gbk zh_CN.gb18030/XLC_LOCALE: zh_CN.gb18030 zh_HK.big5/XLC_LOCALE: zh_HK.big5 zh_HK.big5hkscs/XLC_LOCALE: zh_HK.big5hkscs zh_TW.big5/XLC_LOCALE: zh_TW.big5 zh_TW/XLC_LOCALE: zh_TW.eucTW iso8859-1/XLC_LOCALE: zu_ZA.ISO8859-1 en_US.UTF-8/XLC_LOCALE: af_ZA.UTF-8 en_US.UTF-8/XLC_LOCALE: am_ET.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_AA.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_AE.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_BH.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_DZ.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_EG.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_IQ.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_JO.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_KW.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_LB.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_LY.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_MA.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_OM.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_QA.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_SA.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_SD.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_SY.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_TN.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_YE.UTF-8 en_US.UTF-8/XLC_LOCALE: as_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: ast_ES.UTF-8 en_US.UTF-8/XLC_LOCALE: az_AZ.UTF-8 en_US.UTF-8/XLC_LOCALE: be_BY.UTF-8 en_US.UTF-8/XLC_LOCALE: be_BY.UTF-8@latin en_US.UTF-8/XLC_LOCALE: bg_BG.UTF-8 en_US.UTF-8/XLC_LOCALE: bn_BD.UTF-8 en_US.UTF-8/XLC_LOCALE: bn_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: bo_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: br_FR.UTF-8 en_US.UTF-8/XLC_LOCALE: bs_BA.UTF-8 en_US.UTF-8/XLC_LOCALE: ca_AD.UTF-8 en_US.UTF-8/XLC_LOCALE: ca_ES.UTF-8 en_US.UTF-8/XLC_LOCALE: ca_FR.UTF-8 en_US.UTF-8/XLC_LOCALE: ca_IT.UTF-8 en_US.UTF-8/XLC_LOCALE: cs_CZ.UTF-8 en_US.UTF-8/XLC_LOCALE: cy_GB.UTF-8 en_US.UTF-8/XLC_LOCALE: da_DK.UTF-8 en_US.UTF-8/XLC_LOCALE: de_AT.UTF-8 en_US.UTF-8/XLC_LOCALE: de_BE.UTF-8 en_US.UTF-8/XLC_LOCALE: de_CH.UTF-8 en_US.UTF-8/XLC_LOCALE: de_DE.UTF-8 en_US.UTF-8/XLC_LOCALE: de_IT.UTF-8 en_US.UTF-8/XLC_LOCALE: de_LI.UTF-8 en_US.UTF-8/XLC_LOCALE: de_LU.UTF-8 en_US.UTF-8/XLC_LOCALE: el_CY.UTF-8 en_US.UTF-8/XLC_LOCALE: el_GR.UTF-8 en_US.UTF-8/XLC_LOCALE: en_AU.UTF-8 en_US.UTF-8/XLC_LOCALE: en_BE.UTF-8 en_US.UTF-8/XLC_LOCALE: en_BW.UTF-8 en_US.UTF-8/XLC_LOCALE: en_BZ.UTF-8 en_US.UTF-8/XLC_LOCALE: en_CA.UTF-8 en_US.UTF-8/XLC_LOCALE: en_DK.UTF-8 en_US.UTF-8/XLC_LOCALE: en_GB.UTF-8 en_US.UTF-8/XLC_LOCALE: en_EN.UTF-8 en_US.UTF-8/XLC_LOCALE: en_HK.UTF-8 en_US.UTF-8/XLC_LOCALE: en_IE.UTF-8 en_US.UTF-8/XLC_LOCALE: en_IL.UTF-8 en_US.UTF-8/XLC_LOCALE: en_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: en_JM.UTF-8 en_US.UTF-8/XLC_LOCALE: en_MT.UTF-8 en_US.UTF-8/XLC_LOCALE: en_NZ.UTF-8 en_US.UTF-8/XLC_LOCALE: en_PH.UTF-8 en_US.UTF-8/XLC_LOCALE: en_SG.UTF-8 en_US.UTF-8/XLC_LOCALE: en_TT.UTF-8 en_US.UTF-8/XLC_LOCALE: en_UK.UTF-8 en_US.UTF-8/XLC_LOCALE: en_US.UTF-8 en_US.UTF-8/XLC_LOCALE: en_ZA.UTF-8 en_US.UTF-8/XLC_LOCALE: en_ZW.UTF-8 en_US.UTF-8/XLC_LOCALE: eo.UTF-8 en_US.UTF-8/XLC_LOCALE: eo_XX.UTF-8 en_US.UTF-8/XLC_LOCALE: es_AR.UTF-8 en_US.UTF-8/XLC_LOCALE: es_BO.UTF-8 en_US.UTF-8/XLC_LOCALE: es_CL.UTF-8 en_US.UTF-8/XLC_LOCALE: es_CO.UTF-8 en_US.UTF-8/XLC_LOCALE: es_CR.UTF-8 en_US.UTF-8/XLC_LOCALE: es_CU.UTF-8 en_US.UTF-8/XLC_LOCALE: es_DO.UTF-8 en_US.UTF-8/XLC_LOCALE: es_EC.UTF-8 en_US.UTF-8/XLC_LOCALE: es_ES.UTF-8 en_US.UTF-8/XLC_LOCALE: es_GT.UTF-8 en_US.UTF-8/XLC_LOCALE: es_HN.UTF-8 en_US.UTF-8/XLC_LOCALE: es_MX.UTF-8 en_US.UTF-8/XLC_LOCALE: es_NI.UTF-8 en_US.UTF-8/XLC_LOCALE: es_PA.UTF-8 en_US.UTF-8/XLC_LOCALE: es_PE.UTF-8 en_US.UTF-8/XLC_LOCALE: es_PR.UTF-8 en_US.UTF-8/XLC_LOCALE: es_PY.UTF-8 en_US.UTF-8/XLC_LOCALE: es_SV.UTF-8 en_US.UTF-8/XLC_LOCALE: es_US.UTF-8 en_US.UTF-8/XLC_LOCALE: es_UY.UTF-8 en_US.UTF-8/XLC_LOCALE: es_VE.UTF-8 en_US.UTF-8/XLC_LOCALE: et_EE.UTF-8 en_US.UTF-8/XLC_LOCALE: eu_ES.UTF-8 en_US.UTF-8/XLC_LOCALE: fa_IR.UTF-8 en_US.UTF-8/XLC_LOCALE: fi_FI.UTF-8 en_US.UTF-8/XLC_LOCALE: fo_FO.UTF-8 en_US.UTF-8/XLC_LOCALE: fr_BE.UTF-8 en_US.UTF-8/XLC_LOCALE: fr_CA.UTF-8 en_US.UTF-8/XLC_LOCALE: fr_CH.UTF-8 en_US.UTF-8/XLC_LOCALE: fr_FR.UTF-8 en_US.UTF-8/XLC_LOCALE: fr_LU.UTF-8 en_US.UTF-8/XLC_LOCALE: ga_IE.UTF-8 en_US.UTF-8/XLC_LOCALE: gd_GB.UTF-8 en_US.UTF-8/XLC_LOCALE: gl_ES.UTF-8 en_US.UTF-8/XLC_LOCALE: gu_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: gv_GB.UTF-8 en_US.UTF-8/XLC_LOCALE: he_IL.UTF-8 en_US.UTF-8/XLC_LOCALE: hi_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: hne_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: hr_HR.UTF-8 en_US.UTF-8/XLC_LOCALE: hu_HU.UTF-8 en_US.UTF-8/XLC_LOCALE: hy_AM.UTF-8 en_US.UTF-8/XLC_LOCALE: ia.UTF-8 en_US.UTF-8/XLC_LOCALE: id_ID.UTF-8 en_US.UTF-8/XLC_LOCALE: ie.UTF-8 en_US.UTF-8/XLC_LOCALE: is_IS.UTF-8 en_US.UTF-8/XLC_LOCALE: it_CH.UTF-8 en_US.UTF-8/XLC_LOCALE: it_IT.UTF-8 en_US.UTF-8/XLC_LOCALE: iu_CA.UTF-8 ja_JP.UTF-8/XLC_LOCALE: ja_JP.UTF-8 en_US.UTF-8/XLC_LOCALE: ka_GE.UTF-8 en_US.UTF-8/XLC_LOCALE: kk_KZ.UTF-8 en_US.UTF-8/XLC_LOCALE: kl_GL.UTF-8 en_US.UTF-8/XLC_LOCALE: km_KH.UTF-8 en_US.UTF-8/XLC_LOCALE: kn_IN.UTF-8 ko_KR.UTF-8/XLC_LOCALE: ko_KR.UTF-8 en_US.UTF-8/XLC_LOCALE: ks_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: ks_IN.UTF-8@devanagari en_US.UTF-8/XLC_LOCALE: ku_TR.UTF-8 en_US.UTF-8/XLC_LOCALE: kw_GB.UTF-8 en_US.UTF-8/XLC_LOCALE: ky_KG.UTF-8 en_US.UTF-8/XLC_LOCALE: lo_LA.UTF-8 en_US.UTF-8/XLC_LOCALE: lt_LT.UTF-8 en_US.UTF-8/XLC_LOCALE: lv_LV.UTF-8 en_US.UTF-8/XLC_LOCALE: mai_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: mi_NZ.UTF-8 en_US.UTF-8/XLC_LOCALE: mk_MK.UTF-8 en_US.UTF-8/XLC_LOCALE: ml_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: mr_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: ms_MY.UTF-8 en_US.UTF-8/XLC_LOCALE: mt_MT.UTF-8 en_US.UTF-8/XLC_LOCALE: nb_NO.UTF-8 en_US.UTF-8/XLC_LOCALE: ne_NP.UTF-8 en_US.UTF-8/XLC_LOCALE: nl_BE.UTF-8 en_US.UTF-8/XLC_LOCALE: nl_NL.UTF-8 en_US.UTF-8/XLC_LOCALE: nn_NO.UTF-8 en_US.UTF-8/XLC_LOCALE: nr_ZA.UTF-8 en_US.UTF-8/XLC_LOCALE: nso_ZA.UTF-8 en_US.UTF-8/XLC_LOCALE: oc_FR.UTF-8 en_US.UTF-8/XLC_LOCALE: or_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: pa_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: pa_PK.UTF-8 en_US.UTF-8/XLC_LOCALE: pd_DE.UTF-8 en_US.UTF-8/XLC_LOCALE: pd_US.UTF-8 en_US.UTF-8/XLC_LOCALE: ph_PH.UTF-8 en_US.UTF-8/XLC_LOCALE: pl_PL.UTF-8 en_US.UTF-8/XLC_LOCALE: pp_AN.UTF-8 pt_BR.UTF-8/XLC_LOCALE: pt_BR.UTF-8 pt_PT.UTF-8/XLC_LOCALE: pt_PT.UTF-8 en_US.UTF-8/XLC_LOCALE: ro_RO.UTF-8 ru_RU.UTF-8/XLC_LOCALE: ru_RU.UTF-8 en_US.UTF-8/XLC_LOCALE: ru_UA.UTF-8 en_US.UTF-8/XLC_LOCALE: rw_RW.UTF-8 en_US.UTF-8/XLC_LOCALE: sa_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: sd_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: sd_IN.UTF-8@devanagari en_US.UTF-8/XLC_LOCALE: se_NO.UTF-8 en_US.UTF-8/XLC_LOCALE: sh_BA.UTF-8 en_US.UTF-8/XLC_LOCALE: si_LK.UTF-8 en_US.UTF-8/XLC_LOCALE: sk_SK.UTF-8 en_US.UTF-8/XLC_LOCALE: sl_SI.UTF-8 en_US.UTF-8/XLC_LOCALE: sq_AL.UTF-8 en_US.UTF-8/XLC_LOCALE: sr_ME.UTF-8 en_US.UTF-8/XLC_LOCALE: sr_RS.UTF-8 en_US.UTF-8/XLC_LOCALE: sr_RS.UTF-8@latin en_US.UTF-8/XLC_LOCALE: ss_ZA.UTF-8 en_US.UTF-8/XLC_LOCALE: st_ZA.UTF-8 en_US.UTF-8/XLC_LOCALE: sv_FI.UTF-8 en_US.UTF-8/XLC_LOCALE: sv_SE.UTF-8 en_US.UTF-8/XLC_LOCALE: ta_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: te_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: tg_TJ.UTF-8 th_TH.UTF-8/XLC_LOCALE: th_TH.UTF-8 en_US.UTF-8/XLC_LOCALE: ti_ER.UTF-8 en_US.UTF-8/XLC_LOCALE: ti_ET.UTF-8 en_US.UTF-8/XLC_LOCALE: tl_PH.UTF-8 en_US.UTF-8/XLC_LOCALE: tn_ZA.UTF-8 en_US.UTF-8/XLC_LOCALE: tr_TR.UTF-8 en_US.UTF-8/XLC_LOCALE: ts_ZA.UTF-8 en_US.UTF-8/XLC_LOCALE: tt_RU.UTF-8 en_US.UTF-8/XLC_LOCALE: uk_UA.UTF-8 en_US.UTF-8/XLC_LOCALE: ur_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: ur_PK.UTF-8 en_US.UTF-8/XLC_LOCALE: uz_UZ.UTF-8 en_US.UTF-8/XLC_LOCALE: ve_ZA.UTF-8 en_US.UTF-8/XLC_LOCALE: vi_VN.UTF-8 en_US.UTF-8/XLC_LOCALE: wa_BE.UTF-8 en_US.UTF-8/XLC_LOCALE: xh_ZA.UTF-8 en_US.UTF-8/XLC_LOCALE: yi_US.UTF-8 zh_CN.UTF-8/XLC_LOCALE: zh_CN.UTF-8 zh_HK.UTF-8/XLC_LOCALE: zh_HK.UTF-8 zh_CN.UTF-8/XLC_LOCALE: zh_SG.UTF-8 zh_TW.UTF-8/XLC_LOCALE: zh_TW.UTF-8 en_US.UTF-8/XLC_LOCALE: zu_ZA.UTF-8 libX11-1.8.12/nls/iso8859-9e/0000755014310600000120000000000014763154167010651 5libX11-1.8.12/nls/iso8859-9e/Compose.pre0000644014310600000120000005351314763154126012710 XCOMM XCOMM ISO 8859-9e (Latin??) Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM Means XCOMM Special Character : "#" numbersign : "'" apostrophe : "'" apostrophe : "[" bracketleft : "\\" backslash : "\\" backslash : "\\" backslash : "]" bracketright : "^" asciicircum : "^" asciicircum : "^" asciicircum : "^" asciicircum : "`" grave : "`" grave : "{" braceleft : "{" braceleft : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "}" braceright : "}" braceright : "~" asciitilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "\241" exclamdown : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright : "\251" copyright : "\252" ordfeminine : "\252" ordfeminine : "\252" ordfeminine : "\252" ordfeminine : "\272" masculine : "\272" masculine : "\272" masculine : "\272" masculine : "\253" guillemotleft : "\273" guillemotright <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree : "\261" plusminus : "\261" plusminus : "\265" mu : "\265" mu : "\265" mu : "\265" mu <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph : "\267" periodcentered : "\267" periodcentered : "\267" periodcentered : "\277" questiondown : "\240" nobreakspace : "\254" notsign : "\254" notsign : "\255" hyphen : "\256" registered : "\256" registered : "\256" registered : "\257" macron : "\257" macron : "\257" macron : "\257" macron : "\257" macron : "\367" division : "\367" division : "\327" multiply : "\264" acute : "\270" cedilla : "\250" diaeresis XCOMM Accented Alphabet : "\300" Agrave : "\300" Agrave : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\303" Atilde : "\303" Atilde : "\303" Atilde : "\303" Atilde : "\304" Adiaeresis : "\304" Adiaeresis : "\304" Adiaeresis : "\304" Adiaeresis : "\305" Aring : "\305" Aring : "\305" Aring : "\306" SCHWA : "\340" agrave : "\340" agrave : "\341" aacute : "\341" aacute : "\341" aacute : "\341" aacute : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\343" atilde : "\343" atilde : "\343" atilde : "\343" atilde : "\344" adiaeresis : "\344" adiaeresis : "\344" adiaeresis : "\344" adiaeresis : "\345" aring : "\345" aring : "\345" aring : "\346" schwa : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\320" ETH : "\320" ETH : "\360" eth : "\360" eth : "\310" Egrave : "\310" Egrave : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\312" Ecircumflex : "\312" Ecircumflex : "\312" Ecircumflex : "\312" Ecircumflex : "\313" Ediaeresis : "\313" Ediaeresis : "\313" Ediaeresis : "\313" Ediaeresis : "\350" egrave : "\350" egrave : "\351" eacute : "\351" eacute : "\351" eacute : "\351" eacute : "\352" ecircumflex : "\352" ecircumflex : "\352" ecircumflex : "\352" ecircumflex : "\353" ediaeresis : "\353" ediaeresis : "\353" ediaeresis : "\353" ediaeresis : "\320" Gbreve : "\320" Gbreve : "\320" Gbreve : "\320" Gbreve : "\320" Gbreve : "\360" gbreve : "\360" gbreve : "\360" gbreve : "\360" gbreve : "\360" gbreve : "\314" Igrave : "\314" Igrave : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\317" Idiaeresis : "\317" Idiaeresis : "\317" Idiaeresis : "\317" Idiaeresis : "\335" Iabovedot : "\335" Iabovedot : "\354" igrave : "\354" igrave : "\355" iacute : "\355" iacute : "\355" iacute : "\355" iacute : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\357" idiaeresis : "\357" idiaeresis : "\357" idiaeresis : "\357" idiaeresis : "\375" idotless : "\375" idotless : "\321" Ntilde : "\321" Ntilde : "\321" Ntilde : "\321" Ntilde : "\361" ntilde : "\361" ntilde : "\361" ntilde : "\361" ntilde : "\322" Ograve : "\322" Ograve : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\325" Otilde : "\325" Otilde : "\325" Otilde : "\325" Otilde : "\326" Odiaeresis : "\326" Odiaeresis : "\326" Odiaeresis : "\326" Odiaeresis : "\330" Ooblique : "\330" Ooblique : "\274" OE : "\362" ograve : "\362" ograve : "\363" oacute : "\363" oacute : "\363" oacute : "\363" oacute : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\365" otilde : "\365" otilde : "\365" otilde : "\365" otilde : "\366" odiaeresis : "\366" odiaeresis : "\366" odiaeresis : "\366" odiaeresis : "\370" oslash : "\370" oslash : "\336" Scedilla : "\336" Scedilla : "\336" Scedilla : "\376" scedilla : "\336" Scedilla : "\376" scedilla : "\376" scedilla : "\376" scedilla : "\331" Ugrave : "\331" Ugrave : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\334" Udiaeresis : "\334" Udiaeresis : "\334" Udiaeresis : "\334" Udiaeresis : "\371" ugrave : "\371" ugrave : "\372" uacute : "\372" uacute : "\372" uacute : "\372" uacute : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\374" udiaeresis : "\374" udiaeresis : "\374" udiaeresis : "\374" udiaeresis : "\337" ssharp : "\336" THORN : "\376" thorn : "\327" Yacute : "\327" Yacute : "\327" Yacute : "\327" Yacute : "\276" Ydiaeresis : "\276" Ydiaeresis : "\276" Ydiaeresis : "\276" Ydiaeresis : "\367" yacute : "\367" yacute : "\367" yacute : "\367" yacute : "\377" ydiaeresis : "\377" ydiaeresis : "\377" ydiaeresis : "\377" ydiaeresis : "\241" Zcaron : "\241" Zcaron : "\261" zcaron : "\261" zcaron : "\241" Zcaron : "\261" zcaron : "\252" Gcaron : "\252" Gcaron : "\272" gcaron : "\272" gcaron : "\252" Gcaron : "\272" gcaron : "\264" Ocaron : "\264" Ocaron : "\275" ocaron : "\275" ocaron : "\264" Ocaron : "\275" ocaron XCOMM XCOMM dead key accent keysyms XCOMM Special Character : "|" bar : "`" grave : "'" apostrophe : "\250" diaeresis : "^" asciicircum : "~" asciitilde <0> : "\260" degree <1> : "\271" onesuperior <2> : "\262" twosuperior <3> : "\263" threesuperior : "\267" periodcentered : "\254" notsign : "\257" macron : "\257" macron : "\264" acute : "\270" cedilla : "\250" diaeresis XCOMM Accented Alphabet : "\305" Aring : "\345" aring : "\300" Agrave : "\301" Aacute : "\302" Acircumflex : "\303" Atilde : "\304" Adiaeresis : "\340" agrave : "\341" aacute : "\342" acircumflex : "\343" atilde : "\344" adiaeresis : "\307" Ccedilla : "\347" ccedilla : "\310" Egrave : "\311" Eacute : "\312" Ecircumflex : "\313" Ediaeresis : "\350" egrave : "\351" eacute : "\352" ecircumflex : "\353" ediaeresis : "\320" Gbreve : "\360" gbreve : "\335" Iabovedot : "\314" Igrave : "\315" Iacute : "\316" Icircumflex : "\317" Idiaeresis : "\375" idotless : "\354" igrave : "\355" iacute : "\356" icircumflex : "\357" idiaeresis : "\321" Ntilde : "\361" ntilde : "\322" Ograve : "\323" Oacute : "\324" Ocircumflex : "\325" Otilde : "\326" Odiaeresis : "\362" ograve : "\363" oacute : "\364" ocircumflex : "\365" otilde : "\366" odiaeresis : "\336" Scedilla : "\376" scedilla : "\331" Ugrave : "\332" Uacute : "\333" Ucircumflex : "\334" Udiaeresis : "\371" ugrave : "\372" uacute : "\373" ucircumflex : "\374" udiaeresis : "\327" Yacute : "\276" Ydiaeresis : "\367" yacute : "\377" ydiaeresis : "\241" Zcaron : "\261" zcaron : "\252" Gcaron : "\272" gcaron XCOMM End of Sequence Definition libX11-1.8.12/nls/iso8859-9e/XLC_LOCALE.pre0000644014310600000120000000215114763154126012740 XCOMM XLocale Database Sample for iso8859-9e. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-9E:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-9E:GR } font { primary ISO8859-9E:GR } } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name ISO8859-9E side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-9E mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-9E:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-9E:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-9e/XI18N_OBJS0000644014310600000120000000052614763154126012136 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for iso8859-9e locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/zh_HK.UTF-8/0000755014310600000120000000000014763154167011013 5libX11-1.8.12/nls/zh_HK.UTF-8/XI18N_OBJS0000644014310600000120000000053114763154126012274 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for zh_HK.UTF-8 locale # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/zh_HK.UTF-8/Compose.pre0000644014310600000120000000006014763154126013037 include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" libX11-1.8.12/nls/zh_HK.UTF-8/XLC_LOCALE.pre0000644014310600000120000000333614763154126013110 XCOMM XFree86 NLS for Chinese locale zh_HK.UTF-8 XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8 XCOMM by James Su XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET on_demand_loading True object_name generic XCOMM We leave the legacy encodings in for the moment, because we don't XCOMM have that many ISO10646 fonts yet. XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class (ISO8859 families) fs1 { charset { name ISO8859-1:GR } font { primary ISO8859-1:GR } } XCOMM fs2 class fs2 { charset { name BIG5HKSCS-0:GLGR } font { primary BIG5HKSCS-0:GLGR substitute BIG5-0:GLGR } } XCOMM fs3 class fs3 { charset { name ISO10646-1 } font { primary ISO10646-1 } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name UTF-8 mb_cur_max 6 state_depend_encoding False XCOMM cs0 class cs0 { side GL:Default length 1 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 ct_encoding ISO8859-1:GR } XCOMM cs2 class cs2 { side none length 2 ct_encoding BIG5HKSCS-0:GLGR } XCOMM cs3 class cs3 { side none ct_encoding ISO10646-1 } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-15/0000755014310600000120000000000014763154167010561 5libX11-1.8.12/nls/iso8859-15/XLC_LOCALE.pre0000644014310600000120000000234514763154126012655 XCOMM XLocale Database Sample for fcd/dis/iso 8859-15. XCOMM When Final Committee Draft (FCD) 8859-15 is formalized XCOMM then this file will be renamed iso8859-15. XCOMM This file is provided as preliminary support for the Latin-9 XCOMM (a.k.a. Latin-0) character set so that Europeans who want XCOMM the Euro currency character can do so. XCOMM XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-15:GL substitute ISO8859-15:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-15:GR } font { primary ISO8859-15:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-15 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-15:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-15:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-15/XI18N_OBJS0000644014310600000120000000052614763154126012046 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for iso8859-15 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iso8859-15/Compose.pre0000644014310600000120000005032114763154126012612 XCOMM XCOMM ISO 8859-15 (Latin1) Compose Sequence XCOMM XCOMM XCOMM Sequence Definition XCOMM XCOMM Means XCOMM Special Character : "#" numbersign : "'" apostrophe : "'" apostrophe : "@" at : "[" bracketleft : "\\" backslash : "\\" backslash : "\\" backslash : "]" bracketright : "^" asciicircum : "^" asciicircum : "^" asciicircum : "^" asciicircum : "`" grave : "`" grave : "{" braceleft : "{" braceleft : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "}" braceright : "}" braceright : "~" asciitilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "\241" exclamdown : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright : "\251" copyright : "\251" copyright : "\252" ordfeminine : "\252" ordfeminine : "\252" ordfeminine : "\252" ordfeminine : "\272" masculine : "\272" masculine : "\272" masculine : "\272" masculine : "\253" guillemotleft : "\273" guillemotright <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree : "\261" plusminus : "\261" plusminus : "\265" mu : "\265" mu : "\265" mu : "\265" mu <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph : "\267" periodcentered : "\267" periodcentered : "\267" periodcentered : "\277" questiondown : "\240" nobreakspace : "\254" notsign : "\254" notsign : "\255" hyphen : "\256" registered : "\256" registered : "\256" registered : "\257" macron : "\257" macron : "\257" macron : "\257" macron : "\257" macron : "\367" division : "\367" division : "\327" multiply : "\264" acute : "\270" cedilla : "\"" quotedbl XCOMM Accented Alphabet : "\300" Agrave : "\300" Agrave : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\303" Atilde : "\303" Atilde : "\303" Atilde : "\303" Atilde : "\304" Adiaeresis : "\304" Adiaeresis : "\304" Adiaeresis : "\304" Adiaeresis : "\305" Aring : "\305" Aring : "\305" Aring : "\305" Aring : "\306" AE : "\340" agrave : "\340" agrave : "\341" aacute : "\341" aacute : "\341" aacute : "\341" aacute : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\343" atilde : "\343" atilde : "\343" atilde : "\343" atilde : "\344" adiaeresis : "\344" adiaeresis : "\344" adiaeresis : "\344" adiaeresis : "\345" aring : "\345" aring : "\345" aring : "\345" aring : "\346" ae : "\307" Ccedilla : "\347" ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\320" ETH : "\320" ETH : "\360" eth : "\360" eth : "\310" Egrave : "\310" Egrave : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\312" Ecircumflex : "\312" Ecircumflex : "\312" Ecircumflex : "\312" Ecircumflex : "\313" Ediaeresis : "\313" Ediaeresis : "\313" Ediaeresis : "\313" Ediaeresis : "\350" egrave : "\350" egrave : "\351" eacute : "\351" eacute : "\351" eacute : "\351" eacute : "\352" ecircumflex : "\352" ecircumflex : "\352" ecircumflex : "\352" ecircumflex : "\353" ediaeresis : "\353" ediaeresis : "\353" ediaeresis : "\353" ediaeresis : "\314" Igrave : "\314" Igrave : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\317" Idiaeresis : "\317" Idiaeresis : "\317" Idiaeresis : "\317" Idiaeresis : "\354" igrave : "\354" igrave : "\355" iacute : "\355" iacute : "\355" iacute : "\355" iacute : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\357" idiaeresis : "\357" idiaeresis : "\357" idiaeresis : "\357" idiaeresis : "\321" Ntilde : "\321" Ntilde : "\321" Ntilde : "\321" Ntilde : "\361" ntilde : "\361" ntilde : "\361" ntilde : "\361" ntilde : "\322" Ograve : "\322" Ograve : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\325" Otilde : "\325" Otilde : "\325" Otilde : "\325" Otilde : "\326" Odiaeresis : "\326" Odiaeresis : "\326" Odiaeresis : "\326" Odiaeresis : "\330" Ooblique : "\330" Ooblique : "\274" OE : "\362" ograve : "\362" ograve : "\363" oacute : "\363" oacute : "\363" oacute : "\363" oacute : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\365" otilde : "\365" otilde : "\365" otilde : "\365" otilde : "\366" odiaeresis : "\366" odiaeresis : "\366" odiaeresis : "\366" odiaeresis : "\370" oslash : "\370" oslash : "\275" oe : "\246" Scaron : "\246" Scaron : "\250" scaron : "\250" scaron : "\331" Ugrave : "\331" Ugrave : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\334" Udiaeresis : "\334" Udiaeresis : "\334" Udiaeresis : "\334" Udiaeresis : "\371" ugrave : "\371" ugrave : "\372" uacute : "\372" uacute : "\372" uacute : "\372" uacute : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\374" udiaeresis : "\374" udiaeresis : "\374" udiaeresis : "\374" udiaeresis : "\337" ssharp : "\336" THORN : "\376" thorn : "\335" Yacute : "\335" Yacute : "\335" Yacute : "\335" Yacute : "\276" Ydiaeresis : "\276" Ydiaeresis : "\276" Ydiaeresis : "\276" Ydiaeresis : "\375" yacute : "\375" yacute : "\375" yacute : "\375" yacute : "\377" ydiaeresis : "\377" ydiaeresis : "\377" ydiaeresis : "\377" ydiaeresis : "\264" Zcaron : "\264" Zcaron : "\270" zcaron : "\270" zcaron XCOMM XCOMM dead key accent keysyms XCOMM Special Character : "|" bar : "^" asciicircum : "^" asciicircum : "~" asciitilde : "~" asciitilde : "`" grave : "`" grave XCOMM These are for us_intl, that does not have diaeresis, etc : "'" apostrophe : "\264" acute : "\"" quotedbl : "\"" quotedbl : "\"" quotedbl <0> : "\260" degree <1> : "\271" onesuperior <2> : "\262" twosuperior <3> : "\263" threesuperior : "\267" periodcentered : "\254" notsign : "\257" macron : "\257" macron : "\264" acute : "\270" cedilla : "\"" quotedbl XCOMM Accented Alphabet : "\305" Aring : "\300" Agrave : "\301" Aacute : "\302" Acircumflex : "\303" Atilde : "\304" Adiaeresis : "\345" aring : "\340" agrave : "\341" aacute : "\342" acircumflex : "\343" atilde : "\344" adiaeresis : "\307" Ccedilla : "\347" ccedilla : "\310" Egrave : "\311" Eacute : "\312" Ecircumflex : "\313" Ediaeresis : "\350" egrave : "\351" eacute : "\352" ecircumflex : "\353" ediaeresis : "\314" Igrave : "\315" Iacute : "\316" Icircumflex : "\317" Idiaeresis : "\354" igrave : "\355" iacute : "\356" icircumflex : "\357" idiaeresis : "\321" Ntilde : "\361" ntilde : "\322" Ograve : "\323" Oacute : "\324" Ocircumflex : "\325" Otilde : "\326" Odiaeresis : "\362" ograve : "\363" oacute : "\364" ocircumflex : "\365" otilde : "\366" odiaeresis : "\246" Scaron : "\250" scaron : "\246" Scaron : "\250" scaron : "\331" Ugrave : "\332" Uacute : "\333" Ucircumflex : "\334" Udiaeresis : "\371" ugrave : "\372" uacute : "\373" ucircumflex : "\374" udiaeresis : "\335" Yacute : "\276" Ydiaeresis : "\375" yacute : "\377" ydiaeresis : "\264" Zcaron : "\270" zcaron : "\264" Zcaron : "\270" zcaron XCOMM Useful for portuguese language : "\307" Ccedilla : "\347" ccedilla XCOMM End of Sequence Definition libX11-1.8.12/nls/iso8859-6/0000755014310600000120000000000014763154167010501 5libX11-1.8.12/nls/iso8859-6/XI18N_OBJS0000644014310600000120000000052514763154126011765 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for iso8859-6 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iso8859-6/XLC_LOCALE.pre0000644014310600000120000000165214763154126012575 XCOMM XLocale Database Sample for iso8859-6. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-6:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-6:GR } font { primary ISO8859-6:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-6 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-6:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-6:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-6/Compose.pre0000644014310600000120000000055014763154126012531 XCOMM XCOMM ISO 8859-6 Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/zh_HK.big5/0000755014310600000120000000000014763154167011036 5libX11-1.8.12/nls/zh_HK.big5/XI18N_OBJS0000644014310600000120000000053014763154126012316 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for zh_HK.big5 locale # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/zh_HK.big5/Compose.pre0000644014310600000120000000054214763154126013067 XCOMM XCOMM zh_HK.big5 Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/zh_HK.big5/XLC_LOCALE.pre0000644014310600000120000000214214763154126013125 XCOMM XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project XCOMM XCOMM modified for X11R6.3 by Hung-Chi Chu 1998/01/10 XCOMM XCOMM XLC_FONTSET category XCOMM XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name BIG5-0:GLGR } font { primary BIG5-0:GLGR substitute BIG5-0:GLGR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name zh_HK.Big5 mb_cur_max 2 state_depend_encoding False wc_encoding_mask \x00008000 wc_shift_bits 8 use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side none length 2 byte1 \xa1,\xf9 byte2 \x40,\x7e;\xa1,\xfe wc_encoding \x00008000 ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32\x80\x89\x42\x49\x47\x35\x2d\x30\x02 mb_conversion [\xa140,\xf9fe]->\x2140 ct_conversion [\x2140,\x79fe]->\xa140 } END XLC_XLOCALE libX11-1.8.12/nls/armscii-8/0000755014310600000120000000000014763154167011002 5libX11-1.8.12/nls/armscii-8/XLC_LOCALE.pre0000644014310600000120000000210714763154126013072 XCOMM XLocale Database Sample for armscii-8. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ARMSCII-8:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset ARMSCII-8:GR font ARMSCII-8:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name ARMSCII-8 side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ARMSCII-8 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ARMSCII-8:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ARMSCII-8:GR } END XLC_XLOCALE libX11-1.8.12/nls/armscii-8/XI18N_OBJS0000644014310600000120000000052514763154126012266 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for armscii-8 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/armscii-8/Compose.pre0000644014310600000120000000054714763154126013040 XCOMM XCOMM ARMSCII-8 Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/iso8859-8/0000755014310600000120000000000014763154167010503 5libX11-1.8.12/nls/iso8859-8/XLC_LOCALE.pre0000644014310600000120000000165214763154126012577 XCOMM XLocale Database Sample for iso8859-8. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-8:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-8:GR } font { primary ISO8859-8:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-8 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-8:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-8:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-8/Compose.pre0000644014310600000120000000055014763154126012533 XCOMM XCOMM ISO 8859-8 Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/iso8859-8/XI18N_OBJS0000644014310600000120000000052514763154126011767 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for iso8859-8 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iso8859-2/0000755014310600000120000000000014763154167010475 5libX11-1.8.12/nls/iso8859-2/XI18N_OBJS0000644014310600000120000000037014763154126011757 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for euro locales # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/xiiimp _XimpLocalOpenIM # XIM_open XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iso8859-2/XLC_LOCALE.pre0000644014310600000120000000165214763154126012571 XCOMM XLocale Database Sample for iso8859-2. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-2:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-2:GR } font { primary ISO8859-2:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-2 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-2:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-2:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-2/Compose.pre0000644014310600000120000005624614763154126012542 XCOMM XCOMM ISO 8859-2 (Latin2) Compose Sequence XCOMM XCOMM XCOMM Sequence Definition XCOMM XCOMM Means XCOMM Special Character : "#" numbersign : "'" apostrophe : "'" apostrophe : "@" at : "[" bracketleft : "\\" backslash : "\\" backslash : "\\" backslash : "]" bracketright : "^" asciicircum : "^" asciicircum : "^" asciicircum : "^" asciicircum : "`" grave : "`" grave : "{" braceleft : "{" braceleft : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "}" braceright : "}" braceright : "~" asciitilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency <0> : "\244" currency <0> : "\244" currency <0> : "\244" currency <0> : "\244" currency

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph XCOMM Right-hand side (Accented Alphabet) XCOMM These compose sequences are pure supposition on my part. XCOMM It would be nice to know what the real cultural conventions XCOMM are for compose sequences. : "\241" Aogonek : "\241" Aogonek : "\241" Aogonek : "\241" Aogonek : "\242" breve : "\243" Lstroke : "\245" Lcaron : "\245" Lcaron : "\245" Lcaron : "\245" Lcaron : "\246" Sacute : "\246" Sacute : "\246" Sacute : "\246" Sacute : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section : "\250" diaeresis : "\251" Scaron : "\251" Scaron : "\251" Scaron : "\251" Scaron : "\252" Scedilla : "\252" Scedilla : "\252" Scedilla : "\252" Scedilla : "\253" Tcaron : "\253" Tcaron : "\253" Tcaron : "\253" Tcaron : "\254" Zacute : "\254" Zacute : "\254" Zacute : "\254" Zacute : "\255" hyphen : "\256" Zcaron : "\256" Zcaron : "\256" Zcaron : "\256" Zcaron : "\257" Zabovedot <0> : "\260" degree <0> : "\260" degree : "\261" aogonek : "\261" aogonek : "\261" aogonek : "\261" aogonek : "\263" lstroke : "\265" lcaron : "\265" lcaron : "\265" lcaron : "\265" lcaron : "\266" sacute : "\266" sacute : "\266" sacute : "\266" sacute : "\267" caron : "\270" cedilla : "\271" scaron : "\271" scaron : "\271" scaron : "\271" scaron : "\272" scedilla : "\272" scedilla : "\272" scedilla : "\272" scedilla : "\273" tcaron : "\273" tcaron : "\273" tcaron : "\273" tcaron : "\274" zacute : "\274" zacute : "\274" zacute : "\274" zacute : "\275" doubleacute : "\275" doubleacute : "\276" zcaron : "\276" zcaron : "\276" zcaron : "\276" zcaron : "\277" zabovedot : "\300" Racute : "\300" Racute : "\300" Racute : "\300" Racute : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\303" Abreve : "\303" Abreve : "\303" Abreve : "\304" Adiaeresis : "\304" Adiaeresis : "\305" Lacute : "\305" Lacute : "\305" Lacute : "\305" Lacute : "\306" Cacute : "\306" Cacute : "\306" Cacute : "\306" Cacute : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\310" Ccaron : "\310" Ccaron : "\310" Ccaron : "\310" Ccaron : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\312" Eogonek : "\312" Eogonek : "\312" Eogonek : "\312" Eogonek : "\313" Ediaeresis : "\313" Ediaeresis : "\314" Ecaron : "\314" Ecaron : "\314" Ecaron : "\314" Ecaron : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\317" Dcaron : "\317" Dcaron : "\317" Dcaron : "\317" Dcaron : "\320" Dstroke : "\320" Dstroke : "\321" Nacute : "\321" Nacute : "\321" Nacute : "\321" Nacute : "\322" Ncaron : "\322" Ncaron : "\322" Ncaron : "\322" Ncaron : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\325" Odoubleacute : "\325" Odoubleacute : "\326" Odiaeresis : "\326" Odiaeresis : "\327" multiply : "\330" Rcaron : "\330" Rcaron : "\330" Rcaron : "\330" Rcaron : "\331" Uring : "\331" Uring : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\333" Udoubleacute : "\333" Udoubleacute : "\334" Udiaeresis : "\334" Udiaeresis : "\335" Yacute : "\335" Yacute : "\335" Yacute : "\335" Yacute : "\336" Tcedilla : "\336" Tcedilla : "\336" Tcedilla : "\336" Tcedilla : "\337" ssharp : "\340" racute : "\340" racute : "\340" racute : "\340" racute : "\341" aacute : "\341" aacute : "\341" aacute : "\341" aacute : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\343" abreve : "\343" abreve : "\343" abreve : "\344" adiaeresis : "\344" adiaeresis : "\345" lacute : "\345" lacute : "\345" lacute : "\345" lacute : "\346" cacute : "\346" cacute : "\346" cacute : "\346" cacute : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\350" ccaron : "\350" ccaron : "\350" ccaron : "\350" ccaron : "\351" eacute : "\351" eacute : "\351" eacute : "\351" eacute : "\352" eogonek : "\352" eogonek : "\352" eogonek : "\352" eogonek : "\353" ediaeresis : "\353" ediaeresis : "\354" ecaron : "\354" ecaron : "\354" ecaron : "\354" ecaron : "\355" iacute : "\355" iacute : "\355" iacute : "\355" iacute : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\357" dcaron : "\357" dcaron : "\357" dcaron : "\357" dcaron : "\360" dstroke : "\360" dstroke : "\361" nacute : "\361" nacute : "\361" nacute : "\361" nacute : "\362" ncaron : "\362" ncaron : "\362" ncaron : "\362" ncaron : "\363" oacute : "\363" oacute : "\363" oacute : "\363" oacute : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\365" odoubleacute : "\365" odoubleacute : "\366" odiaeresis : "\366" odiaeresis : "\367" division : "\367" division : "\370" rcaron : "\370" rcaron : "\370" rcaron : "\370" rcaron : "\371" uring : "\371" uring : "\372" uacute : "\372" uacute : "\372" uacute : "\372" uacute : "\373" udoubleacute : "\373" udoubleacute : "\374" udiaeresis : "\374" udiaeresis : "\375" yacute : "\375" yacute : "\375" yacute : "\375" yacute : "\376" tcedilla : "\376" tcedilla : "\376" tcedilla : "\376" tcedilla : "\377" abovedot : "\301" Aacute : "\306" Cacute : "\311" Eacute : "\315" Iacute : "\305" Lacute : "\321" Nacute : "\323" Oacute : "\300" Racute : "\246" Sacute : "\332" Uacute : "\335" Yacute : "\254" Zacute : "\341" aacute : "\346" cacute : "\351" eacute : "\355" iacute : "\345" lacute : "\361" nacute : "\363" oacute : "\340" racute : "\266" sacute : "\372" uacute : "\375" yacute : "\274" zacute : "\303" Abreve : "\343" abreve : "\304" Adiaeresis : "\313" Ediaeresis : "\326" Odiaeresis : "\334" Udiaeresis : "\344" adiaeresis : "\353" ediaeresis : "\366" odiaeresis : "\374" udiaeresis : "\331" Uring : "\371" uring : "\325" Odoubleacute : "\333" Udoubleacute : "\365" odoubleacute : "\373" udoubleacute : "\310" Ccaron : "\317" Dcaron : "\314" Ecaron : "\245" Lcaron : "\322" Ncaron : "\330" Rcaron : "\251" Scaron : "\253" Tcaron : "\256" Zcaron : "\350" ccaron : "\357" dcaron : "\354" ecaron : "\265" lcaron : "\362" ncaron : "\370" rcaron : "\271" scaron : "\273" tcaron : "\276" zcaron : "\252" Scedilla : "\307" Ccedilla : "\336" Tcedilla : "\347" ccedilla : "\272" scedilla : "\376" tcedilla XCOMM those are for ease of use : "\331" Uring : "\371" uring : "\331" Uring : "\371" uring XCOMM traditional sequences : "\274" OE : "\275" oe : "\305" Aring : "\345" aring : "\260" degree : "\260" degree : "\260" degree : "\260" degree : "\245" Itilde : "\265" itilde : "\303" Atilde : "\325" Otilde : "\335" Utilde : "\343" atilde : "\365" otilde : "\375" utilde : "\321" Ntilde : "\361" ntilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "\267" caron : "\267" caron : "\267" caron : "\267" caron : "\302" Acircumflex : "\316" Icircumflex : "\324" Ocircumflex : "\333" Ucircumflex : "\342" acircumflex : "\356" icircumflex : "\364" ocircumflex : "\373" ucircumflex : "\136" asciicircum : "\136" asciicircum : "\136" asciicircum : "\136" asciicircum : "\253" Gbreve : "\273" gbreve : "\335" Ubreve : "\375" ubreve : "\242" breve : "\242" breve : "\242" breve : "\242" breve : "\241" Aogonek : "\307" Iogonek : "\312" Eogonek : "\331" Uogonek : "\261" aogonek : "\347" iogonek : "\352" eogonek : "\371" uogonek : "\662" ogonek : "\662" ogonek : "\662" ogonek : "\662" ogonek : "\300" Agrave : "\340" agrave : "\310" Egrave : "\350" egrave : "\314" Igrave : "\354" igrave : "\322" Ograve : "\362" ograve : "\331" Ugrave : "\371" ugrave : "`" grave : "`" grave : "`" grave : "`" grave : "\305" Cabovedot : "\345" cabovedot : "\251" Iabovedot : "\271" idotless : "\257" Zabovedot : "\277" zabovedot : "\314" Eabovedot : "\354" eabovedot : "\377" abovedot : "\377" abovedot : "\377" abovedot : "\377" abovedot : "\264" acute : "\264" acute : "\264" acute : "\264" acute : "\675" doubleacute : "\675" doubleacute : "\675" doubleacute : "\675" doubleacute : "\317" Idiaeresis : "\357" idiaeresis : "\377" ydiaeresis : "\250" diaeresis : "\250" diaeresis : "\250" diaeresis : "\250" diaeresis : "\270" cedilla : "\270" cedilla : "\270" cedilla : "\270" cedilla : "\257" macron : "\257" macron : "\257" macron : "\257" macron XCOMM End of Sequence Definition libX11-1.8.12/nls/iso8859-11/0000755014310600000120000000000014763154167010555 5libX11-1.8.12/nls/iso8859-11/XLC_LOCALE.pre0000644014310600000120000000166114763154126012651 XCOMM XLocale Database Sample for iso8859-11. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-11:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-11:GR } font { primary ISO8859-11:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-11 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-11:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-11:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-11/XI18N_OBJS0000644014310600000120000000053014763154126012035 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for iso8859-11 locale # # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iso8859-11/Compose.pre0000644014310600000120000000000014763154126012573 libX11-1.8.12/nls/pt_BR.UTF-8/0000755014310600000120000000000014763154167011016 5libX11-1.8.12/nls/pt_BR.UTF-8/XLC_LOCALE.pre0000644014310600000120000000411114763154126013103 XCOMM XLocale Database Sample for pt_BR.UTF-8 XCOMM XCOMM Based on XLocale Database Sample for en_US.UTF-8 XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET on_demand_loading True object_name generic XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class (ISO8859 families) fs1 { charset { name ISO8859-1:GR } font { primary ISO8859-1:GR } } XCOMM fs2 class (Kanji) fs2 { charset { name JISX0208.1983-0:GL } font { primary JISX0208.1983-0:GL } } XCOMM fs3 class (Korean Character) fs3 { charset { name KSC5601.1987-0:GL } font { primary KSC5601.1987-0:GL } } XCOMM fs4 class (Chinese Han Character) fs4 { charset { name GB2312.1980-0:GL } font { primary GB2312.1980-0:GL } } XCOMM fs5 class (Half Kana) fs5 { charset { name JISX0201.1976-0:GR } font { primary JISX0201.1976-0:GR vertical_rotate all } } XCOMM ISO10646 is last, per Roland Mainz in XCOMM http://bugs.freedesktop.org/show_bug.cgi?id=1896 fs6 { charset { name ISO10646-1 } font { primary ISO10646-1 } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name UTF-8 mb_cur_max 6 state_depend_encoding False XCOMM cs0 class cs0 { side GL:Default length 1 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 ct_encoding ISO8859-1:GR } XCOMM cs2 class cs2 { side GR length 2 ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\ JISX0208.1983-1:GL; JISX0208.1983-1:GR } XCOMM cs3 class cs3 { side GL length 2 ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\ KSC5601.1987-1:GL; KSC5601.1987-1:GR } XCOMM cs4 class cs4 { side GR length 2 ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR } XCOMM cs5 class cs5 { side GR length 1 ct_encoding JISX0201.1976-0:GR } XCOMM cs6 class cs6 { side none ct_encoding ISO10646-1 } END XLC_XLOCALE libX11-1.8.12/nls/pt_BR.UTF-8/Compose.pre0000644014310600000120000000266314763154126013055 XCOMM UTF-8 (Unicode) compose sequences XCOMM XCOMM Originally modified for Brazilian Portuguese XCOMM by Gustavo Noronha Silva . XCOMM Transformed to an include file plus some overrides XCOMM by Benno Schulenberg XCOMM Use the sequences from en_US.UTF-8 as the basis: include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" XCOMM Two nice additions -- maybe add to en_US.UTF8? : "〝" U301d # REVERSED DOUBLE PRIME QUOTATION MARK : "〞" U301e # DOUBLE PRIME QUOTATION MARK XCOMM Overriding C with acute: : "Ç" Ccedilla # LATIN CAPITAL LETTER C WITH CEDILLA : "ç" ccedilla # LATIN SMALL LETTER C WITH CEDILLA XCOMM Overriding E with ogonek: : "Ȩ" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA : "ȩ" U0229 # LATIN SMALL LETTER E WITH CEDILLA XCOMM Overriding U with ogonek: : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE XCOMM These two should probably go back into en_US.UTF8; XCOMM they were most likely mistakenly dropped in June 2006: : "ϓ" U03D3 # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL : "ϓ" U03D3 # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL libX11-1.8.12/nls/pt_BR.UTF-8/XI18N_OBJS0000644014310600000120000000053114763154126012277 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for pt_BR.UTF-8 locale # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/ru_RU.UTF-8/0000755014310600000120000000000014763154167011044 5libX11-1.8.12/nls/ru_RU.UTF-8/XLC_LOCALE.pre0000644014310600000120000000453214763154126013140 XCOMM XCOMM XLocale Database Sample for ru_RU.UTF-8 XCOMM Derived from en_US.UTF-8 XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET on_demand_loading True object_name generic XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class (ISO8859 families) fs1 { charset { name ISO8859-1:GR } font { primary ISO8859-1:GR } } XCOMM fs2 class (KOI8-R) fs2 { charset { name KOI8-R:GR } font { primary KOI8-R:GR } } XCOMM fs3 class (MICROSOFT-CP1251) fs3 { charset { name MICROSOFT-CP1251:GR } font { primary MICROSOFT-CP1251:GR } } XCOMM fs4 class (ISO8859-5) fs4 { charset { name ISO8859-5:GR } font { primary ISO8859-5:GR } } XCOMM fs5 class (Kanji) fs5 { charset { name JISX0208.1983-0:GL } font { primary JISX0208.1983-0:GL } } XCOMM fs6 class (Korean Character) fs6 { charset { name KSC5601.1987-0:GL } font { primary KSC5601.1987-0:GL } } XCOMM fs7 class (Chinese Han Character) fs7 { charset { name GB2312.1980-0:GL } font { primary GB2312.1980-0:GL } } XCOMM fs8 class (Half Kana) fs8 { charset { name JISX0201.1976-0:GR } font { primary JISX0201.1976-0:GR vertical_rotate all } } XCOMM ISO10646 should come last so the fonts above will actually be used XCOMM fs9 class fs9 { charset { name ISO10646-1 } font { primary ISO10646-1 } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name UTF-8 mb_cur_max 6 state_depend_encoding False XCOMM cs0 class cs0 { side GL:Default length 1 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 ct_encoding ISO8859-1:GR } XCOMM cs2 class cs2 { side GR length 2 ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR } XCOMM cs3 class cs3 { side GL length 2 ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR } XCOMM cs4 class cs4 { side GR length 2 ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR } XCOMM cs5 class cs5 { side GR length 1 ct_encoding JISX0201.1976-0:GR } XCOMM cs6 class cs6 { side none ct_encoding ISO10646-1 } END XLC_XLOCALE libX11-1.8.12/nls/ru_RU.UTF-8/Compose.pre0000644014310600000120000000006014763154126013070 include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" libX11-1.8.12/nls/ru_RU.UTF-8/XI18N_OBJS0000644014310600000120000000053114763154126012325 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for ru_RU.UTF-8 locale # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/ko_KR.UTF-8/0000755014310600000120000000000014763154167011015 5libX11-1.8.12/nls/ko_KR.UTF-8/XI18N_OBJS0000644014310600000120000000053314763154126012300 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for ko_KR.UTF-8 locale # # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/ko_KR.UTF-8/Compose.pre0000644014310600000120000000006014763154126013041 include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" libX11-1.8.12/nls/ko_KR.UTF-8/XLC_LOCALE.pre0000644014310600000120000000435114763154126013110 XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET on_demand_loading True object_name generic XCOMM We leave the legacy encodings in for the moment, because we don't XCOMM have that many ISO10646 fonts yet. XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class (ISO8859 families) fs1 { charset { name ISO8859-1:GR } font { primary ISO8859-1:GR } } XCOMM fs2 class (Korean Character) fs2 { charset { name KSC5601.1987-0:GL } font { primary KSC5601.1987-0:GL } } XCOMM fs3 class (Kanji) fs3 { charset { name JISX0208.1983-0:GL } font { primary JISX0208.1983-0:GL } } XCOMM fs4 class (Chinese Han Character) fs4 { charset { name GB2312.1980-0:GL } font { primary GB2312.1980-0:GL } } XCOMM fs5 class (Half Kana) fs5 { charset { name JISX0201.1976-0:GR } font { primary JISX0201.1976-0:GR vertical_rotate all } } XCOMM ISO10646-1 is put last to make usually better-looking XCOMM other fonts are picked up before iso10646-1 fonts. XCOMM Moreover, some iso10646-1 fonts don't have any glyph at all XCOMM in ISO8859-X ranges. XCOMM fs6 class fs6 { charset { name ISO10646-1 } font { primary ISO10646-1 } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name UTF-8 mb_cur_max 6 state_depend_encoding False XCOMM cs0 class cs0 { side GL:Default length 1 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 ct_encoding ISO8859-1:GR } XCOMM cs2 class cs2 { side GL length 2 ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR } XCOMM cs3 class cs3 { side GR length 2 ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR } XCOMM cs4 class cs4 { side GR length 2 ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR } XCOMM cs5 class cs5 { side GR length 1 ct_encoding JISX0201.1976-0:GR } XCOMM cs6 class cs6 { side none ct_encoding ISO10646-1 } END XLC_XLOCALE libX11-1.8.12/nls/ja.JIS/0000755014310600000120000000000014763154167010224 5libX11-1.8.12/nls/ja.JIS/XLC_LOCALE.pre0000644014310600000120000000373614763154126012325 XCOMM XCOMM XLocale Database Sample for ja_JP.jis XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL substitute JISX0201.1976-0:GL vertical_rotate all } } XCOMM fs1 class (Kanji) fs1 { charset { name JISX0208.1983-0:GL } font { primary JISX0208.1983-0:GL substitute JISX0208.1990-0:GL } } XCOMM fs2 class (Half Kana) fs2 { charset { name JISX0201.1976-0:GR } font { primary JISX0201.1976-0:GR substitute JISX0201.1976-0:GR vertical_rotate all } } XCOMM fs3 class (Supplementary Kanji) XCOMM fs3 { XCOMM charset { XCOMM name JISX0212.1990-0:GL XCOMM } XCOMM font { XCOMM primary JISX0212.1990-0:GL XCOMM } XCOMM } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ja.jis mb_cur_max 5 state_depend_encoding True #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 mb_encoding \x1b \x28 \x4a;\ \x1b \x28 \x42 wc_encoding \x00000000 ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL } XCOMM cs1 class cs1 { side GL length 2 mb_encoding \x1b \x24 \x42;\ \x1b \x24 \x40 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\ JISX0208.1983-1:GL; JISX0208.1983-1:GR } XCOMM cs2 class cs2 { side GL length 1 mb_encoding \x1b \x28 \x49 #if WCHAR32 wc_encoding \x10000000 #else wc_encoding \x00000080 #endif ct_encoding JISX0201.1976-0:GR } XCOMM cs3 class XCOMM cs3 { XCOMM side GL XCOMM length 2 XCOMM mb_encoding \x1b \x24 \x28 \x44 XCOMM #if WCHAR32 XCOMM wc_encoding \x20000000 XCOMM #else XCOMM wc_encoding \x00008000 XCOMM #endif XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR XCOMM } END XLC_XLOCALE libX11-1.8.12/nls/ja.JIS/XI18N_OBJS0000644014310600000120000000052414763154126011507 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for ja.JIS locale # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/ja.JIS/Compose.pre0000644014310600000120000000054414763154126012257 XCOMM XCOMM ja.JIS Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/georgian-academy/0000755014310600000120000000000014763154167012402 5libX11-1.8.12/nls/georgian-academy/XI18N_OBJS0000644014310600000120000000053414763154126013666 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for georgian-academy locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/georgian-academy/XLC_LOCALE.pre0000644014310600000120000000217614763154126014500 XCOMM XLocale Database Sample for georgian-academy XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary GEORGIAN-ACADEMY:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset GEORGIAN-ACADEMY:GR font GEORGIAN-ACADEMY:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name GEORGIAN-ACADEMY side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name GEORGIAN-ACADEMY mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding GEORGIAN-ACADEMY:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding GEORGIAN-ACADEMY:GR } END XLC_XLOCALE libX11-1.8.12/nls/georgian-academy/Compose.pre0000644014310600000120000000055614763154126014440 XCOMM XCOMM georgian-academy Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/th_TH.UTF-8/0000755014310600000120000000000014763154167011016 5libX11-1.8.12/nls/th_TH.UTF-8/XI18N_OBJS0000644014310600000120000000053314763154126012301 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for th_TH.UTF-8 locale # # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/th_TH.UTF-8/XLC_LOCALE.pre0000644014310600000120000000211114763154126013101 XCOMM XLocale Database Sample for th_TH XCOMM XCOMM XCOMM Modified from original th_TH.TACTIS XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO10646-1 } font { primary ISO10646-1 } } XCOMM We leave the legacy encodings in for the moment, because we don't XCOMM have that many ISO10646 fonts yet. XCOMM fs0 class (7 bit ASCII) fs1 { charset ISO8859-1:GL font ISO8859-1:GL } XCOMM fs1 class (Thai) fs2 { charset ISO8859-11:GR font ISO8859-11:GR } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name UTF-8 mb_cur_max 3 state_depend_encoding False wc_encoding_mask \x30000000 wc_shift_bits 7 use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 wc_encoding \x30000000 ct_encoding ISO8859-11:GR } XCOMM cs2 class cs2 { side none ct_encoding ISO10646-1 } END XLC_XLOCALE libX11-1.8.12/nls/th_TH.UTF-8/Compose.pre0000644014310600000120000000006014763154126013042 include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" libX11-1.8.12/nls/koi8-u/0000755014310600000120000000000014763154167010322 5libX11-1.8.12/nls/koi8-u/XI18N_OBJS0000644014310600000120000000052214763154126011603 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for koi8-u locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/koi8-u/XLC_LOCALE.pre0000644014310600000120000000205714763154126012416 XCOMM XLocale Database Sample for koi8-u. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary KOI8-U:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset KOI8-U:GR font KOI8-U:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name KOI8-U side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name KOI8-U mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding KOI8-U:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding KOI8-U:GR } END XLC_XLOCALE libX11-1.8.12/nls/koi8-u/Compose.pre0000644014310600000120000000054414763154126012355 XCOMM XCOMM koi8-u Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/microsoft-cp1256/0000755014310600000120000000000014763154167012131 5libX11-1.8.12/nls/microsoft-cp1256/Compose.pre0000644014310600000120000000000014763154126014147 libX11-1.8.12/nls/microsoft-cp1256/XI18N_OBJS0000644014310600000120000000053414763154126013415 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for microsoft-cp1256 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/microsoft-cp1256/XLC_LOCALE.pre0000644014310600000120000000223214763154126014220 XCOMM XLocale Database Sample for microsoft-cp1256. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary MICROSOFT-CP1256:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name MICROSOFT-CP1256:GR } font { primary MICROSOFT-CP1256:GR } } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name MICROSOFT-CP1256 side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name MICROSOFT-CP1256 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding MICROSOFT-CP1256:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding MICROSOFT-CP1256:GR } END XLC_XLOCALE libX11-1.8.12/nls/compose.dir.pre0000644014310600000120000003757014763154126012067 XCOMM XCOMM This file contains compose table file names. XCOMM The first word is the compose table file name XCOMM and the second word is the full locale name. XCOMM XCOMM iso8859-1/Compose: C iso8859-1/Compose: af_ZA.ISO8859-1 iso8859-6/Compose: ar_AA.ISO8859-6 iso8859-6/Compose: ar_AE.ISO8859-6 iso8859-6/Compose: ar_BH.ISO8859-6 iso8859-6/Compose: ar_DZ.ISO8859-6 iso8859-6/Compose: ar_EG.ISO8859-6 iso8859-6/Compose: ar_IQ.ISO8859-6 iso8859-6/Compose: ar_JO.ISO8859-6 iso8859-6/Compose: ar_KW.ISO8859-6 iso8859-6/Compose: ar_LB.ISO8859-6 iso8859-6/Compose: ar_LY.ISO8859-6 iso8859-6/Compose: ar_MA.ISO8859-6 iso8859-6/Compose: ar_OM.ISO8859-6 iso8859-6/Compose: ar_QA.ISO8859-6 iso8859-6/Compose: ar_SA.ISO8859-6 iso8859-6/Compose: ar_SD.ISO8859-6 iso8859-6/Compose: ar_SY.ISO8859-6 iso8859-6/Compose: ar_TN.ISO8859-6 iso8859-6/Compose: ar_YE.ISO8859-6 iso8859-9e/Compose: az_AZ.ISO8859-9E koi8-c/Compose: az_AZ.KOI8-C microsoft-cp1251/Compose: be_BY.CP1251 iso8859-5/Compose: be_BY.ISO8859-5 iso8859-5/Compose: bg_BG.ISO8859-5 microsoft-cp1251/Compose: bg_BG.CP1251 koi8-r/Compose: bg_BG.KOI8-R iso8859-1/Compose: br_FR.ISO8859-1 iso8859-14/Compose: br_FR.ISO8859-14 iso8859-15/Compose: br_FR.ISO8859-15 iso8859-2/Compose: bs_BA.ISO8859-2 iso8859-1/Compose: ca_AD.ISO8859-1 iso8859-15/Compose: ca_AD.ISO8859-15 iso8859-1/Compose: ca_ES.ISO8859-1 iso8859-15/Compose: ca_ES.ISO8859-15 iso8859-1/Compose: ca_FR.ISO8859-1 iso8859-15/Compose: ca_FR.ISO8859-15 iso8859-1/Compose: ca_IT.ISO8859-1 iso8859-15/Compose: ca_IT.ISO8859-15 iso8859-2/Compose: cs_CZ.ISO8859-2 iso8859-1/Compose: cy_GB.ISO8859-1 iso8859-14/Compose: cy_GB.ISO8859-14 iso8859-15/Compose: cy_GB.ISO8859-15 iso8859-1/Compose: da_DK.ISO8859-1 iso8859-15/Compose: da_DK.ISO8859-15 iso8859-1/Compose: de_AT.ISO8859-1 iso8859-15/Compose: de_AT.ISO8859-15 iso8859-1/Compose: de_BE.ISO8859-1 iso8859-15/Compose: de_BE.ISO8859-15 iso8859-1/Compose: de_CH.ISO8859-1 iso8859-15/Compose: de_CH.ISO8859-15 iso8859-1/Compose: de_DE.ISO8859-1 iso8859-15/Compose: de_DE.ISO8859-15 iso8859-1/Compose: de_LI.ISO8859-1 iso8859-15/Compose: de_LI.ISO8859-15 iso8859-1/Compose: de_LU.ISO8859-1 iso8859-15/Compose: de_LU.ISO8859-15 iso8859-4/Compose: ee_EE.ISO8859-4 iso8859-7/Compose: el_GR.ISO8859-7 iso8859-15/Compose: el_GR.ISO8859-15 iso8859-1/Compose: en_AU.ISO8859-1 iso8859-1/Compose: en_BE.ISO8859-1 iso8859-15/Compose: en_BE.ISO8859-15 iso8859-1/Compose: en_BW.ISO8859-1 iso8859-1/Compose: en_BZ.ISO8859-1 iso8859-1/Compose: en_CA.ISO8859-1 iso8859-1/Compose: en_EN.ISO8859-1 iso8859-1/Compose: en_GB.ISO8859-1 iso8859-15/Compose: en_GB.ISO8859-15 iso8859-1/Compose: en_HK.ISO8859-1 iso8859-1/Compose: en_IE.ISO8859-1 iso8859-15/Compose: en_IE.ISO8859-15 iso8859-1/Compose: en_IL.ISO8859-1 iso8859-15/Compose: en_IN.ISO8859-15 iso8859-1/Compose: en_JM.ISO8859-1 iso8859-1/Compose: en_NZ.ISO8859-1 iso8859-1/Compose: en_PH.ISO8859-1 iso8859-1/Compose: en_SG.ISO8859-1 iso8859-1/Compose: en_TT.ISO8859-1 iso8859-1/Compose: en_UK.ISO8859-1 iso8859-15/Compose: en_UK.ISO8859-15 iso8859-1/Compose: en_US.ISO8859-1 iso8859-15/Compose: en_US.ISO8859-15 iso8859-1/Compose: en_ZA.ISO8859-1 iso8859-15/Compose: en_ZA.ISO8859-15 iso8859-1/Compose: en_ZW.ISO8859-1 iso8859-3/Compose: eo_XX.ISO8859-3 iso8859-1/Compose: es_AR.ISO8859-1 iso8859-1/Compose: es_BO.ISO8859-1 iso8859-1/Compose: es_CL.ISO8859-1 iso8859-1/Compose: es_CO.ISO8859-1 iso8859-1/Compose: es_CR.ISO8859-1 iso8859-1/Compose: es_CU.ISO8859-1 iso8859-1/Compose: es_DO.ISO8859-1 iso8859-1/Compose: es_EC.ISO8859-1 iso8859-1/Compose: es_ES.ISO8859-1 iso8859-15/Compose: es_ES.ISO8859-15 iso8859-1/Compose: es_GT.ISO8859-1 iso8859-1/Compose: es_HN.ISO8859-1 iso8859-1/Compose: es_MX.ISO8859-1 iso8859-1/Compose: es_NI.ISO8859-1 iso8859-1/Compose: es_PA.ISO8859-1 iso8859-15/Compose: es_PA.ISO8859-15 iso8859-1/Compose: es_PE.ISO8859-1 iso8859-15/Compose: es_PE.ISO8859-15 iso8859-1/Compose: es_PR.ISO8859-1 iso8859-1/Compose: es_PY.ISO8859-1 iso8859-15/Compose: es_PY.ISO8859-15 iso8859-1/Compose: es_SV.ISO8859-1 iso8859-15/Compose: es_SV.ISO8859-15 iso8859-1/Compose: es_US.ISO8859-1 iso8859-1/Compose: es_UY.ISO8859-1 iso8859-15/Compose: es_UY.ISO8859-15 iso8859-1/Compose: es_VE.ISO8859-1 iso8859-15/Compose: es_VE.ISO8859-15 iso8859-1/Compose: et_EE.ISO8859-1 iso8859-4/Compose: et_EE.ISO8859-4 iso8859-13/Compose: et_EE.ISO8859-13 iso8859-15/Compose: et_EE.ISO8859-15 iso8859-1/Compose: eu_ES.ISO8859-1 iso8859-15/Compose: eu_ES.ISO8859-15 isiri-3342/Compose: fa_IR.ISIRI-3342 iso8859-1/Compose: fi_FI.ISO8859-1 iso8859-15/Compose: fi_FI.ISO8859-15 iso8859-1/Compose: fo_FO.ISO8859-1 iso8859-15/Compose: fo_FO.ISO8859-15 iso8859-1/Compose: fr_BE.ISO8859-1 iso8859-15/Compose: fr_BE.ISO8859-15 iso8859-1/Compose: fr_CA.ISO8859-1 iso8859-15/Compose: fr_CA.ISO8859-15 iso8859-1/Compose: fr_CH.ISO8859-1 iso8859-15/Compose: fr_CH.ISO8859-15 iso8859-1/Compose: fr_FR.ISO8859-1 iso8859-15/Compose: fr_FR.ISO8859-15 iso8859-1/Compose: fr_LU.ISO8859-1 iso8859-15/Compose: fr_LU.ISO8859-15 iso8859-1/Compose: ga_IE.ISO8859-1 iso8859-14/Compose: ga_IE.ISO8859-14 iso8859-15/Compose: ga_IE.ISO8859-15 iso8859-1/Compose: gd_GB.ISO8859-1 iso8859-14/Compose: gd_GB.ISO8859-14 iso8859-15/Compose: gd_GB.ISO8859-15 iso8859-1/Compose: gl_ES.ISO8859-1 iso8859-15/Compose: gl_ES.ISO8859-15 iso8859-1/Compose: gv_GB.ISO8859-1 iso8859-14/Compose: gv_GB.ISO8859-14 iso8859-15/Compose: gv_GB.ISO8859-15 iso8859-8/Compose: he_IL.ISO8859-8 microsoft-cp1255/Compose: he_IL.CP1255 iscii-dev/Compose: hi_IN.ISCII-DEV iso8859-2/Compose: hr_HR.ISO8859-2 iso8859-2/Compose: hu_HU.ISO8859-2 armscii-8/Compose: hy_AM.ARMSCII-8 iso8859-1/Compose: id_ID.ISO8859-1 iso8859-15/Compose: id_ID.ISO8859-15 iso8859-1/Compose: is_IS.ISO8859-1 iso8859-15/Compose: is_IS.ISO8859-15 iso8859-1/Compose: it_CH.ISO8859-1 iso8859-15/Compose: it_CH.ISO8859-15 iso8859-1/Compose: it_IT.ISO8859-1 iso8859-15/Compose: it_IT.ISO8859-15 ja/Compose: ja_JP.eucJP ja.SJIS/Compose: ja_JP.SJIS ja.JIS/Compose: ja_JP.JIS7 georgian-academy/Compose: ka_GE.GEORGIAN-ACADEMY georgian-ps/Compose: ka_GE.GEORGIAN-PS iso8859-1/Compose: kl_GL.ISO8859-1 iso8859-15/Compose: kl_GL.ISO8859-15 ko/Compose: ko_KR.eucKR iso8859-1/Compose: kw_GB.ISO8859-1 iso8859-14/Compose: kw_GB.ISO8859-14 iso8859-15/Compose: kw_GB.ISO8859-15 ibm-cp1133/Compose: lo_LA.IBM-CP1133 mulelao-1/Compose: lo_LA.MULELAO-1 iso8859-4/Compose: lt_LT.ISO8859-4 iso8859-13/Compose: lt_LT.ISO8859-13 iso8859-4/Compose: lv_LV.ISO8859-4 iso8859-13/Compose: lv_LV.ISO8859-13 iso8859-13/Compose: mi_NZ.ISO8859-13 iso8859-5/Compose: mk_MK.ISO8859-5 microsoft-cp1251/Compose: mk_MK.CP1251 iso8859-1/Compose: ms_MY.ISO8859-1 iso8859-3/Compose: mt_MT.ISO8859-3 iso8859-1/Compose: nb_NO.ISO8859-1 iso8859-15/Compose: nb_NO.ISO8859-15 iso8859-1/Compose: nl_BE.ISO8859-1 iso8859-15/Compose: nl_BE.ISO8859-15 iso8859-1/Compose: nl_NL.ISO8859-1 iso8859-15/Compose: nl_NL.ISO8859-15 iso8859-1/Compose: nn_NO.ISO8859-1 iso8859-15/Compose: nn_NO.ISO8859-15 iso8859-1/Compose: nr_ZA.ISO8859-1 iso8859-15/Compose: nso_ZA.ISO8859-15 iso8859-1/Compose: oc_FR.ISO8859-1 iso8859-15/Compose: oc_FR.ISO8859-15 iso8859-1/Compose: pd_DE.ISO8859-1 iso8859-15/Compose: pd_DE.ISO8859-15 iso8859-1/Compose: pd_US.ISO8859-1 iso8859-15/Compose: pd_US.ISO8859-15 iso8859-1/Compose: ph_PH.ISO8859-1 iso8859-2/Compose: pl_PL.ISO8859-2 iso8859-1/Compose: pp_AN.ISO8859-1 iso8859-1/Compose: pt_BR.ISO8859-1 iso8859-15/Compose: pt_BR.ISO8859-15 iso8859-1/Compose: pt_PT.ISO8859-1 iso8859-15/Compose: pt_PT.ISO8859-15 iso8859-2/Compose: ro_RO.ISO8859-2 koi8-r/Compose: ru_RU.KOI8-R iso8859-5/Compose: ru_RU.ISO8859-5 microsoft-cp1251/Compose: ru_RU.CP1251 microsoft-cp1251/Compose: ru_UA.CP1251 koi8-u/Compose: ru_UA.KOI8-U iso8859-1/Compose: rw_RW.ISO8859-1 iso8859-2/Compose: sk_SK.ISO8859-2 iso8859-2/Compose: sl_SI.ISO8859-2 iso8859-2/Compose: sq_AL.ISO8859-2 iso8859-1/Compose: ss_ZA.ISO8859-1 iso8859-1/Compose: st_ZA.ISO8859-1 iso8859-1/Compose: sv_FI.ISO8859-1 iso8859-15/Compose: sv_FI.ISO8859-15 iso8859-1/Compose: sv_SE.ISO8859-1 iso8859-15/Compose: sv_SE.ISO8859-15 tscii-0/Compose: ta_IN.TSCII-0 koi8-c/Compose: tg_TJ.KOI8-C iso8859-11/Compose: th_TH.ISO8859-11 th_TH/Compose: th_TH.TIS620 iso8859-1/Compose: tl_PH.ISO8859-1 iso8859-15/Compose: tn_ZA.ISO8859-15 iso8859-9/Compose: tr_TR.ISO8859-9 iso8859-1/Compose: ts_ZA.ISO8859-1 koi8-c/Compose: tt_RU.KOI8-C tatar-cyr/Compose: tt_RU.TATAR-CYR microsoft-cp1251/Compose: uk_UA.CP1251 koi8-u/Compose: uk_UA.KOI8-U iso8859-5/Compose: uk_UA.ISO8859-5 microsoft-cp1256/Compose: ur_PK.CP1256 iso8859-1/Compose: uz_UZ.ISO8859-1 vi_VN.viscii/Compose: vi_VN.VISCII vi_VN.tcvn/Compose: vi_VN.TCVN iso8859-1/Compose: wa_BE.ISO8859-1 iso8859-15/Compose: wa_BE.ISO8859-15 iso8859-1/Compose: xh_ZA.ISO8859-1 microsoft-cp1255/Compose: yi_US.CP1255 zh_CN/Compose: zh_CN.eucCN zh_CN/Compose: zh_CN.gb2312 zh_CN.gbk/Compose: zh_CN.gbk zh_CN.gb18030/Compose: zh_CN.gb18030 zh_HK.big5/Compose: zh_HK.big5 zh_HK.big5hkscs/Compose: zh_HK.big5hkscs zh_TW.big5/Compose: zh_TW.big5 zh_TW/Compose: zh_TW.eucTW iso8859-1/Compose: zu_ZA.ISO8859-1 XCOMM XCOMM en_US.UTF-8/Compose: C.UTF-8 en_US.UTF-8/Compose: af_ZA.UTF-8 am_ET.UTF-8/Compose: am_ET.UTF-8 en_US.UTF-8/Compose: ar_AA.UTF-8 en_US.UTF-8/Compose: ar_AE.UTF-8 en_US.UTF-8/Compose: ar_BH.UTF-8 en_US.UTF-8/Compose: ar_DZ.UTF-8 en_US.UTF-8/Compose: ar_EG.UTF-8 en_US.UTF-8/Compose: ar_IN.UTF-8 en_US.UTF-8/Compose: ar_IQ.UTF-8 en_US.UTF-8/Compose: ar_JO.UTF-8 en_US.UTF-8/Compose: ar_KW.UTF-8 en_US.UTF-8/Compose: ar_LB.UTF-8 en_US.UTF-8/Compose: ar_LY.UTF-8 en_US.UTF-8/Compose: ar_MA.UTF-8 en_US.UTF-8/Compose: ar_OM.UTF-8 en_US.UTF-8/Compose: ar_QA.UTF-8 en_US.UTF-8/Compose: ar_SA.UTF-8 en_US.UTF-8/Compose: ar_SD.UTF-8 en_US.UTF-8/Compose: ar_SY.UTF-8 en_US.UTF-8/Compose: ar_TN.UTF-8 en_US.UTF-8/Compose: ar_YE.UTF-8 en_US.UTF-8/Compose: as_IN.UTF-8 en_US.UTF-8/Compose: ast_ES.UTF-8 en_US.UTF-8/Compose: az_AZ.UTF-8 en_US.UTF-8/Compose: be_BY.UTF-8 en_US.UTF-8/Compose: bg_BG.UTF-8 en_US.UTF-8/Compose: bn_BD.UTF-8 en_US.UTF-8/Compose: bn_IN.UTF-8 en_US.UTF-8/Compose: bo_IN.UTF-8 en_US.UTF-8/Compose: br_FR.UTF-8 en_US.UTF-8/Compose: bs_BA.UTF-8 en_US.UTF-8/Compose: ca_AD.UTF-8 en_US.UTF-8/Compose: ca_ES.UTF-8 en_US.UTF-8/Compose: ca_FR.UTF-8 en_US.UTF-8/Compose: ca_IT.UTF-8 cs_CZ.UTF-8/Compose: cs_CZ.UTF-8 en_US.UTF-8/Compose: cy_GB.UTF-8 en_US.UTF-8/Compose: da_DK.UTF-8 en_US.UTF-8/Compose: de_AT.UTF-8 en_US.UTF-8/Compose: de_BE.UTF-8 en_US.UTF-8/Compose: de_CH.UTF-8 en_US.UTF-8/Compose: de_DE.UTF-8 en_US.UTF-8/Compose: de_IT.UTF-8 en_US.UTF-8/Compose: de_LI.UTF-8 en_US.UTF-8/Compose: de_LU.UTF-8 el_GR.UTF-8/Compose: el_CY.UTF-8 el_GR.UTF-8/Compose: el_GR.UTF-8 en_US.UTF-8/Compose: en_AU.UTF-8 en_US.UTF-8/Compose: en_BE.UTF-8 en_US.UTF-8/Compose: en_BW.UTF-8 en_US.UTF-8/Compose: en_BZ.UTF-8 en_US.UTF-8/Compose: en_CA.UTF-8 en_US.UTF-8/Compose: en_DK.UTF-8 en_US.UTF-8/Compose: en_EN.UTF-8 en_US.UTF-8/Compose: en_GB.UTF-8 en_US.UTF-8/Compose: en_HK.UTF-8 en_US.UTF-8/Compose: en_IE.UTF-8 en_US.UTF-8/Compose: en_IL.UTF-8 en_US.UTF-8/Compose: en_IN.UTF-8 en_US.UTF-8/Compose: en_JM.UTF-8 en_US.UTF-8/Compose: en_MT.UTF-8 en_US.UTF-8/Compose: en_NZ.UTF-8 en_US.UTF-8/Compose: en_PH.UTF-8 en_US.UTF-8/Compose: en_SG.UTF-8 en_US.UTF-8/Compose: en_TT.UTF-8 en_US.UTF-8/Compose: en_UK.UTF-8 en_US.UTF-8/Compose: en_US.UTF-8 en_US.UTF-8/Compose: en_ZA.UTF-8 en_US.UTF-8/Compose: en_ZW.UTF-8 en_US.UTF-8/Compose: eo.UTF-8 en_US.UTF-8/Compose: eo_XX.UTF-8 en_US.UTF-8/Compose: es_AR.UTF-8 en_US.UTF-8/Compose: es_BO.UTF-8 en_US.UTF-8/Compose: es_CL.UTF-8 en_US.UTF-8/Compose: es_CO.UTF-8 en_US.UTF-8/Compose: es_CR.UTF-8 en_US.UTF-8/Compose: es_CU.UTF-8 en_US.UTF-8/Compose: es_DO.UTF-8 en_US.UTF-8/Compose: es_EC.UTF-8 en_US.UTF-8/Compose: es_ES.UTF-8 en_US.UTF-8/Compose: es_GT.UTF-8 en_US.UTF-8/Compose: es_HN.UTF-8 en_US.UTF-8/Compose: es_MX.UTF-8 en_US.UTF-8/Compose: es_NI.UTF-8 en_US.UTF-8/Compose: es_PA.UTF-8 en_US.UTF-8/Compose: es_PE.UTF-8 en_US.UTF-8/Compose: es_PR.UTF-8 en_US.UTF-8/Compose: es_PY.UTF-8 en_US.UTF-8/Compose: es_SV.UTF-8 en_US.UTF-8/Compose: es_US.UTF-8 en_US.UTF-8/Compose: es_UY.UTF-8 en_US.UTF-8/Compose: es_VE.UTF-8 en_US.UTF-8/Compose: et_EE.UTF-8 en_US.UTF-8/Compose: eu_ES.UTF-8 en_US.UTF-8/Compose: fa_IR.UTF-8 fi_FI.UTF-8/Compose: fi_FI.UTF-8 en_US.UTF-8/Compose: fo_FO.UTF-8 en_US.UTF-8/Compose: fr_BE.UTF-8 en_US.UTF-8/Compose: fr_CA.UTF-8 en_US.UTF-8/Compose: fr_CH.UTF-8 en_US.UTF-8/Compose: fr_FR.UTF-8 en_US.UTF-8/Compose: fr_LU.UTF-8 en_US.UTF-8/Compose: ga_IE.UTF-8 en_US.UTF-8/Compose: gd_GB.UTF-8 en_US.UTF-8/Compose: gl_ES.UTF-8 en_US.UTF-8/Compose: gu_IN.UTF-8 en_US.UTF-8/Compose: gv_GB.UTF-8 en_US.UTF-8/Compose: he_IL.UTF-8 en_US.UTF-8/Compose: hi_IN.UTF-8 en_US.UTF-8/Compose: hne_IN.UTF-8 en_US.UTF-8/Compose: hr_HR.UTF-8 en_US.UTF-8/Compose: hu_HU.UTF-8 en_US.UTF-8/Compose: hy_AM.UTF-8 en_US.UTF-8/Compose: id_ID.UTF-8 en_US.UTF-8/Compose: is_IS.UTF-8 en_US.UTF-8/Compose: it_CH.UTF-8 en_US.UTF-8/Compose: it_IT.UTF-8 en_US.UTF-8/Compose: iu_CA.UTF-8 ja_JP.UTF-8/Compose: ja_JP.UTF-8 en_US.UTF-8/Compose: ka_GE.UTF-8 en_US.UTF-8/Compose: kk_KZ.UTF-8 en_US.UTF-8/Compose: kl_GL.UTF-8 km_KH.UTF-8/Compose: km_KH.UTF-8 en_US.UTF-8/Compose: kn_IN.UTF-8 ko_KR.UTF-8/Compose: ko_KR.UTF-8 en_US.UTF-8/Compose: ks_IN.UTF-8 en_US.UTF-8/Compose: ks_IN.UTF-8@devanagari en_US.UTF-8/Compose: ku_TR.UTF-8 en_US.UTF-8/Compose: kw_GB.UTF-8 en_US.UTF-8/Compose: ky_KG.UTF-8 en_US.UTF-8/Compose: lo_LA.UTF-8 en_US.UTF-8/Compose: lt_LT.UTF-8 en_US.UTF-8/Compose: lv_LV.UTF-8 en_US.UTF-8/Compose: mai_IN.UTF-8 en_US.UTF-8/Compose: mi_NZ.UTF-8 en_US.UTF-8/Compose: mk_MK.UTF-8 en_US.UTF-8/Compose: ml_IN.UTF-8 en_US.UTF-8/Compose: mr_IN.UTF-8 en_US.UTF-8/Compose: ms_MY.UTF-8 en_US.UTF-8/Compose: mt_MT.UTF-8 en_US.UTF-8/Compose: nb_NO.UTF-8 en_US.UTF-8/Compose: ne_NP.UTF-8 en_US.UTF-8/Compose: nl_BE.UTF-8 en_US.UTF-8/Compose: nl_NL.UTF-8 en_US.UTF-8/Compose: nn_NO.UTF-8 en_US.UTF-8/Compose: nr_ZA.UTF-8 en_US.UTF-8/Compose: nso_ZA.UTF-8 en_US.UTF-8/Compose: oc_FR.UTF-8 en_US.UTF-8/Compose: or_IN.UTF-8 en_US.UTF-8/Compose: pa_IN.UTF-8 en_US.UTF-8/Compose: pa_PK.UTF-8 en_US.UTF-8/Compose: pd_DE.UTF-8 en_US.UTF-8/Compose: pd_US.UTF-8 en_US.UTF-8/Compose: ph_PH.UTF-8 en_US.UTF-8/Compose: pl_PL.UTF-8 en_US.UTF-8/Compose: pp_AN.UTF-8 pt_BR.UTF-8/Compose: pt_BR.UTF-8 pt_PT.UTF-8/Compose: pt_PT.UTF-8 en_US.UTF-8/Compose: ro_RO.UTF-8 ru_RU.UTF-8/Compose: ru_RU.UTF-8 en_US.UTF-8/Compose: ru_UA.UTF-8 en_US.UTF-8/Compose: rw_RW.UTF-8 en_US.UTF-8/Compose: sa_IN.UTF-8 en_US.UTF-8/Compose: sd_IN.UTF-8 en_US.UTF-8/Compose: sd_IN.UTF-8@devanagari en_US.UTF-8/Compose: se_NO.UTF-8 en_US.UTF-8/Compose: sh_BA.UTF-8 en_US.UTF-8/Compose: si_LK.UTF-8 en_US.UTF-8/Compose: sk_SK.UTF-8 en_US.UTF-8/Compose: sl_SI.UTF-8 en_US.UTF-8/Compose: sq_AL.UTF-8 sr_RS.UTF-8/Compose: sr_ME.UTF-8 sr_RS.UTF-8/Compose: sr_RS.UTF-8 en_US.UTF-8/Compose: ss_ZA.UTF-8 en_US.UTF-8/Compose: st_ZA.UTF-8 en_US.UTF-8/Compose: sv_FI.UTF-8 en_US.UTF-8/Compose: sv_SE.UTF-8 en_US.UTF-8/Compose: ta_IN.UTF-8 en_US.UTF-8/Compose: te_IN.UTF-8 en_US.UTF-8/Compose: tg_TJ.UTF-8 th_TH.UTF-8/Compose: th_TH.UTF-8 en_US.UTF-8/Compose: ti_ER.UTF-8 en_US.UTF-8/Compose: ti_ET.UTF-8 en_US.UTF-8/Compose: tl_PH.UTF-8 en_US.UTF-8/Compose: tn_ZA.UTF-8 en_US.UTF-8/Compose: tr_TR.UTF-8 en_US.UTF-8/Compose: ts_ZA.UTF-8 en_US.UTF-8/Compose: tt_RU.UTF-8 en_US.UTF-8/Compose: uk_UA.UTF-8 en_US.UTF-8/Compose: ur_IN.UTF-8 en_US.UTF-8/Compose: ur_PK.UTF-8 en_US.UTF-8/Compose: uz_UZ.UTF-8 en_US.UTF-8/Compose: ve_ZA.UTF-8 en_US.UTF-8/Compose: vi_VN.UTF-8 en_US.UTF-8/Compose: wa_BE.UTF-8 en_US.UTF-8/Compose: xh_ZA.UTF-8 en_US.UTF-8/Compose: yi_US.UTF-8 zh_CN.UTF-8/Compose: zh_CN.UTF-8 zh_HK.UTF-8/Compose: zh_HK.UTF-8 en_US.UTF-8/Compose: zh_SG.UTF-8 zh_TW.UTF-8/Compose: zh_TW.UTF-8 en_US.UTF-8/Compose: zu_ZA.UTF-8 libX11-1.8.12/nls/koi8-r/0000755014310600000120000000000014763154167010317 5libX11-1.8.12/nls/koi8-r/XI18N_OBJS0000644014310600000120000000052214763154126011600 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for koi8-r locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/koi8-r/XLC_LOCALE.pre0000644014310600000120000000206614763154126012413 XCOMM XLocale Database Sample for koi8-r. XCOMM XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary KOI8-R:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset KOI8-R:GR font KOI8-R:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name KOI8-R side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name KOI8-R mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding KOI8-R:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding KOI8-R:GR } END XLC_XLOCALE libX11-1.8.12/nls/koi8-r/Compose.pre0000644014310600000120000000054414763154126012352 XCOMM XCOMM koi8-r Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/microsoft-cp1251/0000755014310600000120000000000014763154167012124 5libX11-1.8.12/nls/microsoft-cp1251/XI18N_OBJS0000644014310600000120000000053414763154126013410 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for microsoft-cp1251 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/microsoft-cp1251/XLC_LOCALE.pre0000644014310600000120000000223214763154126014213 XCOMM XLocale Database Sample for microsoft-cp1251. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary MICROSOFT-CP1251:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name MICROSOFT-CP1251:GR } font { primary MICROSOFT-CP1251:GR } } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name MICROSOFT-CP1251 side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name MICROSOFT-CP1251 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding MICROSOFT-CP1251:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding MICROSOFT-CP1251:GR } END XLC_XLOCALE libX11-1.8.12/nls/microsoft-cp1251/Compose.pre0000644014310600000120000000000014763154126014142 libX11-1.8.12/nls/locale.alias.pre0000644014310600000120000012561414763154126012171 XCOMM XCOMM This file contains alias names of locales. XCOMM Each alias name is described within one line. XCOMM The first word is the alias name (simplified locale name), XCOMM the second word is the full locale name. XCOMM XCOMM POSIX: C POSIX-UTF2: C C_C.C: C C.en: C C.ASCII: C C.iso88591: en_US.ISO8859-1 Cextend: en_US.ISO8859-1 Cextend.en: en_US.ISO8859-1 English_United-States.437: C C.UTF-8: en_US.UTF-8 C.utf8: en_US.UTF-8 XCOMM a3 is not an ISO 639 language code, but in Cyrillic, "Z" looks like "3". a3: az_AZ.KOI8-C a3_AZ: az_AZ.KOI8-C a3_AZ.koi8c: az_AZ.KOI8-C a3_AZ.KOI-C: az_AZ.KOI8-C a3_AZ.UTF-8: az_AZ.UTF-8 af: af_ZA.ISO8859-1 af_ZA: af_ZA.ISO8859-1 af_ZA.iso88591: af_ZA.ISO8859-1 af_ZA.ISO-8859-1: af_ZA.ISO8859-1 af_ZA.utf8: af_ZA.UTF-8 am: am_ET.UTF-8 am_ET: am_ET.UTF-8 ar: ar_AA.ISO8859-6 ar_AA: ar_AA.ISO8859-6 ar_AA.iso88596: ar_AA.ISO8859-6 ar_AA.ISO-8859-6: ar_AA.ISO8859-6 ar_AE: ar_AE.ISO8859-6 ar_AE.iso88596: ar_AE.ISO8859-6 ar_AE.ISO-8859-6: ar_AE.ISO8859-6 ar_AE.utf8: ar_AE.UTF-8 ar_BH: ar_BH.ISO8859-6 ar_BH.iso88596: ar_BH.ISO8859-6 ar_BH.ISO-8859-6: ar_BH.ISO8859-6 ar_BH.utf8: ar_BH.UTF-8 ar_DZ: ar_DZ.ISO8859-6 ar_DZ.iso88596: ar_DZ.ISO8859-6 ar_DZ.ISO-8859-6: ar_DZ.ISO8859-6 ar_DZ.utf8: ar_DZ.UTF-8 ar_EG: ar_EG.ISO8859-6 ar_EG.iso88596: ar_EG.ISO8859-6 ar_EG.ISO-8859-6: ar_EG.ISO8859-6 ar_EG.utf8: ar_EG.UTF-8 ar_IN: ar_IN.UTF-8 ar_IN.utf8: ar_IN.UTF-8 ar_IQ: ar_IQ.ISO8859-6 ar_IQ.iso88596: ar_IQ.ISO8859-6 ar_IQ.ISO-8859-6: ar_IQ.ISO8859-6 ar_IQ.utf8: ar_IQ.UTF-8 ar_JO: ar_JO.ISO8859-6 ar_JO.iso88596: ar_JO.ISO8859-6 ar_JO.ISO-8859-6: ar_JO.ISO8859-6 ar_JO.utf8: ar_JO.UTF-8 ar_KW: ar_KW.ISO8859-6 ar_KW.iso88596: ar_KW.ISO8859-6 ar_KW.ISO-8859-6: ar_KW.ISO8859-6 ar_KW.utf8: ar_KW.UTF-8 ar_LB: ar_LB.ISO8859-6 ar_LB.iso88596: ar_LB.ISO8859-6 ar_LB.ISO-8859-6: ar_LB.ISO8859-6 ar_LB.utf8: ar_LB.UTF-8 ar_LY: ar_LY.ISO8859-6 ar_LY.iso88596: ar_LY.ISO8859-6 ar_LY.ISO-8859-6: ar_LY.ISO8859-6 ar_LY.utf8: ar_LY.UTF-8 ar_MA: ar_MA.ISO8859-6 ar_MA.iso88596: ar_MA.ISO8859-6 ar_MA.ISO-8859-6: ar_MA.ISO8859-6 ar_MA.utf8: ar_MA.UTF-8 ar_OM: ar_OM.ISO8859-6 ar_OM.iso88596: ar_OM.ISO8859-6 ar_OM.ISO-8859-6: ar_OM.ISO8859-6 ar_OM.utf8: ar_OM.UTF-8 ar_QA: ar_QA.ISO8859-6 ar_QA.iso88596: ar_QA.ISO8859-6 ar_QA.ISO-8859-6: ar_QA.ISO8859-6 ar_QA.utf8: ar_QA.UTF-8 ar_SA: ar_SA.ISO8859-6 ar_SA.iso88596: ar_SA.ISO8859-6 ar_SA.ISO-8859-6: ar_SA.ISO8859-6 ar_SA.utf8: ar_SA.UTF-8 ar_SD: ar_SD.ISO8859-6 ar_SD.iso88596: ar_SD.ISO8859-6 ar_SD.ISO-8859-6: ar_SD.ISO8859-6 ar_SD.utf8: ar_SD.UTF-8 ar_SY: ar_SY.ISO8859-6 ar_SY.iso88596: ar_SY.ISO8859-6 ar_SY.ISO-8859-6: ar_SY.ISO8859-6 ar_SY.utf8: ar_SY.UTF-8 ar_TN: ar_TN.ISO8859-6 ar_TN.iso88596: ar_TN.ISO8859-6 ar_TN.ISO-8859-6: ar_TN.ISO8859-6 ar_TN.utf8: ar_TN.UTF-8 ar_YE: ar_YE.ISO8859-6 ar_YE.iso88596: ar_YE.ISO8859-6 ar_YE.ISO-8859-6: ar_YE.ISO8859-6 ar_YE.utf8: ar_YE.UTF-8 as: as_IN.UTF-8 as_IN: as_IN.UTF-8 as_IN.utf8: as_IN.UTF-8 az: az_AZ.ISO8859-9E az_AZ: az_AZ.ISO8859-9E az_AZ.iso88599e: az_AZ.ISO8859-9E be: be_BY.CP1251 be@latin: be_BY.UTF-8@latin be_BY: be_BY.CP1251 be_BY@latin: be_BY.UTF-8@latin be_BY.cp1251: be_BY.CP1251 be_BY.microsoftcp1251: be_BY.CP1251 be_BY.microsoft-cp1251: be_BY.CP1251 be_BY.MICROSOFT-CP1251: be_BY.CP1251 be_BY.utf8: be_BY.UTF-8 be_BY.utf8@latin: be_BY.UTF-8@latin bg: bg_BG.CP1251 bg_BG: bg_BG.CP1251 bg_BG.cp1251: bg_BG.CP1251 bg_BG.microsoftcp1251: bg_BG.CP1251 bg_BG.microsoft-cp1251: bg_BG.CP1251 bg_BG.MICROSOFT-CP1251: bg_BG.CP1251 bg_BG.iso88595: bg_BG.ISO8859-5 bg_BG.ISO-8859-5: bg_BG.ISO8859-5 bg_BG.koi8r: bg_BG.KOI8-R bg_BG.utf8: bg_BG.UTF-8 bn_IN: bn_IN.UTF-8 bn_IN.utf8: bn_IN.UTF-8 bo_IN: bo_IN.UTF-8 bo_IN.utf8: bo_IN.UTF-8 br: br_FR.ISO8859-1 br_FR: br_FR.ISO8859-1 br_FR.iso88591: br_FR.ISO8859-1 br_FR.ISO-8859-1: br_FR.ISO8859-1 br_FR.iso885914: br_FR.ISO8859-14 br_FR.ISO-8859-14: br_FR.ISO8859-14 br_FR.iso885915: br_FR.ISO8859-15 br_FR.ISO-8859-15: br_FR.ISO8859-15 br_FR.ISO-8859-15@euro: br_FR.ISO8859-15 br_FR@euro: br_FR.ISO8859-15 br_FR.UTF-8@euro: br_FR.UTF-8 bs: bs_BA.ISO8859-2 bs_BA: bs_BA.ISO8859-2 bs_BA.iso88592: bs_BA.ISO8859-2 bs_BA.ISO-8859-2: bs_BA.ISO8859-2 bs_BA.ISO_8859-2: bs_BA.ISO8859-2 ca: ca_ES.ISO8859-1 ca_AD: ca_AD.ISO8859-1 ca_AD@euro: ca_AD.ISO8859-15 ca_AD.iso88591: ca_AD.ISO8859-1 ca_AD.ISO-8859-1: ca_AD.ISO8859-1 ca_AD.iso885915: ca_AD.ISO8859-15 ca_AD.utf8: ca_AD.UTF-8 ca_AD.ISO-8859-15: ca_AD.ISO8859-15 ca_AD.ISO-8859-15@euro: ca_AD.ISO8859-15 ca_AD.UTF-8@euro: ca_AD.UTF-8 ca_ES: ca_ES.ISO8859-1 ca_ES@euro: ca_ES.ISO8859-15 ca_ES.iso88591: ca_ES.ISO8859-1 ca_ES.ISO-8859-1: ca_ES.ISO8859-1 ca_ES.iso885915: ca_ES.ISO8859-15 ca_ES.utf8: ca_ES.UTF-8 ca_ES.ISO-8859-15: ca_ES.ISO8859-15 ca_ES.ISO-8859-15@euro: ca_ES.ISO8859-15 ca_ES.UTF-8@euro: ca_ES.UTF-8 ca_FR: ca_FR.ISO8859-1 ca_FR@euro: ca_FR.ISO8859-15 ca_FR.iso88591: ca_FR.ISO8859-1 ca_FR.ISO-8859-1: ca_FR.ISO8859-1 ca_FR.iso885915: ca_FR.ISO8859-15 ca_FR.utf8: ca_FR.UTF-8 ca_FR.ISO-8859-15: ca_FR.ISO8859-15 ca_FR.ISO-8859-15@euro: ca_FR.ISO8859-15 ca_FR.UTF-8@euro: ca_FR.UTF-8 ca_IT: ca_IT.ISO8859-1 ca_IT@euro: ca_IT.ISO8859-15 ca_IT.iso88591: ca_IT.ISO8859-1 ca_IT.ISO-8859-1: ca_IT.ISO8859-1 ca_IT.iso885915: ca_IT.ISO8859-15 ca_IT.utf8: ca_IT.UTF-8 ca_IT.ISO-8859-15: ca_IT.ISO8859-15 ca_IT.ISO-8859-15@euro: ca_IT.ISO8859-15 ca_IT.UTF-8@euro: ca_IT.UTF-8 cs: cs_CZ.ISO8859-2 cs_CS: cs_CZ.ISO8859-2 cs_CS.ISO8859-2: cs_CZ.ISO8859-2 cs_CZ: cs_CZ.ISO8859-2 cs_CZ.iso88592: cs_CZ.ISO8859-2 cs_CS.iso8859-2: cs_CZ.ISO8859-2 cs_CZ.ISO-8859-2: cs_CZ.ISO8859-2 cs_CZ.ISO_8859-2: cs_CZ.ISO8859-2 cs_CZ.utf8: cs_CZ.UTF-8 cy: cy_GB.ISO8859-1 cy_GB: cy_GB.ISO8859-1 cy_GB.iso88591: cy_GB.ISO8859-1 cy_GB.ISO-8859-1: cy_GB.ISO8859-1 cy_GB.iso885914: cy_GB.ISO8859-14 cy_GB.ISO-8859-14: cy_GB.ISO8859-14 cy_GB.iso885915: cy_GB.ISO8859-15 cy_GB.ISO-8859-15: cy_GB.ISO8859-15 da: da_DK.ISO8859-1 da.ISO8859-15: da_DK.ISO8859-15 da_DK: da_DK.ISO8859-1 da_DK.88591: da_DK.ISO8859-1 da_DK.88591.en: da_DK.ISO8859-1 da_DK.iso88591: da_DK.ISO8859-1 da_DK.ISO-8859-1: da_DK.ISO8859-1 da_DK.ISO_8859-1: da_DK.ISO8859-1 da_DK.iso885915: da_DK.ISO8859-15 da_DK.ISO-8859-15: da_DK.ISO8859-15 da_DK.8859-15: da_DK.ISO8859-15 da_DK.utf8: da_DK.UTF-8 de: de_DE.ISO8859-1 de.ISO8859-15: de_DE.ISO8859-15 de_AT: de_AT.ISO8859-1 de_AT@euro: de_AT.ISO8859-15 de_AT.iso88591: de_AT.ISO8859-1 de_AT.ISO-8859-1: de_AT.ISO8859-1 de_AT.ISO_8859-1: de_AT.ISO8859-1 de_AT.iso885915: de_AT.ISO8859-15 de_AT.ISO-8859-15: de_AT.ISO8859-15 de_AT.ISO-8859-15@euro: de_AT.ISO8859-15 de_AT.UTF-8@euro: de_AT.UTF-8 de_AT.utf8: de_AT.UTF-8 de_BE: de_BE.ISO8859-1 de_BE@euro: de_BE.ISO8859-15 de_BE.iso88591: de_BE.ISO8859-1 de_BE.ISO_8859-1: de_BE.ISO8859-1 de_BE.ISO-8859-1: de_BE.ISO8859-1 de_BE.iso885915: de_BE.ISO8859-15 de_BE.ISO_8859-15: de_BE.ISO8859-15 de_BE.ISO-8859-15: de_BE.ISO8859-15 de_BE.ISO-8859-15@euro: de_BE.ISO8859-15 de_BE.UTF-8@euro: de_BE.UTF-8 de_CH: de_CH.ISO8859-1 de_CH.iso88591: de_CH.ISO8859-1 de_CH.ISO_8859-1: de_CH.ISO8859-1 de_CH.ISO-8859-1: de_CH.ISO8859-1 de_CH.iso885915: de_CH.ISO8859-15 de_CH.ISO_8859-15: de_CH.ISO8859-15 de_CH.ISO-8859-15: de_CH.ISO8859-15 de_CH.utf8: de_CH.UTF-8 de_DE: de_DE.ISO8859-1 de_DE@euro: de_DE.ISO8859-15 de_DE.88591: de_DE.ISO8859-1 de_DE.88591.en: de_DE.ISO8859-1 de_DE.iso88591: de_DE.ISO8859-1 de_DE.ISO-8859-1: de_DE.ISO8859-1 de_DE.ISO_8859-1: de_DE.ISO8859-1 de_DE.iso885915: de_DE.ISO8859-15 de_DE.ISO-8859-15: de_DE.ISO8859-15 de_DE.ISO_8859-15: de_DE.ISO8859-15 de_DE.8859-15: de_DE.ISO8859-15 de_DE.8859-15@euro: de_DE.ISO8859-15 de_DE.ISO-8859-15@euro: de_DE.ISO8859-15 de_DE.UTF-8@euro: de_DE.UTF-8 de_DE.utf8: de_DE.UTF-8 de_IT: de_IT.UTF-8 de_IT.utf8: de_IT.UTF-8 de_LI: de_LI.ISO8859-1 de_LI.iso88591: de_LI.ISO8859-1 de_LI.ISO_8859-1: de_LI.ISO8859-1 de_LI.ISO-8859-1: de_LI.ISO8859-1 de_LI.iso885915: de_LI.ISO8859-15 de_LI.ISO_8859-15: de_LI.ISO8859-15 de_LI.ISO-8859-15: de_LI.ISO8859-15 de_LI.utf8: de_LI.UTF-8 de_LU: de_LU.ISO8859-1 de_LU@euro: de_LU.ISO8859-15 de_LU.iso88591: de_LU.ISO8859-1 de_LU.ISO_8859-1: de_LU.ISO8859-1 de_LU.ISO-8859-1: de_LU.ISO8859-1 de_LU.iso885915: de_LU.ISO8859-15 de_LU.ISO_8859-15: de_LU.ISO8859-15 de_LU.ISO-8859-15: de_LU.ISO8859-15 de_LU.ISO-8859-15@euro: de_LU.ISO8859-15 de_LU.UTF-8@euro: de_LU.UTF-8 de_LU.utf8: de_LU.UTF-8 ee: ee_EE.ISO8859-4 ee_EE: ee_EE.ISO8859-4 ee_EE.iso88594: ee_EE.ISO8859-4 el: el_GR.ISO8859-7 el_GR: el_GR.ISO8859-7 el_GR.iso88597: el_GR.ISO8859-7 el_GR.ISO-8859-7: el_GR.ISO8859-7 el_GR@euro: el_GR.ISO8859-15 el_GR.utf8: el_GR.UTF-8 en: en_US.ISO8859-1 en.ISO-8859-1: en_US.ISO8859-1 en_AU: en_AU.ISO8859-1 en_AU.iso88591: en_AU.ISO8859-1 en_AU.ISO-8859-1: en_AU.ISO8859-1 en_AU.ISO_8859-1: en_AU.ISO8859-1 en_AU.utf8: en_AU.UTF-8 en_BE: en_BE.ISO8859-1 en_BE@euro: en_BE.ISO8859-15 en_BE.utf8: en_BE.UTF-8 en_BW: en_BW.ISO8859-1 en_BW.utf8: en_BW.UTF-8 en_BW.iso88591: en_BW.ISO8859-1 en_BW.ISO-8859-1: en_BW.ISO8859-1 en_CA: en_CA.ISO8859-1 en_CA.iso88591: en_CA.ISO8859-1 en_CA.ISO-8859-1: en_CA.ISO8859-1 en_CA.ISO_8859-1: en_CA.ISO8859-1 en_CA.utf8: en_CA.UTF-8 en_DL.utf8: en_DL.UTF-8 en_GB: en_GB.ISO8859-1 en_GB.88591: en_GB.ISO8859-1 en_GB.88591.en: en_GB.ISO8859-1 en_GB.iso88591: en_GB.ISO8859-1 en_GB.ISO-8859-1: en_GB.ISO8859-1 en_GB.ISO_8859-1: en_GB.ISO8859-1 en_GB.iso885915: en_GB.ISO8859-15 en_GB.ISO-8859-15: en_GB.ISO8859-15 en_GB.utf8: en_GB.UTF-8 en_UK: en_GB.ISO8859-1 en_HK: en_HK.ISO8859-1 en_HK.iso88591: en_HK.ISO8859-1 en_HK.ISO-8859-1: en_HK.ISO8859-1 en_HK.utf8: en_HK.UTF-8 en_IE: en_IE.ISO8859-1 en_IE.iso88591: en_IE.ISO8859-1 en_IE.ISO-8859-1: en_IE.ISO8859-1 en_IE.iso885915: en_IE.ISO8859-15 en_IE.ISO-8859-15: en_IE.ISO8859-15 en_IE.ISO-8859-15@euro: en_IE.ISO8859-15 en_IE@euro: en_IE.ISO8859-15 en_IE.UTF-8@euro: en_IE.UTF-8 en_IE.utf8: en_IE.UTF-8 en_IL: en_IL.ISO8859-1 en_IL.utf8: en_IL.UTF-8 en_IN: en_IN.ISO8859-1 en_IN.utf8: en_IN.UTF-8 en_NZ: en_NZ.ISO8859-1 en_NZ.iso88591: en_NZ.ISO8859-1 en_NZ.ISO-8859-1: en_NZ.ISO8859-1 en_NZ.utf8: en_NZ.UTF-8 en_PH: en_PH.ISO8859-1 en_PH.utf8: en_PH.UTF-8 en_PH.iso88591: en_PH.ISO8859-1 en_PH.ISO-8859-1: en_PH.ISO8859-1 en_SG: en_SG.ISO8859-1 en_SG.utf8: en_SG.UTF-8 en_SG.iso88591: en_SG.ISO8859-1 en_SG.ISO-8859-1: en_SG.ISO8859-1 en_US: en_US.ISO8859-1 en_US.88591: en_US.ISO8859-1 en_US.88591.en: en_US.ISO8859-1 en_US.iso88591: en_US.ISO8859-1 en_US.ISO-8859-1: en_US.ISO8859-1 en_US.ISO_8859-1: en_US.ISO8859-1 en_US.iso885915: en_US.ISO8859-15 en_US.ISO-8859-15: en_US.ISO8859-15 en_US.8859-15: en_US.ISO8859-15 en_US.ISO8859-15@euro: en_US.ISO8859-15 en_US.utf8: en_US.UTF-8 en_ZA: en_ZA.ISO8859-1 en_ZA.88591: en_ZA.ISO8859-1 en_ZA.88591.en: en_ZA.ISO8859-1 en_ZA.iso88591: en_ZA.ISO8859-1 en_ZA.ISO-8859-1: en_ZA.ISO8859-1 en_ZA.ISO_8859-1: en_ZA.ISO8859-1 en_ZA.iso885915: en_ZA.ISO8859-15 en_ZA.ISO-8859-15: en_ZA.ISO8859-15 en_ZA.utf8: en_ZA.UTF-8 en_ZW: en_ZW.ISO8859-1 en_ZW.utf8: en_ZS.UTF-8 en_ZW.iso88591: en_ZW.ISO8859-1 en_ZW.ISO-8859-1: en_ZW.ISO8859-1 eo: eo_XX.ISO8859-3 eo_XX: eo_XX.ISO8859-3 es: es_ES.ISO8859-1 es.UTF-8: es_ES.UTF-8 es_AR: es_AR.ISO8859-1 es_AR.iso88591: es_AR.ISO8859-1 es_AR.ISO-8859-1: es_AR.ISO8859-1 es_AR.utf8: es_AR.UTF-8 es_BO: es_BO.ISO8859-1 es_BO.iso88591: es_BO.ISO8859-1 es_BO.ISO-8859-1: es_BO.ISO8859-1 es_BO.utf8: es_BO.UTF-8 es_CL: es_CL.ISO8859-1 es_CL.iso88591: es_CL.ISO8859-1 es_CL.ISO-8859-1: es_CL.ISO8859-1 es_CL.utf8: es_CL.UTF-8 es_CO: es_CO.ISO8859-1 es_CO.iso88591: es_CO.ISO8859-1 es_CO.ISO-8859-1: es_CO.ISO8859-1 es_CO.utf8: es_CO.UTF-8 es_CR: es_CR.ISO8859-1 es_CR.iso88591: es_CR.ISO8859-1 es_CR.ISO-8859-1: es_CR.ISO8859-1 es_CR.utf8: es_CR.UTF-8 es_CU: es_CU.ISO8859-1 es_CU.iso88591: es_CU.ISO8859-1 es_CU.ISO-8859-1: es_CU.ISO8859-1 es_CU.utf8: es_CU.UTF-8 es_DO: es_DO.ISO8859-1 es_DO.iso88591: es_DO.ISO8859-1 es_DO.ISO-8859-1: es_DO.ISO8859-1 es_DO.utf8: es_DO.UTF-8 es_EC: es_EC.ISO8859-1 es_EC.iso88591: es_EC.ISO8859-1 es_EC.ISO-8859-1: es_EC.ISO8859-1 es_EC.utf8: es_EC.UTF-8 es_ES: es_ES.ISO8859-1 es_ES.88591: es_ES.ISO8859-1 es_ES.88591.en: es_ES.ISO8859-1 es_ES.iso88591: es_ES.ISO8859-1 es_ES.ISO-8859-1: es_ES.ISO8859-1 es_ES.ISO_8859-1: es_ES.ISO8859-1 es_ES.iso885915: es_ES.ISO8859-15 es_ES.ISO-8859-15: es_ES.ISO8859-15 es_ES.ISO-8859-15@euro: es_ES.ISO8859-15 es_ES@euro: es_ES.ISO8859-15 es_ES.UTF-8@euro: es_ES.UTF-8 es_ES.utf8: es_ES.UTF-8 es_GT: es_GT.ISO8859-1 es_GT.iso88591: es_GT.ISO8859-1 es_GT.ISO-8859-1: es_GT.ISO8859-1 es_GT.utf8: es_GT.UTF-8 es_HN: es_HN.ISO8859-1 es_HN.iso88591: es_HN.ISO8859-1 es_HN.ISO-8859-1: es_HN.ISO8859-1 es_HN.utf8: es_HN.UTF-8 es_MX: es_MX.ISO8859-1 es_MX.iso88591: es_MX.ISO8859-1 es_MX.ISO-8859-1: es_MX.ISO8859-1 es_MX.utf8: es_MX.UTF-8 es_NI: es_NI.ISO8859-1 es_NI.iso88591: es_NI.ISO8859-1 es_NI.ISO-8859-1: es_NI.ISO8859-1 es_NI.utf8: es_NI.UTF-8 es_PA: es_PA.ISO8859-1 es_PA.iso88591: es_PA.ISO8859-1 es_PA.ISO-8859-1: es_PA.ISO8859-1 es_PA.iso885915: es_PA.ISO8859-15 es_PA.utf8: es_PA.UTF-8 es_PE: es_PE.ISO8859-1 es_PE.iso88591: es_PE.ISO8859-1 es_PE.ISO-8859-1: es_PE.ISO8859-1 es_PE.iso885915: es_PE.ISO8859-15 es_PE.utf8: es_PE.UTF-8 es_PR: es_PR.ISO8859-1 es_PR.iso88591: es_PR.ISO8859-1 es_PR.ISO-8859-1: es_PR.ISO8859-1 es_PR.utf8: es_PR.UTF-8 es_PY: es_PY.ISO8859-1 es_PY.iso88591: es_PY.ISO8859-1 es_PY.ISO-8859-1: es_PY.ISO8859-1 es_PY.iso885915: es_PY.ISO8859-15 es_PY.utf8: es_PY.UTF-8 es_SV: es_SV.ISO8859-1 es_SV.iso88591: es_SV.ISO8859-1 es_SV.ISO-8859-1: es_SV.ISO8859-1 es_SV.iso885915: es_SV.ISO8859-15 es_SV.utf8: es_SV.UTF-8 es_US: es_US.ISO8859-1 es_US.iso88591: es_US.ISO8859-1 es_US.ISO-8859-1: es_US.ISO8859-1 es_UY: es_UY.ISO8859-1 es_UY.iso88591: es_UY.ISO8859-1 es_UY.ISO-8859-1: es_UY.ISO8859-1 es_UY.iso885915: es_UY.ISO8859-15 es_UY.utf8: es_UY.UTF-8 es_VE: es_VE.ISO8859-1 es_VE.iso88591: es_VE.ISO8859-1 es_VE.ISO-8859-1: es_VE.ISO8859-1 es_VE.iso885915: es_VE.ISO8859-15 es_VE.utf8: es_VE.UTF-8 #if defined(SVR4) && defined(sun) XCOMM Sun Solaris 2.6 has erroneously specified Estonian as a Latin-1 XCOMM language; however this is clearly incorrect according to ISO8859. #endif XCOMM According to Estonian local standards, ISO8859-4 is not a recommended XCOMM charset. EVS8:2000 specifies ISO8859-15 as the base charset. et: et_EE.ISO8859-15 et_EE: et_EE.ISO8859-15 et_EE.iso88591: et_EE.ISO8859-1 et_EE.ISO-8859-1: et_EE.ISO8859-1 et_EE.iso88594: et_EE.ISO8859-4 et_EE.ISO-8859-4: et_EE.ISO8859-4 et_EE.iso885913: et_EE.ISO8859-13 et_EE.ISO-8859-13: et_EE.ISO8859-13 et_EE.iso885915: et_EE.ISO8859-15 et_EE.ISO-8859-15: et_EE.ISO8859-15 et_EE.utf8: et_EE.UTF-8 eu: eu_ES.ISO8859-1 eu_ES: eu_ES.ISO8859-1 eu_ES.iso88591: eu_ES.ISO8859-1 eu_ES.ISO-8859-1: eu_ES.ISO8859-1 eu_ES.iso885915: eu_ES.ISO8859-15 eu_ES.ISO-8859-15: eu_ES.ISO8859-15 eu_ES.ISO-8859-15@euro: eu_ES.ISO8859-15 eu_ES@euro: eu_ES.ISO8859-15 eu_ES.UTF-8@euro: eu_ES.UTF-8 fa: fa_IR.UTF-8 fa_IR: fa_IR.UTF-8 fa_IR.isiri3342: fa_IR.ISIRI-3342 fa_IR.utf8: fa_IR.UTF-8 fi: fi_FI.ISO8859-15 fi.ISO8859-15: fi_FI.ISO8859-15 fi_FI: fi_FI.ISO8859-15 fi_FI.88591: fi_FI.ISO8859-1 fi_FI.88591.en: fi_FI.ISO8859-1 fi_FI.iso88591: fi_FI.ISO8859-1 fi_FI.ISO-8859-1: fi_FI.ISO8859-1 fi_FI.ISO_8859-1: fi_FI.ISO8859-1 fi_FI.iso885915: fi_FI.ISO8859-15 fi_FI.ISO-8859-15: fi_FI.ISO8859-15 fi_FI.ISO-8859-15@euro: fi_FI.ISO8859-15 fi_FI@euro: fi_FI.ISO8859-15 fi_FI.utf8: fi_FI.UTF-8 fi_FI.UTF-8@euro: fi_FI.UTF-8 fo: fo_FO.ISO8859-1 fo_FO: fo_FO.ISO8859-1 fo_FO.iso88591: fo_FO.ISO8859-1 fo_FO.ISO-8859-1: fo_FO.ISO8859-1 fo_FO.iso885915: fo_FO.ISO8859-15 fo_FO.ISO-8859-15: fo_FO.ISO8859-15 fo_FO.utf8: fo_FO.UTF-8 fr: fr_FR.ISO8859-1 fr.ISO8859-15: fr_FR.ISO8859-15 fr.UTF-8: fr_FR.UTF-8 fr_BE: fr_BE.ISO8859-1 fr_BE.88591: fr_BE.ISO8859-1 fr_BE.88591.en: fr_BE.ISO8859-1 fr_BE.ISO-8859-1: fr_BE.ISO8859-1 fr_BE.ISO_8859-1: fr_BE.ISO8859-1 fr_BE.iso885915: fr_BE.ISO8859-15 fr_BE.ISO-8859-15: fr_BE.ISO8859-15 fr_BE.ISO-8859-15@euro: fr_BE.ISO8859-15 fr_BE@euro: fr_BE.ISO8859-15 fr_BE.utf8: fr_BE.UTF-8 fr_BE.UTF-8@euro: fr_BE.UTF-8 fr_CA: fr_CA.ISO8859-1 fr_CA.88591: fr_CA.ISO8859-1 fr_CA.88591.en: fr_CA.ISO8859-1 fr_CA.iso88591: fr_CA.ISO8859-1 fr_CA.ISO-8859-1: fr_CA.ISO8859-1 fr_CA.ISO_8859-1: fr_CA.ISO8859-1 fr_CA.iso885915: fr_CA.ISO8859-15 fr_CA.ISO-8859-15: fr_CA.ISO8859-15 fr_CA.utf8: fr_CA.UTF-8 fr_CH: fr_CH.ISO8859-1 fr_CH.88591: fr_CH.ISO8859-1 fr_CH.88591.en: fr_CH.ISO8859-1 fr_CH.ISO-8859-1: fr_CH.ISO8859-1 fr_CH.ISO_8859-1: fr_CH.ISO8859-1 fr_CH.iso885915: fr_CH.ISO8859-15 fr_CH.ISO-8859-15: fr_CH.ISO8859-15 fr_CH.utf8: fr_CH.UTF-8 fr_FR: fr_FR.ISO8859-1 fr_FR.88591: fr_FR.ISO8859-1 fr_FR.88591.en: fr_FR.ISO8859-1 fr_FR.iso88591: fr_FR.ISO8859-1 fr_FR.ISO-8859-1: fr_FR.ISO8859-1 fr_FR.ISO_8859-1: fr_FR.ISO8859-1 fr_FR.iso885915: fr_FR.ISO8859-15 fr_FR.ISO-8859-15: fr_FR.ISO8859-15 fr_FR.ISO-8859-15@euro: fr_FR.ISO8859-15 fr_FR@euro: fr_FR.ISO8859-15 fr_FR.UTF-8@euro: fr_FR.UTF-8 fr_FR.utf8: fr_FR.UTF-8 fr_LU: fr_LU.ISO8859-1 fr_LU.88591: fr_LU.ISO8859-1 fr_LU.88591.en: fr_LU.ISO8859-1 fr_LU.iso88591: fr_LU.ISO8859-1 fr_LU.ISO-8859-1: fr_LU.ISO8859-1 fr_LU.ISO_8859-1: fr_LU.ISO8859-1 fr_LU.iso885915: fr_LU.ISO8859-15 fr_LU.ISO-8859-15: fr_LU.ISO8859-15 fr_LU.ISO-8859-15@euro: fr_LU.ISO8859-15 fr_LU@euro: fr_LU.ISO8859-15 fr_LU.UTF-8@euro: fr_LU.UTF-8 fr_LU.utf8: fr_LU.UTF-8 ga: ga_IE.ISO8859-1 ga_IE: ga_IE.ISO8859-1 ga_IE.iso88591: ga_IE.ISO8859-1 ga_IE.ISO-8859-1: ga_IE.ISO8859-1 ga_IE.iso885914: ga_IE.ISO8859-14 ga_IE.ISO-8859-14: ga_IE.ISO8859-14 ga_IE.iso885915: ga_IE.ISO8859-15 ga_IE.ISO-8859-15: ga_IE.ISO8859-15 ga_IE.ISO-8859-15@euro: ga_IE.ISO8859-15 ga_IE@euro: ga_IE.ISO8859-15 ga_IE.UTF-8@euro: ga_IE.UTF-8 ga_IE.utf8: ga_IE.UTF-8 gd: gd_GB.ISO8859-1 gd_GB: gd_GB.ISO8859-1 gd_GB.iso88591: gd_GB.ISO8859-1 gd_GB.ISO-8859-1: gd_GB.ISO8859-1 gd_GB.iso885914: gd_GB.ISO8859-14 gd_GB.ISO-8859-14: gd_GB.ISO8859-14 gd_GB.iso885915: gd_GB.ISO8859-15 gd_GB.ISO-8859-15: gd_GB.ISO8859-15 gl: gl_ES.ISO8859-1 gl_ES: gl_ES.ISO8859-1 gl_ES.iso88591: gl_ES.ISO8859-1 gl_ES.ISO-8859-1: gl_ES.ISO8859-1 gl_ES.iso885915: gl_ES.ISO8859-15 gl_ES.ISO-8859-15: gl_ES.ISO8859-15 gl_ES.ISO-8859-15@euro: gl_ES.ISO8859-15 gl_ES@euro: gl_ES.ISO8859-15 gl_ES.UTF-8@euro: gl_ES.UTF-8 gl_ES.utf8: gl_ES.UTF-8 gu_IN: gu_IN.UTF-8 gu_IN.utf8: gu_IN.UTF-8 gv: gv_GB.ISO8859-1 gv_GB: gv_GB.ISO8859-1 gv_GB.iso88591: gv_GB.ISO8859-1 gv_GB.ISO-8859-1: gv_GB.ISO8859-1 gv_GB.iso885914: gv_GB.ISO8859-14 gv_GB.ISO-8859-14: gv_GB.ISO8859-14 gv_GB.iso885915: gv_GB.ISO8859-15 gv_GB.ISO-8859-15: gv_GB.ISO8859-15 he: he_IL.ISO8859-8 he_IL: he_IL.ISO8859-8 he_IL.iso88598: he_IL.ISO8859-8 he_IL.ISO-8859-8: he_IL.ISO8859-8 he_IL.cp1255: he_IL.CP1255 he_IL.microsoftcp1255: he_IL.CP1255 he_IL.microsoft-cp1255: he_IL.CP1255 he_IL.MICROSOFT-CP1255: he_IL.CP1255 he_IL.utf8: he_IL.UTF-8 hi: hi_IN.ISCII-DEV hi_IN: hi_IN.ISCII-DEV hi_IN.isciidev: hi_IN.ISCII-DEV hi_IN.utf8: hi_IN.UTF-8 hne: hne_IN.UTF-8 hne_IN: hne_IN.UTF-8 hne_IN.utf8: hne_IN.UTF-8 hr: hr_HR.ISO8859-2 hr_HR: hr_HR.ISO8859-2 hr_HR.iso88592: hr_HR.ISO8859-2 hr_HR.ISO-8859-2: hr_HR.ISO8859-2 hr_HR.ISO_8859-2: hr_HR.ISO8859-2 hr_HR.utf8: hr_HR.UTF-8 hu: hu_HU.ISO8859-2 hu_HU: hu_HU.ISO8859-2 hu_HU.iso88592: hu_HU.ISO8859-2 hu_HU.ISO-8859-2: hu_HU.ISO8859-2 hu_HU.utf8: hu_HU.UTF-8 ia: ia.UTF-8 ia.utf8: ia.UTF-8 ie: ie.UTF-8 ie.utf8: ie.UTF-8 is: is_IS.ISO8859-1 is_IS: is_IS.ISO8859-1 is_IS.iso88591: is_IS.ISO8859-1 is_IS.ISO-8859-1: is_IS.ISO8859-1 is_IS.ISO_8859-1: is_IS.ISO8859-1 is_IS.iso885915: is_IS.ISO8859-15 is_IS.ISO-8859-15: is_IS.ISO8859-15 is_IS.utf8: is_IS.UTF-8 it: it_IT.ISO8859-1 it.ISO8859-15: it_IT.ISO8859-15 it.UTF-8: it_IT.UTF-8 it_CH: it_CH.ISO8859-1 it_CH.iso88591: it_CH.ISO8859-1 it_CH.ISO_8859-1: it_CH.ISO8859-1 it_CH.ISO-8859-1: it_CH.ISO8859-1 it_CH.iso885915: it_CH.ISO8859-15 it_CH.utf8: it_CH.UTF-8 it_IT: it_IT.ISO8859-1 it_IT.88591: it_IT.ISO8859-1 it_IT.88591.en: it_IT.ISO8859-1 it_IT.iso88591: it_IT.ISO8859-1 it_IT.ISO-8859-1: it_IT.ISO8859-1 it_IT.ISO_8859-1: it_IT.ISO8859-1 it_IT.iso885915: it_IT.ISO8859-15 it_IT.ISO-8859-15: it_IT.ISO8859-15 it_IT.ISO-8859-15@euro: it_IT.ISO8859-15 it_IT@euro: it_IT.ISO8859-15 it_IT.utf8: it_IT.UTF-8 it_IT.UTF-8@euro: it_IT.UTF-8 XCOMM NUNACOM is an encoding for the Inuktitut syllabics XCOMM we have little else on this encoding. iu: iu_CA.NUNACOM-8 iu_CA: iu_CA.NUNACOM-8 iu_CA.nunacom8: iu_CA.NUNACOM-8 ja_JP: ja_JP.eucJP ja: ja_JP.eucJP ja.JIS: ja_JP.JIS7 ja.SJIS: ja_JP.SJIS ja_JP.ujis: ja_JP.eucJP ja_JP.AJEC: ja_JP.eucJP ja_JP.EUC: ja_JP.eucJP ja_JP.EUC-JP: ja_JP.eucJP ja_JP.EUC_JP: ja_JP.eucJP ja_JP.eucjp: ja_JP.eucJP ja_JP.ISO-2022-JP: ja_JP.JIS7 ja_JP.JIS: ja_JP.JIS7 ja_JP.jis7: ja_JP.JIS7 ja_JP.mscode: ja_JP.SJIS ja_JP.PCK: ja_JP.SJIS ja_JP.sjis: ja_JP.SJIS ja_JP.utf8: ja_JP.UTF-8 ka: ka_GE.GEORGIAN-ACADEMY ka_GE: ka_GE.GEORGIAN-ACADEMY ka_GE.georgianacademy: ka_GE.GEORGIAN-ACADEMY ka_GE.georgianrs: ka_GE.GEORGIAN-ACADEMY ka_GE.georgianps: ka_GE.GEORGIAN-PS kl: kl_GL.ISO8859-1 kl_GL: kl_GL.ISO8859-1 kl_GL.iso88591: kl_GL.ISO8859-1 kl_GL.ISO-8859-1: kl_GL.ISO8859-1 kl_GL.iso885915: kl_GL.ISO8859-15 kl_GL.utf8: kl_GL.UTF-8 km_KH: km_KH.UTF-8 km_KH.utf8: km_KH.UTF-8 kn: kn_IN.UTF-8 kn_IN: kn_IN.UTF-8 kn_IN.utf8: kn_IN.UTF-8 ko: ko_KR.eucKR ko.UTF-8: ko_KR.UTF-8 ko_KR: ko_KR.eucKR ko_KR.EUC: ko_KR.eucKR ko_KR.EUC-KR: ko_KR.eucKR ko_KR.euc: ko_KR.eucKR ko_KR.euckr: ko_KR.eucKR ko_KR.utf8: ko_KR.UTF-8 ks: ks_IN.UTF-8 ks_IN: ks_IN.UTF-8 ks_IN.utf8: ks_IN.UTF-8 ks_IN@devanagari: ks_IN.UTF-8@devanagari ks_IN.utf8@devanagari: ks_IN.UTF-8@devanagari kw: kw_GB.ISO8859-1 kw_GB: kw_GB.ISO8859-1 kw_GB.iso88591: kw_GB.ISO8859-1 kw_GB.ISO-8859-1: kw_GB.ISO8859-1 kw_GB.iso885914: kw_GB.ISO8859-14 kw_GB.ISO-8859-14: kw_GB.ISO8859-14 kw_GB.iso885915: kw_GB.ISO8859-15 kw_GB.ISO-8859-15: kw_GB.ISO8859-15 ky: ky_KG.UTF-8 ky_KG: ky_KG.UTF-8 ky_KG.utf8: ky_KG.UTF-8 lo: lo_LA.MULELAO-1 lo_LA: lo_LA.MULELAO-1 lo_LA.cp1133: lo_LA.IBM-CP1133 lo_LA.ibmcp1133: lo_LA.IBM-CP1133 lo_LA.mulelao1: lo_LA.MULELAO-1 #if defined(VeryOldFreeBSD) XCOMM most locales in FreeBSD 2.1.[56] do not work, allow use of FreeBSD's XCOMM generic Latin-1 locale name. N.B. "lt" is a bad code to use for a XCOMM generic Latin-1 locale anyway because it is the country code for XCOMM Lithuania, which by default uses Latin-7 (ISO-8859-13). lt_LN.ISO_8859-1: lt_LN.ISO8859-1 #endif lt: lt_LT.ISO8859-13 lt_LT: lt_LT.ISO8859-13 lt_LT.iso88594: lt_LT.ISO8859-4 lt_LT.ISO-8859-4: lt_LT.ISO8859-4 lt_LT.ISO_8859-4: lt_LT.ISO8859-4 lt_LT.iso885913: lt_LT.ISO8859-13 lt_LT.ISO-8859-13: lt_LT.ISO8859-13 lt_LT.ISO_8859-13: lt_LT.ISO8859-13 lt_LT.utf8: lt_LT.UTF-8 lv: lv_LV.ISO8859-13 lv_LV: lv_LV.ISO8859-13 lv_LV.iso88594: lv_LV.ISO8859-4 lv_LV.ISO-8859-4: lv_LV.ISO8859-4 lv_LV.iso885913: lv_LV.ISO8859-13 lv_LV.ISO-8859-13: lv_LV.ISO8859-13 lv_LV.ISO_8859-13: lv_LV.ISO8859-13 lv_LV.utf8: lv_LV.UTF-8 mai: mai_IN.UTF-8 mai_IN: mai_IN.UTF-8 mai_IN.utf8: mai_IN.UTF-8 mi: mi_NZ.ISO8859-1 mi_NZ: mi_NZ.ISO8859-1 mi_NZ.iso88591: mi_NZ.ISO8859-1 mk: mk_MK.ISO8859-5 mk_MK: mk_MK.ISO8859-5 mk_MK.iso88595: mk_MK.ISO8859-5 mk_MK.ISO-8859-5: mk_MK.ISO8859-5 mk_MK.cp1251: mk_MK.CP1251 mk_MK.microsoftcp1251: mk_MK.CP1251 mk_MK.microsoft-cp1251: mk_MK.CP1251 mk_MK.MICROSOFT-CP1251: mk_MK.CP1251 mk_MK.utf8: mk_MK.UTF-8 ml: ml_IN.UTF-8 ml_IN: ml_IN.UTF-8 ml_IN.utf8: ml_IN.UTF-8 mr: mr_IN.UTF-8 mr_IN: mr_IN.UTF-8 mr_IN.utf8: mr_IN.UTF-8 ms: ms_MY.ISO8859-1 ms_MY: ms_MY.ISO8859-1 ms_MY.iso88591: ms_MY.ISO8859-1 ms_MY.ISO-8859-1: ms_MY.ISO8859-1 mt: mt_MT.ISO8859-3 mt_MT: mt_MT.ISO8859-3 mt_MT.ISO-8859-3: mt_MT.ISO8859-3 nb: nb_NO.ISO8859-1 nb_NO: nb_NO.ISO8859-1 nb_NO.88591: nb_NO.ISO8859-1 nb_NO.iso88591: nb_NO.ISO8859-1 nb_NO.ISO-8859-1: nb_NO.ISO8859-1 nb_NO.iso885915: nb_NO.ISO8859-15 nb_NO.ISO-8859-15: nb_NO.ISO8859-15 nb_NO.utf8: nb_NO.UTF-8 ne_NP: ne_NP.UTF-8 ne_NP.utf8: ne_NP.UTF-8 nl: nl_NL.ISO8859-1 nl.ISO8859-15: nl_NL.ISO8859-15 nl_BE: nl_BE.ISO8859-1 nl_BE.88591: nl_BE.ISO8859-1 nl_BE.88591.en: nl_BE.ISO8859-1 nl_BE.iso88591: nl_BE.ISO8859-1 nl_BE.ISO-8859-1: nl_BE.ISO8859-1 nl_BE.ISO_8859-1: nl_BE.ISO8859-1 nl_BE.iso885915: nl_BE.ISO8859-15 nl_BE.ISO-8859-15: nl_BE.ISO8859-15 nl_BE.ISO-8859-15@euro: nl_BE.ISO8859-15 nl_BE@euro: nl_BE.ISO8859-15 nl_BE.utf8: nl_BE.UTF-8 nl_BE.UTF-8@euro: nl_BE.UTF-8 nl_NL: nl_NL.ISO8859-1 nl_NL.88591: nl_NL.ISO8859-1 nl_NL.88591.en: nl_NL.ISO8859-1 nl_NL.iso88591: nl_NL.ISO8859-1 nl_NL.ISO-8859-1: nl_NL.ISO8859-1 nl_NL.ISO_8859-1: nl_NL.ISO8859-1 nl_NL.iso885915: nl_NL.ISO8859-15 nl_NL.ISO-8859-15: nl_NL.ISO8859-15 nl_NL.ISO-8859-15@euro: nl_NL.ISO8859-15 nl_NL@euro: nl_NL.ISO8859-15 nl_NL.utf8: nl_NL.UTF-8 nl_NL.UTF-8@euro: nl_NL.UTF-8 nn: nn_NO.ISO8859-1 nn_NO: nn_NO.ISO8859-1 nn_NO.88591: nn_NO.ISO8859-1 nn_NO.ISO-8859-1: nn_NO.ISO8859-1 nn_NO.ISO_8859-1: nn_NO.ISO8859-1 nn_NO.iso885915: nn_NO.ISO8859-15 nn_NO.ISO-8859-15: nn_NO.ISO8859-15 nn_NO.utf8: nn_NO.UTF-8 nr: nr_ZA.ISO8859-1 nr_ZA: nr_ZA.ISO8859-1 nr_ZA.iso88591: nr_ZA.ISO8859-1 nr_ZA.utf8: nr_ZA.UTF-8 nso: nso_ZA.ISO8859-15 nso_ZA: nso_ZA.ISO8859-15 nso_ZA.iso885915: nso_ZA.ISO8859-15 nso_ZA.utf8: nso_ZA.UTF-8 nynorsk: nn_NO.ISO8859-1 oc: oc_FR.ISO8859-1 oc_FR: oc_FR.ISO8859-1 oc_FR.iso88591: oc_FR.ISO8859-1 oc_FR.ISO-8859-1: oc_FR.ISO8859-1 oc_FR.iso885915: oc_FR.ISO8859-15 oc_FR.ISO-8859-15: oc_FR.ISO8859-15 oc_FR@euro: oc_FR.ISO8859-15 or: or_IN.UTF-8 or_IN: or_IN.UTF-8 or_IN.utf8: or_IN.UTF-8 pa: pa_IN.UTF-8 pa_IN: pa_IN.UTF-8 pa_IN.utf8: pa_IN.UTF-8 pa_PK.utf8: pa_PK.UTF-8 pd: pd_US.ISO8859-1 pd_DE: pd_DE.ISO8859-1 pd_US: pd_US.ISO8859-1 pd_DE.iso88591: pd_DE.ISO8859-1 pd_US.iso88591: pd_US.ISO8859-1 pd_DE.iso885915: pd_DE.ISO8859-15 pd_US.iso885915: pd_US.ISO8859-15 ph: ph_PH.ISO8859-1 ph_PH: ph_PH.ISO8859-1 ph_PH.iso88591: ph_PH.ISO8859-1 pl: pl_PL.ISO8859-2 pl.UTF-8: pl_PL.UTF-8 pl_PL: pl_PL.ISO8859-2 pl_PL.iso88592: pl_PL.ISO8859-2 pl_PL.ISO-8859-2: pl_PL.ISO8859-2 pl_PL.utf8: pl_PL.UTF-8 pp: pp_AN.ISO8859-1 pp_AN: pp_AN.ISO8859-1 pp_AN.iso88591: pp_AN.ISO8859-1 pt: pt_PT.ISO8859-1 pt.ISO8859-15: pt_PT.ISO8859-15 pt_BR: pt_BR.ISO8859-1 pt_BR.88591: pt_BR.ISO8859-1 pt_BR.88591.en: pt_BR.ISO8859-1 pt_BR.iso88591: pt_BR.ISO8859-1 pt_BR.ISO-8859-1: pt_BR.ISO8859-1 pt_BR.ISO_8859-1: pt_BR.ISO8859-1 pt_BR.iso885915: pt_BR.ISO8859-15 pt_BR.utf8: pt_BR.UTF-8 pt_PT: pt_PT.ISO8859-1 pt_PT.88591: pt_PT.ISO8859-1 pt_PT.88591.en: pt_PT.ISO8859-1 pt_PT.iso88591: pt_PT.ISO8859-1 pt_PT.ISO-8859-1: pt_PT.ISO8859-1 pt_PT.ISO_8859-1: pt_PT.ISO8859-1 pt_PT.iso885915: pt_PT.ISO8859-15 pt_PT.ISO-8859-15: pt_PT.ISO8859-15 pt_PT.ISO-8859-15@euro: pt_PT.ISO8859-15 pt_PT@euro: pt_PT.ISO8859-15 pt_PT.utf8: pt_PT.UTF-8 pt_PT.UTF-8@euro: pt_PT.UTF-8 ro: ro_RO.ISO8859-2 ro_RO: ro_RO.ISO8859-2 ro_RO.iso88592: ro_RO.ISO8859-2 ro_RO.ISO-8859-2: ro_RO.ISO8859-2 ro_RO.utf8: ro_RO.UTF-8 ru: ru_RU.UTF-8 ru.koi8-r: ru_RU.KOI8-R ru.UTF-8: ru_RU.UTF-8 ru_RU: ru_RU.UTF-8 ru_RU.utf8: ru_RU.UTF-8 ru_RU.iso88595: ru_RU.ISO8859-5 ru_RU.ISO-8859-5: ru_RU.ISO8859-5 ru_RU.koi8r: ru_RU.KOI8-R ru_RU.cp1251: ru_RU.CP1251 ru_RU.microsoftcp1251: ru_RU.CP1251 ru_RU.microsoft-cp1251: ru_RU.CP1251 ru_RU.MICROSOFT-CP1251: ru_RU.CP1251 #if defined(INCLUDE_ru_SU) XCOMM ru_SU is redundant now ru_SU: ru_RU.KOI8-R ru_SU.ISO8859-5: ru_RU.ISO8859-5 ru_SU.KOI8-R: ru_RU.KOI8-R #endif ru_UA: ru_UA.KOI8-U ru_UA.koi8u: ru_UA.KOI8-U ru_UA.cp1251: ru_UA.CP1251 ru_UA.microsoftcp1251: ru_UA.CP1251 ru_UA.microsoft-cp1251: ru_UA.CP1251 ru_UA.MICROSOFT-CP1251: ru_UA.CP1251 ru_UA.utf8: ru_UA.UTF-8 rw: rw_RW.ISO8859-1 rw_RW: rw_RW.ISO8859-1 rw_RW.iso8859-1: rw_RW.ISO8859-1 rw_RW.ISO-8859-1: rw_RW.ISO8859-1 rw_RW.utf8: rw_RW.UTF-8 sd: sd_IN.UTF-8 sd_IN.utf8: sd_IN.UTF-8 sd@devanagari: sd_IN.UTF-8@devanagari sd_IN@devanagari: sd_IN.UTF-8@devanagari sd_IN.utf8@devanagari: sd_IN.UTF-8@devanagari se_NO: se_NO.UTF-8 se_NO.utf8: se_NO.UTF-8 si: si_LK.UTF-8 si_LK: si_LK.UTF-8 sk: sk_SK.ISO8859-2 sk_SK: sk_SK.ISO8859-2 sk_SK.iso88592: sk_SK.ISO8859-2 sk_SK.ISO-8859-2: sk_SK.ISO8859-2 sk_SK.utf8: sk_SK.UTF-8 sl: sl_SI.ISO8859-2 sl_SI: sl_SI.ISO8859-2 sl_SI.iso88592: sl_SI.ISO8859-2 sl_SI.ISO-8859-2: sl_SI.ISO8859-2 sl_SI.utf8: sl_SI.UTF-8 sq: sq_AL.ISO8859-2 sq_AL: sq_AL.ISO8859-2 sq_AL.iso88592: sq_AL.ISO8859-2 sq_AL.ISO-8859-2: sq_AL.ISO8859-2 sq_AL.utf8: sq_AL.UTF-8 sr: sr_RS.UTF-8 sr@cyrillic: sr_RS.UTF-8 sr@latin: sr_RS.UTF-8@latin sr@Latn: sr_RS.UTF-8@latin sr_RS: sr_RS.UTF-8 sr_RS@latin: sr_RS.UTF-8@latin sr_RS@Latn: sr_RS.UTF-8@latin sr_RS.UTF-8@Latn: sr_RS.UTF-8@latin sr_RS.utf8: sr_RS.UTF-8 sr_ME: sr_ME.UTF-8 sr_ME.utf8: sr_ME.UTF-8 ss: ss_ZA.ISO8859-1 ss_ZA: ss_ZA.ISO8859-1 ss_ZA.iso88591: ss_ZA.ISO8859-1 ss_ZA.utf8: ss_ZA.UTF-8 st: st_ZA.ISO8859-1 st_ZA: st_ZA.ISO8859-1 st_ZA.iso88591: st_ZA.ISO8859-1 st_ZA.utf8: st_ZA.UTF-8 sv: sv_SE.ISO8859-1 sv.ISO8859-15: sv_SE.ISO8859-15 sv.UTF-8: sv_SE.UTF-8 sv_FI: sv_FI.ISO8859-1 sv_FI.iso88591: sv_FI.ISO8859-1 sv_FI.ISO-8859-1: sv_FI.ISO8859-1 sv_FI.iso885915: sv_FI.ISO8859-15 sv_FI.ISO-8859-15: sv_FI.ISO8859-15 sv_FI.ISO-8859-15@euro: sv_FI.ISO8859-15 sv_FI@euro: sv_FI.ISO8859-15 sv_FI.UTF-8@euro: sv_FI.UTF-8 sv_FI.utf8: sv_FI.UTF-8 sv_SE: sv_SE.ISO8859-1 sv_SE.88591: sv_SE.ISO8859-1 sv_SE.88591.en: sv_SE.ISO8859-1 sv_SE.iso88591: sv_SE.ISO8859-1 sv_SE.ISO-8859-1: sv_SE.ISO8859-1 sv_SE.ISO_8859-1: sv_SE.ISO8859-1 sv_SE.iso885915: sv_SE.ISO8859-15 sv_SE.ISO-8859-15: sv_SE.ISO8859-15 sv_SE@euro: sv_SE.ISO8859-15 sv_SE.utf8: sv_SE.UTF-8 ta: ta_IN.TSCII-0 ta_IN: ta_IN.TSCII-0 ta_IN.tscii: ta_IN.TSCII-0 ta_IN.tscii0: ta_IN.TSCII-0 te: te_IN.UTF-8 te.UTF-8: te_IN.UTF-8 te_IN.utf8: te_IN.UTF-8 tg: tg_TJ.KOI8-C tg_TJ: tg_TJ.KOI8-C tg_TJ.koi8c: tg_TJ.KOI8-C th: th_TH.ISO8859-11 th_TH: th_TH.ISO8859-11 th_TH.ISO-8859-11: th_TH.ISO8859-11 th_TH.tis620: th_TH.TIS620 th_TH.TIS-620: th_TH.TIS620 th_TH.TACTIS: th_TH.TIS620 th_TH.utf8: th_TH.UTF-8 tl: tl_PH.ISO8859-1 tl_PH: tl_PH.ISO8859-1 tl_PH.iso88591: tl_PH.ISO8859-1 tl_PH.ISO-8859-1: tl_PH.ISO8859-1 tn: tn_ZA.ISO8859-15 tn_ZA: tn_ZA.ISO8859-15 tn_ZA.iso8859-15: tn_ZA.ISO8859-15 tn_ZA.utf8: tn_ZA.UTF-8 tr: tr_TR.ISO8859-9 tr_TR: tr_TR.ISO8859-9 tr_TR.iso88599: tr_TR.ISO8859-9 tr_TR.ISO-8859-9: tr_TR.ISO8859-9 tr_TR.utf8: tr_TR.UTF-8 ts: ts_ZA.ISO8859-1 ts_ZA: ts_ZA.ISO8859-1 ts_ZA.iso88591: ts_ZA.ISO8859-1 ts_ZA.utf8: ts_ZA.UTF-8 tt: tt_RU.TATAR-CYR tt_RU: tt_RU.TATAR-CYR tt_RU.tatarcyr: tt_RU.TATAR-CYR tt_RU.koi8c: tt_RU.KOI8-C uk: uk_UA.KOI8-U uk_UA: uk_UA.KOI8-U uk_UA.iso88595: uk_UA.ISO8859-5 uk_UA.koi8u: uk_UA.KOI8-U uk_UA.cp1251: uk_UA.CP1251 uk_UA.microsoftcp1251: uk_UA.CP1251 uk_UA.microsoft-cp1251: uk_UA.CP1251 uk_UA.MICROSOFT-CP1251: uk_UA.CP1251 uk_UA.utf8: uk_UA.UTF-8 ur: ur_IN.UTF-8 ur_IN: ur_IN.UTF-8 ur_IN.utf8: ur_IN.UTF-8 ur: ur_PK.CP1256 ur_PK: ur_PK.CP1256 ur_PK.cp1256: ur_PK.CP1256 ur_PK.microsoftcp1256: ur_PK.CP1256 ur_PK.microsoft-cp1256: ur_PK.CP1256 ur_PK.MICROSOFT-CP1256: ur_PK.CP1256 uz: uz_UZ.UTF-8 uz_UZ: uz_UZ.UTF-8 uz_UZ.ISO-8859-1: uz_UZ.ISO8859-1 uz_UZ@cyrillic: uz_UZ.UTF-8 uz_UZ.UTF-8@cyrillic: uz_UZ.UTF-8 ve: ve_ZA.UTF-8 ve_ZA: ve_ZA.UTF-8 ve_ZA.utf8: ve_ZA.UTF-8 vi: vi_VN.TCVN vi_VN: vi_VN.TCVN vi_VN.tcvn: vi_VN.TCVN vi_VN.tcvn5712: vi_VN.TCVN vi_VN.viscii: vi_VN.VISCII vi_VN.viscii111: vi_VN.VISCII vi_VN.utf8: vi_VN.UTF-8 wa: wa_BE.ISO8859-1 wa_BE: wa_BE.ISO8859-1 wa_BE.iso88591: wa_BE.ISO8859-1 wa_BE.ISO-8859-1: wa_BE.ISO8859-1 wa_BE.iso885915: wa_BE.ISO8859-15 wa_BE.ISO-8859-15: wa_BE.ISO8859-15 wa_BE.ISO-8859-15@euro: wa_BE.ISO8859-15 wa_BE@euro: wa_BE.ISO8859-15 xh: xh_ZA.ISO8859-1 xh_ZA: xh_ZA.ISO8859-1 xh_ZA.iso88591: xh_ZA.ISO8859-1 xh_ZA.utf8: xh_ZA.UTF-8 yi: yi_US.CP1255 yi_US: yi_US.CP1255 yi_US.cp1255: yi_US.CP1255 yi_US.microsoftcp1255: yi_US.CP1255 yi_US.microsoft-cp1255: yi_US.CP1255 yi_US.MICROSOFT-CP1255: yi_US.CP1255 zh_CN: zh_CN.gb2312 zh_CN.Big5: zh_TW.big5 zh_CN.EUC: zh_CN.eucCN zh_CN.GB2312: zh_CN.gb2312 zh_CN.GBK: zh_CN.gbk zh_CN.GB18030: zh_CN.gb18030 zh_CN.big5: zh_TW.big5 zh_CN.euc: zh_CN.eucCN zh_CN.utf8: zh_CN.UTF-8 zh_HK: zh_HK.big5hkscs zh_HK.BIG5HK: zh_HK.big5hkscs zh_HK.Big5hkscs: zh_HK.big5hkscs zh_HK.Big5-hkscs: zh_HK.big5hkscs zh_HK.Big5_hkscs: zh_HK.big5hkscs zh_HK.Big5HKSCS: zh_HK.big5hkscs zh_HK.BIG5-HKSCS: zh_HK.big5hkscs zh_HK.BIG5_HKSCS: zh_HK.big5hkscs zh_HK.Big5-HKSCS: zh_HK.big5hkscs zh_HK.big5-hkscs: zh_HK.big5hkscs zh_HK.Big5-HKSCS: zh_HK.big5hkscs zh_HK.Big5HKSCS: zh_HK.big5hkscs zh_HK.Big5: zh_HK.big5 zh_HK.utf8: zh_HK.UTF-8 zh_TW: zh_TW.big5 zh_TW.Big5: zh_TW.big5 zh_TW.BIG5: zh_TW.big5 zh_TW.EUC: zh_TW.eucTW zh_TW.EUC-TW: zh_TW.eucTW zh_TW.utf8: zh_TW.UTF-8 zu: zu_ZA.ISO8859-1 zu_ZA: zu_ZA.ISO8859-1 zu_ZA.iso88591: zu_ZA.ISO8859-1 zu_ZA.utf8: zu_ZA.UTF-8 XCOMM The following locale names are used in SCO 3.0 english_uk.8859: en_GB.ISO8859-1 english_us.8859: en_US.ISO8859-1 english_us.ascii: en_US.ISO8859-1 french_france.8859: fr_FR.ISO8859-1 german_germany.8859: de_DE.ISO8859-1 portuguese_brazil.8859: pt_BR.ISO8859-1 spanish_spain.8859: es_ES.ISO8859-1 XCOMM The following locale names are used in HPUX 9.x american.iso88591: en_US.ISO8859-1 arabic.iso88596: ar_AA.ISO8859-6 bokmal: nb_NO.ISO8859-1 bokml: nb_NO.ISO8859-1 bulgarian: bg_BG.CP1251 c-french.iso88591: fr_CA.ISO8859-1 catalan: ca_ES.ISO8859-1 chinese-s: zh_CN.eucCN chinese-t: zh_TW.eucTW croatian: hr_HR.ISO8859-2 czech: cs_CZ.ISO8859-2 danish: da_DK.ISO8859-1 dansk: da_DK.ISO8859-1 danish.iso88591: da_DK.ISO8859-1 deutsch: de_DE.ISO8859-1 dutch: nl_NL.ISO8859-1 dutch.iso88591: nl_BE.ISO8859-1 eesti: et_EE.ISO8859-1 english.iso88591: en_EN.ISO8859-1 estonian: et_EE.ISO8859-1 finnish: fi_FI.ISO8859-1 finnish.iso88591: fi_FI.ISO8859-1 franais: fr_FR.ISO8859-1 french: fr_FR.ISO8859-1 french.iso88591: fr_CH.ISO8859-1 galego: gl_ES.ISO8859-1 galician: gl_ES.ISO8859-1 german: de_DE.ISO8859-1 german.iso88591: de_CH.ISO8859-1 greek: el_GR.ISO8859-7 greek.iso88597: el_GR.ISO8859-7 hebrew: he_IL.ISO8859-8 hebrew.iso88598: he_IL.ISO8859-8 hrvatski: hr_HR.ISO8859-2 hungarian: hu_HU.ISO8859-2 icelandic: is_IS.ISO8859-1 icelandic.iso88591: is_IS.ISO8859-1 italian: it_IT.ISO8859-1 italian.iso88591: it_IT.ISO8859-1 japanese: ja_JP.eucJP japanese.euc: ja_JP.eucJP japanese.sjis: ja_JP.SJIS korean: ko_KR.eucKR korean.euc: ko_KR.eucKR lithuanian: lt_LT.ISO8859-13 polish: pl_PL.ISO8859-2 portuguese: pt_PT.ISO8859-1 portuguese.iso88591: pt_PT.ISO8859-1 romanian: ro_RO.ISO8859-2 rumanian: ro_RO.ISO8859-2 russian: ru_RU.ISO8859-5 serbocroatian: sr_RS.UTF-8@latin sinhala: si_LK.UTF-8 slovak: sk_SK.ISO8859-2 slovene: sl_SI.ISO8859-2 slovenian: sl_SI.ISO8859-2 spanish: es_ES.ISO8859-1 spanish.iso88591: es_ES.ISO8859-1 swedish: sv_SE.ISO8859-1 swedish.iso88591: sv_SE.ISO8859-1 turkish: tr_TR.ISO8859-9 turkish.iso88599: tr_TR.ISO8859-9 thai: th_TH.ISO8859-11 univ.utf8: en_US.UTF-8 XCOMM Digital Unix utf universal.utf8@ucs4: en_US.UTF-8 XCOMM Solaris and SunOS have iso_8859_1 and iso_8859_15 LC_CTYPES XCOMM to augment LANG=C iso_8859_1: en_US.ISO8859-1 iso_8859_15: en_US.ISO8859-15 #ifdef WIN32 XCOMM Microsoft Windows/NT 4.0 SP3 XCOMM parser doesn't grok embedded spaces in locale name Afrikaans_South Africa.1252: af_ZA.ISO8859-1 Arabic_Bahrain.1256: ar_BH.ISO8859-6 Arabic_Algeria.1256: ar_DZ.ISO8859-6 Arabic_Egypt.1256: ar_EG.ISO8859-6 Arabic_Iraq.1256: ar_IQ.ISO8859-6 Arabic_Jordan.1256: ar_JO.ISO8859-6 Arabic_Kuwait.1256: ar_KW.ISO8859-6 Arabic_Lebanon.1256: ar_LB.ISO8859-6 Arabic_Libya.1256: ar_LY.ISO8859-6 Arabic_Morocco.1256: ar_MA.ISO8859-6 Arabic_Oman.1256: ar_OM.ISO8859-6 Arabic_Qatar.1256: ar_QA.ISO8859-6 Arabic_Saudi Arabia.1256: ar_SA.ISO8859-6 Arabic_Tunisia.1256: ar_TN.ISO8859-6 Arabic_Yemen.1256: ar_YE.ISO8859-6 Belarusian_Belarus.1251: be_BY.ISO8859-5 Bulgarian_Bulgaria.1251: bg_BG.ISO8859-5 Catalan_Andorra.1252: ca_AD.ISO8859-1 Catalan_Spain.1252: ca_ES.ISO8859-1 Catalan_France.1252: ca_FR.ISO8859-1 Catalan_Italy.1252: ca_IT.ISO8859-1 Czech_Czech Republic.1250: cs_CZ.ISO8859-2 Danish_Denmark.1252: da_DK.ISO8859-1 German_Austria.1252: de_AT.ISO8859-1 German_Switzerland.1252: de_CH.ISO8859-1 German_Germany.1252: de_DE.ISO8859-1 German_Liechtenstein.1252: de_LI.ISO8859-1 German_Luxembourg.1252: de_LU.ISO8859-1 Greek_Greece.1253: el_GR.ISO8859-7 English_Australia.1252: en_AU.ISO8859-1 English_Belize.1252: en_BZ.ISO8859-1 English_Canada.1252: en_CA.ISO8859-1 English_Ireland.1252: en_IE.ISO8859-1 English_Jamaica.1252: en_JM.ISO8859-1 English_New Zealand.1252: en_NZ.ISO8859-1 English_Trinidad y Tobago.1252: en_TT.ISO8859-1 English_United Kingdom.1252: en_UK.ISO8859-1 English_United States.1252: en_US.ISO8859-1 English_South Africa.1252: en_ZA.ISO8859-1 Spanish_Argentina.1252: es_AR.ISO8859-1 Spanish_Bolivia.1252: es_BO.ISO8859-1 Spanish_Chile.1252: es_CL.ISO8859-1 Spanish_Colombia.1252: es_CO.ISO8859-1 Spanish_Costa Rica.1252: es_CR.ISO8859-1 Spanish_Cuba.1252: es_CU.ISO8859-1 Spanish_Dominican Republic.1252: es_DO.ISO8859-1 Spanish_Ecuador.1252: es_EC.ISO8859-1 Spanish - Modern Sort_Spain.1252: es_ES.ISO8859-1 Spanish - Traditional Sort_Spain.1252: es_ES.ISO8859-1 Spanish_Guatemala.1252: es_GT.ISO8859-1 Spanish_Honduras.1252: es_HN.ISO8859-1 Spanish_Mexican.1252: es_MX.ISO8859-1 Spanish_Nicaragua.1252: es_NI.ISO8859-1 Spanish_Panama.1252: es_PA.ISO8859-1 Spanish_Paraguay.1252: es_PY.ISO8859-1 Spanish_Peru.1252: es_PE.ISO8859-1 Spanish_Puerto Rico.1252: es_PR.ISO8859-1 Spanish_El Salvador.1252: es_SV.ISO8859-1 Spanish_Uruguay.1252: es_UY.ISO8859-1 Spanish_Venezuela.1252: es_VE.ISO8859-1 Estonian_Estonia.1257: et_EE.ISO8859-13 Basque_Spain.1252: eu_ES.ISO8859-1 Finnish_Finland.1252: fi_FI.ISO8859-1 French_Belgium.1252: fr_BE.ISO8859-1 French_Canada.1252: fr_CA.ISO8859-1 French_Switzerland.1252: fr_CH.ISO8859-1 French_France.1252: fr_FR.ISO8859-1 French_Luxembourg.1252: fr_LU.ISO8859-1 Faeroese_Faeroe Islands.1252: fo_FO.ISO8859-1 Hebrew_Israel.1255: he_IL.ISO8859-8 Croatian_Croatia.1250: hr_HR.ISO8859-2 Hungarian_Hungary.1250: hu_HU.ISO8859-2 Indonesian_Indonesia.1252: id_ID.ISO8859-1 Icelandic_Iceland.1252: is_IS.ISO8859-1 Italian_Switzerland.1252: it_CH.ISO8859-1 Italian_Italy.1252: it_IT.ISO8859-1 Japanese_Japan.932: ja_JP.SJIS Korean_Korea.949: ko_KR.EUC Lithuanian_Lithuania.1257: lt_LT.ISO8859-13 Latvian_Latvia.1257: lv_LV.ISO8859-13 Dutch_Belgium.1252: nl_BE.ISO8859-1 Dutch_Netherlands.1252: nl_NL.ISO8859-1 Norwegian (Nynorsk)_Norway.1252: nn_NO.ISO8859-1 Norwegian (Bokml)_Norway.1252: nb_NO.ISO8859-1 Polish_Poland.1250: pl_PL.ISO8859-2 Portuguese_Brazil.1252: pt_BR.ISO8859-1 Portuguese_Portugal.1252: pt_PT.ISO8859-1 Romanian_Romania.1250: ro_RO.ISO8859-2 Russian_Russia.1251: ru_RU.ISO8859-5 Slovak_Slovakia.1250: sk_SK.ISO8859-2 Slovene_Slovenia.1250: sl_SI.ISO8859-2 Albanian_Albania.1250: sq_AL.ISO8859-2 Serbian (Latin)_Serbia.1250: sr_RS.UTF-8@latin Swedish_Finland.1252: sv_FI.ISO8859-1 Swedish_Sweden.1252: sv_SE.ISO8859-1 Turkish_Turkey.1254: tr_TR.ISO8859-9 Ukrainian_Ukraine.1251: uk_UA.ISO8859-5 Chinese(PRC)_People's Republic of China.936: zh_CN.EUC Chinese(PRC)_Hong Kong.950: zh_HK.EUC Chinese(Singapore)_Signapore.936: zh_SG.EUC Chinese(Taiwan)_Taiwan.950: zh_TW.EUC #endif XCOMM Other miscellaneous locale names ISO8859-1: en_US.ISO8859-1 ISO-8859-1: en_US.ISO8859-1 japan: ja_JP.eucJP Japanese-EUC: ja_JP.eucJP libX11-1.8.12/nls/iscii-dev/0000755014310600000120000000000014763154167011062 5libX11-1.8.12/nls/iscii-dev/Compose.pre0000644014310600000120000000000014763154126013100 libX11-1.8.12/nls/iscii-dev/XI18N_OBJS0000644014310600000120000000052514763154126012346 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for iscii-dev locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iscii-dev/XLC_LOCALE.pre0000644014310600000120000000210714763154126013152 XCOMM XLocale Database Sample for mulelao-1. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISCII-DEV:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset ISCII-DEV:GR font ISCII-DEV:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name ISCII-DEV side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISCII-DEV mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISCII-DEV:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISCII-DEV:GR } END XLC_XLOCALE libX11-1.8.12/nls/georgian-ps/0000755014310600000120000000000014763154167011421 5libX11-1.8.12/nls/georgian-ps/XI18N_OBJS0000644014310600000120000000052714763154126012707 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for georgian-ps locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/georgian-ps/XLC_LOCALE.pre0000644014310600000120000000212714763154126013513 XCOMM XLocale Database Sample for georgian-ps XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary GEORGIAN-PS:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset GEORGIAN-PS:GR font GEORGIAN-PS:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name GEORGIAN-PS side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name GEORGIAN-PS mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding GEORGIAN-PS:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding GEORGIAN-PS:GR } END XLC_XLOCALE libX11-1.8.12/nls/georgian-ps/Compose.pre0000644014310600000120000000055114763154126013452 XCOMM XCOMM georgian-ps Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/ibm-cp1133/0000755014310600000120000000000014763154167010665 5libX11-1.8.12/nls/ibm-cp1133/XLC_LOCALE.pre0000644014310600000120000000211714763154126012756 XCOMM XLocale Database Sample for ibm-cp1133. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary IBM-CP1133:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset IBM-CP1133:GR font IBM-CP1133:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name IBM-CP1133 side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name IBM-CP1133 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding IBM-CP1133:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding IBM-CP1133:GR } END XLC_XLOCALE libX11-1.8.12/nls/ibm-cp1133/Compose.pre0000644014310600000120000000055014763154126012715 XCOMM XCOMM ibm-cp1133 Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/ibm-cp1133/XI18N_OBJS0000644014310600000120000000052614763154126012152 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for ibm-cp1133 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iso8859-5/0000755014310600000120000000000014763154167010500 5libX11-1.8.12/nls/iso8859-5/Compose.pre0000644014310600000120000000055014763154126012530 XCOMM XCOMM ISO 8859-5 Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/iso8859-5/XLC_LOCALE.pre0000644014310600000120000000165214763154126012574 XCOMM XLocale Database Sample for iso8859-5. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-5:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-5:GR } font { primary ISO8859-5:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-5 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-5:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-5:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-5/XI18N_OBJS0000644014310600000120000000037014763154126011762 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for euro locales # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/xiiimp _XimpLocalOpenIM # XIM_open XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/Makefile.am0000644014310600000120000000315114763154126011155 x11localedir = $(X11_LOCALEDATADIR) CLEANFILES = SUFFIXES = EXTRA_DIST = locale.alias.pre compose.dir.pre locale.dir.pre \ compose-check.pl x11locale_DATA = locale.alias locale.dir compose.dir CLEANFILES += \ locale.alias locale.alias.l1 locale.alias.l2 \ compose.dir compose.dir.l1 compose.dir.l2 \ locale.dir locale.dir.l1 locale.dir.l2 \ XLC_LOCALE include $(top_srcdir)/cpprules.in # Global data files locale.alias: locale.alias.pre $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $(srcdir)/locale.alias.pre | $(CPP_SED_MAGIC) > locale.alias.l1 $(C_SED) -e '/^[^#][^ ]*:/s/://' -e '/^[^#].*[ ].*:/d' \ < locale.alias.l1 > locale.alias.l2 cat locale.alias.l2 locale.alias.l1 > locale.alias compose.dir: compose.dir.pre $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $(srcdir)/compose.dir.pre | $(CPP_SED_MAGIC) > compose.dir.l1 $(C_SED) -e '/^[^#][^ ]*:/s/://' -e '/^[^#].*[ ].*:/d' \ < compose.dir.l1 > compose.dir.l2 cat compose.dir.l2 compose.dir.l1 > compose.dir locale.dir: locale.dir.pre $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $(srcdir)/locale.dir.pre | $(CPP_SED_MAGIC) > locale.dir.l1 $(C_SED) -e '/^[^#][^ ]*:/s/://' -e '/^[^#].*[ ].*:/d' \ < locale.dir.l1 > locale.dir.l2 cat locale.dir.l2 locale.dir.l1 > locale.dir if HAVE_PERL LOG_COMPILER = $(PERL) TESTS = compose-check.pl endif HAVE_PERL # Per-locale data files nobase_dist_x11locale_DATA = $(locales:%=%/XI18N_OBJS) nobase_x11locale_DATA = $(locales:%=%/XLC_LOCALE) $(locales:%=%/Compose) EXTRA_DIST += $(nobase_x11locale_DATA:%=%.pre) CLEANFILES += $(nobase_x11locale_DATA) libX11-1.8.12/nls/ja_JP.UTF-8/0000755014310600000120000000000014763154167010773 5libX11-1.8.12/nls/ja_JP.UTF-8/XI18N_OBJS0000644014310600000120000000053314763154126012256 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for ja_JP.UTF-8 locale # # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/ja_JP.UTF-8/XLC_LOCALE.pre0000644014310600000120000000436014763154126013066 XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET on_demand_loading True object_name generic XCOMM We leave the legacy encodings in for the moment, because we don't XCOMM have that many ISO10646 fonts yet. XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class (ISO8859 families) fs1 { charset { name ISO8859-1:GR } font { primary ISO8859-1:GR } } XCOMM fs2 class (Kanji) fs2 { charset { name JISX0208.1983-0:GL } font { primary JISX0208.1983-0:GL } } XCOMM fs3 class (Korean Character) fs3 { charset { name KSC5601.1987-0:GL } font { primary KSC5601.1987-0:GL } } XCOMM fs4 class (Chinese Han Character) fs4 { charset { name GB2312.1980-0:GL } font { primary GB2312.1980-0:GL } } XCOMM fs5 class (Half Kana) fs5 { charset { name JISX0201.1976-0:GR } font { primary JISX0201.1976-0:GR vertical_rotate all } } XCOMM ISO10646-1 is put last to make usually better-looking XCOMM other fonts are picked up before iso10646-1 fonts. XCOMM Moreover, some iso10646-1 fonts don't have any glyph at all XCOMM in ISO8859-X ranges. XCOMM fs6 class fs6 { charset { name ISO10646-1 } font { primary ISO10646-1 } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name UTF-8 mb_cur_max 6 state_depend_encoding False XCOMM cs0 class cs0 { side GL:Default length 1 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 ct_encoding ISO8859-1:GR } XCOMM cs2 class cs2 { side GR length 2 ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR } XCOMM cs3 class cs3 { side GL length 2 ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR } XCOMM cs4 class cs4 { side GR length 2 ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR } XCOMM cs5 class cs5 { side GR length 1 ct_encoding JISX0201.1976-0:GR } XCOMM cs6 class cs6 { side none ct_encoding ISO10646-1 } END XLC_XLOCALE libX11-1.8.12/nls/ja_JP.UTF-8/Compose.pre0000644014310600000120000000006014763154126013017 include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" libX11-1.8.12/nls/zh_CN.gb18030/0000755014310600000120000000000014763154167011172 5libX11-1.8.12/nls/zh_CN.gb18030/Compose.pre0000644014310600000120000000055314763154126013225 XCOMM XCOMM zh_CN.GB18030 Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/zh_CN.gb18030/XLC_LOCALE.pre0000644014310600000120000000274314763154126013270 XCOMM XFree86 NLS for Chinese encoding GB18030 XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8 XCOMM by James Su XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET on_demand_loading True object_name generic XCOMM We leave the legacy encodings in for the moment, because we don't XCOMM have that many ISO10646 fonts yet. XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class (ISO8859 families) fs1 { charset { name ISO8859-1:GR } font { primary ISO8859-1:GR } } XCOMM fs2 class (Chinese Han Character) fs2 { charset { name GB2312.1980-0:GL } font { primary GB2312.1980-0:GL } } XCOMM fs3 class (Chinese Han Character GBK) fs3 { charset { name GBK-0:GLGR } font { primary GBK-0:GLGR substitute GB13000.1993-1:GLGR } } XCOMM fs4 class fs4 { charset { name ISO10646-1 } font { primary GB18030-0 substitute GBK2K-0 } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name GB18030 mb_cur_max 4 state_depend_encoding False XCOMM cs0 class cs0 { side GL:Default length 1 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 ct_encoding ISO8859-1:GR } XCOMM cs2 class cs2 { side GR length 2 ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR } XCOMM cs3 class cs3 { side none ct_encoding ISO10646-1 } END XLC_XLOCALE libX11-1.8.12/nls/zh_CN.gb18030/XI18N_OBJS0000644014310600000120000000053314763154126012455 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for zh_CN.gb18030 locale # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/am_ET.UTF-8/0000755014310600000120000000000014763154167010775 5libX11-1.8.12/nls/am_ET.UTF-8/XI18N_OBJS0000644014310600000120000000000014763154126012245 libX11-1.8.12/nls/am_ET.UTF-8/XLC_LOCALE.pre0000644014310600000120000000000014763154126013053 libX11-1.8.12/nls/am_ET.UTF-8/Compose.pre0000644014310600000120000004227314763154126013035 XCOMM XCOMM UTF-8 (Unicode) compose sequences for the Ethiopian layout. XCOMM Designed as part of the OLPC project. XCOMM XCOMM Original author: Sergey Udaltsov , 2007. XCOMM XCOMM Include the base sequences too (for other layouts): include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" XCOMM XCOMM Group I XCOMM XCOMM Modifier: /u/ : "ሁ" U1201 # key h (base character ሀ) : "ሉ" U1209 # key l (base character ለ) : "ሙ" U1219 # key m (base character መ) : "ሩ" U1229 # key r (base character ረ) : "ሱ" U1231 # key s (base character ሰ) : "ቁ" U1241 # key q (base character ቀ) : "ቡ" U1261 # key b (base character በ) : "ቱ" U1271 # key t (base character ተ) : "ኑ" U1291 # key n (base character ነ) : "ኡ" U12A1 # key x (base character አ) : "ኩ" U12A9 # key k (base character ከ) : "ዉ" U12C9 # key w (base character ወ) : "ዙ" U12D9 # key z (base character ዘ) : "ዩ" U12E9 # key y (base character የ) : "ዱ" U12F1 # key d (base character ደ) : "ጁ" U1301 # key j (base character ጀ) : "ጉ" U1309 # key g (base character ገ) : "ፁ" U1341 # key [ (base character ፀ) : "ፉ" U1349 # key f (base character ፈ) : "ፑ" U1351 # key p (base character ፐ) : "ሹ" U1239 # key v (base character ሸ) : "ጩ" U1329 # key ] (base character ጨ) XCOMM Modifier: /i/ : "ሂ" U1202 # key h (base character ሀ) : "ሊ" U120A # key l (base character ለ) : "ሚ" U121A # key m (base character መ) : "ሪ" U122A # key r (base character ረ) : "ሲ" U1232 # key s (base character ሰ) : "ቂ" U1242 # key q (base character ቀ) : "ቢ" U1262 # key b (base character በ) : "ቲ" U1272 # key t (base character ተ) : "ኒ" U1292 # key n (base character ነ) : "ኢ" U12A2 # key x (base character አ) : "ኪ" U12AA # key k (base character ከ) : "ዊ" U12CA # key w (base character ወ) : "ዚ" U12DA # key z (base character ዘ) : "ዪ" U12EA # key y (base character የ) : "ዲ" U12F2 # key d (base character ደ) : "ጂ" U1302 # key j (base character ጀ) : "ጊ" U130A # key g (base character ገ) : "ፂ" U1342 # key [ (base character ፀ) : "ፊ" U134A # key f (base character ፈ) : "ፒ" U1352 # key p (base character ፐ) : "ሺ" U123A # key v (base character ሸ) : "ጪ" U132A # key ] (base character ጨ) XCOMM Modifier: /a/ : "ሃ" U1203 # key h (base character ሀ) : "ላ" U120B # key l (base character ለ) : "ማ" U121B # key m (base character መ) : "ራ" U122B # key r (base character ረ) : "ሳ" U1233 # key s (base character ሰ) : "ቃ" U1243 # key q (base character ቀ) : "ባ" U1263 # key b (base character በ) : "ታ" U1273 # key t (base character ተ) : "ና" U1293 # key n (base character ነ) : "ኣ" U12A3 # key x (base character አ) : "ካ" U12AB # key k (base character ከ) : "ዋ" U12CB # key w (base character ወ) : "ዛ" U12DB # key z (base character ዘ) : "ያ" U12EB # key y (base character የ) : "ዳ" U12F3 # key d (base character ደ) : "ጃ" U1303 # key j (base character ጀ) : "ጋ" U130B # key g (base character ገ) : "ፃ" U1343 # key [ (base character ፀ) : "ፋ" U134B # key f (base character ፈ) : "ፓ" U1353 # key p (base character ፐ) : "ሻ" U123B # key v (base character ሸ) : "ጫ" U132B # key ] (base character ጨ) XCOMM Modifier: /e/ : "ሄ" U1204 # key h (base character ሀ) : "ሌ" U120C # key l (base character ለ) : "ሜ" U121C # key m (base character መ) : "ሬ" U122C # key r (base character ረ) : "ሴ" U1234 # key s (base character ሰ) : "ቄ" U1244 # key q (base character ቀ) : "ቤ" U1264 # key b (base character በ) : "ቴ" U1274 # key t (base character ተ) : "ኔ" U1294 # key n (base character ነ) : "ኤ" U12A4 # key x (base character አ) : "ኬ" U12AC # key k (base character ከ) : "ዌ" U12CC # key w (base character ወ) : "ዜ" U12DC # key z (base character ዘ) : "ዬ" U12EC # key y (base character የ) : "ዴ" U12F4 # key d (base character ደ) : "ጄ" U1304 # key j (base character ጀ) : "ጌ" U130C # key g (base character ገ) : "ፄ" U1344 # key [ (base character ፀ) : "ፌ" U134C # key f (base character ፈ) : "ፔ" U1354 # key p (base character ፐ) : "ሼ" U123C # key v (base character ሸ) : "ጬ" U132C # key ] (base character ጨ) XCOMM Modifier: /C/ : "ህ" U1205 # key h (base character ሀ) : "ል" U120D # key l (base character ለ) : "ም" U121D # key m (base character መ) : "ር" U122D # key r (base character ረ) : "ስ" U1235 # key s (base character ሰ) : "ቅ" U1245 # key q (base character ቀ) : "ብ" U1265 # key b (base character በ) : "ት" U1275 # key t (base character ተ) : "ን" U1295 # key n (base character ነ) : "እ" U12A5 # key x (base character አ) : "ክ" U12AD # key k (base character ከ) : "ው" U12CD # key w (base character ወ) : "ዝ" U12DD # key z (base character ዘ) : "ይ" U12ED # key y (base character የ) : "ድ" U12F5 # key d (base character ደ) : "ጅ" U1305 # key j (base character ጀ) : "ግ" U130D # key g (base character ገ) : "ፅ" U1345 # key [ (base character ፀ) : "ፍ" U134D # key f (base character ፈ) : "ፕ" U1355 # key p (base character ፐ) : "ሽ" U123D # key v (base character ሸ) : "ጭ" U132D # key ] (base character ጨ) XCOMM Modifier: /o/ : "ሆ" U1206 # key h (base character ሀ) : "ሎ" U120E # key l (base character ለ) : "ሞ" U121E # key m (base character መ) : "ሮ" U122E # key r (base character ረ) : "ሶ" U1236 # key s (base character ሰ) : "ቆ" U1246 # key q (base character ቀ) : "ቦ" U1266 # key b (base character በ) : "ቶ" U1276 # key t (base character ተ) : "ኖ" U1296 # key n (base character ነ) : "ኦ" U12A6 # key x (base character አ) : "ኮ" U12AE # key k (base character ከ) : "ዎ" U12CE # key w (base character ወ) : "ዞ" U12DE # key z (base character ዘ) : "ዮ" U12EE # key y (base character የ) : "ዶ" U12F6 # key d (base character ደ) : "ጆ" U1306 # key j (base character ጀ) : "ጎ" U130E # key g (base character ገ) : "ፆ" U1346 # key [ (base character ፀ) : "ፎ" U134E # key f (base character ፈ) : "ፖ" U1356 # key p (base character ፐ) : "ሾ" U123E # key v (base character ሸ) : "ጮ" U132E # key ] (base character ጨ) XCOMM Modifier: /A/ : "ሏ" U120F # key l (base character ለ) : "ሟ" U121F # key m (base character መ) : "ሯ" U122F # key r (base character ረ) : "ሷ" U1237 # key s (base character ሰ) : "ቋ" U124B # key q (base character ቀ) : "ቧ" U1267 # key b (base character በ) : "ቷ" U1277 # key t (base character ተ) : "ኗ" U1297 # key n (base character ነ) : "ኧ" U12A7 # key x (base character አ) : "ኳ" U12B3 # key k (base character ከ) : "ዟ" U12DF # key z (base character ዘ) : "ዷ" U12F7 # key d (base character ደ) : "ጇ" U1307 # key j (base character ጀ) : "ጓ" U1313 # key g (base character ገ) : "ፏ" U134F # key f (base character ፈ) : "ፗ" U1357 # key p (base character ፐ) : "ሿ" U123F # key v (base character ሸ) : "ጯ" U132F # key ] (base character ጨ) XCOMM Modifier: /U/ : "ቍ" U124D # key q (base character ቀ) : "ኵ" U12B5 # key k (base character ከ) : "ጕ" U1315 # key g (base character ገ) XCOMM Modifier: /I/ : "ቊ" U124A # key q (base character ቀ) : "ኲ" U12B2 # key k (base character ከ) : "ጒ" U1312 # key g (base character ገ) XCOMM Modifier: /E/ : "ቌ" U124C # key q (base character ቀ) : "ኴ" U12B4 # key k (base character ከ) : "ጔ" U1314 # key g (base character ገ) XCOMM Modifier: /O/ : "ቈ" U1248 # key q (base character ቀ) : "ኰ" U12B0 # key k (base character ከ) : "ጐ" U1310 # key g (base character ገ) XCOMM XCOMM Group II XCOMM XCOMM Modifier: /u/ : "ሑ" U1211 # key h (base character ሐ) : "ሡ" U1221 # key s (base character ሠ) : "ቑ" U1251 # key q (base character ቐ) : "ቹ" U1279 # key c (base character ቸ) : "ጡ" U1321 # key t (base character ጠ) : "ኙ" U1299 # key n (base character ኘ) : "ዑ" U12D1 # key x (base character ዐ) : "ኹ" U12B9 # key k (base character ኸ) : "ዡ" U12E1 # key z (base character ዠ) : "ዹ" U12F9 # key d (base character ዸ) : "ጙ" U1319 # key g (base character ጘ) : "ጹ" U1339 # key [ (base character ጸ) : "ጱ" U1331 # key p (base character ጰ) : "ኁ" U1281 # key ] (base character ኀ) : "ቩ" U1269 # key v (base character ቨ) XCOMM Modifier: /i/ : "ሒ" U1212 # key h (base character ሐ) : "ሢ" U1222 # key s (base character ሠ) : "ቒ" U1252 # key q (base character ቐ) : "ቺ" U127A # key c (base character ቸ) : "ጢ" U1322 # key t (base character ጠ) : "ኚ" U129A # key n (base character ኘ) : "ዒ" U12D2 # key x (base character ዐ) : "ኺ" U12BA # key k (base character ኸ) : "ዢ" U12E2 # key z (base character ዠ) : "ዺ" U12FA # key d (base character ዸ) : "ጚ" U131A # key g (base character ጘ) : "ጺ" U133A # key [ (base character ጸ) : "ጲ" U1332 # key p (base character ጰ) : "ኂ" U1282 # key ] (base character ኀ) : "ቪ" U126A # key v (base character ቨ) XCOMM Modifier: /a/ : "ሓ" U1213 # key h (base character ሐ) : "ሣ" U1223 # key s (base character ሠ) : "ቓ" U1253 # key q (base character ቐ) : "ቻ" U127B # key c (base character ቸ) : "ጣ" U1323 # key t (base character ጠ) : "ኛ" U129B # key n (base character ኘ) : "ዓ" U12D3 # key x (base character ዐ) : "ኻ" U12BB # key k (base character ኸ) : "ዣ" U12E3 # key z (base character ዠ) : "ዻ" U12FB # key d (base character ዸ) : "ጛ" U131B # key g (base character ጘ) : "ጻ" U133B # key [ (base character ጸ) : "ጳ" U1333 # key p (base character ጰ) : "ኃ" U1283 # key ] (base character ኀ) : "ቫ" U126B # key v (base character ቨ) XCOMM Modifier: /e/ : "ሔ" U1214 # key h (base character ሐ) : "ሤ" U1224 # key s (base character ሠ) : "ቔ" U1254 # key q (base character ቐ) : "ቼ" U127C # key c (base character ቸ) : "ጤ" U1324 # key t (base character ጠ) : "ኜ" U129C # key n (base character ኘ) : "ዔ" U12D4 # key x (base character ዐ) : "ኼ" U12BC # key k (base character ኸ) : "ዤ" U12E4 # key z (base character ዠ) : "ዼ" U12FC # key d (base character ዸ) : "ጜ" U131C # key g (base character ጘ) : "ጼ" U133C # key [ (base character ጸ) : "ጴ" U1334 # key p (base character ጰ) : "ኄ" U1284 # key ] (base character ኀ) : "ቬ" U126C # key v (base character ቨ) XCOMM Modifier: /C/ : "ሕ" U1215 # key h (base character ሐ) : "ሥ" U1225 # key s (base character ሠ) : "ቕ" U1255 # key q (base character ቐ) : "ች" U127D # key c (base character ቸ) : "ጥ" U1325 # key t (base character ጠ) : "ኝ" U129D # key n (base character ኘ) : "ዕ" U12D5 # key x (base character ዐ) : "ኽ" U12BD # key k (base character ኸ) : "ዥ" U12E5 # key z (base character ዠ) : "ዽ" U12FD # key d (base character ዸ) : "ጝ" U131D # key g (base character ጘ) : "ጽ" U133D # key [ (base character ጸ) : "ጵ" U1335 # key p (base character ጰ) : "ኅ" U1285 # key ] (base character ኀ) : "ቭ" U126D # key v (base character ቨ) XCOMM Modifier: /o/ : "ሖ" U1216 # key h (base character ሐ) : "ሦ" U1226 # key s (base character ሠ) : "ቖ" U1256 # key q (base character ቐ) : "ቾ" U127E # key c (base character ቸ) : "ጦ" U1326 # key t (base character ጠ) : "ኞ" U129E # key n (base character ኘ) : "ዖ" U12D6 # key x (base character ዐ) : "ኾ" U12BE # key k (base character ኸ) : "ዦ" U12E6 # key z (base character ዠ) : "ዾ" U12FE # key d (base character ዸ) : "ጞ" U131E # key g (base character ጘ) : "ጾ" U133E # key [ (base character ጸ) : "ጶ" U1336 # key p (base character ጰ) : "ኆ" U1286 # key ] (base character ኀ) : "ቮ" U126E # key v (base character ቨ) XCOMM Modifier: /A/ : "ሗ" U1217 # key h (base character ሐ) : "ሧ" U1227 # key s (base character ሠ) : "ቛ" U125B # key q (base character ቐ) : "ቿ" U127F # key c (base character ቸ) : "ጧ" U1327 # key t (base character ጠ) : "ኟ" U129F # key n (base character ኘ) : "ዃ" U12C3 # key k (base character ኸ) : "ዧ" U12E7 # key z (base character ዠ) : "ዿ" U12FF # key d (base character ዸ) : "ጿ" U133F # key [ (base character ጸ) : "ጷ" U1337 # key p (base character ጰ) : "ኋ" U128B # key ] (base character ኀ) : "ቯ" U126F # key v (base character ቨ) XCOMM Modifier: /U/ : "ቝ" U125D # key q (base character ቐ) : "ዅ" U12C5 # key k (base character ኸ) XCOMM Modifier: /I/ : "ቚ" U125A # key q (base character ቐ) : "ዂ" U12C2 # key k (base character ኸ) XCOMM Modifier: /E/ : "ቜ" U125C # key q (base character ቐ) : "ዄ" U12C4 # key k (base character ኸ) XCOMM Modifier: /O/ : "ቘ" U1258 # key q (base character ቐ) : "ዀ" U12C0 # key k (base character ኸ) XCOMM XCOMM Group III XCOMM : "፥" U1365 # key " : "፦" U1366 # key ' : "|" U007C # key - : "¥" U00A5 # key _ : "፧" U1367 # key ? libX11-1.8.12/nls/iso8859-14/0000755014310600000120000000000014763154167010560 5libX11-1.8.12/nls/iso8859-14/XLC_LOCALE.pre0000644014310600000120000000166114763154126012654 XCOMM XLocale Database Sample for iso8859-14. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-14:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-14:GR } font { primary ISO8859-14:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-14 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-14:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-14:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-14/XI18N_OBJS0000644014310600000120000000052614763154126012045 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for iso8859-14 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iso8859-14/Compose.pre0000644014310600000120000005117314763154126012617 XCOMM ISO 8859-14 (Latin 8) Compose Sequences XCOMM XCOMM Original version by Alastair McKinstry, XCOMM Fixed and tidied up by Seamus O Ciardhuain (Dec 2002) XCOMM XCOMM XCOMM First part is taken from the Latin-1 definitions, XCOMM i.e. characters the same in 8859-1 and 8859-14. XCOMM XCOMM Means XCOMM Special Character : "#" numbersign : "'" apostrophe : "'" apostrophe : "@" at : "[" bracketleft : "\\" backslash : "\\" backslash : "\\" backslash : "]" bracketright : "^" asciicircum : "^" asciicircum : "^" asciicircum : "^" asciicircum : "`" grave : "`" grave : "{" braceleft : "{" braceleft : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "}" braceright : "}" braceright : "~" asciitilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph : "\240" nobreakspace : "\255" hyphen : "\256" registered : "\256" registered : "\256" registered : "\256" registered <0> : "\256" registered <0> : "\256" registered <0> : "\256" registered <0> : "\256" registered XCOMM Accented Alphabet : "\300" Agrave : "\300" Agrave : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\303" Atilde : "\303" Atilde : "\303" Atilde : "\303" Atilde : "\304" Adiaeresis : "\304" Adiaeresis : "\304" Adiaeresis : "\304" Adiaeresis : "\305" Aring : "\305" Aring : "\306" AE : "\340" agrave : "\340" agrave : "\341" aacute : "\341" aacute : "\341" aacute : "\341" aacute : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\343" atilde : "\343" atilde : "\343" atilde : "\343" atilde : "\344" adiaeresis : "\344" adiaeresis : "\344" adiaeresis : "\344" adiaeresis : "\345" aring : "\345" aring : "\346" ae : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\310" Egrave : "\310" Egrave : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\312" Ecircumflex : "\312" Ecircumflex : "\312" Ecircumflex : "\312" Ecircumflex : "\313" Ediaeresis : "\313" Ediaeresis : "\313" Ediaeresis : "\313" Ediaeresis : "\350" egrave : "\350" egrave : "\351" eacute : "\351" eacute : "\351" eacute : "\351" eacute : "\352" ecircumflex : "\352" ecircumflex : "\352" ecircumflex : "\352" ecircumflex : "\353" ediaeresis : "\353" ediaeresis : "\353" ediaeresis : "\353" ediaeresis : "\314" Igrave : "\314" Igrave : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\317" Idiaeresis : "\317" Idiaeresis : "\317" Idiaeresis : "\317" Idiaeresis : "\354" igrave : "\354" igrave : "\355" iacute : "\355" iacute : "\355" iacute : "\355" iacute : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\357" idiaeresis : "\357" idiaeresis : "\357" idiaeresis : "\357" idiaeresis : "\321" Ntilde : "\321" Ntilde : "\321" Ntilde : "\321" Ntilde : "\361" ntilde : "\361" ntilde : "\361" ntilde : "\361" ntilde : "\322" Ograve : "\322" Ograve : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\325" Otilde : "\325" Otilde : "\325" Otilde : "\325" Otilde : "\326" Odiaeresis : "\326" Odiaeresis : "\326" Odiaeresis : "\326" Odiaeresis : "\330" Ooblique : "\330" Ooblique : "\362" ograve : "\362" ograve : "\363" oacute : "\363" oacute : "\363" oacute : "\363" oacute : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\365" otilde : "\365" otilde : "\365" otilde : "\365" otilde : "\366" odiaeresis : "\366" odiaeresis : "\366" odiaeresis : "\366" odiaeresis : "\370" oslash : "\370" oslash : "\331" Ugrave : "\331" Ugrave : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\334" Udiaeresis : "\334" Udiaeresis : "\334" Udiaeresis : "\334" Udiaeresis : "\371" ugrave : "\371" ugrave : "\372" uacute : "\372" uacute : "\372" uacute : "\372" uacute : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\374" udiaeresis : "\374" udiaeresis : "\374" udiaeresis : "\374" udiaeresis : "\337" ssharp : "\335" Yacute : "\335" Yacute : "\335" Yacute : "\335" Yacute : "\375" yacute : "\375" yacute : "\375" yacute : "\375" yacute : "\377" ydiaeresis : "\377" ydiaeresis : "\377" ydiaeresis : "\377" ydiaeresis XCOMM XCOMM dead key accent keysyms XCOMM Special Character : "|" bar : "`" grave : "'" apostrophe : "^" asciicircum : "~" asciitilde XCOMM Accented Alphabet : "\300" Agrave : "\301" Aacute : "\302" Acircumflex : "\303" Atilde : "\304" Adiaeresis : "\340" agrave : "\341" aacute : "\342" acircumflex : "\343" atilde : "\344" adiaeresis : "\307" Ccedilla : "\347" ccedilla : "\310" Egrave : "\311" Eacute : "\312" Ecircumflex : "\313" Ediaeresis : "\350" egrave : "\351" eacute : "\352" ecircumflex : "\353" ediaeresis : "\314" Igrave : "\315" Iacute : "\316" Icircumflex : "\317" Idiaeresis : "\354" igrave : "\355" iacute : "\356" icircumflex : "\357" idiaeresis : "\321" Ntilde : "\361" ntilde : "\322" Ograve : "\323" Oacute : "\324" Ocircumflex : "\325" Otilde : "\326" Odiaeresis : "\362" ograve : "\363" oacute : "\364" ocircumflex : "\365" otilde : "\366" odiaeresis : "\331" Ugrave : "\332" Uacute : "\333" Ucircumflex : "\334" Udiaeresis : "\371" ugrave : "\372" uacute : "\373" ucircumflex : "\374" udiaeresis : "\335" Yacute : "\375" yacute : "\377" ydiaeresis XCOMM The following is Celtic character support, XCOMM i.e. the characters in 8859-14 which differ from 8859-1. : "\242" babovedot : "\241" Babovedot : "\245" cabovedot : "\245" Cabovedot : "\253" dabovedot : "\246" Dabovedot : "\261" fabovedot : "\260" Fabovedot : "\263" gabovedot : "\262" Gabovedot : "\265" mabovedot : "\264" Mabovedot

: "\271" pabovedot

: "\267" Pabovedot : "\277" sabovedot : "\273" Sabovedot : "\367" tabovedot : "\327" Tabovedot : "\242" babovedot : "\241" Babovedot : "\245" cabovedot : "\245" Cabovedot : "\253" dabovedot : "\246" Dabovedot : "\261" fabovedot : "\260" Fabovedot : "\263" gabovedot : "\262" Gabovedot : "\265" mabovedot : "\264" Mabovedot

: "\271" pabovedot

: "\267" Pabovedot : "\277" sabovedot : "\273" Sabovedot : "\367" tabovedot : "\327" Tabovedot : "\376" ycircumflex : "\376" ycircumflex : "\336" Ycircumflex : "\336" Ycircumflex : "\360" wcircumflex : "\360" wcircumflex : "\320" Wcircumflex : "\320" Wcircumflex : "\257" Ydiaeresis : "\257" Ydiaeresis : "\257" Ydiaeresis : "\257" Ydiaeresis : "\275" Wdiaeresis : "\275" Wdiaeresis : "\275" Wdiaeresis : "\275" Wdiaeresis : "\276" wdiaeresis : "\276" wdiaeresis : "\276" wdiaeresis : "\276" wdiaeresis : "\254" Ygrave : "\254" Ygrave : "\274" ygrave : "\274" ygrave : "\250" Wgrave : "\250" Wgrave : "\270" wgrave : "\270" wgrave : "\252" Wacute : "\252" Wacute : "\252" Wacute : "\252" Wacute : "\272" wacute : "\272" wacute : "\272" wacute : "\272" wacute : "\242" babovedot : "\241" Babovedot : "\245" cabovedot : "\245" Cabovedot : "\253" dabovedot : "\246" Dabovedot : "\261" fabovedot : "\260" Fabovedot : "\263" gabovedot : "\262" Gabovedot : "\265" mabovedot : "\264" Mabovedot

: "\271" pabovedot

: "\267" Pabovedot : "\277" sabovedot : "\273" Sabovedot : "\367" tabovedot : "\327" Tabovedot : "\242" babovedot : "\241" Babovedot : "\245" cabovedot : "\245" Cabovedot : "\253" dabovedot : "\246" Dabovedot : "\261" fabovedot : "\260" Fabovedot : "\263" gabovedot : "\262" Gabovedot : "\265" mabovedot : "\264" Mabovedot

: "\271" pabovedot

: "\267" Pabovedot : "\277" sabovedot : "\273" Sabovedot : "\367" tabovedot : "\327" Tabovedot : "\242" babovedot : "\241" Babovedot : "\245" cabovedot : "\245" Cabovedot : "\253" dabovedot : "\246" Dabovedot : "\261" fabovedot : "\260" Fabovedot : "\263" gabovedot : "\262" Gabovedot : "\265" mabovedot : "\264" Mabovedot

: "\271" pabovedot

: "\267" Pabovedot : "\277" sabovedot : "\273" Sabovedot : "\367" tabovedot : "\327" Tabovedot : "\257" Ydiaeresis : "\254" Ygrave : "\274" ygrave : "\376" ycircumflex : "\336" Ycircumflex : "\360" wcircumflex : "\320" Wcircumflex : "\276" wdiaeresis : "\275" Wdiaeresis : "\272" wacute : "\252" Wacute : "\250" Wgrave : "\270" wgrave XCOMM End of Sequence Definition libX11-1.8.12/nls/iso8859-7/0000755014310600000120000000000014763154167010502 5libX11-1.8.12/nls/iso8859-7/XLC_LOCALE.pre0000644014310600000120000000165214763154126012576 XCOMM XLocale Database Sample for iso8859-7. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-7:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-7:GR } font { primary ISO8859-7:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-7 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-7:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-7:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-7/XI18N_OBJS0000644014310600000120000000037014763154126011764 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for euro locales # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/xiiimp _XimpLocalOpenIM # XIM_open XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iso8859-7/Compose.pre0000644014310600000120000002476514763154126012550 XCOMM XCOMM ISO 8859-7 (Greek) Compose Sequence XCOMM XCOMM XCOMM XCOMM Sequence Definition XCOMM XCOMM Means XCOMM Special Character : "#" numbersign : "'" apostrophe : "'" apostrophe : "@" at : "[" bracketleft : "\\" backslash : "\\" backslash : "\\" backslash : "]" bracketright : "^" asciicircum : "^" asciicircum : "^" asciicircum : "^" asciicircum : "`" grave : "`" grave : "{" braceleft : "{" braceleft : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "}" braceright : "}" braceright : "~" asciitilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright : "\251" copyright : "\253" guillemotleft : "\273" guillemotright <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree : "\261" plusminus : "\261" plusminus <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior : "\267" periodcentered : "\267" periodcentered : "\267" periodcentered <1> <2> : "\275" onehalf : "\240" nobreakspace : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\254" notsign : "\254" notsign : "\255" hyphen XCOMM should be Greek tonos but not defined in X11 : "\264" acute XCOMM should be Greek dialytika but not defined in X11 : "\250" diaeresis XCOMM special characters that don't exist in Latin-1 : "\241" leftsinglequotemark : "\241" leftsinglequotemark : "\242" rightsinglequotemark : "\242" rightsinglequotemark : "\257" Greek_horizbar XCOMM Accented Alphabet : "\266" Greek_ALPHAaccent : "\266" Greek_ALPHAaccent : "\270" Greek_EPSILONaccent : "\270" Greek_EPSILONaccent : "\271" Greek_ETAaccent : "\271" Greek_ETAaccent : "\272" Greek_IOTAaccent : "\272" Greek_IOTAaccent : "\274" Greek_OMICRONaccent : "\274" Greek_OMICRONaccent : "\276" Greek_UPSILONaccent : "\276" Greek_UPSILONaccent : "\277" Greek_OMEGAaccent : "\277" Greek_OMEGAaccent : "\332" Greek_IOTAdieresis : "\332" Greek_IOTAdieresis : "\333" Greek_UPSILONdieresis : "\333" Greek_UPSILONdieresis : "\334" Greek_alphaaccent : "\334" Greek_alphaaccent : "\335" Greek_epsilonaccent : "\335" Greek_epsilonaccent : "\336" Greek_etaaccent : "\336" Greek_etaaccent : "\337" Greek_iotaaccent : "\337" Greek_iotaaccent : "\374" Greek_omicronaccent : "\374" Greek_omicronaccent : "\375" Greek_upsilonaccent : "\375" Greek_upsilonaccent : "\376" Greek_omegaaccent : "\376" Greek_omegaaccent : "\372" Greek_iotadieresis : "\372" Greek_iotadieresis : "\373" Greek_upsilondieresis : "\373" Greek_upsilondieresis : "\300" Greek_iotaaccentdieresis : "\300" Greek_iotaaccentdieresis : "\340" Greek_upsilonaccentdieresis : "\340" Greek_upsilonaccentdieresis : "\265" Greek_accentdieresis : "\265" Greek_accentdieresis XCOMM XCOMM XCOMM dead key accent keysyms XCOMM Special Character : "|" bar : "`" grave : "\250" diaeresis : "^" asciicircum : "~" asciitilde : "\"" quotedbl : "\260" degree : "\260" degree <0> : "\260" degree <2> : "\262" twosuperior <3> : "\263" threesuperior : "\267" periodcentered : "\246" brokenbar : "\254" notsign : "\264" acute : "\250" diaeresis XCOMM Accented Alphabet (plus some more symbols) : "\334" Greek_alphaaccent : "\335" Greek_epsilonaccent : "\336" Greek_etaaccent : "\337" Greek_iotaaccent : "\374" Greek_omicronaccent : "\375" Greek_upsilonaccent : "\376" Greek_omegaaccent : "\266" Greek_ALPHAaccent : "\270" Greek_EPSILONaccent : "\271" Greek_ETAaccent : "\272" Greek_IOTAaccent : "\274" Greek_OMICRONaccent : "\276" Greek_UPSILONaccent : "\277" Greek_OMEGAaccent : "\264" acute : "\264" acute : "\267" periodcentered : "\253" guillemotleft : "\273" guillemotright : "\372" Greek_iotadieresis : "\373" Greek_upsilondieresis : "\332" Greek_IOTAdieresis : "\333" Greek_UPSILONdieresis : "\250" diaeresis : "\267" periodcentered : "\253" guillemotleft : "\273" guillemotright : "\300" Greek_iotaaccentdieresis : "\340" Greek_upsilonaccentdieresis : "\265" Greek_accentdieresis : "\300" Greek_iotaaccentdieresis : "\340" Greek_upsilonaccentdieresis : "\265" Greek_accentdieresis libX11-1.8.12/nls/zh_TW/0000755014310600000120000000000014763154167010241 5libX11-1.8.12/nls/zh_TW/XLC_LOCALE.pre0000644014310600000120000000455214763154126012337 XCOMM XLocale Database Sample for zh_TW XCOMM XCOMM Note: In lib/X11/lcCT.c, charset names for CNS11643 coded character XCOMM sets are defined as CNS11643.1986-1 and -2. In the ECMA Registry, XCOMM CNS coded character sets 1-7 are registered as CNS 11643-1992. XCOMM CJK.INF Version 1.7 (August 15, 1995) written by Ken Lunde says XCOMM plane 14 of CNS 11643-1983 now became plane 3 of CNS 11643-1992. XCOMM I do not know how Taiwanese EUC is organized currently, so I left the XCOMM X11R6 organization of fsN/csN as it is and only changed "CNS11643-*" XCOMM to "CNS11643.1986-*". XCOMM 1995-10-24 T. Numata (numa@rp.open.cs.fujitsu.co.jp) XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name CNS11643.1986-1:GL } font { primary CNS11643.1986-1:GL } } XCOMM fs2 class fs2 { charset { name CNS11643.1986-2:GL } font { primary CNS11643.1986-2:GL } } XCOMM fs3 class fs3 { charset { name CNS11643.1986-14:GL } font { primary CNS11643.1986-14:GL } } XCOMM fs4 class fs4 { charset { name CNS11643.1986-15:GL } font { primary CNS11643.1986-15:GL } } XCOMM fs5 class fs5 { charset { name CNS11643.1986-16:GL } font { primary CNS11643.1986-16:GL } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name zh_TW.euc mb_cur_max 4 state_depend_encoding False wc_encoding_mask \x3fffc000 wc_shift_bits 7 use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL; CNS11643.1986-0:GL } XCOMM cs1 class cs1 { side GR:Default length 2 wc_encoding \x30000000 ct_encoding CNS11643.1986-1:GR } XCOMM cs2 class # plane 2 cs2 { side GR length 2 mb_encoding \x8e\xa2 wc_encoding \x10088000 ct_encoding CNS11643.1986-2:GR } XCOMM cs3 class # plane 14 cs3 { side GR length 2 mb_encoding \x8e\xae wc_encoding \x100b8000 ct_encoding CNS11643.1986-14:GR } XCOMM cs4 class # plane 15 cs4 { side GR length 2 mb_encoding \x8e\xaf wc_encoding \x100bc000 ct_encoding CNS11643.1986-15:GR } XCOMM cs5 class # plane 16 cs5 { side GR length 2 mb_encoding \x8e\xb0 wc_encoding \x100c0000 ct_encoding CNS11643.1986-16:GR } END XLC_XLOCALE libX11-1.8.12/nls/zh_TW/Compose.pre0000644014310600000120000000054314763154126012273 XCOMM XCOMM zh_TW Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/zh_TW/XI18N_OBJS0000644014310600000120000000036414763154126011526 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for zh_TW locale # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/ximp40 _Ximp_OpenIM # XIM_open XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/ja/0000755014310600000120000000000014763154167007600 5libX11-1.8.12/nls/ja/XI18N_OBJS0000644014310600000120000000114314763154126011061 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for ja locale # XLC ja/xlibi18n_ja _XlcGenericLoader # XLC_open XLC common/xlibi18n _XlcGenericLoader # XLC_open #XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister XIM common/ximp40 _Ximp_OpenIM # XIM_open XIM common/ximlocal _XimpLocalOpenIM # XIM_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/ja/XLC_LOCALE.pre0000644014310600000120000000363414763154126011676 XCOMM XCOMM XLocale Database Sample for ja_JP.euc XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL substitute JISX0201.1976-0:GL vertical_rotate all } } XCOMM fs1 class (Kanji) fs1 { charset { name JISX0208.1983-0:GL udc_area \x7521,\x7e7e } font { primary JISX0208.1983-0:GL substitute JISX0208.1990-0:GL } } XCOMM fs2 class (Half Kana) fs2 { charset { name JISX0201.1976-0:GR } font { primary JISX0201.1976-0:GR substitute JISX0201.1976-0:GR vertical_rotate all } } XCOMM fs3 class (Supplementary Kanji) XCOMM fs3 { XCOMM charset { XCOMM name JISX0212.1990-0:GL XCOMM udc_area \x7521,\x7e7e XCOMM } XCOMM font { XCOMM primary JISX0212.1990-0:GL XCOMM } XCOMM } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ja.euc mb_cur_max 3 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL } XCOMM cs1 class cs1 { side GR:Default length 2 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\ JISX0208.1983-1:GL; JISX0208.1983-1:GR } XCOMM cs2 class cs2 { side GR length 1 mb_encoding \x8e #if WCHAR32 wc_encoding \x10000000 #else wc_encoding \x00000080 #endif ct_encoding JISX0201.1976-0:GR } XCOMM cs3 class XCOMM cs3 { XCOMM side GL XCOMM length 2 XCOMM mb_encoding \x8f XCOMM #if WCHAR32 XCOMM wc_encoding \x20000000 XCOMM #else XCOMM wc_encoding \x00008000 XCOMM #endif XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR XCOMM } END XLC_XLOCALE libX11-1.8.12/nls/ja/Compose.pre0000644014310600000120000000054014763154126011627 XCOMM XCOMM ja Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/zh_HK.big5hkscs/0000755014310600000120000000000014763154167012072 5libX11-1.8.12/nls/zh_HK.big5hkscs/Compose.pre0000644014310600000120000000054714763154126014130 XCOMM XCOMM zh_HK.big5hkscs Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/zh_HK.big5hkscs/XI18N_OBJS0000644014310600000120000000053514763154126013357 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for zh_HK.big5hkscs locale # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/zh_HK.big5hkscs/XLC_LOCALE.pre0000644014310600000120000000221714763154126014164 XCOMM XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project XCOMM XCOMM modified for X11R6.3 by Hung-Chi Chu 1998/01/10 XCOMM modified for Big5HKSCS by Roger So XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class (HKSCS extensions) fs1 { charset { name BIG5HKSCS-0:GLGR } font { primary BIG5HKSCS-0:GLGR substitute BIG5HKSCS-0:GLGR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name zh_HK.big5hkscs mb_cur_max 2 state_depend_encoding False wc_encoding_mask \x00008000 wc_shift_bits 8 use_stdc_env True force_convert_to_mb True +XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side none length 2 byte1 \x85,\xfe byte2 \x40,\x7e;\xa1,\xfe wc_encoding \x00008000 ct_encoding BIG5HKSCS-0:GLGR:\x1b\x25\x2f\x32 mb_conversion [\x8540,\xfefe]->\x0540 ct_conversion [\x0540,\x7efe]->\x8540 } END XLC_XLOCALE libX11-1.8.12/nls/sr_RS.UTF-8/0000755014310600000120000000000014763154167011040 5libX11-1.8.12/nls/sr_RS.UTF-8/XLC_LOCALE.pre0000644014310600000120000000000014763154126013116 libX11-1.8.12/nls/sr_RS.UTF-8/XI18N_OBJS0000644014310600000120000000045314763154126012324 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for euro locales # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XOM common/xomLTRTTB _XomGenericOpenOM # XOM_open XIM common/xiiimp _SwitchOpenIM # XIM_open XIM common/xiiimp _XimpLocalOpenIM # XIM_open libX11-1.8.12/nls/sr_RS.UTF-8/Compose.pre0000644014310600000120000001153714763154126013077 include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" XCOMM Serbian accentable Cyrillic letters: XCOMM а А - U+0430, U+0410 Cyrillic_a, Cyrillic_A XCOMM е Е - U+0435, U+0415 Cyrillic_e, Cyrillic_E XCOMM о О - U+043E, U+041E Cyrillic_o, Cyrillic_O XCOMM у У - U+0443, U+0423 Cyrillic_u, Cyrillic_U XCOMM и И - U+0438, U+0418 Cyrillic_i, Cyrillic_I XCOMM XCOMM Possible accents: XCOMM ̀ - U+0300 combining grave XCOMM ́ - U+0301 combining acute XCOMM ̂ - U+0302 combining circumflex XCOMM ̏ - U+030F combining doublegrave XCOMM XCOMM ̀ - kratkouzlazni, U+0300 combining grave : "а̀" : "а̀" : "А̀" : "А̀" : "ѐ" : "ѐ" : "Ѐ" : "Ѐ" : "ѝ" : "ѝ" : "Ѝ" : "Ѝ" : "о̀" : "о̀" : "О̀" : "О̀" : "у̀" : "у̀" : "У̀" : "У̀" XCOMM XCOMM ́ - dugouzlazni, U+0301 combining acute : "а́" : "а́" : "а́" : "А́" : "А́" : "А́" : "е́" : "е́" : "е́" : "Е́" : "Е́" : "Е́" : "и́" : "и́" : "и́" : "И́" : "И́" : "И́" : "о́" : "о́" : "о́" : "О́" : "О́" : "О́" : "у́" : "у́" : "у́" : "У́" : "У́" : "У́" XCOMM XCOMM ̂ - dugosilazni, U+0302 combining circumflex : "а̂" : "а̂" : "А̂" : "А̂" : "е̂" : "е̂" : "Е̂" : "Е̂" : "и̂" : "и̂" : "И̂" : "И̂" : "о̂" : "о̂" : "О̂" : "О̂" : "у̂" : "у̂" : "У̂" : "У̂" XCOMM XCOMM ̏ - kratkosilazni, U+030F combining doublegrave XCOMM there's no dead_doublegrave, so we use two vaguely similar dead keys : "а̏" : "а̏" : "А̏" : "А̏" : "е̏" : "е̏" : "Е̏" : "Е̏" : "и̏" : "и̏" : "И̏" : "И̏" : "о̏" : "о̏" : "О̏" : "О̏" : "у̏" : "у̏" : "У̏" : "У̏" libX11-1.8.12/nls/koi8-c/0000755014310600000120000000000014763154167010300 5libX11-1.8.12/nls/koi8-c/XLC_LOCALE.pre0000644014310600000120000000205714763154126012374 XCOMM XLocale Database Sample for koi8-c. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary KOI8-C:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset KOI8-C:GR font KOI8-C:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name KOI8-C side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name KOI8-C mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding KOI8-C:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding KOI8-C:GR } END XLC_XLOCALE libX11-1.8.12/nls/koi8-c/Compose.pre0000644014310600000120000001424214763154126012333 XCOMM XCOMM koi8-c Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM Means XCOMM Special Character : "#" numbersign : "'" apostrophe : "'" apostrophe : "@" at : "[" bracketleft : "\\" backslash : "\\" backslash : "\\" backslash : "]" bracketright : "^" asciicircum : "^" asciicircum : "^" asciicircum : "^" asciicircum : "`" grave : "`" grave : "{" braceleft : "{" braceleft : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "}" braceright : "}" braceright : "~" asciitilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "\240" nobreakspace : "\200" Cyrillic_ghe_bar : "\220" Cyrillic_GHE_bar : "\201" Cyrillic_zhe_descender : "\221" Cyrillic_ZHE_descender : "\202" Cyrillic_ka_descender : "\222" Cyrillic_KA_descender : "\203" Cyrillic_ka_vertstroke : "\223" Cyrillic_KA_vertstroke : "\203" Cyrillic_ka_vertstroke : "\223" Cyrillic_KA_vertstroke : "\204" Cyrillic_en_descender : "\224" Cyrillic_EN_descender : "\205" Cyrillic_u_straight : "\225" Cyrillic_U_straight : "\205" Cyrillic_u_straight : "\225" Cyrillic_U_straight : "\206" Cyrillic_u_straight_bar : "\226" Cyrillic_U_straight_bat : "\206" Cyrillic_u_straight_bar : "\226" Cyrillic_U_straight_bat : "\207" Cyrillic_ha_descender : "\227" Cyrillic_HA_descender : "\210" Cyrillic_che_descender : "\230" Cyrillic_CHE_descender : "\211" Cyrillic_che_vertstroke : "\231" Cyrillic_CHE_vertstroke : "\211" Cyrillic_che_vertstroke : "\231" Cyrillic_CHE_vertstroke : "\212" Cyrillic_shha : "\232" Cyrillic_SHHA : "\212" Cyrillic_shha : "\232" Cyrillic_SHHA : "\212" Cyrillic_shha : "\232" Cyrillic_SHHA : "\213" Cyrillic_schwa : "\233" Cyrillic_SCHWA : "\213" Cyrillic_schwa : "\233" Cyrillic_SCHWA : "\214" Cyrillic_i_macron : "\234" Cyrillic_I_macron : "\215" Cyrillic_o_bar : "\235" Cyrillic_O_bar : "\216" Cyrillic_u_macron : "\236" Cyrillic_U_macron : "\241" Serbian_dje : "\261" Serbian_DJE : "\242" Macedonia_gje : "\262" Macedonia_GJE : "\243" Cyrillic_io : "\263" Cyrillic_IO : "\243" Cyrillic_io : "\263" Cyrillic_IO : "\243" Cyrillic_io : "\263" Cyrillic_IO : "\251" Cyrillic_lje : "\271" Cyrillic_LJE : "\252" Cyrillic_nje : "\272" Cyrillic_NJE : "\300" Cyrillic_yu : "\340" Cyrillic_YU : "\300" Cyrillic_yu : "\340" Cyrillic_YU : "\303" Cyrillic_tse : "\343" Cyrillic_TSE : "\321" Cyrillic_ya : "\361" Cyrillic_YA : "\321" Cyrillic_ya : "\361" Cyrillic_YA : "\335" Cyrillic_shcha : "\375" Cyrillic_SHCHA XCOMM End of Sequence Definition libX11-1.8.12/nls/koi8-c/XI18N_OBJS0000644014310600000120000000052214763154126011561 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for koi8-c locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/ko/0000755014310600000120000000000014763154167007617 5libX11-1.8.12/nls/ko/XI18N_OBJS0000644014310600000120000000036014763154126011100 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for ko locale # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/ximp40 _Ximp_OpenIM # XIM_open XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/ko/XLC_LOCALE.pre0000644014310600000120000000170314763154126011710 XCOMM XLocale Database Sample for ko. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name KSC5601.1987-0:GL } font { primary KSC5601.1987-0:GL substitute KSC5601.1987-0:GL } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ko.euc mb_cur_max 2 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 2 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR } END XLC_XLOCALE libX11-1.8.12/nls/ko/Compose.pre0000644014310600000120000000054014763154126011646 XCOMM XCOMM ko Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/zh_CN.gbk/0000755014310600000120000000000014763154167010751 5libX11-1.8.12/nls/zh_CN.gbk/Compose.pre0000644014310600000120000000054714763154126013007 XCOMM XCOMM zh_CN.GBK Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/zh_CN.gbk/XI18N_OBJS0000644014310600000120000000052714763154126012237 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for zh_CN.gbk locale # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/zh_CN.gbk/XLC_LOCALE.pre0000644014310600000120000000232314763154126013041 XCOMM XCOMM X11R6 L10N for Chinese GBK Encoding. XCOMM modified from xc/nls/XLC_LOCALE/zh_TW.Big5 XCOMM by Sean Chen XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name GBK-0:GLGR } font { primary GBK-0:GLGR substitute GB13000.1993-1:GLGR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name zh_CN.GBK mb_cur_max 2 state_depend_encoding False wc_encoding_mask \x00008000 wc_shift_bits 8 use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side none length 2 byte1 \x81,\xfe byte2 \x40,\x7e;\x80,\xfe wc_encoding \x00008000 ct_encoding GBK-0:GLGR:\x1b\x25\x2f\x32 mb_conversion [\x8140,\xfefe]->\x0140 ct_conversion [\x0140,\x7efe]->\x8140 } END XLC_XLOCALE libX11-1.8.12/nls/km_KH.UTF-8/0000755014310600000120000000000014763154167011001 5libX11-1.8.12/nls/km_KH.UTF-8/XI18N_OBJS0000644014310600000120000000045314763154126012265 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for euro locales # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XOM common/xomLTRTTB _XomGenericOpenOM # XOM_open XIM common/xiiimp _SwitchOpenIM # XIM_open XIM common/xiiimp _XimpLocalOpenIM # XIM_open libX11-1.8.12/nls/km_KH.UTF-8/Compose.pre0000644014310600000120000000006014763154126013025 include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" libX11-1.8.12/nls/km_KH.UTF-8/XLC_LOCALE.pre0000644014310600000120000000000014763154126013057 libX11-1.8.12/nls/iso8859-13/0000755014310600000120000000000014763154167010557 5libX11-1.8.12/nls/iso8859-13/XLC_LOCALE.pre0000644014310600000120000000166114763154126012653 XCOMM XLocale Database Sample for iso8859-13. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-13:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-13:GR } font { primary ISO8859-13:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-13 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-13:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-13:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-13/XI18N_OBJS0000644014310600000120000000037014763154126012041 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for euro locales # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/xiiimp _XimpLocalOpenIM # XIM_open XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iso8859-13/Compose.pre0000644014310600000120000005146514763154126012622 XCOMM XCOMM ISO 8859-13 (Latin7) Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM Means XCOMM Special Character XCOMM Right-hand side (Accented Alphabet) XCOMM These compose sequences are pure supposition on my part. XCOMM It would be nice to know what the real cultural conventions XCOMM are for compose sequences. : "#" numbersign : "'" apostrophe : "'" apostrophe : "@" at : "[" bracketleft : "\\" backslash : "\\" backslash : "\\" backslash : "]" bracketright : "^" asciicircum : "^" asciicircum : "^" asciicircum : "^" asciicircum : "`" grave : "`" grave : "`" grave : "`" grave : "{" braceleft : "{" braceleft : "|" bar : "|" bar : "}" braceright : "}" braceright : "~" asciitilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "\241" rightdoublequotemark : "\241" rightdoublequotemark : "\245" doublelowquotemark : "\245" doublelowquotemark : "\264" leftdoublequotemark : "\264" leftdoublequotemark : "\253" guillemotleft : "\273" guillemotright : "\377" rightsinglequotemark : "\377" rightsinglequotemark : "\377" rightsinglequotemark : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright : "\251" copyright : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency <0> : "\244" currency <0> : "\244" currency <0> : "\244" currency <0> : "\244" currency <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree : "\261" plusminus : "\261" plusminus : "\265" mu : "\265" mu : "\265" mu : "\265" mu : "\265" mu <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph : "\267" periodcentered : "\267" periodcentered : "\267" periodcentered <1> <4> : "\274" onequarter <1> <2> : "\275" onehalf <3> <4> : "\276" threequarters : "\277" questiondown : "\240" nobreakspace : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\246" brokenbar : "\254" notsign : "\254" notsign : "\255" hyphen : "\256" registered : "\256" registered : "\256" registered : "\367" division : "\367" division : "\327" multiply XCOMM Accented Alphabet : "\300" Aogonek : "\300" Aogonek : "\300" Aogonek : "\300" Aogonek : "\252" Rcedilla : "\252" Rcedilla : "\252" Rcedilla : "\252" Rcedilla : "\317" Lcedilla : "\317" Lcedilla : "\317" Lcedilla : "\317" Lcedilla : "\320" Scaron : "\320" Scaron : "\307" Emacron : "\307" Emacron : "\307" Emacron : "\307" Emacron : "\314" Gcedilla : "\314" Gcedilla : "\314" Gcedilla : "\314" Gcedilla : "\336" Zcaron : "\336" Zcaron : "\340" aogonek : "\340" aogonek : "\340" aogonek : "\340" aogonek : "\272" rcedilla : "\272" rcedilla : "\272" rcedilla : "\272" rcedilla : "\357" lcedilla : "\357" lcedilla : "\357" lcedilla : "\357" lcedilla : "\360" scaron : "\360" scaron : "\347" emacron : "\347" emacron : "\347" emacron : "\347" emacron : "\354" gcedilla : "\354" gcedilla : "\354" gcedilla : "\354" gcedilla : "\376" zcaron : "\376" zcaron : "\302" Amacron : "\302" Amacron : "\302" Amacron : "\302" Amacron : "\304" Adiaeresis : "\304" Adiaeresis : "\305" Aring : "\305" Aring : "\305" Aring : "\305" Aring : "\257" AE : "\301" Iogonek : "\301" Iogonek : "\301" Iogonek : "\301" Iogonek : "\310" Ccaron : "\310" Ccaron : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\306" Eogonek : "\306" Eogonek : "\306" Eogonek : "\306" Eogonek : "\313" Eabovedot : "\313" Eabovedot : "\316" Imacron : "\316" Imacron : "\316" Imacron : "\316" Imacron : "\322" Ncedilla : "\322" Ncedilla : "\322" Ncedilla : "\322" Ncedilla : "\324" Omacron : "\324" Omacron : "\324" Omacron : "\324" Omacron : "\315" Kcedilla : "\315" Kcedilla : "\315" Kcedilla : "\315" Kcedilla : "\325" Otilde : "\325" Otilde : "\326" Odiaeresis : "\326" Odiaeresis : "\250" Ooblique : "\250" Ooblique : "\330" Uogonek : "\330" Uogonek : "\330" Uogonek : "\330" Uogonek : "\334" Udiaeresis : "\334" Udiaeresis : "\333" Umacron : "\333" Umacron : "\333" Umacron : "\333" Umacron : "\337" ssharp : "\342" amacron : "\342" amacron : "\342" amacron : "\342" amacron : "\344" adiaeresis : "\344" adiaeresis : "\345" aring : "\345" aring : "\345" aring : "\345" aring : "\277" ae : "\341" iogonek : "\341" iogonek : "\341" iogonek : "\341" iogonek : "\350" ccaron : "\350" ccaron : "\351" eacute : "\351" eacute : "\351" eacute : "\351" eacute : "\346" eogonek : "\346" eogonek : "\346" eogonek : "\346" eogonek : "\353" eabovedot : "\353" eabovedot : "\356" imacron : "\356" imacron : "\356" imacron : "\356" imacron : "\362" ncedilla : "\362" ncedilla : "\362" ncedilla : "\362" ncedilla : "\364" omacron : "\364" omacron : "\364" omacron : "\364" omacron : "\355" kcedilla : "\355" kcedilla : "\355" kcedilla : "\355" kcedilla : "\365" otilde : "\365" otilde : "\366" odiaeresis : "\366" odiaeresis : "\270" ooblique : "\270" ooblique : "\370" uogonek : "\370" uogonek : "\370" uogonek : "\370" uogonek : "\374" udiaeresis : "\374" udiaeresis : "\373" umacron : "\373" umacron : "\373" umacron : "\373" umacron : "\303" Cacute : "\303" Cacute : "\343" cacute : "\343" cacute : "\323" Oacute : "\323" Oacute : "\363" oacute : "\363" oacute : "\312" Zacute : "\312" Zacute : "\352" zacute : "\352" zacute : "\321" Nacute : "\321" Nacute : "\361" nacute : "\361" nacute : "\331" Lstroke : "\331" Lstroke : "\331" Lstroke : "\331" Lstroke : "\371" lstroke : "\371" lstroke : "\371" lstroke : "\371" lstroke : "\332" Sacute : "\332" Sacute : "\372" sacute : "\372" sacute : "\335" Zabovedot : "\335" Zabovedot : "\375" zabovedot : "\375" zabovedot : "\305" Aring : "\345" aring : "\313" Eabovedot : "\353" eabovedot : "\335" Zabovedot : "\375" zabovedot : "\267" abovedot : "\305" Aring : "\345" aring : "\313" Eabovedot : "\353" eabovedot : "\335" Zabovedot : "\375" zabovedot : "\260" ring : "\260" ring : "\377" rightsinglequotemark : "\303" Cacute : "\311" Eacute : "\312" Zacute : "\321" Nacute : "\323" Oacute : "\332" Sacute : "\343" cacute : "\351" eacute : "\352" zacute : "\361" nacute : "\363" oacute : "\372" sacute : "\310" Ccaron : "\320" Scaron : "\336" Zcaron : "\350" ccaron : "\360" scaron : "\376" zcaron : "\252" Rcedilla : "\314" Gcedilla : "\315" Kcedilla : "\317" Lcedilla : "\322" Ncedilla : "\272" rcedilla : "\354" gcedilla : "\355" kcedilla : "\357" lcedilla : "\362" ncedilla : "\304" Adiaeresis : "\326" Odiaeresis : "\334" Udiaeresis : "\344" adiaeresis : "\366" odiaeresis : "\374" udiaeresis : "\302" Amacron : "\307" Emacron : "\316" Imacron : "\324" Omacron : "\333" Umacron : "\342" amacron : "\347" emacron : "\356" imacron : "\364" omacron : "\373" umacron : "\255" macron : "\255" macron : "\300" Aogonek : "\301" Iogonek : "\306" Eogonek : "\330" Uogonek : "\340" aogonek : "\341" iogonek : "\346" eogonek : "\370" uogonek : "\325" Otilde : "\365" otilde : "~" asciitilde : "~" asciitilde XCOMM End of Sequence Definition libX11-1.8.12/nls/zh_CN/0000755014310600000120000000000014763154167010207 5libX11-1.8.12/nls/zh_CN/XLC_LOCALE.pre0000644014310600000120000000151214763154126012276 XCOMM XLocale Database Sample for zh (eucCN). XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name GB2312.1980-0:GL } font { primary GB2312.1980-0:GL substitute GB2312.1980-0:GLGR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name zh.euc mb_cur_max 2 state_depend_encoding False wc_encoding_mask \x30000000 wc_shift_bits 7 use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 2 wc_encoding \x30000000 ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR } END XLC_XLOCALE libX11-1.8.12/nls/zh_CN/XI18N_OBJS0000644014310600000120000000052214763154126011470 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for zh locale # # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/zh_CN/Compose.pre0000644014310600000120000000054014763154126012236 XCOMM XCOMM zh Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/vi_VN.viscii/0000755014310600000120000000000014763154167011514 5libX11-1.8.12/nls/vi_VN.viscii/XI18N_OBJS0000644014310600000120000000053014763154126012774 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for vi_VN.viscii locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/vi_VN.viscii/XLC_LOCALE.pre0000644014310600000120000000212714763154126013606 XCOMM XLocale Database Sample for vi_VN.VISCII XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary VISCII1.1-1:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset VISCII1.1-1:GR font VISCII1.1-1:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name VISCII1.1-1 side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name VISCII1.1-1 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding VISCII1.1-1:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding VISCII1.1-1:GR } END XLC_XLOCALE libX11-1.8.12/nls/vi_VN.viscii/Compose.pre0000644014310600000120000001265514763154126013555 XCOMM 1998/12/18 Le Hong Boi $ XCOMM XCOMM TCVN 5712-2 Compose Sequences XCOMM XCOMM Sequence Definition XCOMM XCOMM dead key accent keysyms XCOMM Special Character : "`" grave : " " space : "~" asciitilde : "'" apostrophe : "\264" acute XCOMM Accented Alphabet : "\300" Agrave : "\340" agrave : "\304" Ahook : "\344" ahook : "\303" Atilde : "\343" atilde : "\301" Aacute : "\341" aacute : "\200" Abelowdot : "\325" abelowdot : "\202" Abrevegrave : "\242" abrevegrave : "\002" Abrevehook : "\306" abrevehook : "\005" Abrevetilde : "\307" abrevetilde : "\201" Abreveacute : "\241" abreveacute : "\203" Abrevebelowdot : "\243" abrevebelowdot : "\205" Acircumflexgrave : "\245" acircumflexgrave : "\206" Acircumflexhook : "\246" acircumflexhook : "\006" Acircumflextilde : "\347" acircumflextilde : "\204" Acircumflexacute : "\244" acircumflexacute : "\207" Acircumflexbelowdot : "\247" acircumflexbelowdot : "\310" Egrave : "\350" egrave : "\313" Ehook : "\353" ehook : "\210" Etilde : "\250" etilde : "\311" Eacute : "\351" eacute : "\211" Ebelowdot : "\251" ebelowdot : "\213" Ecircumflexgrave : "\253" ecircumflexgrave : "\214" Ecircumflexhook : "\254" ecircumflexhook : "\215" Ecircumflextilde : "\255" ecircumflextilde : "\212" Ecircumflexacute : "\252" ecircumflexacute : "\216" Ecircumflexbelowdot : "\256" ecircumflexbelowdot : "\314" Igrave : "\354" igrave : "\233" Ihook : "\357" ihook : "\316" Itilde : "\356" itilde : "\315" Iacute : "\355" iacute : "\230" Ibelowdot : "\270" ibelowdot : "\322" Ograve : "\362" ograve : "\231" Ohook : "\366" ohook : "\240" Otilde : "\365" otilde : "\323" Oacute : "\363" oacute : "\232" Obelowdot : "\367" obelowdot : "\220" Ocircumflexgrave : "\260" ocircumflexgrave : "\221" Ocircumflexhook : "\261" ocircumflexhook : "\222" Ocircumflextilde : "\262" ocircumflextilde : "\217" Ocircumflexacute : "\257" ocircumflexacute : "\223" Ocircumflexbelowdot : "\265" ocircumflexbelowdot : "\226" Ohorngrave : "\266" ohorngrave : "\227" Ohornhook : "\267" ohornhook : "\263" Ohorntilde : "\336" ohorntilde : "\225" Ohornacute : "\276" ohornacute : "\224" Ohornbelowdot : "\376" ohornbelowdot : "\331" Ugrave : "\371" ugrave : "\234" Uhook : "\374" uhook : "\235" Utilde : "\373" utilde : "\332" Uacute : "\372" uacute : "\236" Ubelowdot : "\370" ubelowdot : "\273" Uhorngrave : "\327" uhorngrave : "\274" Uhornhook : "\330" uhornhook : "\377" Uhorntilde : "\346" uhorntilde : "\272" Uhornacute : "\321" uhornacute : "\271" Uhornbelowdot : "\361" uhornbelowdot : "\237" Ygrave : "\317" ygrave : "\024" Yhook : "\326" yhook : "\031" Ytilde : "\333" ytilde : "\335" Yacute : "\375" yacute : "\036" Ybelowdot : "\334" ybelowdot XCOMM End of Sequence Definition libX11-1.8.12/nls/zh_TW.big5/0000755014310600000120000000000014763154167011066 5libX11-1.8.12/nls/zh_TW.big5/XLC_LOCALE.pre0000644014310600000120000002257614763154126013172 XCOMM XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project XCOMM XCOMM modified for X11R6.3 by Hung-Chi Chu 1998/01/10 XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name BIG5-0:GLGR } font { primary BIG5-0:GLGR substitute BIG5-0:GLGR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name zh_TW.Big5 mb_cur_max 2 state_depend_encoding False wc_encoding_mask \x00038000 wc_shift_bits 8 use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side none length 2 byte1 \xa1,\xf9 byte2 \x40,\x7e;\xa1,\xfe wc_encoding \x00008000 ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32 mb_conversion [\xa140,\xf9fe]->\x2140 ct_conversion [\x2140,\x79fe]->\xa140 } XCOMM cs2 class cs2 { side none length 2 byte1 \xa1,\xc7 byte2 \x40,\x7e;\xa1,\xfe wc_encoding \x00010000 ct_encoding BIG5-E0:GL;BIG5-E0:GR mb_conversion [\xa140,\xa17e]->\x2121, [\xa1a1,\xa1bf]->\x2160, [\xa1c0,\xa1fe]->\x2221, [\xa240,\xa25e]->\x2260, [\xa25f,\xa27e]->\x2321, [\xa2a1,\xa2de]->\x2341, [\xa2df,\xa2fe]->\x2421, [\xa340,\xa37d]->\x2441, [\xa37e,\xa37e]->\x2521, [\xa3a1,\xa3fd]->\x2522, [\xa3fe,\xa3fe]->\x2621, [\xa440,\xa47e]->\x2622, [\xa4a1,\xa4be]->\x2661, [\xa4bf,\xa4fe]->\x2721, [\xa540,\xa55d]->\x2761, [\xa55e,\xa57e]->\x2821, [\xa5a1,\xa5dd]->\x2842, [\xa5de,\xa5fe]->\x2921, [\xa640,\xa67c]->\x2942, [\xa67d,\xa67e]->\x2a21, [\xa6a1,\xa6fc]->\x2a23, [\xa6fd,\xa6fe]->\x2b21, [\xa740,\xa77e]->\x2b23, [\xa7a1,\xa7bd]->\x2b62, [\xa7be,\xa7fe]->\x2c21, [\xa840,\xa85c]->\x2c62, [\xa85d,\xa87e]->\x2d21, [\xa8a1,\xa8dc]->\x2d43, [\xa8dd,\xa8fe]->\x2e21, [\xa940,\xa97b]->\x2e43, [\xa97c,\xa97e]->\x2f21, [\xa9a1,\xa9fb]->\x2f24, [\xa9fc,\xa9fe]->\x3021, [\xaa40,\xaa7e]->\x3024, [\xaaa1,\xaabc]->\x3063, [\xaabd,\xaafe]->\x3121, [\xab40,\xab5b]->\x3163, [\xab5c,\xab7e]->\x3221, [\xaba1,\xabdb]->\x3244, [\xabdc,\xabfe]->\x3321, [\xac40,\xac7a]->\x3344, [\xac7b,\xac7e]->\x3421, [\xaca1,\xacfa]->\x3425, [\xacfb,\xacfe]->\x3521, [\xad40,\xad7e]->\x3525, [\xada1,\xadbb]->\x3564, [\xadbc,\xadfe]->\x3621, [\xae40,\xae5a]->\x3664, [\xae5b,\xae7e]->\x3721, [\xaea1,\xaeda]->\x3745, [\xaedb,\xaefe]->\x3821, [\xaf40,\xaf79]->\x3845, [\xaf7a,\xaf7e]->\x3921, [\xafa1,\xaff9]->\x3926, [\xaffa,\xaffe]->\x3a21, [\xb040,\xb07e]->\x3a26, [\xb0a1,\xb0ba]->\x3a65, [\xb0bb,\xb0fe]->\x3b21, [\xb140,\xb159]->\x3b65, [\xb15a,\xb17e]->\x3c21, [\xb1a1,\xb1d9]->\x3c46, [\xb1da,\xb1fe]->\x3d21, [\xb240,\xb278]->\x3d46, [\xb279,\xb27e]->\x3e21, [\xb2a1,\xb2f8]->\x3e27, [\xb2f9,\xb2fe]->\x3f21, [\xb340,\xb37e]->\x3f27, [\xb3a1,\xb3b9]->\x3f66, [\xb3ba,\xb3fe]->\x4021, [\xb440,\xb458]->\x4066, [\xb459,\xb47e]->\x4121, [\xb4a1,\xb4d8]->\x4147, [\xb4d9,\xb4fe]->\x4221, [\xb540,\xb577]->\x4247, [\xb578,\xb57e]->\x4321, [\xb5a1,\xb5f7]->\x4328, [\xb5f8,\xb5fe]->\x4421, [\xb640,\xb67e]->\x4428, [\xb6a1,\xb6b8]->\x4467, [\xb6b9,\xb6fe]->\x4521, [\xb740,\xb757]->\x4567, [\xb758,\xb77e]->\x4621, [\xb7a1,\xb7d7]->\x4648, [\xb7d8,\xb7fe]->\x4721, [\xb840,\xb876]->\x4748, [\xb877,\xb87e]->\x4821, [\xb8a1,\xb8f6]->\x4829, [\xb8f7,\xb8fe]->\x4921, [\xb940,\xb97e]->\x4929, [\xb9a1,\xb9b7]->\x4968, [\xb9b8,\xb9fe]->\x4a21, [\xba40,\xba56]->\x4a68, [\xba57,\xba7e]->\x4b21, [\xbaa1,\xbad6]->\x4b49, [\xbad7,\xbafe]->\x4c21, [\xbb40,\xbb75]->\x4c49, [\xbb76,\xbb7e]->\x4d21, [\xbba1,\xbbf5]->\x4d2a, [\xbbf6,\xbbfe]->\x4e21, [\xbc40,\xbc7e]->\x4e2a, [\xbca1,\xbcb6]->\x4e69, [\xbcb7,\xbcfe]->\x4f21, [\xbd40,\xbd55]->\x4f69, [\xbd56,\xbd7e]->\x5021, [\xbda1,\xbdd5]->\x504a, [\xbdd6,\xbdfe]->\x5121, [\xbe40,\xbe74]->\x514a, [\xbe75,\xbe7e]->\x5221, [\xbea1,\xbef4]->\x522b, [\xbef5,\xbefe]->\x5321, [\xbf40,\xbf7e]->\x532b, [\xbfa1,\xbfb5]->\x536a, [\xbfb6,\xbffe]->\x5421, [\xc040,\xc054]->\x546a, [\xc055,\xc07e]->\x5521, [\xc0a1,\xc0d4]->\x554b, [\xc0d5,\xc0fe]->\x5621, [\xc140,\xc173]->\x564b, [\xc174,\xc17e]->\x5721, [\xc1a1,\xc1f3]->\x572c, [\xc1f4,\xc1fe]->\x5821, [\xc240,\xc27e]->\x582c, [\xc2a1,\xc2b4]->\x586b, [\xc2b5,\xc2fe]->\x5921, [\xc340,\xc353]->\x596b, [\xc354,\xc37e]->\x5a21, [\xc3a1,\xc3d3]->\x5a4c, [\xc3d4,\xc3fe]->\x5b21, [\xc440,\xc472]->\x5b4c, [\xc473,\xc47e]->\x5c21, [\xc4a1,\xc4f2]->\x5c2d, [\xc4f3,\xc4fe]->\x5d21, [\xc540,\xc57e]->\x5d2d, [\xc5a1,\xc5b3]->\x5d6c, [\xc5b4,\xc5fe]->\x5e21, [\xc640,\xc652]->\x5e6c, [\xc653,\xc67e]->\x5f21, [\xc6a1,\xc6d2]->\x5f4d, [\xc6d3,\xc6fe]->\x6021, [\xc740,\xc771]->\x604d, [\xc772,\xc77e]->\x6121, [\xc7a1,\xc7f1]->\x612e, [\xc7f2,\xc7fe]->\x6221 } XCOMM cs3 class cs3 { side none length 2 byte1 \xc9,\xf9 byte2 \x40,\x7e;\xa1,\xfe wc_encoding \x00020000 ct_encoding BIG5-E1:GL;BIG5-E1:GR mb_conversion [\xc940,\xc97e]->\x2121, [\xc9a1,\xc9bf]->\x2160, [\xc9c0,\xc9fe]->\x2221, [\xca40,\xca5e]->\x2260, [\xca5f,\xca7e]->\x2321, [\xcaa1,\xcade]->\x2341, [\xcadf,\xcafe]->\x2421, [\xcb40,\xcb7d]->\x2441, [\xcb7e,\xcb7e]->\x2521, [\xcba1,\xcbfd]->\x2522, [\xcbfe,\xcbfe]->\x2621, [\xcc40,\xcc7e]->\x2622, [\xcca1,\xccbe]->\x2661, [\xccbf,\xccfe]->\x2721, [\xcd40,\xcd5d]->\x2761, [\xcd5e,\xcd7e]->\x2821, [\xcda1,\xcddd]->\x2842, [\xcdde,\xcdfe]->\x2921, [\xce40,\xce7c]->\x2942, [\xce7d,\xce7e]->\x2a21, [\xcea1,\xcefc]->\x2a23, [\xcefd,\xcefe]->\x2b21, [\xcf40,\xcf7e]->\x2b23, [\xcfa1,\xcfbd]->\x2b62, [\xcfbe,\xcffe]->\x2c21, [\xd040,\xd05c]->\x2c62, [\xd05d,\xd07e]->\x2d21, [\xd0a1,\xd0dc]->\x2d43, [\xd0dd,\xd0fe]->\x2e21, [\xd140,\xd17b]->\x2e43, [\xd17c,\xd17e]->\x2f21, [\xd1a1,\xd1fb]->\x2f24, [\xd1fc,\xd1fe]->\x3021, [\xd240,\xd27e]->\x3024, [\xd2a1,\xd2bc]->\x3063, [\xd2bd,\xd2fe]->\x3121, [\xd340,\xd35b]->\x3163, [\xd35c,\xd37e]->\x3221, [\xd3a1,\xd3db]->\x3244, [\xd3dc,\xd3fe]->\x3321, [\xd440,\xd47a]->\x3344, [\xd47b,\xd47e]->\x3421, [\xd4a1,\xd4fa]->\x3425, [\xd4fb,\xd4fe]->\x3521, [\xd540,\xd57e]->\x3525, [\xd5a1,\xd5bb]->\x3564, [\xd5bc,\xd5fe]->\x3621, [\xd640,\xd65a]->\x3664, [\xd65b,\xd67e]->\x3721, [\xd6a1,\xd6da]->\x3745, [\xd6db,\xd6fe]->\x3821, [\xd740,\xd779]->\x3845, [\xd77a,\xd77e]->\x3921, [\xd7a1,\xd7f9]->\x3926, [\xd7fa,\xd7fe]->\x3a21, [\xd840,\xd87e]->\x3a26, [\xd8a1,\xd8ba]->\x3a65, [\xd8bb,\xd8fe]->\x3b21, [\xd940,\xd959]->\x3b65, [\xd95a,\xd97e]->\x3c21, [\xd9a1,\xd9d9]->\x3c46, [\xd9da,\xd9fe]->\x3d21, [\xda40,\xda78]->\x3d46, [\xda79,\xda7e]->\x3e21, [\xdaa1,\xdaf8]->\x3e27, [\xdaf9,\xdafe]->\x3f21, [\xdb40,\xdb7e]->\x3f27, [\xdba1,\xdbb9]->\x3f66, [\xdbba,\xdbfe]->\x4021, [\xdc40,\xdc58]->\x4066, [\xdc59,\xdc7e]->\x4121, [\xdca1,\xdcd8]->\x4147, [\xdcd9,\xdcfe]->\x4221, [\xdd40,\xdd77]->\x4247, [\xdd78,\xdd7e]->\x4321, [\xdda1,\xddf7]->\x4328, [\xddf8,\xddfe]->\x4421, [\xde40,\xde7e]->\x4428, [\xdea1,\xdeb8]->\x4467, [\xdeb9,\xdefe]->\x4521, [\xdf40,\xdf57]->\x4567, [\xdf58,\xdf7e]->\x4621, [\xdfa1,\xdfd7]->\x4648, [\xdfd8,\xdffe]->\x4721, [\xe040,\xe076]->\x4748, [\xe077,\xe07e]->\x4821, [\xe0a1,\xe0f6]->\x4829, [\xe0f7,\xe0fe]->\x4921, [\xe140,\xe17e]->\x4929, [\xe1a1,\xe1b7]->\x4968, [\xe1b8,\xe1fe]->\x4a21, [\xe240,\xe256]->\x4a68, [\xe257,\xe27e]->\x4b21, [\xe2a1,\xe2d6]->\x4b49, [\xe2d7,\xe2fe]->\x4c21, [\xe340,\xe375]->\x4c49, [\xe376,\xe37e]->\x4d21, [\xe3a1,\xe3f5]->\x4d2a, [\xe3f6,\xe3fe]->\x4e21, [\xe440,\xe47e]->\x4e2a, [\xe4a1,\xe4b6]->\x4e69, [\xe4b7,\xe4fe]->\x4f21, [\xe540,\xe555]->\x4f69, [\xe556,\xe57e]->\x5021, [\xe5a1,\xe5d5]->\x504a, [\xe5d6,\xe5fe]->\x5121, [\xe640,\xe674]->\x514a, [\xe675,\xe67e]->\x5221, [\xe6a1,\xe6f4]->\x522b, [\xe6f5,\xe6fe]->\x5321, [\xe740,\xe77e]->\x532b, [\xe7a1,\xe7b5]->\x536a, [\xe7b6,\xe7fe]->\x5421, [\xe840,\xe854]->\x546a, [\xe855,\xe87e]->\x5521, [\xe8a1,\xe8d4]->\x554b, [\xe8d5,\xe8fe]->\x5621, [\xe940,\xe973]->\x564b, [\xe974,\xe97e]->\x5721, [\xe9a1,\xe9f3]->\x572c, [\xe9f4,\xe9fe]->\x5821, [\xea40,\xea7e]->\x582c, [\xeaa1,\xeab4]->\x586b, [\xeab5,\xeafe]->\x5921, [\xeb40,\xeb53]->\x596b, [\xeb54,\xeb7e]->\x5a21, [\xeba1,\xebd3]->\x5a4c, [\xebd4,\xebfe]->\x5b21, [\xec40,\xec72]->\x5b4c, [\xec73,\xec7e]->\x5c21, [\xeca1,\xecf2]->\x5c2d, [\xecf3,\xecfe]->\x5d21, [\xed40,\xed7e]->\x5d2d, [\xeda1,\xedb3]->\x5d6c, [\xedb4,\xedfe]->\x5e21, [\xee40,\xee52]->\x5e6c, [\xee53,\xee7e]->\x5f21, [\xeea1,\xeed2]->\x5f4d, [\xeed3,\xeefe]->\x6021, [\xef40,\xef71]->\x604d, [\xef72,\xef7e]->\x6121, [\xefa1,\xeff1]->\x612e, [\xeff2,\xeffe]->\x6221, [\xf040,\xf07e]->\x622e, [\xf0a1,\xf0b2]->\x626d, [\xf0b3,\xf0fe]->\x6321, [\xf140,\xf151]->\x636d, [\xf152,\xf17e]->\x6421, [\xf1a1,\xf1d1]->\x644e, [\xf1d2,\xf1fe]->\x6521, [\xf240,\xf270]->\x654e, [\xf271,\xf27e]->\x6621, [\xf2a1,\xf2f0]->\x662f, [\xf2f1,\xf2fe]->\x6721, [\xf340,\xf37e]->\x672f, [\xf3a1,\xf3b1]->\x676e, [\xf3b2,\xf3fe]->\x6821, [\xf440,\xf450]->\x686e, [\xf451,\xf47e]->\x6921, [\xf4a1,\xf4d0]->\x694f, [\xf4d1,\xf4fe]->\x6a21, [\xf540,\xf56f]->\x6a4f, [\xf570,\xf57e]->\x6b21, [\xf5a1,\xf5ef]->\x6b30, [\xf5f0,\xf5fe]->\x6c21, [\xf640,\xf67e]->\x6c30, [\xf6a1,\xf6b0]->\x6c6f, [\xf6b1,\xf6fe]->\x6d21, [\xf740,\xf74f]->\x6d6f, [\xf750,\xf77e]->\x6e21, [\xf7a1,\xf7cf]->\x6e50, [\xf7d0,\xf7fe]->\x6f21, [\xf840,\xf86e]->\x6f50, [\xf86f,\xf87e]->\x7021, [\xf8a1,\xf8ee]->\x7031, [\xf8ef,\xf8fe]->\x7121, [\xf940,\xf97e]->\x7131, [\xf9a1,\xf9af]->\x7170, [\xf9b0,\xf9fe]->\x7221 } END XLC_XLOCALE libX11-1.8.12/nls/zh_TW.big5/Compose.pre0000644014310600000120000000055014763154126013116 XCOMM XCOMM zh_TW.big5 Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/zh_TW.big5/XI18N_OBJS0000644014310600000120000000053014763154126012346 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for zh_TW.big5 locale # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/vi_VN.tcvn/0000755014310600000120000000000014763154167011200 5libX11-1.8.12/nls/vi_VN.tcvn/XI18N_OBJS0000644014310600000120000000052614763154126012465 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for vi_VN.tcvn locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/vi_VN.tcvn/XLC_LOCALE.pre0000644014310600000120000000210714763154126013270 XCOMM XLocale Database Sample for vi_VN.TCVN XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary TCVN-5712:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset TCVN-5712:GR font TCVN-5712:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name TCVN-5712 side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name TCVN-5712 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding TCVN-5712:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding TCVN-5712:GR } END XLC_XLOCALE libX11-1.8.12/nls/vi_VN.tcvn/Compose.pre0000644014310600000120000001265514763154126013241 XCOMM 1998/12/18 Le Hong Boi $ XCOMM XCOMM TCVN 5712-2 Compose Sequences XCOMM XCOMM Sequence Definition XCOMM XCOMM dead key accent keysyms XCOMM Special Character : "`" grave : " " space : "~" asciitilde : "'" apostrophe : "\264" acute XCOMM Accented Alphabet : "\200" Agrave : "\265" agrave : "\266" Ahook : "\266" ahook : "\202" Atilde : "\267" atilde : "\203" Aacute : "\270" aacute : "\271" Abelowdot : "\271" abelowdot : "\273" Abrevegrave : "\273" abrevegrave : "\274" Abrevehook : "\274" abrevehook : "\275" Abrevetilde : "\275" abrevetilde : "\276" Abreveacute : "\276" abreveacute : "\306" Abrevebelowdot : "\306" abrevebelowdot : "\307" Acircumflexgrave : "\307" acircumflexgrave : "\310" Acircumflexhook : "\310" acircumflexhook : "\311" Acircumflextilde : "\311" acircumflextilde : "\312" Acircumflexacute : "\312" acircumflexacute : "\313" Acircumflexbelowdot : "\313" acircumflexbelowdot : "\207" Egrave : "\314" egrave : "\316" Ehook : "\316" ehook : "\317" Etilde : "\317" etilde : "\212" Eacute : "\320" eacute : "\321" Ebelowdot : "\321" ebelowdot : "\322" Ecircumflexgrave : "\322" ecircumflexgrave : "\323" Ecircumflexhook : "\323" ecircumflexhook : "\324" Ecircumflextilde : "\324" ecircumflextilde : "\325" Ecircumflexacute : "\325" ecircumflexacute : "\326" Ecircumflexbelowdot : "\326" ecircumflexbelowdot : "\215" Igrave : "\327" igrave : "\330" Ihook : "\330" ihook : "\217" Itilde : "\334" itilde : "\220" Iacute : "\335" iacute : "\336" Ibelowdot : "\336" ibelowdot : "\222" Ograve : "\337" ograve : "\341" Ohook : "\341" ohook : "\224" Otilde : "\342" otilde : "\225" Oacute : "\343" oacute : "\344" Obelowdot : "\344" obelowdot : "\345" Ocircumflexgrave : "\345" ocircumflexgrave : "\346" Ocircumflexhook : "\346" ocircumflexhook : "\347" Ocircumflextilde : "\347" ocircumflextilde : "\350" Ocircumflexacute : "\350" ocircumflexacute : "\351" Ocircumflexbelowdot : "\351" ocircumflexbelowdot : "\352" Ohorngrave : "\352" ohorngrave : "\353" Ohornhook : "\353" ohornhook : "\354" Ohorntilde : "\354" ohorntilde : "\355" Ohornacute : "\355" ohornacute : "\356" Ohornbelowdot : "\356" ohornbelowdot : "\235" Ugrave : "\357" ugrave : "\361" Uhook : "\361" uhook : "\237" Utilde : "\362" utilde : "\001" Uacute : "\363" uacute : "\364" Ubelowdot : "\364" ubelowdot : "\365" Uhorngrave : "\365" uhorngrave : "\366" Uhornhook : "\366" uhornhook : "\367" Uhorntilde : "\367" uhorntilde : "\370" Uhornacute : "\370" uhornacute : "\371" Uhornbelowdot : "\371" uhornbelowdot : "\023" Ygrave : "\372" ygrave : "\373" Yhook : "\373" yhook : "\374" Ytilde : "\374" ytilde : "\026" Yacute : "\375" yacute : "\376" Ybelowdot : "\376" ybelowdot XCOMM End of Sequence Definition libX11-1.8.12/nls/cs_CZ.UTF-8/0000755014310600000120000000000014763154167011011 5libX11-1.8.12/nls/cs_CZ.UTF-8/XLC_LOCALE.pre0000644014310600000120000000000014763154126013067 libX11-1.8.12/nls/cs_CZ.UTF-8/XI18N_OBJS0000644014310600000120000000000014763154126012261 libX11-1.8.12/nls/cs_CZ.UTF-8/Compose.pre0000644014310600000120000000103214763154126013035 XCOMM UTF-8 (Unicode) compose sequences XCOMM XCOMM Modified for Czech, following iso8859-2/Compose XCOMM by James Cloos XCOMM based on bug report by Vladimír Marek XCOMM Use the sequences from en_US.UTF-8 as the basis: include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" XCOMM Overriding U with caron: : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE : "Ů" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE libX11-1.8.12/nls/iso8859-4/0000755014310600000120000000000014763154167010477 5libX11-1.8.12/nls/iso8859-4/Compose.pre0000644014310600000120000003727314763154126012543 XCOMM XCOMM ISO 8859-4 (Latin4) Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM Means XCOMM Special Character XCOMM Right-hand side (Accented Alphabet) XCOMM These compose sequences are pure supposition on my part. XCOMM It would be nice to know what the real cultural conventions XCOMM are for compose sequences. : "\241" Aogonek : "\241" Aogonek : "\242" kra : "\243" Rcedilla : "\243" Rcedilla : "\243" Rcedilla : "\243" Rcedilla : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency : "\244" currency <0> : "\244" currency <0> : "\244" currency <0> : "\244" currency <0> : "\244" currency : "\245" Itilde : "\245" Itilde : "\246" Lcedilla : "\246" Lcedilla : "\246" Lcedilla : "\246" Lcedilla : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section : "\250" diaeresis : "\251" Scaron : "\251" Scaron : "\252" Emacron : "\252" Emacron : "\252" Emacron : "\252" Emacron : "\253" Gcedilla : "\253" Gcedilla : "\253" Gcedilla : "\253" Gcedilla : "\254" Tstroke : "\254" Tstroke : "\254" Tstroke : "\255" hyphen : "\256" Zcaron : "\256" Zcaron : "\257" macron : "\257" macron : "\257" macron : "\257" macron : "\257" macron <0> : "\260" degree <0> : "\260" degree : "\261" aogonek : "\261" aogonek : "\263" rcedilla : "\263" rcedilla : "\263" rcedilla : "\263" rcedilla : "\264" acute : "\265" itilde : "\265" itilde : "\266" lcedilla : "\266" lcedilla : "\266" lcedilla : "\266" lcedilla : "\267" caron : "\270" cedilla : "\271" scaron : "\271" scaron : "\272" emacron : "\272" emacron : "\272" emacron : "\272" emacron : "\273" gcedilla : "\273" gcedilla : "\273" gcedilla : "\273" gcedilla : "\274" tstroke : "\274" tstroke : "\274" tstroke : "\275" ENG : "\276" zcaron : "\276" zcaron : "\277" eng : "\300" Amacron : "\300" Amacron : "\300" Amacron : "\300" Amacron : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\303" Atilde : "\303" Atilde : "\304" Adiaeresis : "\304" Adiaeresis : "\305" Aring : "\305" Aring : "\306" AE : "\307" Iogonek : "\307" Iogonek : "\310" Ccaron : "\310" Ccaron : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\312" Eogonek : "\312" Eogonek : "\313" Ediaeresis : "\313" Ediaeresis : "\314" Eabovedot : "\314" Eabovedot : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\317" Imacron : "\317" Imacron : "\317" Imacron : "\317" Imacron : "\320" Dstroke : "\320" Dstroke : "\321" Ncedilla : "\321" Ncedilla : "\321" Ncedilla : "\321" Ncedilla : "\322" Omacron : "\322" Omacron : "\322" Omacron : "\322" Omacron : "\323" Kcedilla : "\323" Kcedilla : "\323" Kcedilla : "\323" Kcedilla : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\325" Otilde : "\325" Otilde : "\326" Odiaeresis : "\326" Odiaeresis : "\327" multiply : "\330" Ooblique : "\330" Ooblique : "\331" Uogonek : "\331" Uogonek : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\334" Udiaeresis : "\334" Udiaeresis : "\335" Utilde : "\335" Utilde : "\336" Umacron : "\336" Umacron : "\336" Umacron : "\336" Umacron : "\337" ssharp : "\340" amacron : "\340" amacron : "\340" amacron : "\340" amacron : "\341" aacute : "\341" aacute : "\341" aacute : "\341" aacute : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\343" atilde : "\343" atilde : "\344" adiaeresis : "\344" adiaeresis : "\345" aring : "\345" aring : "\346" ae : "\347" iogonek : "\347" iogonek : "\350" ccaron : "\350" ccaron : "\351" eacute : "\351" eacute : "\351" eacute : "\351" eacute : "\352" eogonek : "\352" eogonek : "\353" ediaeresis : "\353" ediaeresis : "\354" eabovedot : "\354" eabovedot : "\355" iacute : "\355" iacute : "\355" iacute : "\355" iacute : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\357" imacron : "\357" imacron : "\357" imacron : "\357" imacron : "\360" dstroke : "\360" dstroke : "\361" ncedilla : "\361" ncedilla : "\361" ncedilla : "\361" ncedilla : "\362" omacron : "\362" omacron : "\362" omacron : "\362" omacron : "\363" kcedilla : "\363" kcedilla : "\363" kcedilla : "\363" kcedilla : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\365" otilde : "\365" otilde : "\366" odiaeresis : "\366" odiaeresis : "\367" division : "\367" division : "\370" ooblique : "\370" ooblique : "\371" uogonek : "\371" uogonek : "\372" uacute : "\372" uacute : "\372" uacute : "\372" uacute : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\374" udiaeresis : "\374" udiaeresis : "\375" utilde : "\375" utilde : "\376" umacron : "\376" umacron : "\376" umacron : "\376" umacron : "\377" abovedot : "\314" Eabovedot : "\354" eabovedot : "\377" abovedot : "\377" abovedot : "\305" Aring : "\345" aring : "\264" acute : "\264" acute : "\301" Aacute : "\311" Eacute : "\315" Iacute : "\332" Uacute : "\341" aacute : "\351" eacute : "\355" iacute : "\372" uacute : "\251" Scaron : "\256" Zcaron : "\267" caron : "\267" caron : "\271" scaron : "\276" zcaron : "\310" Ccaron : "\350" ccaron : "\243" Rcedilla : "\246" Lcedilla : "\253" Gcedilla : "\263" rcedilla : "\266" lcedilla : "\270" cedilla : "\270" cedilla : "\273" gcedilla : "\321" Ncedilla : "\323" Kcedilla : "\361" ncedilla : "\363" kcedilla : "\302" Acircumflex : "\316" Icircumflex : "\324" Ocircumflex : "\333" Ucircumflex : "\342" acircumflex : "\356" icircumflex : "\364" ocircumflex : "\373" ucircumflex : "\250" diaeresis : "\250" diaeresis : "\304" Adiaeresis : "\313" Ediaeresis : "\326" Odiaeresis : "\334" Udiaeresis : "\344" adiaeresis : "\353" ediaeresis : "\366" odiaeresis : "\374" udiaeresis : "\252" Emacron : "\257" macron : "\257" macron : "\272" emacron : "\300" Amacron : "\317" Imacron : "\322" Omacron : "\336" Umacron : "\340" amacron : "\357" imacron : "\362" omacron : "\376" umacron : "\241" Aogonek : "\261" aogonek : "\262" ogonek : "\262" ogonek : "\307" Iogonek : "\312" Eogonek : "\331" Uogonek : "\347" iogonek : "\352" eogonek : "\371" uogonek : "\260" ring : "\260" ring : "\245" Itilde : "\265" itilde : "\303" Atilde : "\325" Otilde : "\335" Utilde : "\343" atilde : "\365" otilde : "\375" utilde : "~" asciitilde : "~" asciitilde XCOMM End of Sequence Definition libX11-1.8.12/nls/iso8859-4/XI18N_OBJS0000644014310600000120000000052514763154126011763 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for iso8859-4 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iso8859-4/XLC_LOCALE.pre0000644014310600000120000000165214763154126012573 XCOMM XLocale Database Sample for iso8859-4. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-4:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-4:GR } font { primary ISO8859-4:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-4 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-4:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-4:GR } END XLC_XLOCALE libX11-1.8.12/nls/zh_TW.UTF-8/0000755014310600000120000000000014763154167011043 5libX11-1.8.12/nls/zh_TW.UTF-8/Compose.pre0000644014310600000120000000006014763154126013067 include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" libX11-1.8.12/nls/zh_TW.UTF-8/XI18N_OBJS0000644014310600000120000000053114763154126012324 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for zh_TW.UTF-8 locale # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/zh_TW.UTF-8/XLC_LOCALE.pre0000644014310600000120000000243614763154126013140 XCOMM XLocale Database Sample for zh_TW.UTF-8 XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET on_demand_loading True object_name generic XCOMM We leave the legacy encodings in for the moment, because we don't XCOMM have that many ISO10646 fonts yet. XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class (ISO8859 families) fs1 { charset { name ISO8859-1:GR } font { primary ISO8859-1:GR } } XCOMM fs2 class (Chinese Han Character (Traditional)) fs2 { charset { name BIG5-0:GLGR } font { primary BIG5-0:GLGR substitute BIG5-0:GLGR } } XCOMM fs3 class fs3 { charset { name ISO10646-1 } font { primary ISO10646-1 } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name UTF-8 mb_cur_max 6 state_depend_encoding False XCOMM cs0 class cs0 { side GL:Default length 1 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 ct_encoding ISO8859-1:GR } XCOMM cs2 class cs2 { side none length 2 ct_encoding BIG5-0:GLGR } XCOMM cs3 class cs3 { side none ct_encoding ISO10646-1 } END XLC_XLOCALE libX11-1.8.12/nls/tatar-cyr/0000755014310600000120000000000014763154167011114 5libX11-1.8.12/nls/tatar-cyr/XI18N_OBJS0000644014310600000120000000052514763154126012400 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for tatar-cyr locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/tatar-cyr/Compose.pre0000644014310600000120000000000014763154126013132 libX11-1.8.12/nls/tatar-cyr/XLC_LOCALE.pre0000644014310600000120000000214214763154126013203 XCOMM XLocale Database Sample for tatar-cyr. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary TATAR-CYR:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name TATAR-CYR:GR } font { primary TATAR-CYR:GR } } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name TATAR-CYR side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name TATAR-CYR mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding TATAR-CYR:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding TATAR-CYR:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-3/0000755014310600000120000000000014763154167010476 5libX11-1.8.12/nls/iso8859-3/XI18N_OBJS0000644014310600000120000000052514763154126011762 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for iso8859-3 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iso8859-3/XLC_LOCALE.pre0000644014310600000120000000165214763154126012572 XCOMM XLocale Database Sample for iso8859-3. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-3:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-3:GR } font { primary ISO8859-3:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-3 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-3:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-3:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-3/Compose.pre0000644014310600000120000005450514763154126012537 XCOMM XCOMM ISO 8859-3 (Latin3) Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM Means XCOMM Special Character : "#" numbersign : "'" apostrophe : "'" apostrophe : "@" at : "[" bracketleft : "\\" backslash : "\\" backslash : "\\" backslash : "]" bracketright : "^" asciicircum : "^" asciicircum : "^" asciicircum : "^" asciicircum : "`" grave : "`" grave : "{" braceleft : "{" braceleft : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "}" braceright : "}" braceright : "~" asciitilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree : "\265" mu : "\265" mu : "\265" mu : "\265" mu <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior : "\267" periodcentered : "\267" periodcentered : "\267" periodcentered : "\240" nobreakspace : "\255" hyphen : "\256" registered : "\256" registered : "\256" registered : "\367" division : "\367" division : "\327" multiply : "\264" acute : "\270" cedilla : "\250" diaeresis XCOMM Accented Alphabet : "\300" Agrave : "\300" Agrave : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\303" Atilde : "\303" Atilde : "\303" Atilde : "\303" Atilde : "\304" Adiaeresis : "\304" Adiaeresis : "\304" Adiaeresis : "\304" Adiaeresis : "\340" agrave : "\340" agrave : "\341" aacute : "\341" aacute : "\341" aacute : "\341" aacute : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\343" atilde : "\343" atilde : "\343" atilde : "\343" atilde : "\344" adiaeresis : "\344" adiaeresis : "\344" adiaeresis : "\344" adiaeresis : "\305" Cabovedot : "\305" Cabovedot : "\306" Ccircumflex : "\306" Ccircumflex : "\306" Ccircumflex : "\306" Ccircumflex : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\345" cabovedot : "\345" cabovedot : "\346" ccircumflex : "\346" ccircumflex : "\346" ccircumflex : "\346" ccircumflex : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\320" ETH : "\320" ETH : "\360" eth : "\360" eth : "\310" Egrave : "\310" Egrave : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\312" Ecircumflex : "\312" Ecircumflex : "\312" Ecircumflex : "\312" Ecircumflex : "\313" Ediaeresis : "\313" Ediaeresis : "\313" Ediaeresis : "\313" Ediaeresis : "\350" egrave : "\350" egrave : "\351" eacute : "\351" eacute : "\351" eacute : "\351" eacute : "\352" ecircumflex : "\352" ecircumflex : "\352" ecircumflex : "\352" ecircumflex : "\353" ediaeresis : "\353" ediaeresis : "\353" ediaeresis : "\353" ediaeresis : "\253" Gbreve : "\253" Gbreve : "\253" Gbreve : "\253" Gbreve : "\253" Gbreve : "\325" Gabovedot : "\325" Gabovedot : "\330" Gcircumflex : "\330" Gcircumflex : "\330" Gcircumflex : "\330" Gcircumflex : "\273" gbreve : "\273" gbreve : "\273" gbreve : "\273" gbreve : "\273" gbreve : "\365" gabovedot : "\365" gabovedot : "\370" gcircumflex : "\370" gcircumflex : "\370" gcircumflex : "\370" gcircumflex : "\241" Hstroke : "\241" Hstroke : "\246" Hcircumflex : "\246" Hcircumflex : "\246" Hcircumflex : "\246" Hcircumflex : "\261" hstroke : "\261" hstroke : "\266" hcircumflex : "\266" hcircumflex : "\266" hcircumflex : "\266" hcircumflex : "\251" Iabovedot : "\251" Iabovedot : "\314" Igrave : "\314" Igrave : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\317" Idiaeresis : "\317" Idiaeresis : "\317" Idiaeresis : "\317" Idiaeresis : "\271" idotless : "\271" idotless : "\354" igrave : "\354" igrave : "\355" iacute : "\355" iacute : "\355" iacute : "\355" iacute : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\357" idiaeresis : "\357" idiaeresis : "\357" idiaeresis : "\357" idiaeresis : "\254" Jcircumflex : "\254" Jcircumflex : "\254" Jcircumflex : "\254" Jcircumflex : "\274" jcircumflex : "\274" jcircumflex : "\274" jcircumflex : "\274" jcircumflex : "\322" Ograve : "\322" Ograve : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\325" Otilde : "\325" Otilde : "\325" Otilde : "\325" Otilde : "\326" Odiaeresis : "\326" Odiaeresis : "\326" Odiaeresis : "\326" Odiaeresis : "\362" ograve : "\362" ograve : "\363" oacute : "\363" oacute : "\363" oacute : "\363" oacute : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\365" otilde : "\365" otilde : "\365" otilde : "\365" otilde : "\366" odiaeresis : "\366" odiaeresis : "\366" odiaeresis : "\366" odiaeresis : "\252" Scedilla : "\252" Scedilla : "\252" Scedilla : "\272" scedilla : "\252" Scedilla : "\272" scedilla : "\272" scedilla : "\272" scedilla : "\336" Scircumflex : "\336" Scircumflex : "\336" Scircumflex : "\336" Scircumflex : "\376" scircumflex : "\376" scircumflex : "\376" scircumflex : "\376" scircumflex : "\331" Ugrave : "\331" Ugrave : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\334" Udiaeresis : "\334" Udiaeresis : "\334" Udiaeresis : "\334" Udiaeresis : "\335" Ubreve : "\335" Ubreve : "\335" Ubreve : "\335" Ubreve : "\335" Ubreve : "\371" ugrave : "\371" ugrave : "\372" uacute : "\372" uacute : "\372" uacute : "\372" uacute : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\374" udiaeresis : "\374" udiaeresis : "\374" udiaeresis : "\374" udiaeresis : "\375" ubreve : "\375" ubreve : "\375" ubreve : "\375" ubreve : "\375" ubreve : "\337" ssharp : "\335" Yacute : "\335" Yacute : "\335" Yacute : "\335" Yacute : "\276" Ydiaeresis : "\276" Ydiaeresis : "\276" Ydiaeresis : "\276" Ydiaeresis : "\375" yacute : "\375" yacute : "\375" yacute : "\375" yacute : "\377" ydiaeresis : "\377" ydiaeresis : "\377" ydiaeresis : "\377" ydiaeresis : "\257" Zabovedot : "\257" Zabovedot : "\277" zabovedot : "\277" zabovedot XCOMM XCOMM dead key accent keysyms XCOMM Special Character : "|" bar : "`" grave : "'" apostrophe : "\250" diaeresis : "^" asciicircum : "~" asciitilde <0> : "\260" degree <1> : "\271" onesuperior <2> : "\262" twosuperior <3> : "\263" threesuperior : "\267" periodcentered : "\254" notsign : "\257" macron : "\257" macron : "\264" acute : "\270" cedilla : "\250" diaeresis XCOMM Accented Alphabet : "\305" Aring : "\345" aring : "\300" Agrave : "\301" Aacute : "\302" Acircumflex : "\303" Atilde : "\304" Adiaeresis : "\340" agrave : "\341" aacute : "\342" acircumflex : "\343" atilde : "\344" adiaeresis : "\307" Ccedilla : "\306" Ccircumflex : "\305" Cabovedot : "\347" ccedilla : "\346" ccircumflex : "\345" cabovedot : "\310" Egrave : "\311" Eacute : "\312" Ecircumflex : "\313" Ediaeresis : "\350" egrave : "\351" eacute : "\352" ecircumflex : "\353" ediaeresis : "\253" Gbreve : "\330" Gcircumflex : "\273" gbreve : "\370" gcircumflex : "\246" Hcircumflex : "\266" hcircumflex : "\314" Igrave : "\315" Iacute : "\316" Icircumflex : "\317" Idiaeresis : "\251" Iabovedot : "\354" igrave : "\355" iacute : "\356" icircumflex : "\357" idiaeresis : "\271" idotless : "\254" Jcircumflex : "\274" jcircumflex : "\321" Ntilde : "\361" ntilde : "\322" Ograve : "\323" Oacute : "\324" Ocircumflex : "\325" Otilde : "\326" Odiaeresis : "\362" ograve : "\363" oacute : "\364" ocircumflex : "\365" otilde : "\366" odiaeresis : "\246" Scaron : "\252" Scedilla : "\336" Scircumflex : "\250" scaron : "\272" scedilla : "\376" scircumflex : "\335" Ubreve : "\331" Ugrave : "\332" Uacute : "\333" Ucircumflex : "\334" Udiaeresis : "\375" ubreve : "\371" ugrave : "\372" uacute : "\373" ucircumflex : "\374" udiaeresis : "\335" Yacute : "\276" Ydiaeresis : "\375" yacute : "\377" ydiaeresis : "\264" Zcaron : "\257" Zabovedot : "\270" zcaron : "\277" zabovedot XCOMM End of Sequence Definition libX11-1.8.12/nls/iso8859-10/0000755014310600000120000000000014763154167010554 5libX11-1.8.12/nls/iso8859-10/XLC_LOCALE.pre0000644014310600000120000000166014763154126012647 XCOMM XLocale Database Sample for iso8859-4. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-10:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-10:GR } font { primary ISO8859-10:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-10 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-10:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-10:GR } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-10/Compose.pre0000644014310600000120000000055114763154126012605 XCOMM XCOMM ISO 8859-10 Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/iso8859-10/XI18N_OBJS0000644014310600000120000000052614763154126012041 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for iso8859-10 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/ja.SJIS/0000755014310600000120000000000014763154167010347 5libX11-1.8.12/nls/ja.SJIS/Compose.pre0000644014310600000120000000054514763154126012403 XCOMM XCOMM ja.SJIS Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM This file currently has no entries. It appears that a compose file (even XCOMM just an empty one) is required for the appropriate keysyms to work for XCOMM this encoding. XCOMM XCOMM Means XCOMM Special Character XCOMM End of Sequence Definition libX11-1.8.12/nls/ja.SJIS/XI18N_OBJS0000644014310600000120000000074114763154126011633 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for ja locale # XLC ja_JP.PCK/xlibi18n_PCK _XlcGenericLoader # XLC_open XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/ximp40 _Ximp_OpenIM # XIM_open XIM common/ximlocal _XimpLocalOpenIM # XIM_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/ja.SJIS/XLC_LOCALE.pre0000644014310600000120000001266714763154126012453 XCOMM XCOMM XLocale Database Sample for ja_JP.sjis XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL substitute JISX0201.1976-0:GL vertical_rotate all } } XCOMM fs1 class (Kanji) fs1 { charset { name JISX0208.1983-0:GL } font { primary JISX0208.1983-0:GL substitute JISX0208.1990-0:GL } } XCOMM fs2 class (Half Kana) fs2 { charset { name JISX0201.1976-0:GR } font { primary JISX0201.1976-0:GR substitute JISX0201.1976-0:GR vertical_rotate all } } XCOMM fs3 class (Supplementary Kanji) XCOMM fs3 { XCOMM charset { XCOMM name JISX0212.1990-0:GL XCOMM } XCOMM font { XCOMM primary JISX0212.1990-0:GL XCOMM } XCOMM } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ja.sjis mb_cur_max 2 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL } XCOMM cs1 class cs1 { side none length 2 byte1 \x81,\x9f;\xe0,\xef byte2 \x40,\x7e;\x80,\xfc #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\ JISX0208.1983-1:GL; JISX0208.1983-1:GR mb_conversion \ [\x8140,\x817e]->\x2121,[\x8180,\x819e]->\x2160,[\x819f,\x81fc]->\x2221,\ [\x8240,\x827e]->\x2321,[\x8280,\x829e]->\x2360,[\x829f,\x82fc]->\x2421,\ [\x8340,\x837e]->\x2521,[\x8380,\x839e]->\x2560,[\x839f,\x83fc]->\x2621,\ [\x8440,\x847e]->\x2721,[\x8480,\x849e]->\x2760,[\x849f,\x84fc]->\x2821,\ [\x8540,\x857e]->\x2921,[\x8580,\x859e]->\x2960,[\x859f,\x85fc]->\x2a21,\ [\x8640,\x867e]->\x2b21,[\x8680,\x869e]->\x2b60,[\x869f,\x86fc]->\x2c21,\ [\x8740,\x877e]->\x2d21,[\x8780,\x879e]->\x2d60,[\x879f,\x87fc]->\x2e21,\ [\x8840,\x887e]->\x2f21,[\x8880,\x889e]->\x2f60,[\x889f,\x88fc]->\x3021,\ [\x8940,\x897e]->\x3121,[\x8980,\x899e]->\x3160,[\x899f,\x89fc]->\x3221,\ [\x8a40,\x8a7e]->\x3321,[\x8a80,\x8a9e]->\x3360,[\x8a9f,\x8afc]->\x3421,\ [\x8b40,\x8b7e]->\x3521,[\x8b80,\x8b9e]->\x3560,[\x8b9f,\x8bfc]->\x3621,\ [\x8c40,\x8c7e]->\x3721,[\x8c80,\x8c9e]->\x3760,[\x8c9f,\x8cfc]->\x3821,\ [\x8d40,\x8d7e]->\x3921,[\x8d80,\x8d9e]->\x3960,[\x8d9f,\x8dfc]->\x3a21,\ [\x8e40,\x8e7e]->\x3b21,[\x8e80,\x8e9e]->\x3b60,[\x8e9f,\x8efc]->\x3c21,\ [\x8f40,\x8f7e]->\x3d21,[\x8f80,\x8f9e]->\x3d60,[\x8f9f,\x8ffc]->\x3e21,\ [\x9040,\x907e]->\x3f21,[\x9080,\x909e]->\x3f60,[\x909f,\x90fc]->\x4021,\ [\x9140,\x917e]->\x4121,[\x9180,\x919e]->\x4160,[\x919f,\x91fc]->\x4221,\ [\x9240,\x927e]->\x4321,[\x9280,\x929e]->\x4360,[\x929f,\x92fc]->\x4421,\ [\x9340,\x937e]->\x4521,[\x9380,\x939e]->\x4560,[\x939f,\x93fc]->\x4621,\ [\x9440,\x947e]->\x4721,[\x9480,\x949e]->\x4760,[\x949f,\x94fc]->\x4821,\ [\x9540,\x957e]->\x4921,[\x9580,\x959e]->\x4960,[\x959f,\x95fc]->\x4a21,\ [\x9640,\x967e]->\x4b21,[\x9680,\x969e]->\x4b60,[\x969f,\x96fc]->\x4c21,\ [\x9740,\x977e]->\x4d21,[\x9780,\x979e]->\x4d60,[\x979f,\x97fc]->\x4e21,\ [\x9840,\x987e]->\x4f21,[\x9880,\x989e]->\x4f60,[\x989f,\x98fc]->\x5021,\ [\x9940,\x997e]->\x5121,[\x9980,\x999e]->\x5160,[\x999f,\x99fc]->\x5221,\ [\x9a40,\x9a7e]->\x5321,[\x9a80,\x9a9e]->\x5360,[\x9a9f,\x9afc]->\x5421,\ [\x9b40,\x9b7e]->\x5521,[\x9b80,\x9b9e]->\x5560,[\x9b9f,\x9bfc]->\x5621,\ [\x9c40,\x9c7e]->\x5721,[\x9c80,\x9c9e]->\x5760,[\x9c9f,\x9cfc]->\x5821,\ [\x9d40,\x9d7e]->\x5921,[\x9d80,\x9d9e]->\x5960,[\x9d9f,\x9dfc]->\x5a21,\ [\x9e40,\x9e7e]->\x5b21,[\x9e80,\x9e9e]->\x5b60,[\x9e9f,\x9efc]->\x5c21,\ [\x9f40,\x9f7e]->\x5d21,[\x9f80,\x9f9e]->\x5d60,[\x9f9f,\x9ffc]->\x5e21,\ [\xe040,\xe07e]->\x5f21,[\xe080,\xe09e]->\x5f60,[\xe09f,\xe0fc]->\x6021,\ [\xe140,\xe17e]->\x6121,[\xe180,\xe19e]->\x6160,[\xe19f,\xe1fc]->\x6221,\ [\xe240,\xe27e]->\x6321,[\xe280,\xe29e]->\x6360,[\xe29f,\xe2fc]->\x6421,\ [\xe340,\xe37e]->\x6521,[\xe380,\xe39e]->\x6560,[\xe39f,\xe3fc]->\x6621,\ [\xe440,\xe47e]->\x6721,[\xe480,\xe49e]->\x6760,[\xe49f,\xe4fc]->\x6821,\ [\xe540,\xe57e]->\x6921,[\xe580,\xe59e]->\x6960,[\xe59f,\xe5fc]->\x6a21,\ [\xe640,\xe67e]->\x6b21,[\xe680,\xe69e]->\x6b60,[\xe69f,\xe6fc]->\x6c21,\ [\xe740,\xe77e]->\x6d21,[\xe780,\xe79e]->\x6d60,[\xe79f,\xe7fc]->\x6e21,\ [\xe840,\xe87e]->\x6f21,[\xe880,\xe89e]->\x6f60,[\xe89f,\xe8fc]->\x7021,\ [\xe940,\xe97e]->\x7121,[\xe980,\xe99e]->\x7160,[\xe99f,\xe9fc]->\x7221,\ [\xea40,\xea7e]->\x7321,[\xea80,\xea9e]->\x7360,[\xea9f,\xeafc]->\x7421,\ [\xeb40,\xeb7e]->\x7521,[\xeb80,\xeb9e]->\x7560,[\xeb9f,\xebfc]->\x7621,\ [\xec40,\xec7e]->\x7721,[\xec80,\xec9e]->\x7760,[\xec9f,\xecfc]->\x7821,\ [\xed40,\xed7e]->\x7921,[\xed80,\xed9e]->\x7960,[\xed9f,\xedfc]->\x7a21,\ [\xee40,\xee7e]->\x7b21,[\xee80,\xee9e]->\x7b60,[\xee9f,\xeefc]->\x7c21,\ [\xef40,\xef7e]->\x7d21,[\xef80,\xef9e]->\x7d60,[\xef9f,\xeffc]->\x7e21 } XCOMM cs2 class cs2 { side GR length 1 #if WCHAR32 wc_encoding \x10000000 #else wc_encoding \x00000080 #endif ct_encoding JISX0201.1976-0:GR } XCOMM cs3 class XCOMM cs3 { XCOMM side GR XCOMM length 2 XCOMM #if WCHAR32 XCOMM wc_encoding \x20000000 XCOMM #else XCOMM wc_encoding \x00008000 XCOMM #endif XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR XCOMM } END XLC_XLOCALE libX11-1.8.12/nls/iso8859-9/0000755014310600000120000000000014763154167010504 5libX11-1.8.12/nls/iso8859-9/Compose.pre0000644014310600000120000005237714763154126012552 XCOMM XCOMM ISO 8859-9 (Latin5) Compose Sequence XCOMM XCOMM Sequence Definition XCOMM XCOMM XCOMM Means XCOMM Special Character : "#" numbersign : "'" apostrophe : "'" apostrophe : "[" bracketleft : "\\" backslash : "\\" backslash : "\\" backslash : "]" bracketright : "^" asciicircum : "^" asciicircum : "^" asciicircum : "^" asciicircum : "`" grave : "`" grave : "{" braceleft : "{" braceleft : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "|" bar : "}" braceright : "}" braceright : "~" asciitilde : "~" asciitilde : "~" asciitilde : "~" asciitilde : "\241" exclamdown : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\242" cent : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\244" EuroSign : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\245" yen : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section <0> : "\247" section : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright <0> : "\251" copyright : "\251" copyright : "\252" ordfeminine : "\252" ordfeminine : "\252" ordfeminine : "\252" ordfeminine : "\272" masculine : "\272" masculine : "\272" masculine : "\272" masculine : "\253" guillemotleft : "\273" guillemotright <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree <0> : "\260" degree : "\261" plusminus : "\261" plusminus : "\265" mu : "\265" mu : "\265" mu : "\265" mu <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <1> : "\271" onesuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <2> : "\262" twosuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior <3> : "\263" threesuperior

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph

: "\266" paragraph : "\267" periodcentered : "\267" periodcentered : "\267" periodcentered : "\277" questiondown : "\240" nobreakspace : "\254" notsign : "\254" notsign : "\255" hyphen : "\256" registered : "\256" registered : "\256" registered : "\257" macron : "\257" macron : "\257" macron : "\257" macron : "\257" macron : "\367" division : "\367" division : "\327" multiply : "\264" acute : "\270" cedilla : "\250" diaeresis XCOMM Accented Alphabet : "\300" Agrave : "\300" Agrave : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\301" Aacute : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\302" Acircumflex : "\303" Atilde : "\303" Atilde : "\303" Atilde : "\303" Atilde : "\304" Adiaeresis : "\304" Adiaeresis : "\304" Adiaeresis : "\304" Adiaeresis : "\305" Aring : "\305" Aring : "\305" Aring : "\306" AE : "\340" agrave : "\340" agrave : "\341" aacute : "\341" aacute : "\341" aacute : "\341" aacute : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\342" acircumflex : "\343" atilde : "\343" atilde : "\343" atilde : "\343" atilde : "\344" adiaeresis : "\344" adiaeresis : "\344" adiaeresis : "\344" adiaeresis : "\345" aring : "\345" aring : "\345" aring : "\346" ae : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\307" Ccedilla : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\347" ccedilla : "\320" ETH : "\320" ETH : "\360" eth : "\360" eth : "\310" Egrave : "\310" Egrave : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\311" Eacute : "\312" Ecircumflex : "\312" Ecircumflex : "\312" Ecircumflex : "\312" Ecircumflex : "\313" Ediaeresis : "\313" Ediaeresis : "\313" Ediaeresis : "\313" Ediaeresis : "\350" egrave : "\350" egrave : "\351" eacute : "\351" eacute : "\351" eacute : "\351" eacute : "\352" ecircumflex : "\352" ecircumflex : "\352" ecircumflex : "\352" ecircumflex : "\353" ediaeresis : "\353" ediaeresis : "\353" ediaeresis : "\353" ediaeresis : "\320" Gbreve : "\320" Gbreve : "\320" Gbreve : "\320" Gbreve : "\320" Gbreve : "\360" gbreve : "\360" gbreve : "\360" gbreve : "\360" gbreve : "\360" gbreve : "\314" Igrave : "\314" Igrave : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\315" Iacute : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\316" Icircumflex : "\317" Idiaeresis : "\317" Idiaeresis : "\317" Idiaeresis : "\317" Idiaeresis : "\335" Iabovedot : "\335" Iabovedot : "\354" igrave : "\354" igrave : "\355" iacute : "\355" iacute : "\355" iacute : "\355" iacute : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\356" icircumflex : "\357" idiaeresis : "\357" idiaeresis : "\357" idiaeresis : "\357" idiaeresis : "\375" idotless : "\375" idotless : "\321" Ntilde : "\321" Ntilde : "\321" Ntilde : "\321" Ntilde : "\361" ntilde : "\361" ntilde : "\361" ntilde : "\361" ntilde : "\322" Ograve : "\322" Ograve : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\323" Oacute : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\324" Ocircumflex : "\325" Otilde : "\325" Otilde : "\325" Otilde : "\325" Otilde : "\326" Odiaeresis : "\326" Odiaeresis : "\326" Odiaeresis : "\326" Odiaeresis : "\330" Ooblique : "\330" Ooblique : "\274" OE : "\362" ograve : "\362" ograve : "\363" oacute : "\363" oacute : "\363" oacute : "\363" oacute : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\364" ocircumflex : "\365" otilde : "\365" otilde : "\365" otilde : "\365" otilde : "\366" odiaeresis : "\366" odiaeresis : "\366" odiaeresis : "\366" odiaeresis : "\370" oslash : "\370" oslash : "\336" Scedilla : "\336" Scedilla : "\336" Scedilla : "\376" scedilla : "\336" Scedilla : "\376" scedilla : "\376" scedilla : "\376" scedilla : "\331" Ugrave : "\331" Ugrave : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\332" Uacute : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\333" Ucircumflex : "\334" Udiaeresis : "\334" Udiaeresis : "\334" Udiaeresis : "\334" Udiaeresis : "\371" ugrave : "\371" ugrave : "\372" uacute : "\372" uacute : "\372" uacute : "\372" uacute : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\373" ucircumflex : "\374" udiaeresis : "\374" udiaeresis : "\374" udiaeresis : "\374" udiaeresis : "\337" ssharp : "\336" THORN : "\376" thorn : "\335" Yacute : "\335" Yacute : "\335" Yacute : "\335" Yacute : "\276" Ydiaeresis : "\276" Ydiaeresis : "\276" Ydiaeresis : "\276" Ydiaeresis : "\375" yacute : "\375" yacute : "\375" yacute : "\375" yacute : "\377" ydiaeresis : "\377" ydiaeresis : "\377" ydiaeresis : "\377" ydiaeresis : "\264" Zcaron : "\264" Zcaron : "\270" zcaron : "\270" zcaron : "\264" Zcaron : "\270" zcaron XCOMM XCOMM dead key accent keysyms XCOMM Special Character : "|" bar : "`" grave : "'" apostrophe : "\250" diaeresis : "^" asciicircum : "~" asciitilde <0> : "\260" degree <1> : "\271" onesuperior <2> : "\262" twosuperior <3> : "\263" threesuperior : "\267" periodcentered : "\254" notsign : "\257" macron : "\257" macron : "\264" acute : "\270" cedilla : "\250" diaeresis XCOMM Accented Alphabet : "\305" Aring : "\345" aring : "\300" Agrave : "\301" Aacute : "\302" Acircumflex : "\303" Atilde : "\304" Adiaeresis : "\340" agrave : "\341" aacute : "\342" acircumflex : "\343" atilde : "\344" adiaeresis : "\307" Ccedilla : "\347" ccedilla : "\310" Egrave : "\311" Eacute : "\312" Ecircumflex : "\313" Ediaeresis : "\350" egrave : "\351" eacute : "\352" ecircumflex : "\353" ediaeresis : "\320" Gbreve : "\360" gbreve : "\335" Iabovedot : "\314" Igrave : "\315" Iacute : "\316" Icircumflex : "\317" Idiaeresis : "\375" idotless : "\354" igrave : "\355" iacute : "\356" icircumflex : "\357" idiaeresis : "\321" Ntilde : "\361" ntilde : "\322" Ograve : "\323" Oacute : "\324" Ocircumflex : "\325" Otilde : "\326" Odiaeresis : "\362" ograve : "\363" oacute : "\364" ocircumflex : "\365" otilde : "\366" odiaeresis : "\246" Scaron : "\250" scaron : "\336" Scedilla : "\376" scedilla : "\331" Ugrave : "\332" Uacute : "\333" Ucircumflex : "\334" Udiaeresis : "\371" ugrave : "\372" uacute : "\373" ucircumflex : "\374" udiaeresis : "\335" Yacute : "\276" Ydiaeresis : "\375" yacute : "\377" ydiaeresis : "\264" Zcaron : "\270" zcaron XCOMM End of Sequence Definition libX11-1.8.12/nls/iso8859-9/XI18N_OBJS0000644014310600000120000000037014763154126011766 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for euro locales # XLC common/xlibi18n _XlcGenericLoader # XLC_open XIM common/xiiimp _XimpLocalOpenIM # XIM_open XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/iso8859-9/XLC_LOCALE.pre0000644014310600000120000000165214763154126012600 XCOMM XLocale Database Sample for iso8859-9. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-9:GL substitute ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class fs1 { charset { name ISO8859-9:GR } font { primary ISO8859-9:GR } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name ISO8859-9 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True force_convert_to_mb True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding ISO8859-9:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding ISO8859-9:GR } END XLC_XLOCALE libX11-1.8.12/nls/tscii-0/0000755014310600000120000000000014763154167010456 5libX11-1.8.12/nls/tscii-0/XI18N_OBJS0000644014310600000120000000052314763154126011740 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for tscii-0 locale # XLC common/xlcDef _XlcDefaultLoader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/nls/tscii-0/Compose.pre0000644014310600000120000000000014763154126012474 libX11-1.8.12/nls/tscii-0/XLC_LOCALE.pre0000644014310600000120000000207114763154126012546 XCOMM XLocale Database Sample for mulelao-1. XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary TSCII-0:GL substitute ISO8859-1:GL } } XCOMM fs1 class fs1 { charset TSCII-0:GR font TSCII-0:GR } END XLC_FONTSET XCOMM XCOMM XLC_CHARSET_DEFINE category XCOMM XLC_CHARSET_DEFINE csd0 { charset_name TSCII-0 side GR length 1 string_encoding False sequence \x1b%/1 } END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name TSCII-0 mb_cur_max 1 state_depend_encoding False #if WCHAR32 wc_encoding_mask \x30000000 wc_shift_bits 7 #else wc_encoding_mask \x00008080 wc_shift_bits 8 #endif use_stdc_env True XCOMM cs0 class cs0 { side GL:Default length 1 wc_encoding \x00000000 ct_encoding TSCII-0:GL; ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 #if WCHAR32 wc_encoding \x30000000 #else wc_encoding \x00008080 #endif ct_encoding TSCII-0:GR } END XLC_XLOCALE libX11-1.8.12/nls/zh_CN.UTF-8/0000755014310600000120000000000014763154167011011 5libX11-1.8.12/nls/zh_CN.UTF-8/XLC_LOCALE.pre0000644014310600000120000000372014763154126013103 XCOMM XFree86 NLS for Chinese locale zh_CN.UTF-8 XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8 XCOMM by James Su XCOMM XCOMM XCOMM XLC_FONTSET category XCOMM XLC_FONTSET on_demand_loading True object_name generic XCOMM We leave the legacy encodings in for the moment, because we don't XCOMM have that many ISO10646 fonts yet. XCOMM fs0 class (7 bit ASCII) fs0 { charset { name ISO8859-1:GL } font { primary ISO8859-1:GL vertical_rotate all } } XCOMM fs1 class (ISO8859 families) fs1 { charset { name ISO8859-1:GR } font { primary ISO8859-1:GR } } XCOMM fs2 class (Chinese Han Character) fs2 { charset { name GB2312.1980-0:GL } font { primary GB2312.1980-0:GL } } XCOMM fs3 class (Chinese Han Character GBK) fs3 { charset { name GBK-0:GLGR } font { primary GBK-0:GLGR substitute GB13000.1993-1:GLGR } } XCOMM fs4 class fs4 { charset { name ISO10646-1 } font { primary ISO10646-1 } } END XLC_FONTSET XCOMM XCOMM XLC_XLOCALE category XCOMM XLC_XLOCALE encoding_name UTF-8 mb_cur_max 6 state_depend_encoding False XCOMM cs0 class cs0 { side GL:Default length 1 ct_encoding ISO8859-1:GL } XCOMM cs1 class cs1 { side GR:Default length 1 ct_encoding ISO8859-1:GR } XCOMM cs2 class cs2 { side GR length 2 ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR } XCOMM cs3 class cs3 { side none ct_encoding ISO10646-1 } END XLC_XLOCALE libX11-1.8.12/nls/zh_CN.UTF-8/Compose.pre0000644014310600000120000000006014763154126013035 include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" libX11-1.8.12/nls/zh_CN.UTF-8/XI18N_OBJS0000644014310600000120000000053314763154126012274 # CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME # # XI18N objects table for zh_CN.UTF-8 locale # # XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister XOM common/xomGeneric _XomGenericOpenOM # XOM_open libX11-1.8.12/COPYING0000644014310600000120000013257214763154126007372 The following is the 'standard copyright' agreed upon by most contributors, and is currently the canonical license preferred by the X.Org Foundation. This is a slight variant of the common MIT license form published by the Open Source Initiative at http://www.opensource.org/licenses/mit-license.php Copyright holders of new code should use this license statement where possible, and insert their name to this list. Please sort by surname for people, and by the full name for other entities (e.g. Juliusz Chroboczek sorts before Intel Corporation sorts before Daniel Stone). See each individual source file or directory for the license that applies to that file. Copyright (C) 2003-2006,2008 Jamey Sharp, Josh Triplett Copyright © 2009 Red Hat, Inc. Copyright (c) 1990-1992, 1999, 2000, 2004, 2009, 2010, 2015, 2017, Oracle and/or its affiliates. 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. ---------------------------------------------------------------------- The following licenses are 'legacy' - usually MIT/X11 licenses with the name of the copyright holder(s) in the license statement: Copyright 1984-1994, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. X Window System is a trademark of The Open Group. ---------------------------------------- Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium Copyright 2000 The XFree86 Project, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 by Digital Equipment Corporation Portions Copyright 1990, 1991 by Tektronix, Inc. Permission to use, copy, modify and distribute this documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies and that both that copyright notice and this permission notice appear in all copies, and that the names of Digital and Tektronix not be used in in advertising or publicity pertaining to this documentation without specific, written prior permission. Digital and Tektronix makes no representations about the suitability of this documentation for any purpose. It is provided ``as is'' without express or implied warranty. ---------------------------------------- Copyright (c) 1999-2000 Free Software Foundation, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE FREE SOFTWARE FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the Free Software Foundation shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the Free Software Foundation. ---------------------------------------- Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. All Rights Reserved This file is a component of an X Window System-specific implementation of Xcms based on the TekColor Color Management System. TekColor is a trademark of Tektronix, Inc. The term "TekHVC" designates a particular color space that is the subject of U.S. Patent No. 4,985,853 (equivalent foreign patents pending). Permission is hereby granted to use, copy, modify, sell, and otherwise distribute this software and its documentation for any purpose and without fee, provided that: 1. This copyright, permission, and disclaimer notice is reproduced in all copies of this software and any modification thereof and in supporting documentation; 2. Any color-handling application which displays TekHVC color cooordinates identifies these as TekHVC color coordinates in any interface that displays these coordinates and in any associated documentation; 3. The term "TekHVC" is always used, and is only used, in association with the mathematical derivations of the TekHVC Color Space, including those provided in this file and any equivalent pathways and mathematical derivations, regardless of digital (e.g., floating point or integer) representation. Tektronix makes no representation about the suitability of this software for any purpose. It is provided "as is" and with all faults. TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- (c) Copyright 1995 FUJITSU LIMITED This is source code modified by FUJITSU LIMITED under the Joint Development Agreement for the CDE/Motif PST. ---------------------------------------- Copyright 1992 by Oki Technosystems Laboratory, Inc. Copyright 1992 by Fuji Xerox Co., Ltd. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Oki Technosystems Laboratory and Fuji Xerox not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Oki Technosystems Laboratory and Fuji Xerox make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. OKI TECHNOSYSTEMS LABORATORY AND FUJI XEROX DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OKI TECHNOSYSTEMS LABORATORY AND FUJI XEROX BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1990, 1991, 1992, 1993, 1994 by FUJITSU LIMITED Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of FUJITSU LIMITED not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. FUJITSU LIMITED makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1990, 1991 by OMRON Corporation Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name OMRON not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. OMRON makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. OMRON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OMRON BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 by Digital Equipment Corporation Portions Copyright 1990, 1991 by Tektronix, Inc Rewritten for X.org by Chris Lee Permission to use, copy, modify, distribute, and sell this documentation for any purpose and without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. Chris Lee makes no representations about the suitability for any purpose of the information in this document. It is provided \`\`as-is'' without express or implied warranty. ---------------------------------------- Copyright 1993 by Digital Equipment Corporation, Maynard, Massachusetts, Copyright 1994 by FUJITSU LIMITED Copyright 1994 by Sony Corporation All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of Digital, FUJITSU LIMITED and Sony Corporation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL, FUJITSU LIMITED AND SONY CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL, FUJITSU LIMITED AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1991 by the Open Software Foundation Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Open Software Foundation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Open Software Foundation makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1990, 1991, 1992,1993, 1994 by FUJITSU LIMITED Copyright 1993, 1994 by Sony Corporation Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of FUJITSU LIMITED and Sony Corporation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. FUJITSU LIMITED and Sony Corporation makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. FUJITSU LIMITED AND SONY CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU LIMITED OR SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright (c) 1993, 1995 by Silicon Graphics Computer Systems, Inc. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Silicon Graphics not be used in advertising or publicity pertaining to distribution of the software without specific prior written permission. Silicon Graphics makes no representation about the suitability of this software for any purpose. It is provided "as is" without any express or implied warranty. SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1991, 1992, 1993, 1994 by FUJITSU LIMITED Copyright 1993 by Digital Equipment Corporation Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of FUJITSU LIMITED and Digital Equipment Corporation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. FUJITSU LIMITED and Digital Equipment Corporation makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1992, 1993 by FUJITSU LIMITED Copyright 1993 by Fujitsu Open Systems Solutions, Inc. Copyright 1994 by Sony Corporation Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of FUJITSU LIMITED, Fujitsu Open Systems Solutions, Inc. and Sony Corporation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. FUJITSU LIMITED, Fujitsu Open Systems Solutions, Inc. and Sony Corporation make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. FUJITSU LIMITED, FUJITSU OPEN SYSTEMS SOLUTIONS, INC. AND SONY CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU OPEN SYSTEMS SOLUTIONS, INC., FUJITSU LIMITED AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1987, 1988, 1990, 1993 by Digital Equipment Corporation, Maynard, Massachusetts, All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1993 by SunSoft, Inc. Copyright 1999-2000 by Bruno Haible Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of SunSoft, Inc. and Bruno Haible not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. SunSoft, Inc. and Bruno Haible make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1991 by the Open Software Foundation Copyright 1993 by the TOSHIBA Corp. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of Open Software Foundation and TOSHIBA not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Open Software Foundation and TOSHIBA make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. OPEN SOFTWARE FOUNDATION AND TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN OR TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1988 by Wyse Technology, Inc., San Jose, Ca., All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name Wyse not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1991 by the Open Software Foundation Copyright 1993, 1994 by the Sony Corporation Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of Open Software Foundation and Sony Corporation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Open Software Foundation and Sony Corporation make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. OPEN SOFTWARE FOUNDATION AND SONY CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN OR SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1992, 1993 by FUJITSU LIMITED Copyright 1993 by Fujitsu Open Systems Solutions, Inc. Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of FUJITSU LIMITED and Fujitsu Open Systems Solutions, Inc. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. FUJITSU LIMITED and Fujitsu Open Systems Solutions, Inc. makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. FUJITSU LIMITED AND FUJITSU OPEN SYSTEMS SOLUTIONS, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU OPEN SYSTEMS SOLUTIONS, INC. AND FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1993, 1994 by Sony Corporation Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sony Corporation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sony Corporation makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SONY CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1986, 1998 The Open Group Copyright (c) 2000 The XFree86 Project, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM OR THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium or of the XFree86 Project shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium and the XFree86 Project. ---------------------------------------- Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation, and Nippon Telegraph and Telephone Corporation Copyright 1991 by the Open Software Foundation Copyright 1993 by the FUJITSU LIMITED Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of OMRON, NTT Software, NTT, and Open Software Foundation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. OMRON, NTT Software, NTT, and Open Software Foundation make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. OMRON, NTT SOFTWARE, NTT, AND OPEN SOFTWARE FOUNDATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OMRON, NTT SOFTWARE, NTT, OR OPEN SOFTWARE FOUNDATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1988 by Wyse Technology, Inc., San Jose, Ca, Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL OR WYSE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1991, 1992 by Fuji Xerox Co., Ltd. Copyright 1992, 1993, 1994 by FUJITSU LIMITED Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Fuji Xerox, FUJITSU LIMITED not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Fuji Xerox, FUJITSU LIMITED make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. FUJI XEROX, FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJI XEROX, FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 2006 Josh Triplett Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM 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. ---------------------------------------- (c) Copyright 1996 by Sebastien Marineau and Holger Veit Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of Sebastien Marineau or Holger Veit shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Holger Veit or Sebastien Marineau. ---------------------------------------- Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation, and Nippon Telegraph and Telephone Corporation Copyright 1991 by the Open Software Foundation Copyright 1993 by the TOSHIBA Corp. Copyright 1993, 1994 by Sony Corporation Copyright 1993, 1994 by the FUJITSU LIMITED Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of OMRON, NTT Software, NTT, Open Software Foundation, and Sony Corporation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. OMRON, NTT Software, NTT, Open Software Foundation, and Sony Corporation make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, AND SONY CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, OR SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 2000 by Bruno Haible Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Bruno Haible not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Bruno Haible makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL Bruno Haible BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright © 2003 Keith Packard Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Keith Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Keith Packard makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright (c) 2007-2009, Troy D. Hanson All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------- Copyright 1992, 1993 by TOSHIBA Corp. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of TOSHIBA not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. TOSHIBA make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright IBM Corporation 1993 All Rights Reserved License to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of IBM not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS, IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation, and Nippon Telegraph and Telephone Corporation Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of OMRON, NTT Software, and NTT not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. OMRON, NTT Software, and NTT make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. OMRON, NTT SOFTWARE, AND NTT, DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OMRON, NTT SOFTWARE, OR NTT, BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ---------------------------------------- Copyright (c) 2008 Otto Moerbeek Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. libX11-1.8.12/Makefile.am0000644014310600000120000000120414763154126010356 if XLIB_LOADABLE_I18N ORDER=src modules else ORDER=modules src endif # Order: nls before specs SUBDIRS=include $(ORDER) nls man specs ACLOCAL_AMFLAGS = -I m4 pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = x11.pc x11-xcb.pc MAINTAINERCLEANFILES = ChangeLog INSTALL .PHONY: ChangeLog INSTALL INSTALL: $(INSTALL_CMD) ChangeLog: $(CHANGELOG_CMD) dist-hook: ChangeLog INSTALL if LINT # Check source code with tools like lint & sparse LINT_SUBDIRS=src # modules lint: @for subdir in $(LINT_SUBDIRS) ; do \ echo "Making $@ in $$subdir"; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) lint) ; \ done endif LINT EXTRA_DIST = README.md libX11-1.8.12/missing0000755014310600000120000001706014763154146007732 #! /bin/sh # Common wrapper for a few potentially missing GNU and other programs. scriptversion=2024-06-07.14; # UTC # shellcheck disable=SC2006,SC2268 # we must support pre-POSIX shells # Copyright (C) 1996-2024 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autogen autoheader autom4te automake autoreconf bison flex help2man lex makeinfo perl yacc Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Report bugs to . GNU Automake home page: . General help using GNU software: ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing (GNU Automake) $scriptversion" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=https://www.perl.org/ flex_URL=https://github.com/westes/flex gnu_software_URL=https://www.gnu.org/software program_details () { case $1 in aclocal|automake|autoreconf) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; *) : ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" autoheader_deps="'acconfig.h'" automake_deps="'Makefile.am'" aclocal_deps="'acinclude.m4'" case $normalized_program in aclocal*) echo "You should only need it if you modified $aclocal_deps or" echo "$configure_deps." ;; autoconf*) echo "You should only need it if you modified $configure_deps." ;; autogen*) echo "You should only need it if you modified a '.def' or '.tpl' file." echo "You may want to install the GNU AutoGen package:" echo "<$gnu_software_URL/autogen/>" ;; autoheader*) echo "You should only need it if you modified $autoheader_deps or" echo "$configure_deps." ;; automake*) echo "You should only need it if you modified $automake_deps or" echo "$configure_deps." ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." ;; autoreconf*) echo "You should only need it if you modified $aclocal_deps or" echo "$automake_deps or $autoheader_deps or $automake_deps or" echo "$configure_deps." ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; perl*) echo "You should only need it to run GNU Autoconf, GNU Automake, " echo " assorted other tools, or if you modified a Perl source file." echo "You may want to install the Perl 5 language interpreter:" echo "<$perl_URL>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac program_details "$normalized_program" } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: libX11-1.8.12/ltmain.sh0000644014310600000120000122322214763154136010152 #! /usr/bin/env sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2019-02-19.15 # libtool (GNU libtool) 2.5.4 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2019, 2021-2024 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION=2.5.4 package_revision=2.5.4 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2019-02-19.15; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2004-2019, 2021, 2023-2024 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # These NLS vars are set unconditionally (bootstrap issue #24). Unset those # in case the environment reset is needed later and the $save_* variant is not # defined (see the code above). LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # func_unset VAR # -------------- # Portably unset VAR. # In some shells, an 'unset VAR' statement leaves a non-zero return # status if VAR is already unset, which might be problematic if the # statement is used at the end of a function (thus poisoning its return # value) or when 'set -e' is active (causing even a spurious abort of # the script in this case). func_unset () { { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } } # Make sure CDPATH doesn't cause `cd` commands to output the target dir. func_unset CDPATH # Make sure ${,E,F}GREP behave sanely. func_unset GREP_OPTIONS ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" # require_check_ifs_backslash # --------------------------- # Check if we can use backslash as IFS='\' separator, and set # $check_ifs_backshlash_broken to ':' or 'false'. require_check_ifs_backslash=func_require_check_ifs_backslash func_require_check_ifs_backslash () { _G_save_IFS=$IFS IFS='\' _G_check_ifs_backshlash='a\\b' for _G_i in $_G_check_ifs_backshlash do case $_G_i in a) check_ifs_backshlash_broken=false ;; '') break ;; *) check_ifs_backshlash_broken=: break ;; esac done IFS=$_G_save_IFS require_check_ifs_backslash=: } ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # usable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1+=\\ \$func_quote_arg_result" }' else func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1=\$$1\\ \$func_quote_arg_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value returned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list in case some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_portable EVAL ARG # ---------------------------- # Internal function to portably implement func_quote_arg. Note that we still # keep attention to performance here so we as much as possible try to avoid # calling sed binary (so far O(N) complexity as long as func_append is O(1)). func_quote_portable () { $debug_cmd $require_check_ifs_backslash func_quote_portable_result=$2 # one-time-loop (easy break) while true do if $1; then func_quote_portable_result=`$ECHO "$2" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` break fi # Quote for eval. case $func_quote_portable_result in *[\\\`\"\$]*) # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string # contains the shell wildcard characters. case $check_ifs_backshlash_broken$func_quote_portable_result in :*|*[\[\*\?]*) func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ | $SED "$sed_quote_subst"` break ;; esac func_quote_portable_old_IFS=$IFS for _G_char in '\' '`' '"' '$' do # STATE($1) PREV($2) SEPARATOR($3) set start "" "" func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy IFS=$_G_char for _G_part in $func_quote_portable_result do case $1 in quote) func_append func_quote_portable_result "$3$2" set quote "$_G_part" "\\$_G_char" ;; start) set first "" "" func_quote_portable_result= ;; first) set quote "$_G_part" "" ;; esac done done IFS=$func_quote_portable_old_IFS ;; *) ;; esac break done func_quote_portable_unquoted_result=$func_quote_portable_result case $func_quote_portable_result in # double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # many bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_portable_result=\"$func_quote_portable_result\" ;; esac } # func_quotefast_eval ARG # ----------------------- # Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', # but optimized for speed. Result is stored in $func_quotefast_eval. if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then printf -v _GL_test_printf_tilde %q '~' if test '\~' = "$_GL_test_printf_tilde"; then func_quotefast_eval () { printf -v func_quotefast_eval_result %q "$1" } else # Broken older Bash implementations. Make those faster too if possible. func_quotefast_eval () { case $1 in '~'*) func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result ;; *) printf -v func_quotefast_eval_result %q "$1" ;; esac } fi else func_quotefast_eval () { func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result } fi # func_quote_arg MODEs ARG # ------------------------ # Quote one ARG to be evaled later. MODEs argument may contain zero or more # specifiers listed below separated by ',' character. This function returns two # values: # i) func_quote_arg_result # double-quoted (when needed), suitable for a subsequent eval # ii) func_quote_arg_unquoted_result # has all characters that are still active within double # quotes backslashified. Available only if 'unquoted' is specified. # # Available modes: # ---------------- # 'eval' (default) # - escape shell special characters # 'expand' # - the same as 'eval'; but do not quote variable references # 'pretty' # - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might # be used later in func_quote to get output like: 'echo "a b"' instead # of 'echo a\ b'. This is slower than default on some shells. # 'unquoted' # - produce also $func_quote_arg_unquoted_result which does not contain # wrapping double-quotes. # # Examples for 'func_quote_arg pretty,unquoted string': # # string | *_result | *_unquoted_result # ------------+-----------------------+------------------- # " | \" | \" # a b | "a b" | a b # "a b" | "\"a b\"" | \"a b\" # * | "*" | * # z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" # # Examples for 'func_quote_arg pretty,unquoted,expand string': # # string | *_result | *_unquoted_result # --------------+---------------------+-------------------- # z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" func_quote_arg () { _G_quote_expand=false case ,$1, in *,expand,*) _G_quote_expand=: ;; esac case ,$1, in *,pretty,*|*,expand,*|*,unquoted,*) func_quote_portable $_G_quote_expand "$2" func_quote_arg_result=$func_quote_portable_result func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result ;; *) # Faster quote-for-eval for some shells. func_quotefast_eval "$2" func_quote_arg_result=$func_quotefast_eval_result ;; esac } # func_quote MODEs ARGs... # ------------------------ # Quote all ARGs to be evaled later and join them into single command. See # func_quote_arg's description for more info. func_quote () { $debug_cmd _G_func_quote_mode=$1 ; shift func_quote_result= while test 0 -lt $#; do func_quote_arg "$_G_func_quote_mode" "$1" if test -n "$func_quote_result"; then func_append func_quote_result " $func_quote_arg_result" else func_append func_quote_result "$func_quote_arg_result" fi shift done } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_arg pretty,expand "$_G_cmd" eval "func_notquiet $func_quote_arg_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_arg expand,pretty "$_G_cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2010-2019, 2021, 2023-2024 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # # Set a version string for this script. scriptversion=2019-02-19.15; # UTC ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# Copyright'. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug in processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # in the main code. A hook is just a list of function names that can be # run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of hook functions to be called by # FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_propagate_result FUNC_NAME_A FUNC_NAME_B # --------------------------------------------- # If the *_result variable of FUNC_NAME_A _is set_, assign its value to # *_result variable of FUNC_NAME_B. func_propagate_result () { $debug_cmd func_propagate_result_result=: if eval "test \"\${${1}_result+set}\" = set" then eval "${2}_result=\$${1}_result" else func_propagate_result_result=false fi } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It's assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook functions." ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do func_unset "${_G_hook}_result" eval $_G_hook '${1+"$@"}' func_propagate_result $_G_hook func_run_hooks if $func_propagate_result_result; then eval set dummy "$func_run_hooks_result"; shift fi done } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list from your hook function. You may remove # or edit any options that you action, and then pass back the remaining # unprocessed options in '_result', escaped # suitably for 'eval'. # # The '_result' variable is automatically unset # before your hook gets called; for best performance, only set the # *_result variable when necessary (i.e. don't call the 'func_quote' # function unnecessarily because it can be an expensive operation on some # machines). # # Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # No change in '$@' (ignored completely by this hook). Leave # # my_options_prep_result variable intact. # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # args_changed=false # # # Note that, for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: # args_changed=: # ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # args_changed=: # ;; # *) # Make sure the first unrecognised option "$_G_opt" # # is added back to "$@" in case we need it later, # # if $args_changed was set to 'true'. # set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # # # Only call 'func_quote' here if we processed at least one argument. # if $args_changed; then # func_quote eval ${1+"$@"} # my_silent_option_result=$func_quote_result # fi # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # } # func_add_hook func_validate_options my_option_validation # # You'll also need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options_finish [ARG]... # ---------------------------- # Finishing the option parse loop (call 'func_options' hooks ATM). func_options_finish () { $debug_cmd func_run_hooks func_options ${1+"$@"} func_propagate_result func_run_hooks func_options_finish } # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd _G_options_quoted=false for my_func in options_prep parse_options validate_options options_finish do func_unset func_${my_func}_result func_unset func_run_hooks_result eval func_$my_func '${1+"$@"}' func_propagate_result func_$my_func func_options if $func_propagate_result_result; then eval set dummy "$func_options_result"; shift _G_options_quoted=: fi done $_G_options_quoted || { # As we (func_options) are top-level options-parser function and # nobody quoted "$@" for us yet, we need to do it explicitly for # caller. func_quote eval ${1+"$@"} func_options_result=$func_quote_result } } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propagate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} func_propagate_result func_run_hooks func_options_prep } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd _G_parse_options_requote=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} func_propagate_result func_run_hooks func_parse_options if $func_propagate_result_result; then eval set dummy "$func_parse_options_result"; shift # Even though we may have changed "$@", we passed the "$@" array # down into the hook and it quoted it for us (because we are in # this if-branch). No need to quote it again. _G_parse_options_requote=false fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break # We expect that one of the options parsed in this function matches # and thus we remove _G_opt from "$@" and need to re-quote. _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" >&2 $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) if test $# = 0 && func_missing_arg $_G_opt; then _G_parse_options_requote=: break fi case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) _G_parse_options_requote=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift _G_match_parse_options=false break ;; esac if $_G_match_parse_options; then _G_parse_options_requote=: fi done if $_G_parse_options_requote; then # save modified positional parameters for caller func_quote eval ${1+"$@"} func_parse_options_result=$func_quote_result fi } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} func_propagate_result func_run_hooks func_validate_options # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables # after splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} if test "x$func_split_equals_lhs" = "x$1"; then func_split_equals_rhs= fi }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs=" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. # The version message is extracted from the calling file's header # comments, with leading '# ' stripped: # 1. First display the progname and version # 2. Followed by the header comment line matching /^# Written by / # 3. Then a blank line followed by the first following line matching # /^# Copyright / # 4. Immediately followed by any lines between the previous matches, # except lines preceding the intervening completely blank line. # For example, see the header comments of this file. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /^# Written by /!b s|^# ||; p; n :fwd2blnk /./ { n b fwd2blnk } p; n :holdwrnt s|^# || s|^# *$|| /^Copyright /!{ /./H n b holdwrnt } s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| G s|\(\n\)\n*|\1|g p; q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.5.4' # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd year=`date +%Y` cat < This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Originally written by Gordon Matzigkeit, 1996 (See AUTHORS for complete contributor listing) EOF exit $? } # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information --finish use operation '--mode=finish' --mode=MODE use operation mode MODE --no-finish don't update shared library cache --no-quiet, --no-silent print default informational messages --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --reorder-cache=DIRS reorder shared library cache for preferred DIRS --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_reorder_cache=false opt_preserve_dup_deps=false opt_quiet=false opt_finishing=true opt_warning= nonopt= preserve_args= _G_rc_lt_options_prep=: # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; *) _G_rc_lt_options_prep=false ;; esac if $_G_rc_lt_options_prep; then # Pass back the list of options. func_quote eval ${1+"$@"} libtool_options_prep_result=$func_quote_result fi } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd _G_rc_lt_parse_options=false # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_match_lt_parse_options=: _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument '$1' for $_G_opt" exit_cmd=exit ;; esac shift ;; --no-finish) opt_finishing=false func_append preserve_args " $_G_opt" ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --reorder-cache) opt_reorder_cache=true shared_lib_dirs=$1 if test -n "$shared_lib_dirs"; then case $1 in # Must begin with /: /*) ;; # Catch anything else as an error (relative paths) *) func_error "invalid argument '$1' for $_G_opt" func_error "absolute paths are required for $_G_opt" exit_cmd=exit ;; esac fi shift ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"} ; shift _G_match_lt_parse_options=false break ;; esac $_G_match_lt_parse_options && _G_rc_lt_parse_options=: done if $_G_rc_lt_parse_options; then # save modified positional parameters for caller func_quote eval ${1+"$@"} libtool_parse_options_result=$func_quote_result fi } func_add_hook func_parse_options libtool_parse_options # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { if $opt_warning; then $debug_cmd $warning_func ${1+"$@"} fi } # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host_os in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 cygwin* | mingw* | windows* | pw32* | cegcc* | solaris2* | os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote eval ${1+"$@"} libtool_validate_options_result=$func_quote_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, windows, cygwin, or some other w32 environment. Relies on a # correctly configured wine environment available, with the winepath program # in $build's $PATH. Assumes ARG has no leading or trailing path separator # characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep # func_convert_delimited_path PATH ORIG_DELIMITER NEW_DELIMITER # Replaces a delimiter for a given path. func_convert_delimited_path () { converted_path=`$ECHO "$1" | $SED "s#$2#$3#g"` } # end func_convert_delimited_path ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_reorder_shared_lib_cache DIRS # Reorder the shared library cache by unconfiguring previous shared library cache # and configuring preferred search directories before previous search directories. # Previous shared library cache: /usr/lib /usr/local/lib # Preferred search directories: /tmp/testing # Reordered shared library cache: /tmp/testing /usr/lib /usr/local/lib func_reorder_shared_lib_cache () { $debug_cmd case $host_os in openbsd*) get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` func_convert_delimited_path "$get_search_directories" ':' '\ ' save_search_directories=$converted_path func_convert_delimited_path "$1" ':' '\ ' # Ensure directories exist for dir in $converted_path; do # Ensure each directory is an absolute path case $dir in /*) ;; *) func_error "Directory '$dir' is not an absolute path" exit $EXIT_FAILURE ;; esac # Ensure no trailing slashes func_stripname '' '/' "$dir" dir=$func_stripname_result if test -d "$dir"; then if test -n "$preferred_search_directories"; then preferred_search_directories="$preferred_search_directories $dir" else preferred_search_directories=$dir fi else func_error "Directory '$dir' does not exist" exit $EXIT_FAILURE fi done PATH="$PATH:/sbin" ldconfig -U $save_search_directories PATH="$PATH:/sbin" ldconfig -m $preferred_search_directories $save_search_directories get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` func_convert_delimited_path "$get_search_directories" ':' '\ ' reordered_search_directories=$converted_path $ECHO "Original: $save_search_directories" $ECHO "Reordered: $reordered_search_directories" exit $EXIT_SUCCESS ;; *) func_error "--reorder-cache is not supported for host_os=$host_os." exit $EXIT_FAILURE ;; esac } # end func_reorder_shared_lib_cache # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_arg pretty "$libobj" test "X$libobj" != "X$func_quote_arg_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | windows* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_arg pretty "$srcfile" qsrcfile=$func_quote_arg_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG -Xcompiler FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wa,FLAG -Xassembler FLAG pass linker-specific FLAG directly to the assembler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # If option '--reorder-cache', reorder the shared library cache and exit. if $opt_reorder_cache; then func_reorder_shared_lib_cache $shared_lib_dirs fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs" && $opt_finishing; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done if test "false" = "$opt_finishing"; then echo echo "NOTE: finish_cmds were not executed during testing, so you must" echo "manually run ldconfig to add a given test directory, LIBDIR, to" echo "the search path for generated executables." fi echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_arg pretty "$nonopt" install_prog="$func_quote_arg_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_arg pretty "$arg" func_append install_prog "$func_quote_arg_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_arg pretty "$arg" func_append install_prog " $func_quote_arg_result" if test -n "$arg2"; then func_quote_arg pretty "$arg2" fi func_append install_shared_prog " $func_quote_arg_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_arg pretty "$install_override_mode" func_append install_shared_prog " -m $func_quote_arg_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Strip any trailing slash from the destination. func_stripname '' '/' "$libdir" destlibdir=$func_stripname_result func_stripname '' '/' "$destdir" s_destdir=$func_stripname_result # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw* | *windows*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_arg expand,pretty "$relink_command" eval "func_echo $func_quote_arg_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 case $host in i[3456]86-*-mingw32*) eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" ;; *) eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/__nm_//' >> '$nlist'" ;; esac } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw/windows # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw/windows-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" func_quote_arg pretty "$ECHO" qECHO=$func_quote_arg_result $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=$qECHO fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw* | *-*-windows* | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw/windows when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #if defined _WIN32 && !defined __GNUC__ # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ _CRTIMP int __cdecl _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw* | windows*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= compile_rpath_tail= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= temp_rpath_tail= thread_safe=no vinfo= vinfo_number=no weak_libs= rpath_arg= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_arg pretty,unquoted "$arg" qarg=$func_quote_arg_unquoted_result func_append libtool_args " $func_quote_arg_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "argument to -rpath is not absolute: $arg" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xassembler) func_append compiler_flags " -Xassembler $qarg" prev= func_append compile_command " -Xassembler $qarg" func_append finalize_command " -Xassembler $qarg" continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. # -q / * Where L, a, and b are in string input format for floats * consisting of: * a. an optional sign * b. a string of numbers possibly containing a decimal point, * c. an optional exponent field containing an 'E' or 'e' * followed by a possibly signed integer string. * * RETURNS * 0 if failed, non-zero otherwise. */ { int n; char *pchar; if ((pchar = strchr(spec, ':')) == NULL) { return(XcmsFailure); } n = (int)(pchar - spec); /* * Check for proper prefix. */ if (strncmp(spec, _XcmsCIELab_prefix, (size_t)n) != 0) { return(XcmsFailure); } /* * Attempt to parse the value portion. */ if (sscanf(spec + n + 1, "%lf/%lf/%lf", &pColor->spec.CIELab.L_star, &pColor->spec.CIELab.a_star, &pColor->spec.CIELab.b_star) != 3) { char *s; /* Maybe failed due to locale */ int f; if ((s = strdup(spec))) { for (f = 0; s[f]; ++f) if (s[f] == '.') s[f] = ','; else if (s[f] == ',') s[f] = '.'; if (sscanf(s + n + 1, "%lf/%lf/%lf", &pColor->spec.CIELab.L_star, &pColor->spec.CIELab.a_star, &pColor->spec.CIELab.b_star) != 3) { free(s); return(XcmsFailure); } free(s); } else return(XcmsFailure); } pColor->format = XcmsCIELabFormat; pColor->pixel = 0; return(XcmsCIELab_ValidSpec(pColor)); } /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELab_ValidSpec * * SYNOPSIS */ static Status XcmsCIELab_ValidSpec( XcmsColor *pColor) /* * DESCRIPTION * Checks if color specification valid for CIE L*a*b*. * * RETURNS * XcmsFailure if invalid, * XcmsSuccess if valid. * */ { if (pColor->format != XcmsCIELabFormat || (pColor->spec.CIELab.L_star < 0.0 - XMY_DBL_EPSILON) || (pColor->spec.CIELab.L_star > 100.0 + XMY_DBL_EPSILON)) { return(XcmsFailure); } return(XcmsSuccess); } /* * NAME * XcmsCIELabToCIEXYZ - convert CIELab to CIEXYZ * * SYNOPSIS */ Status XcmsCIELabToCIEXYZ( XcmsCCC ccc, XcmsColor *pLab_WhitePt, XcmsColor *pColors_in_out, unsigned int nColors) /* * DESCRIPTION * Converts color specifications in an array of XcmsColor * structures from CIELab format to CIEXYZ format. * * WARNING: This routine assumes that Yn = 1.0; * * RETURNS * XcmsFailure if failed, * XcmsSuccess if succeeded. * */ { XcmsCIEXYZ XYZ_return; XcmsFloat tmpFloat, tmpL; XcmsColor whitePt; unsigned int i; XcmsColor *pColor = pColors_in_out; /* * Check arguments */ if (pLab_WhitePt == NULL || pColors_in_out == NULL) { return(XcmsFailure); } /* * Make sure white point is in CIEXYZ form, if not, convert it. */ if (pLab_WhitePt->format != XcmsCIEXYZFormat) { /* Make a copy of the white point because we're going to modify it */ memcpy((char *)&whitePt, (char *)pLab_WhitePt, sizeof(XcmsColor)); if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1, XcmsCIEXYZFormat)) { return(XcmsFailure); } pLab_WhitePt = &whitePt; } /* * Make sure it is a white point, i.e., Y == 1.0 */ if (pLab_WhitePt->spec.CIEXYZ.Y != 1.0) { return (0); } /* * Now convert each XcmsColor structure to CIEXYZ form */ for (i = 0; i < nColors; i++, pColor++) { /* Make sure original format is CIELab */ if (!XcmsCIELab_ValidSpec(pColor)) { return(XcmsFailure); } /* Calculate Y: assume that Yn = 1.0 */ tmpL = (pColor->spec.CIELab.L_star + 16.0) / 116.0; XYZ_return.Y = tmpL * tmpL * tmpL; if (XYZ_return.Y < 0.008856) { /* Calculate Y: assume that Yn = 1.0 */ tmpL = pColor->spec.CIELab.L_star / 9.03292; /* Calculate X */ XYZ_return.X = pLab_WhitePt->spec.CIEXYZ.X * ((pColor->spec.CIELab.a_star / 3893.5) + tmpL); /* Calculate Y */ XYZ_return.Y = tmpL; /* Calculate Z */ XYZ_return.Z = pLab_WhitePt->spec.CIEXYZ.Z * (tmpL - (pColor->spec.CIELab.b_star / 1557.4)); } else { /* Calculate X */ tmpFloat = tmpL + (pColor->spec.CIELab.a_star / 5.0); XYZ_return.X = pLab_WhitePt->spec.CIEXYZ.X * tmpFloat * tmpFloat * tmpFloat; /* Calculate Z */ tmpFloat = tmpL - (pColor->spec.CIELab.b_star / 2.0); XYZ_return.Z = pLab_WhitePt->spec.CIEXYZ.Z * tmpFloat * tmpFloat * tmpFloat; } memcpy((char *)&pColor->spec.CIEXYZ, (char *)&XYZ_return, sizeof(XcmsCIEXYZ)); pColor->format = XcmsCIEXYZFormat; } return (1); } /* * NAME * XcmsCIEXYZToCIELab - convert CIEXYZ to CIELab * * SYNOPSIS */ Status XcmsCIEXYZToCIELab( XcmsCCC ccc, XcmsColor *pLab_WhitePt, XcmsColor *pColors_in_out, unsigned int nColors) /* * DESCRIPTION * Converts color specifications in an array of XcmsColor * structures from CIEXYZ format to CIELab format. * * WARNING: This routine assumes that Yn = 1.0; * * RETURNS * XcmsFailure if failed, * XcmsSuccess if succeeded. * */ { XcmsCIELab Lab_return; XcmsFloat fX_Xn, fY_Yn, fZ_Zn; XcmsColor whitePt; unsigned int i; XcmsColor *pColor = pColors_in_out; /* * Check arguments */ if (pLab_WhitePt == NULL || pColors_in_out == NULL) { return(XcmsFailure); } /* * Make sure white point is in CIEXYZ form, if not, convert it. */ if (pLab_WhitePt->format != XcmsCIEXYZFormat) { /* Make a copy of the white point because we're going to modify it */ memcpy((char *)&whitePt, (char *)pLab_WhitePt, sizeof(XcmsColor)); if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1, XcmsCIEXYZFormat)) { return(XcmsFailure); } pLab_WhitePt = &whitePt; } /* * Make sure it is a white point, i.e., Y == 1.0 */ if (pLab_WhitePt->spec.CIEXYZ.Y != 1.0) { return(XcmsFailure); } /* * Now convert each XcmsColor structure to CIEXYZ form */ for (i = 0; i < nColors; i++, pColor++) { /* Make sure original format is CIELab */ if (!_XcmsCIEXYZ_ValidSpec(pColor)) { return(XcmsFailure); } /* Calculate L*: assume Yn = 1.0 */ if (pColor->spec.CIEXYZ.Y < 0.008856) { fY_Yn = (0.07787 * pColor->spec.CIEXYZ.Y) + DIV16BY116; /* note fY_Yn used to compute Lab_return.a below */ Lab_return.L_star = 116.0 * (fY_Yn - DIV16BY116); } else { fY_Yn = (XcmsFloat)XCMS_CUBEROOT(pColor->spec.CIEXYZ.Y); /* note fY_Yn used to compute Lab_return.a_star below */ Lab_return.L_star = (116.0 * fY_Yn) - 16.0; } /* Calculate f(X/Xn) */ if ((fX_Xn = pColor->spec.CIEXYZ.X / pLab_WhitePt->spec.CIEXYZ.X) < 0.008856) { fX_Xn = (0.07787 * fX_Xn) + DIV16BY116; } else { fX_Xn = (XcmsFloat) XCMS_CUBEROOT(fX_Xn); } /* Calculate f(Z/Zn) */ if ((fZ_Zn = pColor->spec.CIEXYZ.Z / pLab_WhitePt->spec.CIEXYZ.Z) < 0.008856) { fZ_Zn = (0.07787 * fZ_Zn) + DIV16BY116; } else { fZ_Zn = (XcmsFloat) XCMS_CUBEROOT(fZ_Zn); } Lab_return.a_star = 5.0 * (fX_Xn - fY_Yn); Lab_return.b_star = 2.0 * (fY_Yn - fZ_Zn); memcpy((char *)&pColor->spec.CIELab, (char *)&Lab_return, sizeof(XcmsCIELab)); pColor->format = XcmsCIELabFormat; } return(XcmsSuccess); } libX11-1.8.12/src/xcms/LuvMnL.c0000644014310600000120000001513414763154126011413 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * CIELuvMnL.c * * DESCRIPTION * Source for the XcmsCIELuvQueryMinL() gamut boundary * querying routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include #include "Cv.h" /* * DEFINES */ #define MAXBISECTCOUNT 100 #define EPS (XcmsFloat)0.001 #define START_L_STAR (XcmsFloat)40.0 /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELuvQueryMinL - Compute max Lstar for a hue and chroma * * SYNOPSIS */ Status XcmsCIELuvQueryMinL( XcmsCCC ccc, XcmsFloat hue_angle, /* hue angle in degrees */ XcmsFloat chroma, XcmsColor *pColor_return) /* * DESCRIPTION * Return the maximum Lstar for a specified hue_angle and chroma. * * ASSUMPTIONS * This routine assumes that the white point associated with * the color specification is the Screen White Point. The * Screen White Point will also be associated with the * returned color specification. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded with no modifications * */ { XcmsCCCRec myCCC; XcmsColor max_lc, tmp, prev; XcmsFloat max_chroma, tmp_chroma; XcmsFloat hue, nT, nChroma, lastChroma, prevChroma; XcmsFloat rFactor; XcmsRGBi rgb_saved; int nCount, nMaxCount; /* * Check Arguments */ if (ccc == NULL || pColor_return == NULL) { return(XcmsFailure); } /* setup the CCC to use for the conversions. */ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat; myCCC.gamutCompProc = (XcmsCompressionProc) NULL; while (hue_angle < 0.0) { hue_angle += 360.0; } while (hue_angle >= 360.0) { hue_angle -= 360.0; } hue = radians(hue_angle); tmp.spec.CIELuv.L_star = START_L_STAR; tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, chroma); tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, chroma); tmp.pixel = pColor_return->pixel; tmp.format = XcmsCIELuvFormat; /* Step 1: Obtain the maximum L_star and chroma for this hue. */ if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved) == XcmsFailure) { return(XcmsFailure); } max_chroma = XCMS_CIELUV_PMETRIC_CHROMA(max_lc.spec.CIELuv.u_star, max_lc.spec.CIELuv.v_star); if (max_chroma <= chroma) { /* * If the chroma is greater than the chroma for the * maximum L/chroma point then the L_star is the * the L_star for the maximum L_star/chroma point. * This is an error but I return the best approximation I can. * Thus the inconsistency. */ memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor)); return(XcmsSuccess); } /* * If the chroma is equal to the chroma for the * maximum L_star/chroma point then the L_star is the * the L_star for the maximum L* and chroma point. */ /* if (max_chroma == chroma) { * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor)); * return(XcmsSuccess); * } */ /* must do a bisection here to compute the maximum L* */ /* save the structure input so that any elements that */ /* are not touched are recopied later in the routine. */ nChroma = chroma; tmp_chroma = max_chroma; lastChroma = -1.0; nMaxCount = MAXBISECTCOUNT; rFactor = 1.0; for (nCount = 0; nCount < nMaxCount; nCount++) { prevChroma = lastChroma; lastChroma = tmp_chroma; nT = (nChroma - max_chroma) / max_chroma * rFactor; memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor)); tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT); tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT); tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT); tmp.format = XcmsRGBiFormat; /* convert from RGB to CIELuv */ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } /* Now check the return against what is expected */ tmp_chroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star, tmp.spec.CIELuv.v_star); if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) { /* Found It! */ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor)); return(XcmsSuccess); } nChroma += chroma - tmp_chroma; if (nChroma > max_chroma) { nChroma = max_chroma; rFactor *= 0.5; /* selective relaxation employed */ } else if (nChroma < 0.0) { if (XCMS_FABS(lastChroma - chroma) < XCMS_FABS(tmp_chroma - chroma)) { memcpy ((char *)pColor_return, (char *)&prev, sizeof(XcmsColor)); } else { memcpy ((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); } return(XcmsSuccess); } else if (tmp_chroma <= prevChroma + EPS && tmp_chroma >= prevChroma - EPS) { rFactor *= 0.5; /* selective relaxation employed */ } } if (nCount >= nMaxCount) { if (XCMS_FABS(lastChroma - chroma) < XCMS_FABS(tmp_chroma - chroma)) { memcpy ((char *)pColor_return, (char *)&prev, sizeof(XcmsColor)); } else { memcpy ((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); } } memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor)); return(XcmsSuccess); } libX11-1.8.12/src/xcms/LuvMxL.c0000644014310600000120000001510614763154126011424 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * CIELuvMxL.c * * DESCRIPTION * Source for the XcmsCIELuvQueryMaxL() gamut boundary * querying routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include #include "Cv.h" /* * DEFINES */ #define MAXBISECTCOUNT 100 #define EPS (XcmsFloat)0.001 #define START_L_STAR (XcmsFloat)40.0 /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELuvQueryMaxL - Compute max Lstar for a hue and chroma * * SYNOPSIS */ Status XcmsCIELuvQueryMaxL( XcmsCCC ccc, XcmsFloat hue_angle, /* hue angle in degrees */ XcmsFloat chroma, XcmsColor *pColor_return) /* * DESCRIPTION * Return the maximum Lstar for a specified hue_angle and chroma. * * ASSUMPTIONS * This routine assumes that the white point associated with * the color specification is the Screen White Point. The * Screen White Point will also be associated with the * returned color specification. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded with no modifications * */ { XcmsCCCRec myCCC; XcmsColor max_lc, tmp, prev; XcmsFloat max_chroma, tmp_chroma; XcmsFloat hue, nT, nChroma, lastChroma, prevChroma; XcmsFloat rFactor; XcmsRGBi rgb_saved; int nCount, nMaxCount; /* * Check Arguments */ if (ccc == NULL || pColor_return == NULL) { return(XcmsFailure); } /* setup the CCC to use for the conversions. */ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat; myCCC.gamutCompProc = (XcmsCompressionProc) NULL; while (hue_angle < 0.0) { hue_angle += 360.0; } while (hue_angle >= 360.0) { hue_angle -= 360.0; } hue = radians(hue_angle); tmp.spec.CIELuv.L_star = START_L_STAR; tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, chroma); tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, chroma); tmp.pixel = pColor_return->pixel; tmp.format = XcmsCIELuvFormat; /* Step 1: Obtain the maximum L_star and chroma for this hue. */ if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved) == XcmsFailure) { return(XcmsFailure); } max_chroma = XCMS_CIELUV_PMETRIC_CHROMA(max_lc.spec.CIELuv.u_star, max_lc.spec.CIELuv.v_star); if (max_chroma <= chroma) { /* * If the chroma is greater than the chroma for the * maximum L/chroma point then the L_star is the * the L_star for the maximum L_star/chroma point. * This is an error but I return the best approximation I can. * Thus the inconsistency. */ memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor)); return(XcmsSuccess); } /* * If the chroma is equal to the chroma for the * maximum L_star/chroma point then the L_star is the * the L_star for the maximum L* and chroma point. */ /* if (max_chroma == chroma) { * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor)); * return(XcmsSuccess); * } */ /* must do a bisection here to compute the maximum L* */ /* save the structure input so that any elements that */ /* are not touched are recopied later in the routine. */ nChroma = chroma; tmp_chroma = max_chroma; lastChroma = -1.0; nMaxCount = MAXBISECTCOUNT; rFactor = 1.0; for (nCount = 0; nCount < nMaxCount; nCount++) { prevChroma = lastChroma; lastChroma = tmp_chroma; nT = (1.0 - (nChroma / max_chroma)) * rFactor; memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor)); tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT; tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT; tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT; tmp.format = XcmsRGBiFormat; /* convert from RGB to CIELuv */ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } /* Now check the return against what is expected */ tmp_chroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star, tmp.spec.CIELuv.v_star); if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) { /* Found It! */ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor)); return(XcmsSuccess); } nChroma += chroma - tmp_chroma; if (nChroma > max_chroma) { nChroma = max_chroma; rFactor *= 0.5; /* selective relaxation employed */ } else if (nChroma < 0.0) { if (XCMS_FABS(lastChroma - chroma) < XCMS_FABS(tmp_chroma - chroma)) { memcpy ((char *)pColor_return, (char *)&prev, sizeof(XcmsColor)); } else { memcpy ((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); } return(XcmsSuccess); } else if (tmp_chroma <= prevChroma + EPS && tmp_chroma >= prevChroma - EPS) { rFactor *= 0.5; /* selective relaxation employed */ } } if (nCount >= nMaxCount) { if (XCMS_FABS(lastChroma - chroma) < XCMS_FABS(tmp_chroma - chroma)) { memcpy ((char *)pColor_return, (char *)&prev, sizeof(XcmsColor)); } else { memcpy ((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); } } memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor)); return(XcmsSuccess); } libX11-1.8.12/src/xcms/HVCGcVC.c0000644014310600000120000002120714763154126011357 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. TekColor is a * trademark of Tektronix, Inc. The term "TekHVC" designates a particular * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent * foreign patents pending). Permission is hereby granted to use, copy, * modify, sell, and otherwise distribute this software and its * documentation for any purpose and without fee, provided that: * * 1. This copyright, permission, and disclaimer notice is reproduced in * all copies of this software and any modification thereof and in * supporting documentation; * 2. Any color-handling application which displays TekHVC color * cooordinates identifies these as TekHVC color coordinates in any * interface that displays these coordinates and in any associated * documentation; * 3. The term "TekHVC" is always used, and is only used, in association * with the mathematical derivations of the TekHVC Color Space, * including those provided in this file and any equivalent pathways and * mathematical derivations, regardless of digital (e.g., floating point * or integer) representation. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * TekHVCGcVC.c * * DESCRIPTION * Source for XcmsTekHVCClipVC() gamut * compression function. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include #include "Cv.h" /* * INTERNALS * Internal defines that need NOT be exported to any package or * program using this package. */ #define MAXBISECTCOUNT 100 /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsTekHVCClipVC - Return the closest value and chroma * * SYNOPSIS */ /* ARGSUSED */ Status XcmsTekHVCClipVC ( XcmsCCC ccc, XcmsColor *pColors_in_out, unsigned int nColors, unsigned int i, Bool *pCompressed) /* * DESCRIPTION * This routine will find the closest value and chroma * for a specific hue. The color input is converted to * HVC format and returned as CIE XYZ format. * * Since this routine works with the value within * pColor_in_out intermediate results may be returned * even though it may be invalid. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { Status retval; XcmsCCCRec myCCC; XcmsColor *pColor; XcmsColor hvc_max; XcmsRGBi rgb_max; int nCount, nMaxCount, nI, nILast; XcmsFloat Chroma, Value, bestChroma, bestValue, nT, saveDist, tmpDist; /* * Insure TekHVC installed */ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) { return(XcmsFailure); } /* Use my own CCC */ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white pt */ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */ /* * Color specification passed as input can be assumed to: * 1. Be in XcmsCIEXYZFormat * 2. Already be white point adjusted for the Screen White Point. * This means that the white point now associated with this * color spec is the Screen White Point (even if the * ccc->clientWhitePt differs). */ pColor = pColors_in_out + i; if (ccc->visual->class < StaticColor && FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) { /* * GRAY ! */ _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat); pColor->spec.TekHVC.H = pColor->spec.TekHVC.C = 0.0; _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat); if (pCompressed) { *(pCompressed + i) = True; } return(XcmsSuccess); } else { /* Convert from CIEXYZ to TekHVC format */ if (_XcmsDIConvertColors(&myCCC, pColor, &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat) == XcmsFailure) { return(XcmsFailure); } if (!_XcmsTekHVC_CheckModify(pColor)) { return (XcmsFailure); } /* Step 1: compute the maximum value and chroma for this hue. */ /* This copy may be overkill but it preserves the pixel etc. */ memcpy((char *)&hvc_max, (char *)pColor, sizeof(XcmsColor)); if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, hvc_max.spec.TekHVC.H, &hvc_max, &rgb_max) == XcmsFailure) { return (XcmsFailure); } /* Now check and return the appropriate value */ if (pColor->spec.TekHVC.V == hvc_max.spec.TekHVC.V) { /* When the value input is equal to the maximum value */ /* merely return the chroma for that value. */ pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C; retval = _XcmsDIConvertColors(&myCCC, pColor, &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat); } if (pColor->spec.TekHVC.V < hvc_max.spec.TekHVC.V) { /* return the intersection of the perpendicular line through */ /* the value and chroma given and the line from 0,0 and hvc_max. */ Chroma = pColor->spec.TekHVC.C; Value = pColor->spec.TekHVC.V; pColor->spec.TekHVC.C = (Value + (hvc_max.spec.TekHVC.C / hvc_max.spec.TekHVC.V * Chroma)) / ((hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C) + (hvc_max.spec.TekHVC.C / hvc_max.spec.TekHVC.V)); if (pColor->spec.TekHVC.C >= hvc_max.spec.TekHVC.C) { pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C; pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V; } else { pColor->spec.TekHVC.V = pColor->spec.TekHVC.C * hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C; } retval = _XcmsDIConvertColors(&myCCC, pColor, &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat); if (retval != XcmsFailure && pCompressed != NULL) { *(pCompressed + i) = True; } return (retval); } /* return the closest point on the upper part of the hue leaf. */ /* must do a bisection here to compute the delta e. */ nMaxCount = MAXBISECTCOUNT; nI = nMaxCount / 2; bestValue = Value = pColor->spec.TekHVC.V; bestChroma = Chroma = pColor->spec.TekHVC.C; saveDist = (XcmsFloat) XCMS_SQRT ((double) (((Chroma - hvc_max.spec.TekHVC.C) * (Chroma - hvc_max.spec.TekHVC.C)) + ((Value - hvc_max.spec.TekHVC.V) * (Value - hvc_max.spec.TekHVC.V)))); for (nCount = 0; nCount < nMaxCount; nCount++) { nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount; pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT; pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT; pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT; pColor->format = XcmsRGBiFormat; /* Convert from RGBi to HVC */ if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor, &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat, (Bool *) NULL) == XcmsFailure) { return (XcmsFailure); } if (!_XcmsTekHVC_CheckModify(pColor)) { return (XcmsFailure); } tmpDist = (XcmsFloat) XCMS_SQRT ((double) (((Chroma - pColor->spec.TekHVC.C) * (Chroma - pColor->spec.TekHVC.C)) + ((Value - pColor->spec.TekHVC.V) * (Value - pColor->spec.TekHVC.V)))); nILast = nI; if (tmpDist > saveDist) { nI /= 2; } else { nI = (nMaxCount + nI) / 2; saveDist = tmpDist; bestValue = pColor->spec.TekHVC.V; bestChroma = pColor->spec.TekHVC.C; } if (nI == nILast || nI == 0) { break; } } if (bestChroma >= hvc_max.spec.TekHVC.C) { pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C; pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V; } else { pColor->spec.TekHVC.C = bestChroma; pColor->spec.TekHVC.V = bestValue; } if (!_XcmsTekHVC_CheckModify(pColor)) { return (XcmsFailure); } retval = _XcmsDIConvertColors(&myCCC, pColor, &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat); if (retval != XcmsFailure && pCompressed != NULL) { *(pCompressed + i) = True; } return(retval); } } libX11-1.8.12/src/xcms/LabGcL.c0000644014310600000120000001320514763154126011317 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * CIELabGcL.c * * DESCRIPTION * Source for XcmsCIELabClipL() gamut compression routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELabClipL - Return the closest L* * * SYNOPSIS */ /* ARGSUSED */ Status XcmsCIELabClipL ( XcmsCCC ccc, XcmsColor *pColors_in_out, unsigned int nColors, unsigned int i, Bool *pCompressed) /* * DESCRIPTION * Return the closest L* for a specific hue and chroma. * This routine takes any color as input and outputs * a CIE XYZ color. * * Since this routine works with the L* within * pColor_in_out intermediate results may be returned * even though it may be invalid. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { XcmsCCCRec myCCC; XcmsColor *pColor; XcmsColor Lab_max; XcmsFloat hue, chroma, maxChroma; Status retval; /* Use my own CCC */ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */ /* * Color specification passed as input can be assumed to: * 1. Be in XcmsCIEXYZFormat * 2. Already be white point adjusted for the Screen White Point. * This means that the white point now associated with this * color spec is the Screen White Point (even if the * ccc->clientWhitePt differs). */ pColor = pColors_in_out + i; if (ccc->visual->class < StaticColor) { /* * GRAY ! */ return(XcmsFailure); } else { /* Convert from CIEXYZ to CIE L*u*v* format */ if (_XcmsDIConvertColors(&myCCC, pColor, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat) == XcmsFailure) { return(XcmsFailure); } hue = XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star, pColor->spec.CIELab.b_star); chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star, pColor->spec.CIELab.b_star); /* Step 1: compute the maximum L* and chroma for this hue. */ /* This copy may be overkill but it preserves the pixel etc. */ memcpy((char *)&Lab_max, (char *)pColor, sizeof(XcmsColor)); if (_XcmsCIELabQueryMaxLCRGB (&myCCC, hue, &Lab_max, (XcmsRGBi *)NULL) == XcmsFailure) { return (XcmsFailure); } maxChroma = XCMS_CIELAB_PMETRIC_CHROMA(Lab_max.spec.CIELab.a_star, Lab_max.spec.CIELab.b_star); /* Now check and return the appropriate L* */ if (chroma == maxChroma) { /* When the chroma input is equal to the maximum chroma */ /* merely return the L* for that chroma. */ memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor)); retval = _XcmsDIConvertColors(&myCCC, pColor, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat); } else if (chroma > maxChroma) { /* When the chroma input is greater than the maximum chroma */ /* merely return the L* and chroma for the given hue. */ memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor)); return (XcmsFailure); } else if (pColor->spec.CIELab.L_star < Lab_max.spec.CIELab.L_star) { /* Find the minimum lightness for the given chroma. */ if (pColor->format != XcmsCIELabFormat) { if (_XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat) == XcmsFailure) { return(XcmsFailure); } } if (XcmsCIELabQueryMinL(&myCCC, degrees(hue), chroma, pColor) == XcmsFailure) { return (XcmsFailure); } retval = _XcmsDIConvertColors(&myCCC, pColor, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat); } else { /* Find the maximum lightness for the given chroma. */ if (pColor->format != XcmsCIELabFormat) { if (_XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat) == XcmsFailure) { return(XcmsFailure); } } if (XcmsCIELabQueryMaxL(&myCCC, degrees(hue), chroma, pColor) == XcmsFailure) { return (XcmsFailure); } retval = _XcmsDIConvertColors(&myCCC, pColor, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat); } if (retval != XcmsFailure && pCompressed != NULL) { *(pCompressed + i) = True; } return(retval); } } libX11-1.8.12/src/xcms/LabMxLC.c0000644014310600000120000001450114763154126011455 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * * NAME * CIELabMxVC.c * * DESCRIPTION * Source for the XcmsCIELabQueryMaxLC() gamut boundary * querying routine. * * DOCUMENTATION * "TekColor Color Management System, System Implementor's Manual" * and * Fred W. Billmeyer & Max Saltzman, "Principles of Color * Technology", John Wily & Sons, Inc, 1981. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /* * DEFINES */ #define MIN(x,y) ((x) > (y) ? (y) : (x)) #define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x)) #define MAX(x,y) ((x) > (y) ? (x) : (y)) #define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z)))) #define START_LSTAR (XcmsFloat)40.0 #define START_CHROMA (XcmsFloat)3.6 /************************************************************************ * * * API PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * _XcmsCIELabQueryMaxLCRGB - Compute maximum L* and chroma. * * SYNOPSIS */ Status _XcmsCIELabQueryMaxLCRGB( XcmsCCC ccc, XcmsFloat hue, /* hue in radians */ XcmsColor *pColor_return, XcmsRGBi *pRGB_return) /* * DESCRIPTION * Return the maximum psychometric chroma for a specified * hue, and the corresponding L*. This is computed * by a binary search of all possible chromas. An assumption * is made that there are no local maxima. Use the unrounded * Max psychometric chroma because the difference check can be * small. * * NOTE: No local CCC is used because this is a private * routine and all routines that call it are expected * to behave properly, i.e. send a local CCC with * no white adjust function and no gamut compression * function. * * This routine only accepts hue in radians as input and outputs * Lab and RGBi. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { XcmsFloat nSmall, nLarge; XcmsColor tmp; tmp.format = XcmsCIELabFormat; /* Use some unreachable color on the given hue */ tmp.spec.CIELab.L_star = START_LSTAR; tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, START_CHROMA); tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, START_CHROMA); /* * Convert from Lab to RGB * * Note that the CIEXYZ to RGBi conversion routine must stuff the * out of bounds RGBi values in tmp when the ccc->gamutCompProc * is NULL. */ if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp, ScreenWhitePointOfCCC(ccc), (unsigned int)1, XcmsRGBiFormat, (Bool *) NULL) == XcmsFailure) && tmp.format != XcmsRGBiFormat) { return (XcmsFailure); } /* Now pick the smallest RGB */ nSmall = MIN3(tmp.spec.RGBi.red, tmp.spec.RGBi.green, tmp.spec.RGBi.blue); /* Make the smallest RGB equal to zero */ tmp.spec.RGBi.red -= nSmall; tmp.spec.RGBi.green -= nSmall; tmp.spec.RGBi.blue -= nSmall; /* Now pick the largest RGB */ nLarge = MAX3(tmp.spec.RGBi.red, tmp.spec.RGBi.green, tmp.spec.RGBi.blue); /* Scale the RGB values based on the largest one */ tmp.spec.RGBi.red /= nLarge; tmp.spec.RGBi.green /= nLarge; tmp.spec.RGBi.blue /= nLarge; tmp.format = XcmsRGBiFormat; /* If the calling routine wants RGB value give them the ones used. */ if (pRGB_return) { pRGB_return->red = tmp.spec.RGBi.red; pRGB_return->green = tmp.spec.RGBi.green; pRGB_return->blue = tmp.spec.RGBi.blue; } /* Convert from RGBi to Lab */ if (_XcmsConvertColorsWithWhitePt(ccc, &tmp, ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat, (Bool *) NULL) == XcmsFailure) { return (XcmsFailure); } memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); return (XcmsSuccess); } /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELabQueryMaxLC - Compute maximum L* and chroma. * * SYNOPSIS */ Status XcmsCIELabQueryMaxLC ( XcmsCCC ccc, XcmsFloat hue_angle, /* hue_angle in degrees */ XcmsColor *pColor_return) /* * DESCRIPTION * Return the point of maximum chroma for the specified * hue_angle. * * ASSUMPTIONS * This routine assumes that the white point associated with * the color specification is the Screen White Point. The * Screen White Point will also be associated with the * returned color specification. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { XcmsCCCRec myCCC; /* * Check Arguments */ if (ccc == NULL || pColor_return == NULL) { return(XcmsFailure); } /* Use my own CCC */ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat; myCCC.gamutCompProc = (XcmsCompressionProc)NULL; while (hue_angle < 0.0) { hue_angle += 360.0; } while (hue_angle >= 360.0) { hue_angle -= 360.0; } return(_XcmsCIELabQueryMaxLCRGB (&myCCC, radians(hue_angle), pColor_return, (XcmsRGBi *)NULL)); } libX11-1.8.12/src/xcms/LuvGcLC.c0000644014310600000120000001650614763154126011501 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * CIELuvGcLC.c * * DESCRIPTION * Source for XcmsCIELuvClipLuv() gamut * compression function. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include #include "Cv.h" /* * INTERNALS * Internal defines that need NOT be exported to any package or * program using this package. */ #define MAXBISECTCOUNT 100 /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELuvClipLuv - Return the closest L* and chroma * * SYNOPSIS */ /* ARGSUSED */ Status XcmsCIELuvClipLuv ( XcmsCCC ccc, XcmsColor *pColors_in_out, unsigned int nColors, unsigned int i, Bool *pCompressed) /* * DESCRIPTION * This routine will find the closest L* and chroma * for a specific hue. The color input is converted to * CIE L*u*v* format and returned as CIE XYZ format. * * Since this routine works with the L* within * pColor_in_out intermediate results may be returned * even though it may be invalid. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { Status retval; XcmsCCCRec myCCC; XcmsColor *pColor; XcmsColor Luv_max; XcmsFloat hue, chroma, maxChroma; XcmsFloat Chroma, bestChroma, Lstar, maxLstar, saveLstar; XcmsFloat bestLstar, bestustar, bestvstar; XcmsFloat nT, saveDist, tmpDist; XcmsRGBi rgb_max; int nCount, nMaxCount, nI, nILast; /* Use my own CCC */ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white */ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */ /* * Color specification passed as input can be assumed to: * 1. Be in XcmsCIEXYZFormat * 2. Already be white point adjusted for the Screen White Point. * This means that the white point now associated with this * color spec is the Screen White Point (even if the * ccc->clientWhitePt differs). */ pColor = pColors_in_out + i; if (ccc->visual->class < StaticColor) { /* * GRAY ! */ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat); _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc), 1, XcmsCIEXYZFormat); if (pCompressed) { *(pCompressed + i) = True; } return(XcmsSuccess); } /* Convert from CIEXYZ to CIELuv format */ if (_XcmsDIConvertColors(&myCCC, pColor, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat) == XcmsFailure) { return(XcmsFailure); } /* Step 1: compute the maximum L* and chroma for this hue. */ /* This copy may be overkill but it preserves the pixel etc. */ saveLstar = pColor->spec.CIELuv.L_star; hue = XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star, pColor->spec.CIELuv.v_star); chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star, pColor->spec.CIELuv.v_star); memcpy((char *)&Luv_max, (char *)pColor, sizeof(XcmsColor)); if (_XcmsCIELuvQueryMaxLCRGB (&myCCC, hue, &Luv_max, &rgb_max) == XcmsFailure) { return (XcmsFailure); } maxLstar = Luv_max.spec.CIELuv.L_star; /* Now check and return the appropriate L* */ if (saveLstar == maxLstar) { /* When the L* input is equal to the maximum L* */ /* merely return the maximum Luv point. */ memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor)); retval = _XcmsDIConvertColors(&myCCC, pColor, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat); } else { /* return the closest point on the hue leaf. */ /* must do a bisection here to compute the delta e. */ maxChroma = XCMS_CIELUV_PMETRIC_CHROMA(Luv_max.spec.CIELuv.u_star, Luv_max.spec.CIELuv.v_star); nMaxCount = MAXBISECTCOUNT; nI = nMaxCount / 2; bestLstar = Lstar = pColor->spec.CIELuv.L_star; bestustar = pColor->spec.CIELuv.u_star; bestvstar = pColor->spec.CIELuv.v_star; bestChroma = Chroma = chroma; saveDist = XCMS_SQRT(((Chroma - maxChroma) * (Chroma - maxChroma)) + ((Lstar - maxLstar) * (Lstar - maxLstar))); for (nCount = 0; nCount < nMaxCount; nCount++) { nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount; if (saveLstar > maxLstar) { pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT; pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT; pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT; } else { pColor->spec.RGBi.red = rgb_max.red - (rgb_max.red * nT); pColor->spec.RGBi.green = rgb_max.green - (rgb_max.green * nT); pColor->spec.RGBi.blue = rgb_max.blue - (rgb_max.blue * nT); } pColor->format = XcmsRGBiFormat; /* Convert from RGBi to CIE Luv */ if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat, (Bool *) NULL) == XcmsFailure) { return (XcmsFailure); } chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star, pColor->spec.CIELuv.v_star); tmpDist = XCMS_SQRT(((Chroma - chroma) * (Chroma - chroma)) + ((Lstar - pColor->spec.CIELuv.L_star) * (Lstar - pColor->spec.CIELuv.L_star))); nILast = nI; if (tmpDist > saveDist) { nI /= 2; } else { nI = (nMaxCount + nI) / 2; saveDist = tmpDist; bestLstar = pColor->spec.CIELuv.L_star; bestustar = pColor->spec.CIELuv.u_star; bestvstar = pColor->spec.CIELuv.v_star; bestChroma = chroma; } if (nI == nILast || nI == 0) { break; } } if (bestChroma >= maxChroma) { pColor->spec.CIELuv.L_star = maxLstar; pColor->spec.CIELuv.u_star = Luv_max.spec.CIELuv.u_star; pColor->spec.CIELuv.v_star = Luv_max.spec.CIELuv.v_star; } else { pColor->spec.CIELuv.L_star = bestLstar; pColor->spec.CIELuv.u_star = bestustar; pColor->spec.CIELuv.v_star = bestvstar; } retval = _XcmsDIConvertColors(&myCCC, pColor, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat); if (retval != XcmsFailure && pCompressed != NULL) { *(pCompressed + i) = True; } } return(retval); } libX11-1.8.12/src/xcms/LabWpAj.c0000644014310600000120000000541514763154126011517 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * CIELabWpAj.c * * DESCRIPTION * This file contains routine(s) that support white point * adjustment of color specifications in the CIE L*a*b* color * space. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /* * EXTERNS */ /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELabWhiteShiftColors * * SYNOPSIS */ Status XcmsCIELabWhiteShiftColors( XcmsCCC ccc, XcmsColor *pWhitePtFrom, XcmsColor *pWhitePtTo, XcmsColorFormat destSpecFmt, XcmsColor *pColors_in_out, unsigned int nColors, Bool *pCompressed) /* * DESCRIPTION * Adjust color specifications in XcmsColor structures for * differences in white points. * * RETURNS * XcmsFailure if failed, * XcmsSuccess if succeeded without gamut compression, * XcmsSuccessWithCompression if succeeded with gamut * compression. */ { if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) { return(0); } /* * Convert to CIELab using pWhitePtFrom */ if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom, nColors, XcmsCIELabFormat, pCompressed) == XcmsFailure) { return(XcmsFailure); } /* * Convert from CIELab to destSpecFmt using pWhitePtTo */ return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtTo, nColors, destSpecFmt, pCompressed)); } libX11-1.8.12/src/xcms/AddDIC.c0000644014310600000120000001101114763154126011234 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsAddDIC.c * * DESCRIPTION * Source for XcmsAddColorSpace * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /* * DEFINES */ #define NextUnregDiCsID(lastid) \ (XCMS_UNREG_ID(lastid) ? ++lastid : XCMS_FIRST_UNREG_DI_ID) #define MAX(x,y) ((x) < (y) ? (y) : (x)) /* * NAME * XcmsAddColorSpace - Add a Device-Independent Color Space * * SYNOPSIS */ Status XcmsAddColorSpace(XcmsColorSpace *pCS) /* * DESCRIPTION * DI Color Spaces are managed on a global basis. * This means that with exception of the provided DI color spaces: * CIEXYZ, CIExyY, CIELab, CIEuvY, CIELuv, and TekHVC * DI color spaces may have different XcmsColorFormat IDs between * clients. So, you must be careful when using XcmsColor * structures between clients! Use the routines XcmsFormatOfPrefix() * and XcmsPrefixOfFormat() appropriately. * * RETURNS * XcmsSuccess if succeeded, otherwise XcmsFailure */ { XcmsColorSpace **papColorSpaces; XcmsColorSpace *ptmpCS; XcmsColorFormat lastID = 0; if ((pCS->id = _XcmsRegFormatOfPrefix(pCS->prefix)) != 0) { if (XCMS_DD_ID(pCS->id)) { /* This is a Device-Dependent Color Space */ return(XcmsFailure); } /* * REGISTERED DI Color Space * then see if the color space has already been added to the * system: * a. If the same ID/prefix and same XcmsColorSpec is found, * then its a duplicate, so return success. * b. If same ID/prefix but different XcmsColorSpec is * found, then add the color space to the front of the * list using the same ID. This allows one to override * an existing DI Color Space. * c. Otherwise none found so just add the color space. */ if ((papColorSpaces = _XcmsDIColorSpaces) != NULL) { while ((ptmpCS = *papColorSpaces++) != NULL) { if (pCS->id == ptmpCS->id) { if (pCS == ptmpCS) { /* a. duplicate*/ return(XcmsSuccess); } /* b. same ID/prefix but different XcmsColorSpace */ break; } } } /* c. None found */ } else { /* * UNREGISTERED DI Color Space * then see if the color space has already been added to the * system: * a. If same prefix and XcmsColorSpec, then * its a duplicate ... return success. * b. If same prefix but different XcmsColorSpec, then * add the color space to the front of the list using * the same ID. This allows one to override an existing * DI Color Space. * c. Otherwise none found so, add the color space using the * next unregistered ID for the connection. */ if ((papColorSpaces = _XcmsDIColorSpaces) != NULL) { while ((ptmpCS = *papColorSpaces++) != NULL) { lastID = MAX(lastID, ptmpCS->id); if (strcmp(pCS->prefix, ptmpCS->prefix) == 0) { if (pCS == ptmpCS) { /* a. duplicate */ return(XcmsSuccess); } /* b. same prefix but different XcmsColorSpec */ pCS->id = ptmpCS->id; goto AddColorSpace; } } } /* c. None found */ pCS->id = NextUnregDiCsID(lastID); } AddColorSpace: if ((papColorSpaces = (XcmsColorSpace **) _XcmsPushPointerArray((XPointer *)_XcmsDIColorSpaces, (XPointer)pCS, (XPointer *)_XcmsDIColorSpacesInit)) == NULL) { return(XcmsFailure); } _XcmsDIColorSpaces = papColorSpaces; return(XcmsSuccess); } libX11-1.8.12/src/xcms/QWhite.c0000644014310600000120000000454514763154126011443 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsQWhite.c - Query White * * DESCRIPTION * Routine to obtain a color specification for full * red, green, and blue intensities. * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcms.h" /************************************************************************ * * * PUBLIC INTERFACES * * * ************************************************************************/ /* * NAME * XcmsQueryWhite * * SYNOPSIS */ Status XcmsQueryWhite( XcmsCCC ccc, XcmsColorFormat target_format, XcmsColor *pColor_ret) /* * DESCRIPTION * Returns the color specification in the target format for * full intensity red, green, and blue. * * RETURNS * Returns XcmsSuccess, if failed; otherwise XcmsFailure * */ { XcmsColor tmp; tmp.format = XcmsRGBiFormat; tmp.pixel = 0; tmp.spec.RGBi.red = 1.0; tmp.spec.RGBi.green = 1.0; tmp.spec.RGBi.blue = 1.0; if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) { return(XcmsFailure); } memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor)); return(XcmsSuccess); } libX11-1.8.12/src/xcms/OfCCC.c0000644014310600000120000000600314763154126011106 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsOfCCC.c - Color Conversion Context Querying Routines * * DESCRIPTION * Routines to query components of a Color Conversion * Context structure. * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlib.h" #include "Xcms.h" /************************************************************************ * * * PUBLIC INTERFACES * * * ************************************************************************/ /* * NAME * XcmsDisplayOfCCC * * SYNOPSIS */ Display * XcmsDisplayOfCCC( XcmsCCC ccc) /* * DESCRIPTION * Queries the Display of the specified CCC. * * RETURNS * Pointer to the Display. * */ { return(ccc->dpy); } /* * NAME * XcmsVisualOfCCC * * SYNOPSIS */ Visual * XcmsVisualOfCCC( XcmsCCC ccc) /* * DESCRIPTION * Queries the Visual of the specified CCC. * * RETURNS * Pointer to the Visual. * */ { return(ccc->visual); } /* * NAME * XcmsScreenNumberOfCCC * * SYNOPSIS */ int XcmsScreenNumberOfCCC( XcmsCCC ccc) /* * DESCRIPTION * Queries the screen number of the specified CCC. * * RETURNS * screen number. * */ { return(ccc->screenNumber); } /* * NAME * XcmsScreenWhitePointOfCCC * * SYNOPSIS */ XcmsColor * XcmsScreenWhitePointOfCCC( XcmsCCC ccc) /* * DESCRIPTION * Queries the screen white point of the specified CCC. * * RETURNS * Pointer to the XcmsColor containing the screen white point. * */ { return(&ccc->pPerScrnInfo->screenWhitePt); } /* * NAME * XcmsClientWhitePointOfCCC * * SYNOPSIS */ XcmsColor * XcmsClientWhitePointOfCCC( XcmsCCC ccc) /* * DESCRIPTION * Queries the client white point of the specified CCC. * * RETURNS * Pointer to the XcmsColor containing the client white point. * */ { return(&ccc->clientWhitePt); } libX11-1.8.12/src/xcms/cmsTrig.c0000644014310600000120000003515514763154126011653 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. */ /* * It should be pointed out that for simplicity's sake, the * environment parameters are defined as floating point constants, * rather than octal or hexadecimal initializations of allocated * storage areas. This means that the range of allowed numbers * may not exactly match the hardware's capabilities. For example, * if the maximum positive double precision floating point number * is EXACTLY 1.11...E100 and the constant "MAXDOUBLE is * defined to be 1.11E100 then the numbers between 1.11E100 and * 1.11...E100 are considered to be undefined. For most * applications, this will cause no problems. * * An alternate method is to allocate a global static "double" variable, * say "maxdouble", and use a union declaration and initialization * to initialize it with the proper bits for the EXACT maximum value. * This was not done because the only compilers available to the * author did not fully support union initialization features. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xcmsint.h" /* forward/static */ static double _XcmsModulo(double value, double base); static double _XcmsPolynomial( register int order, double const *coeffs, double x); static double _XcmsModuloF( double val, register double *dp); /* * DEFINES */ #define XCMS_MAXERROR 0.000001 #define XCMS_MAXITER 10000 #define XCMS_PI 3.14159265358979323846264338327950 #define XCMS_TWOPI 6.28318530717958620 #define XCMS_HALFPI 1.57079632679489660 #define XCMS_FOURTHPI 0.785398163397448280 #define XCMS_SIXTHPI 0.523598775598298820 #define XCMS_RADIANS(d) ((d) * XCMS_PI / 180.0) #define XCMS_DEGREES(r) ((r) * 180.0 / XCMS_PI) #ifdef __vax__ #define XCMS_X6_UNDERFLOWS (3.784659e-07) /* X**6 almost underflows*/ #else #define XCMS_X6_UNDERFLOWS (4.209340e-52) /* X**6 almost underflows */ #endif #define XCMS_X16_UNDERFLOWS (5.421010e-20) /* X**16 almost underflows*/ #define XCMS_CHAR_BIT 8 #define XCMS_LONG_MAX 0x7FFFFFFF #define XCMS_DEXPLEN 11 #define XCMS_NBITS(type) (XCMS_CHAR_BIT * (int)sizeof(type)) #define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x)) /* XCMS_DMAXPOWTWO - largest power of two exactly representable as a double */ #define XCMS_DMAXPOWTWO ((double)(XCMS_LONG_MAX) * \ (1L << ((XCMS_NBITS(double)-XCMS_DEXPLEN) - XCMS_NBITS(int) + 1))) /* * LOCAL VARIABLES */ static double const cos_pcoeffs[] = { 0.12905394659037374438e7, -0.37456703915723204710e6, 0.13432300986539084285e5, -0.11231450823340933092e3 }; static double const cos_qcoeffs[] = { 0.12905394659037373590e7, 0.23467773107245835052e5, 0.20969518196726306286e3, 1.0 }; static double const sin_pcoeffs[] = { 0.20664343336995858240e7, -0.18160398797407332550e6, 0.35999306949636188317e4, -0.20107483294588615719e2 }; static double const sin_qcoeffs[] = { 0.26310659102647698963e7, 0.39270242774649000308e5, 0.27811919481083844087e3, 1.0 }; /* * * FUNCTION * * _XcmsCosine double precision cosine * * KEY WORDS * * cos * machine independent routines * trigonometric functions * math libraries * * DESCRIPTION * * Returns double precision cosine of double precision * floating point argument. * * USAGE * * double _XcmsCosine (x) * double x; * * REFERENCES * * Computer Approximations, J.F. Hart et al, John Wiley & Sons, * 1968, pp. 112-120. * * RESTRICTIONS * * The sin and cos routines are interactive in the sense that * in the process of reducing the argument to the range -PI/4 * to PI/4, each may call the other. Ultimately one or the * other uses a polynomial approximation on the reduced * argument. The sin approximation has a maximum relative error * of 10**(-17.59) and the cos approximation has a maximum * relative error of 10**(-16.18). * * These error bounds assume exact arithmetic * in the polynomial evaluation. Additional rounding and * truncation errors may occur as the argument is reduced * to the range over which the polynomial approximation * is valid, and as the polynomial is evaluated using * finite-precision arithmetic. * * PROGRAMMER * * Fred Fish * * INTERNALS * * Computes cos(x) from: * * (1) Reduce argument x to range -PI to PI. * * (2) If x > PI/2 then call cos recursively * using relation cos(x) = -cos(x - PI). * * (3) If x < -PI/2 then call cos recursively * using relation cos(x) = -cos(x + PI). * * (4) If x > PI/4 then call sin using * relation cos(x) = sin(PI/2 - x). * * (5) If x < -PI/4 then call cos using * relation cos(x) = sin(PI/2 + x). * * (6) If x would cause underflow in approx * evaluation arithmetic then return * sqrt(1.0 - x**2). * * (7) By now x has been reduced to range * -PI/4 to PI/4 and the approximation * from HART pg. 119 can be used: * * cos(x) = ( p(y) / q(y) ) * Where: * * y = x * (4/PI) * * p(y) = SUM [ Pj * (y**(2*j)) ] * over j = {0,1,2,3} * * q(y) = SUM [ Qj * (y**(2*j)) ] * over j = {0,1,2,3} * * P0 = 0.12905394659037374438571854e+7 * P1 = -0.3745670391572320471032359e+6 * P2 = 0.134323009865390842853673e+5 * P3 = -0.112314508233409330923e+3 * Q0 = 0.12905394659037373590295914e+7 * Q1 = 0.234677731072458350524124e+5 * Q2 = 0.2096951819672630628621e+3 * Q3 = 1.0000... * (coefficients from HART table #3843 pg 244) * * * **** NOTE **** The range reduction relations used in * this routine depend on the final approximation being valid * over the negative argument range in addition to the positive * argument range. The particular approximation chosen from * HART satisfies this requirement, although not explicitly * stated in the text. This may not be true of other * approximations given in the reference. * */ double _XcmsCosine(double x) { auto double y; auto double yt2; double retval; if (x < -XCMS_PI || x > XCMS_PI) { x = _XcmsModulo (x, XCMS_TWOPI); if (x > XCMS_PI) { x = x - XCMS_TWOPI; } else if (x < -XCMS_PI) { x = x + XCMS_TWOPI; } } if (x > XCMS_HALFPI) { retval = -(_XcmsCosine (x - XCMS_PI)); } else if (x < -XCMS_HALFPI) { retval = -(_XcmsCosine (x + XCMS_PI)); } else if (x > XCMS_FOURTHPI) { retval = _XcmsSine (XCMS_HALFPI - x); } else if (x < -XCMS_FOURTHPI) { retval = _XcmsSine (XCMS_HALFPI + x); } else if (x < XCMS_X6_UNDERFLOWS && x > -XCMS_X6_UNDERFLOWS) { retval = _XcmsSquareRoot (1.0 - (x * x)); } else { y = x / XCMS_FOURTHPI; yt2 = y * y; retval = _XcmsPolynomial (3, cos_pcoeffs, yt2) / _XcmsPolynomial (3, cos_qcoeffs, yt2); } return (retval); } /* * FUNCTION * * _XcmsModulo double precision modulo * * KEY WORDS * * _XcmsModulo * machine independent routines * math libraries * * DESCRIPTION * * Returns double precision modulo of two double * precision arguments. * * USAGE * * double _XcmsModulo (value, base) * double value; * double base; * * PROGRAMMER * * Fred Fish * */ static double _XcmsModulo(double value, double base) { auto double intpart; value /= base; value = _XcmsModuloF (value, &intpart); value *= base; return(value); } /* * frac = (double) _XcmsModuloF(double val, double *dp) * return fractional part of 'val' * set *dp to integer part of 'val' * * Note -> only compiled for the CA or KA. For the KB/MC, * "math.c" instantiates a copy of the inline function * defined in "math.h". */ static double _XcmsModuloF( double val, register double *dp) { register double abs; /* * Don't use a register for this. The extra precision this results * in on some systems causes problems. */ double ip; /* should check for illegal values here - nan, inf, etc */ abs = XCMS_FABS(val); if (abs >= XCMS_DMAXPOWTWO) { ip = val; } else { ip = abs + XCMS_DMAXPOWTWO; /* dump fraction */ ip -= XCMS_DMAXPOWTWO; /* restore w/o frac */ if (ip > abs) /* if it rounds up */ ip -= 1.0; /* fix it */ ip = XCMS_FABS(ip); } *dp = ip; return (val - ip); /* signed fractional part */ } /* * FUNCTION * * _XcmsPolynomial double precision polynomial evaluation * * KEY WORDS * * poly * machine independent routines * math libraries * * DESCRIPTION * * Evaluates a polynomial and returns double precision * result. Is passed a the order of the polynomial, * a pointer to an array of double precision polynomial * coefficients (in ascending order), and the independent * variable. * * USAGE * * double _XcmsPolynomial (order, coeffs, x) * int order; * double *coeffs; * double x; * * PROGRAMMER * * Fred Fish * * INTERNALS * * Evalates the polynomial using recursion and the form: * * P(x) = P0 + x(P1 + x(P2 +...x(Pn))) * */ static double _XcmsPolynomial( register int order, double const *coeffs, double x) { auto double rtn_value; coeffs += order; rtn_value = *coeffs--; while(order-- > 0) rtn_value = *coeffs-- + (x * rtn_value); return(rtn_value); } /* * FUNCTION * * _XcmsSine double precision sine * * KEY WORDS * * sin * machine independent routines * trigonometric functions * math libraries * * DESCRIPTION * * Returns double precision sine of double precision * floating point argument. * * USAGE * * double _XcmsSine (x) * double x; * * REFERENCES * * Computer Approximations, J.F. Hart et al, John Wiley & Sons, * 1968, pp. 112-120. * * RESTRICTIONS * * The sin and cos routines are interactive in the sense that * in the process of reducing the argument to the range -PI/4 * to PI/4, each may call the other. Ultimately one or the * other uses a polynomial approximation on the reduced * argument. The sin approximation has a maximum relative error * of 10**(-17.59) and the cos approximation has a maximum * relative error of 10**(-16.18). * * These error bounds assume exact arithmetic * in the polynomial evaluation. Additional rounding and * truncation errors may occur as the argument is reduced * to the range over which the polynomial approximation * is valid, and as the polynomial is evaluated using * finite-precision arithmetic. * * PROGRAMMER * * Fred Fish * * INTERNALS * * Computes sin(x) from: * * (1) Reduce argument x to range -PI to PI. * * (2) If x > PI/2 then call sin recursively * using relation sin(x) = -sin(x - PI). * * (3) If x < -PI/2 then call sin recursively * using relation sin(x) = -sin(x + PI). * * (4) If x > PI/4 then call cos using * relation sin(x) = cos(PI/2 - x). * * (5) If x < -PI/4 then call cos using * relation sin(x) = -cos(PI/2 + x). * * (6) If x is small enough that polynomial * evaluation would cause underflow * then return x, since sin(x) * approaches x as x approaches zero. * * (7) By now x has been reduced to range * -PI/4 to PI/4 and the approximation * from HART pg. 118 can be used: * * sin(x) = y * ( p(y) / q(y) ) * Where: * * y = x * (4/PI) * * p(y) = SUM [ Pj * (y**(2*j)) ] * over j = {0,1,2,3} * * q(y) = SUM [ Qj * (y**(2*j)) ] * over j = {0,1,2,3} * * P0 = 0.206643433369958582409167054e+7 * P1 = -0.18160398797407332550219213e+6 * P2 = 0.359993069496361883172836e+4 * P3 = -0.2010748329458861571949e+2 * Q0 = 0.263106591026476989637710307e+7 * Q1 = 0.3927024277464900030883986e+5 * Q2 = 0.27811919481083844087953e+3 * Q3 = 1.0000... * (coefficients from HART table #3063 pg 234) * * * **** NOTE **** The range reduction relations used in * this routine depend on the final approximation being valid * over the negative argument range in addition to the positive * argument range. The particular approximation chosen from * HART satisfies this requirement, although not explicitly * stated in the text. This may not be true of other * approximations given in the reference. * */ double _XcmsSine (double x) { double y; double yt2; double retval; if (x < -XCMS_PI || x > XCMS_PI) { x = _XcmsModulo (x, XCMS_TWOPI); if (x > XCMS_PI) { x = x - XCMS_TWOPI; } else if (x < -XCMS_PI) { x = x + XCMS_TWOPI; } } if (x > XCMS_HALFPI) { retval = -(_XcmsSine (x - XCMS_PI)); } else if (x < -XCMS_HALFPI) { retval = -(_XcmsSine (x + XCMS_PI)); } else if (x > XCMS_FOURTHPI) { retval = _XcmsCosine (XCMS_HALFPI - x); } else if (x < -XCMS_FOURTHPI) { retval = -(_XcmsCosine (XCMS_HALFPI + x)); } else if (x < XCMS_X6_UNDERFLOWS && x > -XCMS_X6_UNDERFLOWS) { retval = x; } else { y = x / XCMS_FOURTHPI; yt2 = y * y; retval = y * (_XcmsPolynomial (3, sin_pcoeffs, yt2) / _XcmsPolynomial(3, sin_qcoeffs, yt2)); } return(retval); } /* * NAME * _XcmsArcTangent * * SYNOPSIS */ double _XcmsArcTangent(double x) /* * DESCRIPTION * Computes the arctangent. * This is an implementation of the Gauss algorithm as * described in: * Forman S. Acton, Numerical Methods That Work, * New York, NY, Harper & Row, 1970. * * RETURNS * Returns the arctangent */ { double ai, a1 = 0.0, bi, b1 = 0.0, l, d; double maxerror; int i; if (x == 0.0) { return (0.0); } if (x < 1.0) { maxerror = x * XCMS_MAXERROR; } else { maxerror = XCMS_MAXERROR; } ai = _XcmsSquareRoot( 1.0 / (1.0 + (x * x)) ); bi = 1.0; for (i = 0; i < XCMS_MAXITER; i++) { a1 = (ai + bi) / 2.0; b1 = _XcmsSquareRoot((a1 * bi)); if (a1 == b1) break; d = XCMS_FABS(a1 - b1); if (d < maxerror) break; ai = a1; bi = b1; } l = ((a1 > b1) ? b1 : a1); a1 = _XcmsSquareRoot(1 + (x * x)); return (x / (a1 * l)); } libX11-1.8.12/src/xcms/HVCMxC.c0000644014310600000120000001712714763154126011272 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. TekColor is a * trademark of Tektronix, Inc. The term "TekHVC" designates a particular * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent * foreign patents pending). Permission is hereby granted to use, copy, * modify, sell, and otherwise distribute this software and its * documentation for any purpose and without fee, provided that: * * 1. This copyright, permission, and disclaimer notice is reproduced in * all copies of this software and any modification thereof and in * supporting documentation; * 2. Any color-handling application which displays TekHVC color * cooordinates identifies these as TekHVC color coordinates in any * interface that displays these coordinates and in any associated * documentation; * 3. The term "TekHVC" is always used, and is only used, in association * with the mathematical derivations of the TekHVC Color Space, * including those provided in this file and any equivalent pathways and * mathematical derivations, regardless of digital (e.g., floating point * or integer) representation. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * TekHVCMxC.c * * DESCRIPTION * Source for the XcmsTekHVCQueryMaxC() gamut boundary * querying routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include #include "Cv.h" /* * DEFINES */ #define MAXBISECTCOUNT 100 #define EPS 0.001 /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsTekHVCQueryMaxC - Compute the maximum chroma for a hue and value * * SYNOPSIS */ Status XcmsTekHVCQueryMaxC( XcmsCCC ccc, XcmsFloat hue, XcmsFloat value, XcmsColor *pColor_return) /* * DESCRIPTION * Return the maximum chroma for a specific hue and value. * The returned format is in XcmsTekHVCFormat. * * * ASSUMPTIONS * This routine assumes that the white point associated with * the color specification is the Screen White Point. The * Screen White Point will also be associated with the * returned color specification. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { XcmsCCCRec myCCC; XcmsColor tmp; XcmsColor max_vc; XcmsRGBi rgb_saved; int nCount, nMaxCount; XcmsFloat nValue, savedValue, lastValue, lastChroma, prevValue; XcmsFloat maxDist, nT, rFactor; XcmsFloat ftmp1, ftmp2; /* * Check Arguments */ if (ccc == NULL || pColor_return == NULL) { return(XcmsFailure); } /* * Insure TekHVC installed */ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) { return(XcmsFailure); } /* Use my own CCC */ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat; /* inherit screen white Pt */ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */ tmp.spec.TekHVC.H = hue; tmp.spec.TekHVC.V = value; tmp.spec.TekHVC.C = 100.0; tmp.pixel = pColor_return->pixel; tmp.format = XcmsTekHVCFormat; /* check to make sure we have a valid TekHVC number */ if (!_XcmsTekHVC_CheckModify(&tmp)) { return(XcmsFailure); } /* Step 1: compute the maximum value and chroma for this hue. */ memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor)); if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, hue, &max_vc, &rgb_saved) == XcmsFailure) { return(XcmsFailure); } /* Step 2: If the value is less than the value for the maximum */ /* value, chroma point then the chroma is on the line */ /* from max_vc to 0,0. */ if (value <= max_vc.spec.TekHVC.V) { tmp.spec.TekHVC.C = value * max_vc.spec.TekHVC.C / max_vc.spec.TekHVC.V; if (_XcmsTekHVC_CheckModify (&tmp)) { memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); return(XcmsSuccess); } else { return(XcmsFailure); } } else { /* must do a bisection here to compute the maximum chroma */ /* save the structure input so that any elements that */ /* are not touched are recopied later in the routine. */ nValue = savedValue = value; lastChroma = -1.0; lastValue = -1.0; nMaxCount = MAXBISECTCOUNT; maxDist = 100.0 - max_vc.spec.TekHVC.V; rFactor = 1.0; for (nCount = 0; nCount < nMaxCount; nCount++) { prevValue = lastValue; lastValue = tmp.spec.TekHVC.V; lastChroma = tmp.spec.TekHVC.C; nT = (nValue - max_vc.spec.TekHVC.V) / maxDist * rFactor; tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT; tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT; tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT; tmp.format = XcmsRGBiFormat; /* convert from RGB to HVC */ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp, &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } /* Now check the return against what is expected */ if (tmp.spec.TekHVC.V <= savedValue + EPS && tmp.spec.TekHVC.V >= savedValue - EPS) { /* make sure to return the input hue */ tmp.spec.TekHVC.H = hue; if (_XcmsTekHVC_CheckModify (&tmp)) { memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); return(XcmsSuccess); } else { return(XcmsFailure); } } nValue += savedValue - tmp.spec.TekHVC.V; if (nValue < max_vc.spec.TekHVC.V) { nValue = max_vc.spec.TekHVC.V; rFactor *= 0.5; /* selective relaxation employed */ } else if (nValue > 100.0) { /* make sure to return the input hue */ tmp.spec.TekHVC.H = hue; /* avoid using fabs */ ftmp1 = lastValue - savedValue; if (ftmp1 < 0.0) ftmp1 = -ftmp1; ftmp2 = tmp.spec.TekHVC.V - savedValue; if (ftmp2 < 0.0) ftmp2 = -ftmp2; if (ftmp1 < ftmp2) { tmp.spec.TekHVC.V = lastValue; tmp.spec.TekHVC.C = lastChroma; } if (_XcmsTekHVC_CheckModify (&tmp)) { memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); return(XcmsSuccess); } else { return(XcmsFailure); } } else if (tmp.spec.TekHVC.V <= prevValue + EPS && tmp.spec.TekHVC.V >= prevValue - EPS) { rFactor *= 0.5; /* selective relaxation employed */ } } if (nCount >= nMaxCount) { /* avoid using fabs */ ftmp1 = lastValue - savedValue; if (ftmp1 < 0.0) ftmp1 = -ftmp1; ftmp2 = tmp.spec.TekHVC.V - savedValue; if (ftmp2 < 0.0) ftmp2 = -ftmp2; if (ftmp1 < ftmp2) { tmp.spec.TekHVC.V = lastValue; tmp.spec.TekHVC.C = lastChroma; } } } /* make sure to return the input hue */ tmp.spec.TekHVC.H = hue; memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); return(XcmsSuccess); } libX11-1.8.12/src/xcms/QGreen.c0000644014310600000120000000460714763154126011422 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsQGreen.c - Query Green * * DESCRIPTION * Routine to obtain a color specification for full * green intensity and zero red and blue intensities. * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcms.h" /************************************************************************ * * * PUBLIC INTERFACES * * * ************************************************************************/ /* * NAME * XcmsQueryGreen * * SYNOPSIS */ Status XcmsQueryGreen( XcmsCCC ccc, XcmsColorFormat target_format, XcmsColor *pColor_ret) /* * DESCRIPTION * Returns the color specification in the target format for * full intensity green and zero intensity red and blue. * * RETURNS * Returns XcmsSuccess, if failed; otherwise XcmsFailure * */ { XcmsColor tmp; tmp.format = XcmsRGBiFormat; tmp.pixel = 0; tmp.spec.RGBi.red = 0.0; tmp.spec.RGBi.green = 1.0; tmp.spec.RGBi.blue = 0.0; if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) { return(XcmsFailure); } memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor)); return(XcmsSuccess); } libX11-1.8.12/src/xcms/Makefile.in0000644014310600000120000010735614763154147012152 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/xcms ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_X11_DATA) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libxcms_la_LIBADD = am_libxcms_la_OBJECTS = AddDIC.lo AddSF.lo CCC.lo CvColW.lo CvCols.lo \ HVC.lo HVCGcC.lo HVCGcV.lo HVCGcVC.lo HVCMnV.lo HVCMxC.lo \ HVCMxV.lo HVCMxVC.lo HVCMxVs.lo HVCWpAj.lo IdOfPr.lo LRGB.lo \ Lab.lo LabGcC.lo LabGcL.lo LabGcLC.lo LabMnL.lo LabMxC.lo \ LabMxL.lo LabMxLC.lo LabWpAj.lo Luv.lo LuvGcC.lo LuvGcL.lo \ LuvGcLC.lo LuvMnL.lo LuvMxC.lo LuvMxL.lo LuvMxLC.lo LuvWpAj.lo \ OfCCC.lo PrOfId.lo QBlack.lo QBlue.lo QGreen.lo QRed.lo \ QWhite.lo QuCol.lo QuCols.lo SetCCC.lo SetGetCols.lo StCol.lo \ StCols.lo UNDEFINED.lo XRGB.lo XYZ.lo cmsAllCol.lo \ cmsAllNCol.lo cmsCmap.lo cmsColNm.lo cmsGlobls.lo cmsInt.lo \ cmsLkCol.lo cmsMath.lo cmsProp.lo cmsTrig.lo uvY.lo xyY.lo libxcms_la_OBJECTS = $(am_libxcms_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src -I$(top_builddir)/include/X11 depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/AddDIC.Plo ./$(DEPDIR)/AddSF.Plo \ ./$(DEPDIR)/CCC.Plo ./$(DEPDIR)/CvColW.Plo \ ./$(DEPDIR)/CvCols.Plo ./$(DEPDIR)/HVC.Plo \ ./$(DEPDIR)/HVCGcC.Plo ./$(DEPDIR)/HVCGcV.Plo \ ./$(DEPDIR)/HVCGcVC.Plo ./$(DEPDIR)/HVCMnV.Plo \ ./$(DEPDIR)/HVCMxC.Plo ./$(DEPDIR)/HVCMxV.Plo \ ./$(DEPDIR)/HVCMxVC.Plo ./$(DEPDIR)/HVCMxVs.Plo \ ./$(DEPDIR)/HVCWpAj.Plo ./$(DEPDIR)/IdOfPr.Plo \ ./$(DEPDIR)/LRGB.Plo ./$(DEPDIR)/Lab.Plo \ ./$(DEPDIR)/LabGcC.Plo ./$(DEPDIR)/LabGcL.Plo \ ./$(DEPDIR)/LabGcLC.Plo ./$(DEPDIR)/LabMnL.Plo \ ./$(DEPDIR)/LabMxC.Plo ./$(DEPDIR)/LabMxL.Plo \ ./$(DEPDIR)/LabMxLC.Plo ./$(DEPDIR)/LabWpAj.Plo \ ./$(DEPDIR)/Luv.Plo ./$(DEPDIR)/LuvGcC.Plo \ ./$(DEPDIR)/LuvGcL.Plo ./$(DEPDIR)/LuvGcLC.Plo \ ./$(DEPDIR)/LuvMnL.Plo ./$(DEPDIR)/LuvMxC.Plo \ ./$(DEPDIR)/LuvMxL.Plo ./$(DEPDIR)/LuvMxLC.Plo \ ./$(DEPDIR)/LuvWpAj.Plo ./$(DEPDIR)/OfCCC.Plo \ ./$(DEPDIR)/PrOfId.Plo ./$(DEPDIR)/QBlack.Plo \ ./$(DEPDIR)/QBlue.Plo ./$(DEPDIR)/QGreen.Plo \ ./$(DEPDIR)/QRed.Plo ./$(DEPDIR)/QWhite.Plo \ ./$(DEPDIR)/QuCol.Plo ./$(DEPDIR)/QuCols.Plo \ ./$(DEPDIR)/SetCCC.Plo ./$(DEPDIR)/SetGetCols.Plo \ ./$(DEPDIR)/StCol.Plo ./$(DEPDIR)/StCols.Plo \ ./$(DEPDIR)/UNDEFINED.Plo ./$(DEPDIR)/XRGB.Plo \ ./$(DEPDIR)/XYZ.Plo ./$(DEPDIR)/cmsAllCol.Plo \ ./$(DEPDIR)/cmsAllNCol.Plo ./$(DEPDIR)/cmsCmap.Plo \ ./$(DEPDIR)/cmsColNm.Plo ./$(DEPDIR)/cmsGlobls.Plo \ ./$(DEPDIR)/cmsInt.Plo ./$(DEPDIR)/cmsLkCol.Plo \ ./$(DEPDIR)/cmsMath.Plo ./$(DEPDIR)/cmsProp.Plo \ ./$(DEPDIR)/cmsTrig.Plo ./$(DEPDIR)/uvY.Plo \ ./$(DEPDIR)/xyY.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libxcms_la_SOURCES) DIST_SOURCES = $(libxcms_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(X11dir)" DATA = $(dist_X11_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libxcms.la AM_CPPFLAGS = \ -I$(top_srcdir)/include \ -I$(top_srcdir)/include/X11 \ -I$(top_builddir)/include \ -I$(top_builddir)/include/X11 \ -I$(top_srcdir)/src/xcms \ -I$(top_srcdir)/src/xkb \ -I$(top_srcdir)/src/xlibi18n \ -I$(top_srcdir)/src \ -D_BSD_SOURCE \ -DXCMSDIR=\"$(X11dir)\" AM_CFLAGS = \ $(X11_CFLAGS) \ $(BIGFONT_CFLAGS) \ $(XMALLOC_ZERO_CFLAGS) \ $(CWARNFLAGS) libxcms_la_SOURCES = \ AddDIC.c \ AddSF.c \ CCC.c \ CvColW.c \ CvCols.c \ Cv.h \ HVC.c \ HVCGcC.c \ HVCGcV.c \ HVCGcVC.c \ HVCMnV.c \ HVCMxC.c \ HVCMxV.c \ HVCMxVC.c \ HVCMxVs.c \ HVCWpAj.c \ IdOfPr.c \ LRGB.c \ Lab.c \ LabGcC.c \ LabGcL.c \ LabGcLC.c \ LabMnL.c \ LabMxC.c \ LabMxL.c \ LabMxLC.c \ LabWpAj.c \ Luv.c \ LuvGcC.c \ LuvGcL.c \ LuvGcLC.c \ LuvMnL.c \ LuvMxC.c \ LuvMxL.c \ LuvMxLC.c \ LuvWpAj.c \ OfCCC.c \ PrOfId.c \ QBlack.c \ QBlue.c \ QGreen.c \ QRed.c \ QWhite.c \ QuCol.c \ QuCols.c \ SetCCC.c \ SetGetCols.c \ StCol.c \ StCols.c \ UNDEFINED.c \ XRGB.c \ XYZ.c \ cmsAllCol.c \ cmsAllNCol.c \ cmsCmap.c \ cmsColNm.c \ cmsGlobls.c \ cmsInt.c \ cmsLkCol.c \ cmsMath.c \ cmsProp.c \ cmsTrig.c \ uvY.c \ xyY.c \ Xcmsint.h X11dir = $(X11_DATADIR) dist_X11_DATA = Xcms.txt # Check source code with tools like lint & sparse @LINT_TRUE@ALL_LINT_FLAGS = $(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ @LINT_TRUE@ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/xcms/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/xcms/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -$(am__rm_f) $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ echo rm -f $${locs}; \ $(am__rm_f) $${locs} libxcms.la: $(libxcms_la_OBJECTS) $(libxcms_la_DEPENDENCIES) $(EXTRA_libxcms_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libxcms_la_OBJECTS) $(libxcms_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AddDIC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AddSF.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CCC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CvColW.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CvCols.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HVC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HVCGcC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HVCGcV.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HVCGcVC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HVCMnV.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HVCMxC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HVCMxV.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HVCMxVC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HVCMxVs.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HVCWpAj.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IdOfPr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LRGB.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lab.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabGcC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabGcL.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabGcLC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabMnL.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabMxC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabMxL.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabMxLC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabWpAj.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Luv.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LuvGcC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LuvGcL.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LuvGcLC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LuvMnL.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LuvMxC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LuvMxL.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LuvMxLC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LuvWpAj.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OfCCC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PrOfId.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QBlack.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QBlue.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QGreen.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QRed.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QWhite.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QuCol.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QuCols.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SetCCC.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SetGetCols.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StCol.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StCols.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UNDEFINED.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XRGB.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XYZ.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsAllCol.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsAllNCol.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsCmap.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsColNm.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsGlobls.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsInt.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsLkCol.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsMath.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsProp.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsTrig.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uvY.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xyY.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_X11DATA: $(dist_X11_DATA) @$(NORMAL_INSTALL) @list='$(dist_X11_DATA)'; test -n "$(X11dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(X11dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(X11dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(X11dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(X11dir)" || exit $$?; \ done uninstall-dist_X11DATA: @$(NORMAL_UNINSTALL) @list='$(dist_X11_DATA)'; test -n "$(X11dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(X11dir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(DATA) installdirs: for dir in "$(DESTDIR)$(X11dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/AddDIC.Plo -rm -f ./$(DEPDIR)/AddSF.Plo -rm -f ./$(DEPDIR)/CCC.Plo -rm -f ./$(DEPDIR)/CvColW.Plo -rm -f ./$(DEPDIR)/CvCols.Plo -rm -f ./$(DEPDIR)/HVC.Plo -rm -f ./$(DEPDIR)/HVCGcC.Plo -rm -f ./$(DEPDIR)/HVCGcV.Plo -rm -f ./$(DEPDIR)/HVCGcVC.Plo -rm -f ./$(DEPDIR)/HVCMnV.Plo -rm -f ./$(DEPDIR)/HVCMxC.Plo -rm -f ./$(DEPDIR)/HVCMxV.Plo -rm -f ./$(DEPDIR)/HVCMxVC.Plo -rm -f ./$(DEPDIR)/HVCMxVs.Plo -rm -f ./$(DEPDIR)/HVCWpAj.Plo -rm -f ./$(DEPDIR)/IdOfPr.Plo -rm -f ./$(DEPDIR)/LRGB.Plo -rm -f ./$(DEPDIR)/Lab.Plo -rm -f ./$(DEPDIR)/LabGcC.Plo -rm -f ./$(DEPDIR)/LabGcL.Plo -rm -f ./$(DEPDIR)/LabGcLC.Plo -rm -f ./$(DEPDIR)/LabMnL.Plo -rm -f ./$(DEPDIR)/LabMxC.Plo -rm -f ./$(DEPDIR)/LabMxL.Plo -rm -f ./$(DEPDIR)/LabMxLC.Plo -rm -f ./$(DEPDIR)/LabWpAj.Plo -rm -f ./$(DEPDIR)/Luv.Plo -rm -f ./$(DEPDIR)/LuvGcC.Plo -rm -f ./$(DEPDIR)/LuvGcL.Plo -rm -f ./$(DEPDIR)/LuvGcLC.Plo -rm -f ./$(DEPDIR)/LuvMnL.Plo -rm -f ./$(DEPDIR)/LuvMxC.Plo -rm -f ./$(DEPDIR)/LuvMxL.Plo -rm -f ./$(DEPDIR)/LuvMxLC.Plo -rm -f ./$(DEPDIR)/LuvWpAj.Plo -rm -f ./$(DEPDIR)/OfCCC.Plo -rm -f ./$(DEPDIR)/PrOfId.Plo -rm -f ./$(DEPDIR)/QBlack.Plo -rm -f ./$(DEPDIR)/QBlue.Plo -rm -f ./$(DEPDIR)/QGreen.Plo -rm -f ./$(DEPDIR)/QRed.Plo -rm -f ./$(DEPDIR)/QWhite.Plo -rm -f ./$(DEPDIR)/QuCol.Plo -rm -f ./$(DEPDIR)/QuCols.Plo -rm -f ./$(DEPDIR)/SetCCC.Plo -rm -f ./$(DEPDIR)/SetGetCols.Plo -rm -f ./$(DEPDIR)/StCol.Plo -rm -f ./$(DEPDIR)/StCols.Plo -rm -f ./$(DEPDIR)/UNDEFINED.Plo -rm -f ./$(DEPDIR)/XRGB.Plo -rm -f ./$(DEPDIR)/XYZ.Plo -rm -f ./$(DEPDIR)/cmsAllCol.Plo -rm -f ./$(DEPDIR)/cmsAllNCol.Plo -rm -f ./$(DEPDIR)/cmsCmap.Plo -rm -f ./$(DEPDIR)/cmsColNm.Plo -rm -f ./$(DEPDIR)/cmsGlobls.Plo -rm -f ./$(DEPDIR)/cmsInt.Plo -rm -f ./$(DEPDIR)/cmsLkCol.Plo -rm -f ./$(DEPDIR)/cmsMath.Plo -rm -f ./$(DEPDIR)/cmsProp.Plo -rm -f ./$(DEPDIR)/cmsTrig.Plo -rm -f ./$(DEPDIR)/uvY.Plo -rm -f ./$(DEPDIR)/xyY.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_X11DATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/AddDIC.Plo -rm -f ./$(DEPDIR)/AddSF.Plo -rm -f ./$(DEPDIR)/CCC.Plo -rm -f ./$(DEPDIR)/CvColW.Plo -rm -f ./$(DEPDIR)/CvCols.Plo -rm -f ./$(DEPDIR)/HVC.Plo -rm -f ./$(DEPDIR)/HVCGcC.Plo -rm -f ./$(DEPDIR)/HVCGcV.Plo -rm -f ./$(DEPDIR)/HVCGcVC.Plo -rm -f ./$(DEPDIR)/HVCMnV.Plo -rm -f ./$(DEPDIR)/HVCMxC.Plo -rm -f ./$(DEPDIR)/HVCMxV.Plo -rm -f ./$(DEPDIR)/HVCMxVC.Plo -rm -f ./$(DEPDIR)/HVCMxVs.Plo -rm -f ./$(DEPDIR)/HVCWpAj.Plo -rm -f ./$(DEPDIR)/IdOfPr.Plo -rm -f ./$(DEPDIR)/LRGB.Plo -rm -f ./$(DEPDIR)/Lab.Plo -rm -f ./$(DEPDIR)/LabGcC.Plo -rm -f ./$(DEPDIR)/LabGcL.Plo -rm -f ./$(DEPDIR)/LabGcLC.Plo -rm -f ./$(DEPDIR)/LabMnL.Plo -rm -f ./$(DEPDIR)/LabMxC.Plo -rm -f ./$(DEPDIR)/LabMxL.Plo -rm -f ./$(DEPDIR)/LabMxLC.Plo -rm -f ./$(DEPDIR)/LabWpAj.Plo -rm -f ./$(DEPDIR)/Luv.Plo -rm -f ./$(DEPDIR)/LuvGcC.Plo -rm -f ./$(DEPDIR)/LuvGcL.Plo -rm -f ./$(DEPDIR)/LuvGcLC.Plo -rm -f ./$(DEPDIR)/LuvMnL.Plo -rm -f ./$(DEPDIR)/LuvMxC.Plo -rm -f ./$(DEPDIR)/LuvMxL.Plo -rm -f ./$(DEPDIR)/LuvMxLC.Plo -rm -f ./$(DEPDIR)/LuvWpAj.Plo -rm -f ./$(DEPDIR)/OfCCC.Plo -rm -f ./$(DEPDIR)/PrOfId.Plo -rm -f ./$(DEPDIR)/QBlack.Plo -rm -f ./$(DEPDIR)/QBlue.Plo -rm -f ./$(DEPDIR)/QGreen.Plo -rm -f ./$(DEPDIR)/QRed.Plo -rm -f ./$(DEPDIR)/QWhite.Plo -rm -f ./$(DEPDIR)/QuCol.Plo -rm -f ./$(DEPDIR)/QuCols.Plo -rm -f ./$(DEPDIR)/SetCCC.Plo -rm -f ./$(DEPDIR)/SetGetCols.Plo -rm -f ./$(DEPDIR)/StCol.Plo -rm -f ./$(DEPDIR)/StCols.Plo -rm -f ./$(DEPDIR)/UNDEFINED.Plo -rm -f ./$(DEPDIR)/XRGB.Plo -rm -f ./$(DEPDIR)/XYZ.Plo -rm -f ./$(DEPDIR)/cmsAllCol.Plo -rm -f ./$(DEPDIR)/cmsAllNCol.Plo -rm -f ./$(DEPDIR)/cmsCmap.Plo -rm -f ./$(DEPDIR)/cmsColNm.Plo -rm -f ./$(DEPDIR)/cmsGlobls.Plo -rm -f ./$(DEPDIR)/cmsInt.Plo -rm -f ./$(DEPDIR)/cmsLkCol.Plo -rm -f ./$(DEPDIR)/cmsMath.Plo -rm -f ./$(DEPDIR)/cmsProp.Plo -rm -f ./$(DEPDIR)/cmsTrig.Plo -rm -f ./$(DEPDIR)/uvY.Plo -rm -f ./$(DEPDIR)/xyY.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_X11DATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstLTLIBRARIES \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_X11DATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-dist_X11DATA .PRECIOUS: Makefile @LINT_TRUE@lint: @LINT_TRUE@ $(LINT) $(ALL_LINT_FLAGS) $(libxcms_la_SOURCES) -lm # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/src/xcms/LuvMxC.c0000644014310600000120000001455314763154126011420 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * * NAME * CIELuvMxC.c * * DESCRIPTION * Source for the XcmsCIELuvQueryMaxC() gamut boundary * querying routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include #include "Cv.h" /* * DEFINES */ #define MAXBISECTCOUNT 100 #define EPS (XcmsFloat)0.001 #define START_CHROMA (XcmsFloat)2.2 #define TOPL (XcmsFloat)100.0 /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELuvQueryMaxC - max chroma for a hue_angle and L_star * * SYNOPSIS */ Status XcmsCIELuvQueryMaxC( XcmsCCC ccc, XcmsFloat hue_angle, /* hue angle in degrees */ XcmsFloat L_star, XcmsColor *pColor_return) /* * DESCRIPTION * Return the maximum chroma for a specific hue_angle and L_star. * The returned format is in XcmsCIELuvFormat. * * * ASSUMPTIONS * This routine assumes that the white point associated with * the color specification is the Screen White Point. The * Screen White Point will also be associated with the * returned color specification. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { XcmsCCCRec myCCC; XcmsColor tmp; XcmsColor max_lc; XcmsFloat n_L_star, last_L_star, prev_L_star; XcmsFloat hue, lastuStar, lastvStar, /*lastChroma,*/ maxDist, nT, rFactor; XcmsRGBi rgb_saved; int nCount, nMaxCount; /* * Check Arguments */ if (ccc == NULL || pColor_return == NULL) { return(XcmsFailure); } /* Use my own CCC and inherit screen white Pt */ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat; myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */ while (hue_angle < 0.0) { hue_angle += 360.0; } while (hue_angle >= 360.0) { hue_angle -= 360.0; } hue = radians(hue_angle); tmp.spec.CIELuv.L_star = L_star; tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, START_CHROMA); tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, START_CHROMA); tmp.pixel = pColor_return->pixel; tmp.format = XcmsCIELuvFormat; /* Step 1: compute the maximum L_star and chroma for this hue. */ memcpy((char *)&max_lc, (char *)&tmp, sizeof(XcmsColor)); if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved) == XcmsFailure) { return(XcmsFailure); } /* * Step 2: Do a bisection here to compute the maximum chroma * Note the differences between when the point to be found * is above the maximum LC point and when it is below. */ if (L_star <= max_lc.spec.CIELuv.L_star) { maxDist = max_lc.spec.CIELuv.L_star; } else { maxDist = TOPL - max_lc.spec.CIELuv.L_star; } n_L_star = L_star; last_L_star = -1.0; nMaxCount = MAXBISECTCOUNT; rFactor = 1.0; for (nCount = 0; nCount < nMaxCount; nCount++) { prev_L_star = last_L_star; last_L_star = tmp.spec.CIELuv.L_star; /* lastChroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star, */ /* tmp.spec.CIELuv.v_star); */ lastuStar = tmp.spec.CIELuv.u_star; lastvStar = tmp.spec.CIELuv.v_star; nT = (n_L_star - max_lc.spec.CIELuv.L_star) / maxDist * rFactor; /* printf("(n_L_star, nT) = %lf %lf ", n_L_star, nT); */ if (nT > 0) { tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT; tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT; tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT; } else { tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT); tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT); tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT); } tmp.format = XcmsRGBiFormat; /* convert from RGB to CIELuv */ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } /* * Now check if we've reached the target L_star */ /* printf("result Lstar = %lf\n", tmp.spec.CIELuv.L_star); */ if (tmp.spec.CIELuv.L_star <= L_star + EPS && tmp.spec.CIELuv.L_star >= L_star - EPS) { memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); return(XcmsSuccess); } if (nT > 0) { n_L_star += ((TOPL - n_L_star) * (L_star - tmp.spec.CIELuv.L_star)) / (TOPL - L_star); } else { n_L_star *= L_star / tmp.spec.CIELuv.L_star; } if (tmp.spec.CIELuv.L_star <= prev_L_star + EPS && tmp.spec.CIELuv.L_star >= prev_L_star - EPS) { rFactor *= 0.5; /* selective relaxation employed */ /* printf("rFactor = %lf\n", rFactor); */ } } if (XCMS_FABS(last_L_star - L_star) < XCMS_FABS(tmp.spec.CIELuv.L_star - L_star)) { tmp.spec.CIELuv.u_star = lastuStar; tmp.spec.CIELuv.v_star = lastvStar; /* tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, lastChroma); */ /* tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, lastChroma); */ } tmp.spec.CIELuv.L_star = L_star; memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); return(XcmsSuccess); } libX11-1.8.12/src/xcms/LuvMxLC.c0000644014310600000120000001450714763154126011533 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * * NAME * CIELuvMxVC.c * * DESCRIPTION * Source for the XcmsCIELuvQueryMaxLC() gamut boundary * querying routine. * * DOCUMENTATION * "TekColor Color Management System, System Implementor's Manual" * and * Fred W. Billmeyer & Max Saltzman, "Principles of Color * Technology", John Wily & Sons, Inc, 1981. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /* * DEFINES */ #define MIN(x,y) ((x) > (y) ? (y) : (x)) #define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x)) #define MAX(x,y) ((x) > (y) ? (x) : (y)) #define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z)))) #define START_LSTAR (XcmsFloat)40.0 #define START_CHROMA (XcmsFloat)2.2 /************************************************************************ * * * API PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * _XcmsCIELuvQueryMaxLCRGB - Compute maximum L* and chroma. * * SYNOPSIS */ Status _XcmsCIELuvQueryMaxLCRGB( XcmsCCC ccc, XcmsFloat hue, /* hue in radians */ XcmsColor *pColor_return, XcmsRGBi *pRGB_return) /* * DESCRIPTION * Return the maximum psychometric chroma for a specified * hue angle(radians), and the corresponding L*. This is computed * by a binary search of all possible chromas. An assumption * is made that there are no local maxima. Use the unrounded * Max psychometric chroma because the difference check can be * small. * * NOTE: No local CCC is used because this is a private * routine and all routines that call it are expected * to behave properly, i.e. send a local CCC with * no white adjust function and no gamut compression * function. * * This routine only accepts hue as input and outputs * Luv and RGBi. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { XcmsFloat nSmall, nLarge; XcmsColor tmp; tmp.format = XcmsCIELuvFormat; /* Use some unreachable color on the given hue angle */ tmp.spec.CIELuv.L_star = START_LSTAR; tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, START_CHROMA); tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, START_CHROMA); /* * Convert from Luv to RGB * * Note that the CIEXYZ to RGBi conversion routine must stuff the * out of bounds RGBi values in tmp when the ccc->gamutCompProc * is NULL. */ if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp, ScreenWhitePointOfCCC(ccc), (unsigned int)1, XcmsRGBiFormat, (Bool *) NULL) == XcmsFailure) && tmp.format != XcmsRGBiFormat) { return (XcmsFailure); } /* Now pick the smallest RGB */ nSmall = MIN3(tmp.spec.RGBi.red, tmp.spec.RGBi.green, tmp.spec.RGBi.blue); /* Make the smallest RGB equal to zero */ tmp.spec.RGBi.red -= nSmall; tmp.spec.RGBi.green -= nSmall; tmp.spec.RGBi.blue -= nSmall; /* Now pick the largest RGB */ nLarge = MAX3(tmp.spec.RGBi.red, tmp.spec.RGBi.green, tmp.spec.RGBi.blue); /* Scale the RGB values based on the largest one */ tmp.spec.RGBi.red /= nLarge; tmp.spec.RGBi.green /= nLarge; tmp.spec.RGBi.blue /= nLarge; tmp.format = XcmsRGBiFormat; /* If the calling routine wants RGB value give them the ones used. */ if (pRGB_return) { pRGB_return->red = tmp.spec.RGBi.red; pRGB_return->green = tmp.spec.RGBi.green; pRGB_return->blue = tmp.spec.RGBi.blue; } /* Convert from RGBi to Luv */ if (_XcmsConvertColorsWithWhitePt(ccc, &tmp, ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat, (Bool *) NULL) == XcmsFailure) { return (XcmsFailure); } memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); return (XcmsSuccess); } /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELuvQueryMaxLC - Compute maximum L* and chroma. * * SYNOPSIS */ Status XcmsCIELuvQueryMaxLC ( XcmsCCC ccc, XcmsFloat hue_angle, /* hue angle in degrees */ XcmsColor *pColor_return) /* * DESCRIPTION * Return the point of maximum chroma for the specified * hue angle. * * ASSUMPTIONS * This routine assumes that the white point associated with * the color specification is the Screen White Point. The * Screen White Point will also be associated with the * returned color specification. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { XcmsCCCRec myCCC; /* * Check Arguments */ if (ccc == NULL || pColor_return == NULL) { return(XcmsFailure); } /* Use my own CCC */ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat; myCCC.gamutCompProc = (XcmsCompressionProc)NULL; while (hue_angle < 0.0) { hue_angle += 360.0; } while (hue_angle >= 360.0) { hue_angle -= 360.0; } return(_XcmsCIELuvQueryMaxLCRGB (&myCCC, radians(hue_angle), pColor_return, (XcmsRGBi *)NULL)); } libX11-1.8.12/src/xcms/PrOfId.c0000644014310600000120000000476414763154126011370 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsPrOfId.c * * DESCRIPTION * Source for XcmsPrefixOfFormat() * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /* * NAME * XcmsPrefixOfId * * SYNOPSIS */ char * XcmsPrefixOfFormat( XcmsColorFormat id) /* * DESCRIPTION * Returns the color space prefix for the specified color * space ID if the color space is found in the Color * Conversion Context. * * RETURNS * Returns a color space prefix. * * CAVEATS * Space is allocated for the returned string, therefore, * the application is responsible for freeing (using XFree) * the space. * */ { XcmsColorSpace **papColorSpaces; /* * First try Device-Independent color spaces */ papColorSpaces = _XcmsDIColorSpaces; if (papColorSpaces != NULL) { while (*papColorSpaces != NULL) { if ((*papColorSpaces)->id == id) { return strdup((*papColorSpaces)->prefix); } papColorSpaces++; } } /* * Next try Device-Dependent color spaces */ papColorSpaces = _XcmsDDColorSpaces; if (papColorSpaces != NULL) { while (*papColorSpaces != NULL) { if ((*papColorSpaces)->id == id) { return strdup((*papColorSpaces)->prefix); } papColorSpaces++; } } return(NULL); } libX11-1.8.12/src/xcms/HVCMnV.c0000644014310600000120000001223514763154126011276 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. TekColor is a * trademark of Tektronix, Inc. The term "TekHVC" designates a particular * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent * foreign patents pending). Permission is hereby granted to use, copy, * modify, sell, and otherwise distribute this software and its * documentation for any purpose and without fee, provided that: * * 1. This copyright, permission, and disclaimer notice is reproduced in * all copies of this software and any modification thereof and in * supporting documentation; * 2. Any color-handling application which displays TekHVC color * cooordinates identifies these as TekHVC color coordinates in any * interface that displays these coordinates and in any associated * documentation; * 3. The term "TekHVC" is always used, and is only used, in association * with the mathematical derivations of the TekHVC Color Space, * including those provided in this file and any equivalent pathways and * mathematical derivations, regardless of digital (e.g., floating point * or integer) representation. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * TekHVCMnV.c * * DESCRIPTION * Source for XcmsTekHVCQueryMinV gamut boundary querying routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /* * DEFINES */ #define EPS 0.001 /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsTekHVCQueryMinV - Compute minimum value for hue and chroma * * SYNOPSIS */ Status XcmsTekHVCQueryMinV ( XcmsCCC ccc, XcmsFloat hue, XcmsFloat chroma, XcmsColor *pColor_return) /* * DESCRIPTION * Return the minimum value for a specific hue, and the * corresponding chroma. The input color specification * may be in any format, however output is in XcmsTekHVCFormat. * * Since this routine works with the value within * pColor_return intermediate results may be returned * even though it may be invalid. * * ASSUMPTIONS * This routine assumes that the white point associated with * the color specification is the Screen White Point. The * Screen White Point will also be associated with the * returned color specification. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded with no modifications * */ { XcmsCCCRec myCCC; XcmsColor tmp; XcmsColor max_vc; /* * Check Arguments */ if (ccc == NULL || pColor_return == NULL) { return(XcmsFailure); } /* * Insure TekHVC installed */ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) { return(XcmsFailure); } /* Use my own CCC */ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white pt */ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */ tmp.spec.TekHVC.H = hue; tmp.spec.TekHVC.V = 100.0; tmp.spec.TekHVC.C = chroma; tmp.pixel = pColor_return->pixel; tmp.format = XcmsTekHVCFormat; /* Check for a valid HVC */ if (!_XcmsTekHVC_CheckModify (&tmp)) { return(XcmsFailure); } /* Step 1: compute the maximum value and chroma for this hue. */ /* This copy may be overkill but it preserves the pixel etc. */ memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor)); if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, max_vc.spec.TekHVC.H, &max_vc, (XcmsRGBi *)NULL) == XcmsFailure) { return(XcmsFailure); } /* Step 2: find the intersection with the maximum hvc and chroma line. */ if (tmp.spec.TekHVC.C > max_vc.spec.TekHVC.C + EPS) { /* If the chroma is to large then return maximum hvc. */ tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C; tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V; } else { tmp.spec.TekHVC.V = tmp.spec.TekHVC.C * max_vc.spec.TekHVC.V / max_vc.spec.TekHVC.C; if (tmp.spec.TekHVC.V > max_vc.spec.TekHVC.V) { tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V; } else if (tmp.spec.TekHVC.V < 0.0) { tmp.spec.TekHVC.V = tmp.spec.TekHVC.C = 0.0; } } if (_XcmsTekHVC_CheckModify (&tmp)) { memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor)); return(XcmsSuccess); } else { return(XcmsFailure); } } libX11-1.8.12/src/xcms/HVCMxV.c0000644014310600000120000001771114763154126011314 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. TekColor is a * trademark of Tektronix, Inc. The term "TekHVC" designates a particular * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent * foreign patents pending). Permission is hereby granted to use, copy, * modify, sell, and otherwise distribute this software and its * documentation for any purpose and without fee, provided that: * * 1. This copyright, permission, and disclaimer notice is reproduced in * all copies of this software and any modification thereof and in * supporting documentation; * 2. Any color-handling application which displays TekHVC color * cooordinates identifies these as TekHVC color coordinates in any * interface that displays these coordinates and in any associated * documentation; * 3. The term "TekHVC" is always used, and is only used, in association * with the mathematical derivations of the TekHVC Color Space, * including those provided in this file and any equivalent pathways and * mathematical derivations, regardless of digital (e.g., floating point * or integer) representation. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * TekHVCMxV.c * * DESCRIPTION * Source for the XcmsTekHVCQueryMaxV() gamut boundary * querying routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include #include "Cv.h" /* * DEFINES */ #define MAXBISECTCOUNT 100 #define EPS 0.001 /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsTekHVCQueryMaxV - Compute maximum value for a hue and chroma * * SYNOPSIS */ Status XcmsTekHVCQueryMaxV( XcmsCCC ccc, XcmsFloat hue, XcmsFloat chroma, XcmsColor *pColor_return) /* * DESCRIPTION * Return the maximum value for a specified hue and chroma. * * ASSUMPTIONS * This routine assumes that the white point associated with * the color specification is the Screen White Point. The * Screen White Point will also be associated with the * returned color specification. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded with no modifications * */ { XcmsCCCRec myCCC; XcmsColor tmp; XcmsColor max_vc; XcmsRGBi rgb_saved; int nCount, nMaxCount; XcmsFloat nT, nChroma, savedChroma, lastValue, lastChroma, prevChroma; XcmsFloat rFactor; XcmsFloat ftmp1, ftmp2; /* * Check Arguments */ if (ccc == NULL || pColor_return == NULL) { return(XcmsFailure); } /* * Insure TekHVC installed */ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) { return(XcmsFailure); } /* setup the CCC to use for the conversions. */ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat; myCCC.gamutCompProc = (XcmsCompressionProc) NULL; tmp.spec.TekHVC.H = hue; tmp.spec.TekHVC.V = 0.0; tmp.spec.TekHVC.C = chroma; tmp.pixel = pColor_return->pixel; tmp.format = XcmsTekHVCFormat; if (!_XcmsTekHVC_CheckModify (&tmp)) { return(XcmsFailure); } /* Step 1: compute the maximum value and chroma for this hue. */ /* This copy may be overkill but it preserves the pixel etc. */ memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor)); hue = max_vc.spec.TekHVC.H; if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, max_vc.spec.TekHVC.H, &max_vc, &rgb_saved) == XcmsFailure) { return(XcmsFailure); } if (max_vc.spec.TekHVC.C < tmp.spec.TekHVC.C) { /* * If the chroma is greater than the chroma for the * maximum value/chroma point then the value is the * the value for the maximum value, chroma point. * This is an error but it I return the best approximation I can. * Thus the inconsistency. */ tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C; tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V; memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor)); return(XcmsSuccess); } else if (max_vc.spec.TekHVC.C == tmp.spec.TekHVC.C) { /* * If the chroma is equal to the chroma for the * maximum value/chroma point then the value is the * the value for the maximum value, chroma point. */ tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V; memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor)); return(XcmsSuccess); } else { /* must do a bisection here to compute the maximum value */ /* save the structure input so that any elements that */ /* are not touched are recopied later in the routine. */ nChroma = savedChroma = tmp.spec.TekHVC.C; tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C; tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V; lastChroma = -1.0; lastValue = -1.0; nMaxCount = MAXBISECTCOUNT; rFactor = 1.0; for (nCount = 0; nCount < nMaxCount; nCount++) { prevChroma = lastChroma; lastValue = tmp.spec.TekHVC.V; lastChroma = tmp.spec.TekHVC.C; nT = (1.0 - (nChroma / max_vc.spec.TekHVC.C)) * rFactor; tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT; tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT; tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT; tmp.format = XcmsRGBiFormat; /* convert from RGB to HVC */ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp, &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } /* Now check the return against what is expected */ if (tmp.spec.TekHVC.C <= savedChroma + EPS && tmp.spec.TekHVC.C >= savedChroma - EPS) { tmp.spec.TekHVC.H = hue; /* use the saved hue */ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor)); return(XcmsSuccess); } nChroma += savedChroma - tmp.spec.TekHVC.C; if (nChroma > max_vc.spec.TekHVC.C) { nChroma = max_vc.spec.TekHVC.C; rFactor *= 0.5; /* selective relaxation employed */ } else if (nChroma < 0.0) { /* avoid using fabs */ ftmp1 = lastChroma - savedChroma; if (ftmp1 < 0.0) ftmp1 = -ftmp1; ftmp2 = tmp.spec.TekHVC.C - savedChroma; if (ftmp2 < 0.0) ftmp2 = -ftmp2; if (ftmp1 < ftmp2) { tmp.spec.TekHVC.V = lastValue; tmp.spec.TekHVC.C = lastChroma; } /* make sure to return the input hue */ tmp.spec.TekHVC.H = hue; if (!_XcmsTekHVC_CheckModify(&tmp)) { return(XcmsFailure); } memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor)); return(XcmsSuccess); } else if (tmp.spec.TekHVC.C <= prevChroma + EPS && tmp.spec.TekHVC.C >= prevChroma - EPS) { rFactor *= 0.5; /* selective relaxation employed */ } } if (nCount >= nMaxCount) { /* avoid using fabs */ ftmp1 = lastChroma - savedChroma; if (ftmp1 < 0.0) ftmp1 = -ftmp1; ftmp2 = tmp.spec.TekHVC.C - savedChroma; if (ftmp2 < 0.0) ftmp2 = -ftmp2; if (ftmp1 < ftmp2) { tmp.spec.TekHVC.V = lastValue; tmp.spec.TekHVC.C = lastChroma; } } } /* make sure to return the input hue */ tmp.spec.TekHVC.H = hue; memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor)); return(XcmsSuccess); } libX11-1.8.12/src/xcms/LabGcLC.c0000644014310600000120000001651614763154126011432 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * CIELabGcLC.c * * DESCRIPTION * Source for XcmsCIELabClipLab() gamut * compression function. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include #include "Cv.h" /* * INTERNALS * Internal defines that need NOT be exported to any package or * program using this package. */ #define MAXBISECTCOUNT 100 /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELabClipLab - Return the closest L* and chroma * * SYNOPSIS */ /* ARGSUSED */ Status XcmsCIELabClipLab ( XcmsCCC ccc, XcmsColor *pColors_in_out, unsigned int nColors, unsigned int i, Bool *pCompressed) /* * DESCRIPTION * This routine will find the closest L* and chroma * for a specific hue. The color input is converted to * CIE L*u*v* format and returned as CIE XYZ format. * * Since this routine works with the L* within * pColor_in_out intermediate results may be returned * even though it may be invalid. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { Status retval; XcmsCCCRec myCCC; XcmsColor *pColor; XcmsColor Lab_max; XcmsFloat hue, chroma, maxChroma; XcmsFloat Chroma, bestChroma, Lstar, maxLstar, saveLstar; XcmsFloat bestLstar, bestastar, bestbstar; XcmsFloat nT, saveDist, tmpDist; XcmsRGBi rgb_max; int nCount, nMaxCount, nI, nILast; /* Use my own CCC */ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white */ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */ /* * Color specification passed as input can be assumed to: * 1. Be in XcmsCIEXYZFormat * 2. Already be white point adjusted for the Screen White Point. * This means that the white point now associated with this * color spec is the Screen White Point (even if the * ccc->clientWhitePt differs). */ pColor = pColors_in_out + i; if (ccc->visual->class < StaticColor) { /* * GRAY ! */ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat); _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc), 1, XcmsCIEXYZFormat); if (pCompressed) { *(pCompressed + i) = True; } return(XcmsSuccess); } /* Convert from CIEXYZ to CIELab format */ if (_XcmsDIConvertColors(&myCCC, pColor, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat) == XcmsFailure) { return(XcmsFailure); } /* Step 1: compute the maximum L* and chroma for this hue. */ /* This copy may be overkill but it preserves the pixel etc. */ saveLstar = pColor->spec.CIELab.L_star; hue = XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star, pColor->spec.CIELab.b_star); chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star, pColor->spec.CIELab.b_star); memcpy((char *)&Lab_max, (char *)pColor, sizeof(XcmsColor)); if (_XcmsCIELabQueryMaxLCRGB (&myCCC, hue, &Lab_max, &rgb_max) == XcmsFailure) { return (XcmsFailure); } maxLstar = Lab_max.spec.CIELab.L_star; /* Now check and return the appropriate L* */ if (saveLstar == maxLstar) { /* When the L* input is equal to the maximum L* */ /* merely return the maximum Lab point. */ memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor)); retval = _XcmsDIConvertColors(&myCCC, pColor, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat); } else { /* return the closest point on the hue leaf. */ /* must do a bisection here to compute the delta e. */ maxChroma = XCMS_CIELAB_PMETRIC_CHROMA(Lab_max.spec.CIELab.a_star, Lab_max.spec.CIELab.b_star); nMaxCount = MAXBISECTCOUNT; nI = nMaxCount / 2; bestLstar = Lstar = pColor->spec.CIELab.L_star; bestastar = pColor->spec.CIELab.a_star; bestbstar = pColor->spec.CIELab.b_star; bestChroma = Chroma = chroma; saveDist = XCMS_SQRT(((Chroma - maxChroma) * (Chroma - maxChroma)) + ((Lstar - maxLstar) * (Lstar - maxLstar))); for (nCount = 0; nCount < nMaxCount; nCount++) { nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount; if (saveLstar > maxLstar) { pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT; pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT; pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT; } else { pColor->spec.RGBi.red = rgb_max.red - (rgb_max.red * nT); pColor->spec.RGBi.green = rgb_max.green - (rgb_max.green * nT); pColor->spec.RGBi.blue = rgb_max.blue - (rgb_max.blue * nT); } pColor->format = XcmsRGBiFormat; /* Convert from RGBi to CIE Lab */ if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat, (Bool *) NULL) == XcmsFailure) { return (XcmsFailure); } chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star, pColor->spec.CIELab.b_star); tmpDist = XCMS_SQRT(((Chroma - chroma) * (Chroma - chroma)) + ((Lstar - pColor->spec.CIELab.L_star) * (Lstar - pColor->spec.CIELab.L_star))); nILast = nI; if (tmpDist > saveDist) { nI /= 2; } else { nI = (nMaxCount + nI) / 2; saveDist = tmpDist; bestLstar = pColor->spec.CIELab.L_star; bestastar = pColor->spec.CIELab.a_star; bestbstar = pColor->spec.CIELab.b_star; bestChroma = chroma; } if (nI == nILast || nI == 0) { break; } } if (bestChroma >= maxChroma) { pColor->spec.CIELab.L_star = maxLstar; pColor->spec.CIELab.a_star = Lab_max.spec.CIELab.a_star; pColor->spec.CIELab.b_star = Lab_max.spec.CIELab.b_star; } else { pColor->spec.CIELab.L_star = bestLstar; pColor->spec.CIELab.a_star = bestastar; pColor->spec.CIELab.b_star = bestbstar; } retval = _XcmsDIConvertColors(&myCCC, pColor, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat); if (retval != XcmsFailure && pCompressed != NULL) { *(pCompressed + i) = True; } } return(retval); } libX11-1.8.12/src/xcms/LuvWpAj.c0000644014310600000120000000566214763154126011573 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * CIELuvWpAj.c * * DESCRIPTION * This file contains routine(s) that support white point * adjustment of color specifications in the CIE CIELuv.color * space. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELuvWhiteShiftColors * * SYNOPSIS */ Status XcmsCIELuvWhiteShiftColors( XcmsCCC ccc, XcmsColor *pWhitePtFrom, XcmsColor *pWhitePtTo, XcmsColorFormat destSpecFmt, XcmsColor *pColors_in_out, unsigned int nColors, Bool *pCompressed) /* * DESCRIPTION * Adjusts color specifications in an array of XcmsColor * structures for white point differences. * * RETURNS * XcmsFailure if failed, * XcmsSuccess if succeeded without gamut compression, * XcmsSuccessWithCompression if succeeded with * gamut compression. */ { if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) { return(XcmsFailure); } /* * Convert to CIELuv using pWhitePtFrom * We can ignore return value for compression because we are converting * to XcmsCIELuvFormat which is device-independent, not device-dependent. */ if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom, nColors, XcmsCIELuvFormat, pCompressed) == XcmsFailure) { return(XcmsFailure); } /* * Convert from CIELuv to destSpecFmt using pWhitePtTo */ return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtTo, nColors, destSpecFmt, pCompressed)); } libX11-1.8.12/src/xcms/Xcmsint.h0000644014310600000120000001666114763154126011676 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * DESCRIPTION * Private include file for Color Management System. * (i.e., for API internal use only) * */ #ifndef _XCMSINT_H_ #define _XCMSINT_H_ #include /* * DEFINES */ /* * Private Status Value */ #define _XCMS_NEWNAME -1 /* * Color Space ID's are of XcmsColorFormat type. * * bit 31 * 0 == Device-Independent * 1 == Device-Dependent * * bit 30: * 0 == Registered with X Consortium * 1 == Unregistered */ #define XCMS_DD_ID(id) ((id) & (XcmsColorFormat)0x80000000) #define XCMS_DI_ID(id) (!((id) & (XcmsColorFormat)0x80000000)) #define XCMS_UNREG_ID(id) ((id) & (XcmsColorFormat)0x40000000) #define XCMS_REG_ID(id) (!((id) & (XcmsColorFormat)0x40000000)) #define XCMS_FIRST_REG_DI_ID (XcmsColorFormat)0x00000001 #define XCMS_FIRST_UNREG_DI_ID (XcmsColorFormat)0x40000000 #define XCMS_FIRST_REG_DD_ID (XcmsColorFormat)0x80000000 #define XCMS_FIRST_UNREG_DD_ID (XcmsColorFormat)0xc0000000 /* * TYPEDEFS */ /* * Structure for caching Colormap info. * This is provided for the Xlib modifications to: * XAllocNamedColor() * XLookupColor() * XParseColor() * XStoreNamedColor() */ typedef struct _XcmsCmapRec { Colormap cmapID; Display *dpy; Window windowID; Visual *visual; struct _XcmsCCC *ccc; struct _XcmsCmapRec *pNext; } XcmsCmapRec; /* * Intensity Record (i.e., value / intensity tuple) */ typedef struct _IntensityRec { unsigned short value; XcmsFloat intensity; } IntensityRec; /* * Intensity Table */ typedef struct _IntensityTbl { IntensityRec *pBase; unsigned int nEntries; } IntensityTbl; /* * Structure for storing per-Visual Intensity Tables (aka gamma maps). */ typedef struct _XcmsIntensityMap { VisualID visualID; XPointer screenData; /* pointer to corresponding Screen Color*/ /* Characterization Data */ void (*pFreeScreenData)(XPointer pScreenDataTemp); /* Function that frees a Screen */ /* structure. */ struct _XcmsIntensityMap *pNext; } XcmsIntensityMap; /* * Structure for storing "registered" color space prefix/ID */ typedef struct _XcmsRegColorSpaceEntry { const char *prefix; /* Color Space prefix (e.g., "CIEXYZ:") */ XcmsColorFormat id; /* Color Space ID (e.g., XcmsCIEXYZFormat) */ } XcmsRegColorSpaceEntry; /* * Xcms Per Display (i.e. connection) related data */ typedef struct _XcmsPerDpyInfo { XcmsCCC paDefaultCCC; /* based on default visual of screen */ /* * Pointer to an array of XcmsCCC structures, one for * each screen. */ XcmsCmapRec *pClientCmaps; /* Pointer to linked list of XcmsCmapRec's */ } XcmsPerDpyInfo, *XcmsPerDpyInfoPtr; /* * DEFINES */ #define XDCCC_NUMBER 0x8000000L /* 2**27 per XDCCC */ #ifdef GRAY #define XDCCC_SCREENWHITEPT_ATOM_NAME "XDCCC_GRAY_SCREENWHITEPOINT" #define XDCCC_GRAY_CORRECT_ATOM_NAME "XDCCC_GRAY_CORRECTION" #endif /* GRAY */ #ifndef _ConversionValues typedef struct _ConversionValues { IntensityTbl IntensityTbl; } ConversionValues; #endif #ifdef GRAY typedef struct { IntensityTbl *IntensityTbl; } GRAY_SCCData; #endif /* GRAY */ /* * DEFINES */ #define XDCCC_MATRIX_ATOM_NAME "XDCCC_LINEAR_RGB_MATRICES" #define XDCCC_CORRECT_ATOM_NAME "XDCCC_LINEAR_RGB_CORRECTION" typedef struct { XcmsFloat XYZtoRGBmatrix[3][3]; XcmsFloat RGBtoXYZmatrix[3][3]; IntensityTbl *pRedTbl; IntensityTbl *pGreenTbl; IntensityTbl *pBlueTbl; } LINEAR_RGB_SCCData; /* function prototypes */ extern XcmsCmapRec * _XcmsAddCmapRec( Display *dpy, Colormap cmap, Window windowID, Visual *visual); extern void _XcmsRGB_to_XColor( XcmsColor *pColors, XColor *pXColors, unsigned int nColors); extern Status _XcmsResolveColorString ( XcmsCCC ccc, const char **color_string, XcmsColor *pColor_exact_return, XcmsColorFormat result_format); extern void _XUnresolveColor( XcmsCCC ccc, XColor *pXColor); /* * DESCRIPTION * Include file for defining the math macros used in the * XCMS source. Instead of using math library routines * directly, XCMS uses macros so that based on the * definitions here, vendors and sites can specify exactly * what routine will be called (those from libm.a or their * custom routines). If not defined to math library routines * (e.g., sqrt in libm.a), then the client is not forced to * be linked with -lm. */ #define XCMS_ATAN(x) _XcmsArcTangent(x) #define XCMS_COS(x) _XcmsCosine(x) #define XCMS_CUBEROOT(x) _XcmsCubeRoot(x) #define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x)) #define XCMS_SIN(x) _XcmsSine(x) #define XCMS_SQRT(x) _XcmsSquareRoot(x) #define XCMS_TAN(x) (XCMS_SIN(x) / XCMS_COS(x)) double _XcmsArcTangent(double a); double _XcmsCosine(double a); double _XcmsCubeRoot(double a); double _XcmsSine(double a); double _XcmsSquareRoot(double a); /* * DEFINES FOR GAMUT COMPRESSION AND QUERY ROUTINES */ #ifndef PI # ifdef M_PI # define PI M_PI # else # define PI 3.14159265358979323846264338327950 # endif /* M_PI */ #endif /* PI */ #ifndef degrees # define degrees(r) ((XcmsFloat)(r) * 180.0 / PI) #endif /* degrees */ #ifndef radians # define radians(d) ((XcmsFloat)(d) * PI / 180.0) #endif /* radians */ #define XCMS_CIEUSTAROFHUE(h,c) \ ((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \ ((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT((XCMS_TAN(h) * XCMS_TAN(h)) + \ (XcmsFloat)1.0))) #define XCMS_CIEVSTAROFHUE(h,c) \ ((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \ ((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT(((XcmsFloat)1.0 / \ (XcmsFloat)(XCMS_TAN(h) * XCMS_TAN(h))) + (XcmsFloat)1.0))) /* this hue is returned in radians */ #define XCMS_CIELUV_PMETRIC_HUE(u,v) \ (((u) != 0.0) ? XCMS_ATAN( (v) / (u)) : ((v >= 0.0) ? PI / 2 : -(PI / 2))) #define XCMS_CIELUV_PMETRIC_CHROMA(u,v) XCMS_SQRT(((u)*(u)) + ((v)*(v))) #define XCMS_CIEASTAROFHUE(h,c) XCMS_CIEUSTAROFHUE((h), (c)) #define XCMS_CIEBSTAROFHUE(h,c) XCMS_CIEVSTAROFHUE((h), (c)) #define XCMS_CIELAB_PMETRIC_HUE(a,b) XCMS_CIELUV_PMETRIC_HUE((a), (b)) #define XCMS_CIELAB_PMETRIC_CHROMA(a,b) XCMS_CIELUV_PMETRIC_CHROMA((a), (b)) #endif /* _XCMSINT_H_ */ libX11-1.8.12/src/xcms/StCol.c0000644014310600000120000000461614763154126011265 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsStCol.c * * DESCRIPTION * Source for XcmsStoreColor * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsStoreColor - Store Color * * SYNOPSIS */ Status XcmsStoreColor( Display *dpy, Colormap colormap, XcmsColor *pColor_in) /* * DESCRIPTION * Given a device-dependent or device-independent color * specification, this routine will convert it to X RGB * values then use it in a call to XStoreColor. * * RETURNS * XcmsFailure if failed; * XcmsSuccess if it succeeded without gamut compression; * XcmsSuccessWithCompression if it succeeded with gamut * compression; * * Since XStoreColor has no return value this routine * does not return the color specification of the color actually * stored. */ { XcmsColor tmpColor; tmpColor = *pColor_in; return(_XcmsSetGetColor(XStoreColor, dpy, colormap, &tmpColor, XcmsRGBFormat, (Bool *) NULL)); } libX11-1.8.12/src/xcms/cmsColNm.c0000644014310600000120000005772214763154126011762 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * XcmsColNm.c * * DESCRIPTION * Source for _XcmsLookupColorName(). * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include #include #include #include #include #define XK_LATIN1 #include #include "Cv.h" /* forwards/locals */ static Status LoadColornameDB(void); /* * LOCAL DEFINES * #define declarations local to this package. */ #ifndef XCMSDB #define XCMSDB XCMSDIR "/Xcms.txt" #endif #ifndef isgraph # define isgraph(c) (isprint((c)) && !isspace((c))) #endif #ifndef XCMSDB_MAXLINELEN # define XCMSDB_MAXLINELEN 256 #endif #define FORMAT_VERSION "0.1" #define START_TOKEN "XCMS_COLORDB_START" #define END_TOKEN "XCMS_COLORDB_END" #define DELIM_CHAR '\t' #define NOT_VISITED 0x0 #define VISITED 0x1 #define CYCLE 0xFFFF #define XcmsDbInitNone -1 #define XcmsDbInitFailure 0 #define XcmsDbInitSuccess 1 /* * LOCAL TYPEDEFS */ typedef struct _XcmsPair { const char *first; const char *second; int flag; } XcmsPair; /* * LOCAL VARIABLES */ static int XcmsColorDbState = XcmsDbInitNone; static int nEntries; static char *strings; static XcmsPair *pairs; static const char whitePtStr[] = "WhitePoint"; /************************************************************************ * * * PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * _XcmsColorSpaceOfString * * SYNOPSIS */ static XcmsColorSpace * _XcmsColorSpaceOfString( XcmsCCC ccc, const char *color_string) /* * DESCRIPTION * Returns a pointer to the color space structure * (XcmsColorSpace) associated with the specified color string. * * RETURNS * Pointer to matching XcmsColorSpace structure if found; * otherwise NULL. * * CAVEATS * */ { XcmsColorSpace **papColorSpaces; size_t n; char *pchar; if ((pchar = strchr(color_string, ':')) == NULL) { return(XcmsFailure); } n = (size_t)(pchar - color_string); if (ccc == NULL) { return(NULL); } /* * First try Device-Independent color spaces */ papColorSpaces = _XcmsDIColorSpaces; if (papColorSpaces != NULL) { while (*papColorSpaces != NULL) { if (strncmp((*papColorSpaces)->prefix, color_string, n) == 0 && !((*papColorSpaces)->prefix)[n]) { return(*papColorSpaces); } papColorSpaces++; } } /* * Next try Device-Dependent color spaces */ papColorSpaces = ((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->DDColorSpaces; if (papColorSpaces != NULL) { while (*papColorSpaces != NULL) { if (strncmp((*papColorSpaces)->prefix, color_string, n) == 0 && !((*papColorSpaces)->prefix)[n]) { return(*papColorSpaces); } papColorSpaces++; } } return(NULL); } /* * NAME * _XcmsParseColorString * * SYNOPSIS */ static int _XcmsParseColorString( XcmsCCC ccc, const char *color_string, XcmsColor *pColor) /* * DESCRIPTION * Assuming color_string contains a numerical string color * specification, attempts to parse a string into an * XcmsColor structure. * * RETURNS * 0 if failed; otherwise non-zero. * * CAVEATS * A color string containing a numerical color specification * must be in ISO Latin-1 encoding! */ { XcmsColorSpace *pColorSpace; char string_buf[64]; char *string_lowered; size_t len; int res; if (ccc == NULL) { return(0); } /* * While copying color_string to string_lowered, convert to lowercase */ if ((len = strlen(color_string)) >= sizeof(string_buf)) { string_lowered = Xmalloc(len+1); if (string_lowered == NULL) return(XcmsFailure); } else { string_lowered = string_buf; } _XcmsCopyISOLatin1Lowered(string_lowered, color_string); if (*string_lowered == '#') { if ((pColorSpace = _XcmsColorSpaceOfString(ccc, "rgb:")) != NULL) { res = (*pColorSpace->parseString)(string_lowered, pColor); if (len >= sizeof(string_buf)) Xfree(string_lowered); return res; } } if ((pColorSpace = _XcmsColorSpaceOfString(ccc, string_lowered)) != NULL) { res = (*pColorSpace->parseString)(string_lowered, pColor); if (len >= sizeof(string_buf)) Xfree(string_lowered); return res; } if (len >= sizeof(string_buf)) Xfree(string_lowered); return(0); } /* * NAME * FirstCmp - Compare color names of pair recs * * SYNOPSIS */ static int FirstCmp(const void *p1, const void *p2) /* * DESCRIPTION * Compares the color names of XcmsColorTuples. * * RETURNS * 0 if equal; * < 0 if first precedes second, * > 0 if first succeeds second. * */ { return(strcmp(((const XcmsPair *)p1)->first, ((const XcmsPair *)p2)->first)); } /* * NAME * stringSectionSize - determine memory needed for strings * * SYNOPSIS */ static void SetNoVisit(void) /* * DESCRIPTION * * RETURNS * void * */ { int i; XcmsPair *pair = pairs; for (i = 0; i < nEntries; i++, pair++) { if (pair->flag != CYCLE) { pair->flag = NOT_VISITED; } } } /* * NAME * field2 - extract two fields * * SYNOPSIS */ static int field2( char *pBuf, char delim, /* in: field delimiter */ char **p1, /* in/out: pointer to pointer to field 1 */ char **p2) /* in/out: pointer to pointer to field 2 */ /* * DESCRIPTION * Extracts two fields from a "record". * * RETURNS * XcmsSuccess if succeeded, otherwise XcmsFailure. * */ { *p1 = *p2 = NULL; /* Find Field 1 */ while (!isgraph(*pBuf)) { if ((*pBuf == '\n') || (*pBuf == '\0')) { return(XcmsFailure); } if (isspace(*pBuf) || (*pBuf == delim)) { pBuf++; } } *p1 = pBuf; /* Find end of Field 2 */ while (isprint(*pBuf) && (*pBuf != delim)) { pBuf++; } if ((*pBuf == '\n') || (*pBuf == '\0')) { return(XcmsFailure); } if ((*pBuf == ' ') || (*pBuf == delim)) { *pBuf++ = '\0'; /* stuff end of string character */ } else { return(XcmsFailure); } /* Find Field 2 */ while (!isgraph(*pBuf)) { if ((*pBuf == '\n') || (*pBuf == '\0')) { return(XcmsFailure); } if (isspace(*pBuf) || (*pBuf == delim)) { pBuf++; } } *p2 = pBuf; /* Find end of Field 2 */ while (isprint(*pBuf) && (*pBuf != delim)) { pBuf++; } if (*pBuf != '\0') { *pBuf = '\0'; /* stuff end of string character */ } return(XcmsSuccess); } /* * NAME * _XcmsLookupColorName - Lookup DB entry for a color name * * SYNOPSIS */ static Status _XcmsLookupColorName( XcmsCCC ccc, const char **name, XcmsColor *pColor) /* * DESCRIPTION * Searches for an entry in the Device-Independent Color Name * Database for the specified string. * * RETURNS * XcmsFailure if failed to find a matching entry in * the database. * XcmsSuccess if succeeded in converting color name to * XcmsColor. * _XCMS_NEWNAME if succeeded in converting color string (which * is a color name to yet another color name. Note * that the new name is passed back via 'name'. */ { Status retval = 0; char name_lowered_64[64]; char *name_lowered; register int i, j, left, right; int len; const char *tmpName; XcmsPair *pair = NULL; /* * Check state of Database: * XcmsDbInitNone * XcmsDbInitSuccess * XcmsDbInitFailure */ if (XcmsColorDbState == XcmsDbInitFailure) { return(XcmsFailure); } if (XcmsColorDbState == XcmsDbInitNone) { if (!LoadColornameDB()) { return(XcmsFailure); } } SetNoVisit(); /* * While copying name to name_lowered, convert to lowercase */ tmpName = *name; Retry: if ((len = (int)strlen(tmpName)) > 63) { name_lowered = Xmalloc(len+1); if (name_lowered == NULL) return(XcmsFailure); } else { name_lowered = name_lowered_64; } _XcmsCopyISOLatin1Lowered(name_lowered, tmpName); /* * Now, remove spaces. */ for (i = 0, j = 0; j < len; j++) { if (!isspace(name_lowered[j])) { name_lowered[i++] = name_lowered[j]; } } name_lowered[i] = '\0'; left = 0; right = nEntries - 1; while (left <= right) { i = (left + right) >> 1; pair = &pairs[i]; j = strcmp(name_lowered, pair->first); if (j < 0) right = i - 1; else if (j > 0) left = i + 1; else { break; } } if (len > 63) Xfree(name_lowered); if (left > right) { if (retval == 2) { if (*name != tmpName) { *name = tmpName; } return(_XCMS_NEWNAME); } return(XcmsFailure); } if (pair->flag == CYCLE) { return(XcmsFailure); } if (pair->flag == VISITED) { pair->flag = CYCLE; return(XcmsFailure); } if (_XcmsParseColorString(ccc, pair->second, pColor) == XcmsSuccess) { /* f2 contains a numerical string specification */ return(XcmsSuccess); } else { /* f2 does not contain a numerical string specification */ tmpName = pair->second; pair->flag = VISITED; retval = 2; goto Retry; } } /* * NAME * RemoveSpaces * * SYNOPSIS */ static int RemoveSpaces( char *pString) /* * DESCRIPTION * Removes spaces from string. * * RETURNS * Void * */ { int i, count = 0; char *cptr; /* REMOVE SPACES */ cptr = pString; for (i = (int)strlen(pString); i; i--, cptr++) { if (!isspace(*cptr)) { *pString++ = *cptr; count++; } } *pString = '\0'; return(count); } /* * NAME * stringSectionSize - determine memory needed for strings * * SYNOPSIS */ static int stringSectionSize( FILE *stream, int *pNumEntries, int *pSectionSize) /* * DESCRIPTION * Determines the amount of memory required to store the * color name strings and also the number of strings. * * RETURNS * XcmsSuccess if succeeded, otherwise XcmsFailure. * */ { char buf[XCMSDB_MAXLINELEN]; char token[XCMSDB_MAXLINELEN]; char token2[XCMSDB_MAXLINELEN]; char *pBuf; char *f1; char *f2; size_t i; unsigned int numEntries = 0; unsigned int sectionSize = 0; *pNumEntries = 0; *pSectionSize = 0; /* * Advance to START_TOKEN * Anything before is just considered as comments. */ while((pBuf = fgets(buf, XCMSDB_MAXLINELEN, stream)) != NULL) { if ((sscanf(buf, "%s %s", token, token2)) && (strcmp(token, START_TOKEN) == 0)) { if (strcmp(token2, FORMAT_VERSION) != 0) { /* text file not in the right format */ return(XcmsFailure); } break; } /* else it was just a blank line or comment */ } if (pBuf == NULL) { return(XcmsFailure); } while((fgets(buf, XCMSDB_MAXLINELEN, stream)) != NULL) { if ((sscanf(buf, "%s", token)) && (strcmp(token, END_TOKEN) == 0)) { break; } if (field2(buf, DELIM_CHAR, &f1, &f2) != XcmsSuccess) { return(XcmsFailure); } numEntries++; if (numEntries >= INT_MAX) return(XcmsFailure); i = strlen(f1); if (i >= INT_MAX - sectionSize) return(XcmsFailure); sectionSize += i + 1; for (; i; i--, f1++) { /* REMOVE SPACES FROM COUNT */ if (isspace(*f1)) { sectionSize--; } } i = strlen(f2); if (i >= INT_MAX - sectionSize) return(XcmsFailure); sectionSize += i + 1; for (; i; i--, f2++) { /* REMOVE SPACES FROM COUNT */ if (isspace(*f2)) { sectionSize--; } } } *pNumEntries = (int) numEntries; *pSectionSize = (int) sectionSize; return(XcmsSuccess); } /* * NAME * ReadColornameDB - Read the Color Name Database * * SYNOPSIS */ static Status ReadColornameDB( FILE *stream, XcmsPair *pRec, char *pString) /* * DESCRIPTION * Loads the Color Name Database from a text file. * * RETURNS * XcmsSuccess if succeeded, otherwise XcmsFailure. * */ { char buf[XCMSDB_MAXLINELEN]; char token[XCMSDB_MAXLINELEN]; char token2[XCMSDB_MAXLINELEN]; char *f1; char *f2; char *pBuf; /* * Advance to START_TOKEN * Anything before is just considered as comments. */ while((pBuf = fgets(buf, XCMSDB_MAXLINELEN, stream)) != NULL) { if ((sscanf(buf, "%s %s", token, token2)) && (strcmp(token, START_TOKEN) == 0)) { if (strcmp(token2, FORMAT_VERSION) != 0) { /* text file not in the right format */ return(XcmsFailure); } break; } /* else it was just a blank line or comment */ } if (pBuf == NULL) { return(XcmsFailure); } /* * Process lines between START_TOKEN to END_TOKEN */ while ((fgets(buf, XCMSDB_MAXLINELEN, stream)) != NULL) { if ((sscanf(buf, "%s", token)) && (strcmp(token, END_TOKEN) == 0)) { /* * Found END_TOKEN so break out of for loop */ break; } /* * Get pairs */ if (field2(buf, DELIM_CHAR, &f1, &f2) != XcmsSuccess) { /* Invalid line */ continue; } /* * Add strings */ /* Left String */ pRec->first = pString; _XcmsCopyISOLatin1Lowered(pString, f1); pString += (1 + RemoveSpaces(pString)); pRec->second = pString; /* Right String */ _XcmsCopyISOLatin1Lowered(pString, f2); pString += RemoveSpaces(pString) + 1; pRec++; } return(XcmsSuccess); } /* * NAME * LoadColornameDB - Load the Color Name Database * * SYNOPSIS */ static Status LoadColornameDB(void) /* * DESCRIPTION * Loads the Color Name Database from a text file. * * RETURNS * XcmsSuccess if succeeded, otherwise XcmsFailure. * */ { int size; FILE *stream; const char *pathname; struct stat txt; int length; /* use and name of this env var is not part of the standard */ /* implementation-dependent feature */ if ((pathname = getenv("XCMSDB")) == NULL) { pathname = XCMSDB; } length = (int)strlen(pathname); if ((length == 0) || (length >= (BUFSIZ - 5))){ XcmsColorDbState = XcmsDbInitFailure; return(XcmsFailure); } if (stat(pathname, &txt)) { /* can't stat file */ XcmsColorDbState = XcmsDbInitFailure; return(XcmsFailure); } if ((stream = _XFopenFile (pathname, "r")) == NULL) { /* can't open file */ XcmsColorDbState = XcmsDbInitFailure; return(XcmsFailure); } if (stringSectionSize(stream, &nEntries, &size) != XcmsSuccess || nEntries == 0) { (void) fclose(stream); XcmsColorDbState = XcmsDbInitFailure; return(XcmsFailure); } rewind(stream); strings = Xmalloc(size); pairs = Xcalloc(nEntries, sizeof(XcmsPair)); if (strings == NULL || pairs == NULL) { free(strings); free(pairs); (void) fclose(stream); XcmsColorDbState = XcmsDbInitFailure; return(XcmsFailure); } ReadColornameDB(stream, pairs, strings); (void) fclose(stream); /* * sort the pair recs */ qsort((char *)pairs, nEntries, sizeof(XcmsPair), FirstCmp); XcmsColorDbState = XcmsDbInitSuccess; return(XcmsSuccess); } /************************************************************************ * * * API PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * _XcmsCopyISOLatin1Lowered * * SYNOPSIS */ void _XcmsCopyISOLatin1Lowered( char *dst, const char *src) /* * DESCRIPTION * ISO Latin-1 case conversion routine * Identical to XmuCopyISOLatin1Lowered() but provided here * to eliminate need to link with libXmu.a. * * IMPLEMENTORS NOTE: * This routine is also used in XcmsFormatOfPrefix. * * RETURNS * Void * */ { register unsigned char *dest; register const unsigned char *source; for (dest = (unsigned char *)dst, source = (const unsigned char *)src; *source; source++, dest++) { if ((*source >= XK_A) && (*source <= XK_Z)) *dest = *source + (XK_a - XK_A); else if ((*source >= XK_Agrave) && (*source <= XK_Odiaeresis)) *dest = *source + (XK_agrave - XK_Agrave); else if ((*source >= XK_Ooblique) && (*source <= XK_Thorn)) *dest = *source + (XK_oslash - XK_Ooblique); else *dest = *source; } *dest = '\0'; } /* * NAME * _XcmsResolveColorString - * * SYNOPSIS */ Status _XcmsResolveColorString ( XcmsCCC ccc, const char **color_string, XcmsColor *pColor_exact_return, XcmsColorFormat result_format) /* * DESCRIPTION * The XcmsLookupColor function finds the color specification * associated with a color name in the Device-Independent Color * Name Database. * RETURNS * XcmsFailure if failed to convert valid color string. * XcmsSuccess if succeeded in converting color string to * XcmsColor. * _XCMS_NEWNAME if failed to parse the string or find it in * the database, or if succeeded in looking it up and * found another name which is not in the database. * Note that the new name is returned in color_string. * * This function returns both the color specification found in the * database (db specification) and the color specification for the * color displayable by the specified screen (screen * specification). The calling routine sets the format for these * returned specifications in the XcmsColor format component. * If XcmsUndefinedFormat, the specification is returned in the * format used to store the color in the database. */ { XcmsColor dbWhitePt; /* whitePt associated with pColor_exact_return*/ /* the screen's white point */ XcmsColor *pClientWhitePt; int retval; const char *strptr = whitePtStr; /* * 0. Check for invalid arguments. */ if (ccc == NULL || (*color_string)[0] == '\0' || pColor_exact_return == NULL) { return(XcmsFailure); } /* * 1. First attempt to parse the string * If successful, then convert the specification to the target format * and return. */ if (_XcmsParseColorString(ccc, *color_string, pColor_exact_return) == 1) { if (result_format != XcmsUndefinedFormat && pColor_exact_return->format != result_format) { /* need to be converted to the target format */ return(XcmsConvertColors(ccc, pColor_exact_return, 1, result_format, (Bool *)NULL)); } else { return(XcmsSuccess); } } /* * 2. Attempt to find it in the DI Color Name Database */ /* * a. Convert String into a XcmsColor structure * Attempt to extract the specification for color_string from the * DI Database (pColor_exact_return). If the DI Database does not * have this entry, then return failure. */ retval = _XcmsLookupColorName(ccc, color_string, pColor_exact_return); if (retval != XcmsSuccess) { /* color_string replaced with a color name, or not found */ return(_XCMS_NEWNAME); } if (pColor_exact_return->format == XcmsUndefinedFormat) { return(XcmsFailure); } /* * b. If result_format not defined, then assume target format * is the exact format. */ if (result_format == XcmsUndefinedFormat) { result_format = pColor_exact_return->format; } if ((ClientWhitePointOfCCC(ccc))->format == XcmsUndefinedFormat) { pClientWhitePt = ScreenWhitePointOfCCC(ccc); } else { pClientWhitePt = ClientWhitePointOfCCC(ccc); } /* * c. Convert to the target format, making adjustments for white * point differences as necessary. */ if (XCMS_DD_ID(pColor_exact_return->format)) { /* * The spec format is Device-Dependent, therefore assume the * its white point is the Screen White Point. */ if (XCMS_DD_ID(result_format)) { /* * Target format is Device-Dependent * Therefore, DD --> DD conversion */ return(_XcmsDDConvertColors(ccc, pColor_exact_return, 1, result_format, (Bool *) NULL)); } else { /* * Target format is Device-Independent * Therefore, DD --> DI conversion */ if (ccc->whitePtAdjProc && !_XcmsEqualWhitePts(ccc, pClientWhitePt, ScreenWhitePointOfCCC(ccc))) { return((*ccc->whitePtAdjProc)(ccc, ScreenWhitePointOfCCC(ccc), pClientWhitePt, result_format, pColor_exact_return, 1, (Bool *) NULL)); } else { if (_XcmsDDConvertColors(ccc, pColor_exact_return, 1, XcmsCIEXYZFormat, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } return(_XcmsDIConvertColors(ccc, pColor_exact_return, pClientWhitePt, 1, result_format)); } } } else { /* * The spec format is Device-Independent, therefore attempt * to find a database white point. * * If the Database does not have a white point, then assume the * database white point is the same as the Screen White Point. */ if (_XcmsLookupColorName(ccc, &strptr, &dbWhitePt) != 1) { memcpy((char *)&dbWhitePt, (char *)&ccc->pPerScrnInfo->screenWhitePt, sizeof(XcmsColor)); } if (XCMS_DD_ID(result_format)) { /* * Target format is Device-Dependent * Therefore, DI --> DD conversion */ if (ccc->whitePtAdjProc && !_XcmsEqualWhitePts(ccc, &dbWhitePt, ScreenWhitePointOfCCC(ccc))) { return((*ccc->whitePtAdjProc)(ccc, &dbWhitePt, ScreenWhitePointOfCCC(ccc), result_format, pColor_exact_return, 1, (Bool *)NULL)); } else { if (pColor_exact_return->format != XcmsCIEXYZFormat) { if (_XcmsDIConvertColors(ccc, pColor_exact_return, &dbWhitePt, 1, XcmsCIEXYZFormat) == XcmsFailure) { return(XcmsFailure); } } return (_XcmsDDConvertColors(ccc, pColor_exact_return, 1, result_format, (Bool *)NULL)); } } else { /* * Target format is Device-Independent * Therefore, DI --> DI conversion */ if (ccc->whitePtAdjProc && !_XcmsEqualWhitePts(ccc, &dbWhitePt, pClientWhitePt)) { /* * The calling routine wants to resolve this color * in terms if it's white point (i.e. Client White Point). * Therefore, apply white adjustment for the displacement * between dbWhitePt to clientWhitePt. */ return((*ccc->whitePtAdjProc)(ccc, &dbWhitePt, pClientWhitePt, result_format, pColor_exact_return, 1, (Bool *)NULL)); } else if (_XcmsEqualWhitePts(ccc, &dbWhitePt, pClientWhitePt)) { /* * Can use either dbWhitePt or pClientWhitePt to * convert to the result_format. */ if (pColor_exact_return->format == result_format) { return(XcmsSuccess); } else { return (_XcmsDIConvertColors(ccc, pColor_exact_return, &dbWhitePt, 1, result_format)); } } else { /* * Need to convert to a white point independent color * space (let's choose CIEXYZ) then convert to the * target color space. Why? Lets assume that * pColor_exact_return->format and result format * are white point dependent format (e.g., CIELUV, CIELAB, * TekHVC ... same or any combination). If so, we'll * need to convert the color with dbWhitePt to an absolute * spec (i.e. non-white point dependent) then convert that * absolute value with clientWhitePt to the result_format. */ if (pColor_exact_return->format != XcmsCIEXYZFormat) { if (_XcmsDIConvertColors(ccc, pColor_exact_return, &dbWhitePt, 1, XcmsCIEXYZFormat) == XcmsFailure) { return(XcmsFailure); } } if (result_format == XcmsCIEXYZFormat) { return(XcmsSuccess); } else { return(_XcmsDIConvertColors(ccc, pColor_exact_return, pClientWhitePt, 1, result_format)); } } } } } libX11-1.8.12/src/xcms/CCC.c0000644014310600000120000001730414763154126010627 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsCCC.c - Color Conversion Context Routines * * DESCRIPTION * Routines to create, access, and free Color Conversion * Context structures. * * */ /* Copyright 1994, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /************************************************************************ * * * PUBLIC INTERFACES * * * ************************************************************************/ /* * NAME * XcmsCreateCCC * * SYNOPSIS */ XcmsCCC XcmsCreateCCC( Display *dpy, int screenNumber, Visual *visual, XcmsColor *clientWhitePt, XcmsCompressionProc gamutCompProc, XPointer gamutCompClientData, XcmsWhiteAdjustProc whitePtAdjProc, XPointer whitePtAdjClientData) /* * DESCRIPTION * Given a Display, Screen, Visual, etc., this routine creates * an appropriate Color Conversion Context. * * RETURNS * Returns NULL if failed; otherwise address of the newly * created XcmsCCC. * */ { XcmsCCC pDefaultCCC = XcmsDefaultCCC(dpy, screenNumber); XcmsCCC newccc; XcmsIntensityMap *pIMap; XcmsPerScrnInfo *pNewScrnInfo; if (pDefaultCCC == NULL || !(newccc = Xcalloc(1, sizeof(XcmsCCCRec)))) { return(NULL); } /* * Should inherit the following as result of a memmove(): * dpy * screenNumber * pPerScrnInfo */ memcpy((char *)newccc, (char *)pDefaultCCC, sizeof(XcmsCCCRec)); if (clientWhitePt) { memcpy((char *)&newccc->clientWhitePt, (char *)clientWhitePt, sizeof(XcmsColor)); } if (gamutCompProc) { newccc->gamutCompProc = gamutCompProc; } if (gamutCompClientData) { newccc->gamutCompClientData = gamutCompClientData; } if (whitePtAdjProc) { newccc->whitePtAdjProc = whitePtAdjProc; } if (whitePtAdjClientData) { newccc->whitePtAdjClientData = whitePtAdjClientData; } /* * Now check our list of per-Visual Intensity tables. * If one exists replace the pPerScrnInfo. */ if ((pIMap = _XcmsGetIntensityMap(dpy, visual)) != NULL) { if (!(pNewScrnInfo = Xcalloc(1, sizeof(XcmsPerScrnInfo)))) { Xfree(newccc); return(NULL); } memcpy((char *)pNewScrnInfo, (char *)newccc->pPerScrnInfo, sizeof(XcmsPerScrnInfo)); pNewScrnInfo->screenData = pIMap->screenData; newccc->pPerScrnInfo = pNewScrnInfo; } /* * Set visual component */ newccc->visual = visual; return(newccc); } /* * NAME * XcmsDefaultCCC * * SYNOPSIS */ XcmsCCC XcmsDefaultCCC( Display *dpy, int screenNumber) /* * DESCRIPTION * Given a Display and Screen, this routine creates * returns the Screen's default Color Conversion Context. * Note that a Screen's default CCC is built with the * screen default visual. * * RETURNS * Returns NULL if failed; otherwise address of the * XcmsCCC for the Screen's default CCC. * */ { XcmsCCC ccc; if ((screenNumber < 0) || (screenNumber >= ScreenCount(dpy))) { return((XcmsCCC)NULL); } /* * Check if the XcmsCCC's for each screen has been created */ if ((XcmsCCC)dpy->cms.defaultCCCs == NULL) { if (!_XcmsInitDefaultCCCs(dpy)) { return((XcmsCCC)NULL); } } ccc = (XcmsCCC)dpy->cms.defaultCCCs + screenNumber; if (!ccc->pPerScrnInfo) { /* * Need to create the XcmsPerScrnInfo structure. The * _XcmsInitScrnInfo routine will create the XcmsPerScrnInfo * structure as well as initialize its functionSet and pScreenData * components. */ if (!_XcmsInitScrnInfo(dpy, screenNumber)) { return((XcmsCCC)NULL); } return(ccc); } else { /* * If ccc->pPerScrnInfo->state == XcmsInitSuccess, * then the pPerScrnInfo component has already been initialized * therefore, just return ccc. * If ccc->pPerScrnInfo->state == XcmsInitFailure, * then this means that we already attempted to initialize * the pPerScrnInfo component but failed therefore stuffing * the pPerScrnInfo component with defaults. Just return ccc. * If ccc->pPerScrnInfo->state == XcmsInitNone, * then attempt to initialize the pPerScrnInfo component. */ switch (ccc->pPerScrnInfo->state) { case XcmsInitFailure : /* fall through */ case XcmsInitSuccess : return(ccc); case XcmsInitNone : /* XcmsPerScreenInfo has not been initialized */ if (!_XcmsInitScrnInfo(dpy, screenNumber)) { return((XcmsCCC)NULL); } return(ccc); default : return((XcmsCCC)NULL); } } } /* * NAME * XcmsFreeCCC * * SYNOPSIS */ void XcmsFreeCCC(XcmsCCC ccc) /* * DESCRIPTION * Frees memory associated with a Color Conversion Context * that was created with XcmsCreateCCC(). * * RETURNS * void * */ { if (ccc->dpy->cms.defaultCCCs && ccc == ((XcmsCCC)ccc->dpy->cms.defaultCCCs) + ccc->screenNumber) { /* do not allow clients to free DefaultCCC's */ return; } /* * Note that XcmsPerScrnInfo sub-structures are freed here only if * they are for visuals that have per-Visual intensity tables. * Otherwise the XcmsPerScrnInfo structure is being shared! * For the latter, there is only one allocated per Screen and it just * so happens * that we place its initial reference is placed in the * default CCC. The routine _XcmsFreeDefaultCCCs frees them. */ if (_XcmsGetIntensityMap(ccc->dpy, ccc->visual) != NULL) { Xfree(ccc->pPerScrnInfo); } Xfree(ccc); } libX11-1.8.12/src/xcms/XYZ.c0000644014310600000120000001134114763154126010724 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * * NAME * CIEXYZ.c * * DESCRIPTION * CIE XYZ Color Space * * */ #ifdef HAVE_CONFIG_H #include #endif #include #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" #include /* sscanf */ /* * DEFINES * Internal definitions that need NOT be exported to any package * or program using this package. */ #ifdef DBL_EPSILON # define XMY_DBL_EPSILON DBL_EPSILON #else # define XMY_DBL_EPSILON 0.00001 #endif /* * FORWARD DECLARATIONS */ static int CIEXYZ_ParseString(register char *spec, XcmsColor *pColor); /* * LOCALS VARIABLES */ static XcmsConversionProc Fl_CIEXYZ_to_CIEXYZ[] = { NULL }; /* * GLOBALS * Variables declared in this package that are allowed * to be used globally. */ /* * CIE XYZ Color Space */ XcmsColorSpace XcmsCIEXYZColorSpace = { _XcmsCIEXYZ_prefix, /* prefix */ XcmsCIEXYZFormat, /* id */ CIEXYZ_ParseString, /* parseString */ Fl_CIEXYZ_to_CIEXYZ, /* to_CIEXYZ */ Fl_CIEXYZ_to_CIEXYZ, /* from_CIEXYZ */ 1 }; /************************************************************************ * * * PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * CIEXYZ_ParseString * * SYNOPSIS */ static int CIEXYZ_ParseString( register char *spec, XcmsColor *pColor) /* * DESCRIPTION * This routines takes a string and attempts to convert * it into a XcmsColor structure with XcmsCIEXYZFormat. * The assumed CIEXYZ string syntax is: * CIEXYZ:// * Where X, Y, and Z are in string input format for floats * consisting of: * a. an optional sign * b. a string of numbers possibly containing a decimal point, * c. an optional exponent field containing an 'E' or 'e' * followed by a possibly signed integer string. * * RETURNS */ { size_t n; char *pchar; if ((pchar = strchr(spec, ':')) == NULL) { return(XcmsFailure); } n = (size_t)(pchar - spec); /* * Check for proper prefix. */ if (strncmp(spec, _XcmsCIEXYZ_prefix, n) != 0) { return(XcmsFailure); } /* * Attempt to parse the value portion. */ if (sscanf(spec + n + 1, "%lf/%lf/%lf", &pColor->spec.CIEXYZ.X, &pColor->spec.CIEXYZ.Y, &pColor->spec.CIEXYZ.Z) != 3) { char *s; /* Maybe failed due to locale */ int f; if ((s = strdup(spec))) { for (f = 0; s[f]; ++f) if (s[f] == '.') s[f] = ','; else if (s[f] == ',') s[f] = '.'; if (sscanf(s + n + 1, "%lf/%lf/%lf", &pColor->spec.CIEXYZ.X, &pColor->spec.CIEXYZ.Y, &pColor->spec.CIEXYZ.Z) != 3) { free(s); return(XcmsFailure); } free(s); } else return(XcmsFailure); } pColor->format = XcmsCIEXYZFormat; pColor->pixel = 0; return(_XcmsCIEXYZ_ValidSpec(pColor)); } /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELab_ValidSpec * * SYNOPSIS */ Status _XcmsCIEXYZ_ValidSpec( XcmsColor *pColor) /* * DESCRIPTION * Checks if color specification valid for CIE XYZ * * RETURNS * XcmsFailure if invalid, * XcmsSuccess if valid. * */ { if (pColor->format != XcmsCIEXYZFormat || (pColor->spec.CIEXYZ.Y < 0.0 - XMY_DBL_EPSILON) || (pColor->spec.CIEXYZ.Y > 1.0 + XMY_DBL_EPSILON)) { return(XcmsFailure); } return(XcmsSuccess); } libX11-1.8.12/src/xcms/SetGetCols.c0000644014310600000120000001677514763154126012266 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsSetGet.c * * DESCRIPTION * Source for _XcmsSetGetColors() * * */ /* * EXTERNAL INCLUDES * Include files that must be exported to any package or * program using this package. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /************************************************************************ * * * API PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * XcmsSetColor - * * SYNOPSIS */ Status _XcmsSetGetColor( Status (*xColorProc)( Display* /* display */, Colormap /* colormap */, XColor* /* screen_in_out */), Display *dpy, Colormap cmap, XcmsColor *pColors_in_out, XcmsColorFormat result_format, Bool *pCompressed) /* * DESCRIPTION * Routine containing code common to: * XcmsAllocColor * XcmsQueryColor * XcmsStoreColor * * RETURNS * XcmsFailure if failed; * XcmsSuccess if it succeeded without gamut compression; * XcmsSuccessWithCompression if it succeeded with gamut * compression; */ { XcmsCCC ccc; XColor XColors_in_out; Status retval = XcmsSuccess; /* * Argument Checking * 1. Assume xColorProc is correct * 2. Insure ccc not NULL * 3. Assume cmap correct (should be checked by Server) * 4. Insure pColors_in_out valid * 5. Assume method_in is valid (should be checked by Server) */ if (dpy == NULL) { return(XcmsFailure); } if (result_format == XcmsUndefinedFormat) { return(XcmsFailure); } if ( !((*xColorProc == XAllocColor) || (*xColorProc == XStoreColor) || (*xColorProc == XQueryColor)) ) { return(XcmsFailure); } if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) { return(XcmsFailure); } if (*xColorProc == XQueryColor) { goto Query; } /* * Convert to RGB, adjusting for white point differences if necessary. */ if ((retval = XcmsConvertColors(ccc, pColors_in_out, 1, XcmsRGBFormat, pCompressed)) == XcmsFailure) { return(XcmsFailure); } Query: /* * Convert XcmsColor to XColor structures */ _XcmsRGB_to_XColor(pColors_in_out, &XColors_in_out, 1); /* * Now make appropriate X Call */ if (*xColorProc == XAllocColor) { if ((*xColorProc)(ccc->dpy, cmap, &XColors_in_out) == 0) { return(XcmsFailure); } } else if ((*xColorProc == XQueryColor) || (*xColorProc == XStoreColor)) { /* Note: XQueryColor and XStoreColor do not return any Status */ (*xColorProc)(ccc->dpy, cmap, &XColors_in_out); } else { return(XcmsFailure); } if ((*xColorProc == XStoreColor)) { return(retval); } /* * Now, convert the returned XColor (i.e., rgb) to XcmsColor structures */ _XColor_to_XcmsRGB(ccc, &XColors_in_out, pColors_in_out, 1); /* * Then, convert XcmsColor structures to the original specification * format. Note that we must use NULL instead of passing * pCompressed. */ if (result_format != XcmsRGBFormat) { if (XcmsConvertColors(ccc, pColors_in_out, 1, result_format, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } } return(retval); } /* * NAME * XcmsSetColors - * * SYNOPSIS */ Status _XcmsSetGetColors( Status (*xColorProc)( Display* /* display */, Colormap /* colormap */, XColor* /* screen_in_out */, int /* nColors */), Display *dpy, Colormap cmap, XcmsColor *pColors_in_out, int nColors, XcmsColorFormat result_format, Bool *pCompressed) /* * DESCRIPTION * Routine containing code common to: * XcmsQueryColors * XcmsStoreColors * * RETURNS * XcmsFailure if failed; * XcmsSuccess if it succeeded without gamut compression; * XcmsSuccessWithCompression if it succeeded with gamut * compression; */ { XcmsCCC ccc; XColor *pXColors_in_out; Status retval = XcmsSuccess; /* * Argument Checking * 1. Assume xColorProc is correct * 2. Insure ccc not NULL * 3. Assume cmap correct (should be checked by Server) * 4. Insure pColors_in_out valid * 5. Assume method_in is valid (should be checked by Server) * 6. Insure nColors > 0 */ if (dpy == NULL) { return(XcmsFailure); } if (nColors == 0) { return(XcmsSuccess); } if (result_format == XcmsUndefinedFormat) { return(XcmsFailure); } if ( !((*xColorProc == XStoreColors) || (*xColorProc == XQueryColors)) ) { return(XcmsFailure); } if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) { return(XcmsFailure); } /* * Allocate space for XColors */ if ((pXColors_in_out = Xcalloc(nColors, sizeof(XColor))) == NULL) { return(XcmsFailure); } if (*xColorProc == XQueryColors) { goto Query; } /* * Convert to RGB, adjusting for white point differences if necessary. */ if ((retval = XcmsConvertColors(ccc, pColors_in_out, nColors, XcmsRGBFormat, pCompressed)) == XcmsFailure) { Xfree(pXColors_in_out); return(XcmsFailure); } Query: /* * Convert XcmsColor to XColor structures */ _XcmsRGB_to_XColor(pColors_in_out, pXColors_in_out, nColors); /* * Now make appropriate X Call */ if ((*xColorProc == XQueryColors) || (*xColorProc == XStoreColors)){ /* Note: XQueryColors and XStoreColors do not return any Status */ (*xColorProc)(ccc->dpy, cmap, pXColors_in_out, nColors); } else { Xfree(pXColors_in_out); return(XcmsFailure); } if (*xColorProc == XStoreColors) { Xfree(pXColors_in_out); return(retval); } /* * Now, convert the returned XColor (i.e., rgb) to XcmsColor structures */ _XColor_to_XcmsRGB(ccc, pXColors_in_out, pColors_in_out, nColors); Xfree(pXColors_in_out); /* * Then, convert XcmsColor structures to the original specification * format. Note that we must use NULL instead of passing * pCompressed. */ if (result_format != XcmsRGBFormat) { if (XcmsConvertColors(ccc, pColors_in_out, nColors, result_format, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } } return(retval); } /* ### EOF ### */ libX11-1.8.12/src/xcms/HVCMxVC.c0000644014310600000120000001551314763154126011415 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. TekColor is a * trademark of Tektronix, Inc. The term "TekHVC" designates a particular * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent * foreign patents pending). Permission is hereby granted to use, copy, * modify, sell, and otherwise distribute this software and its * documentation for any purpose and without fee, provided that: * * 1. This copyright, permission, and disclaimer notice is reproduced in * all copies of this software and any modification thereof and in * supporting documentation; * 2. Any color-handling application which displays TekHVC color * cooordinates identifies these as TekHVC color coordinates in any * interface that displays these coordinates and in any associated * documentation; * 3. The term "TekHVC" is always used, and is only used, in association * with the mathematical derivations of the TekHVC Color Space, * including those provided in this file and any equivalent pathways and * mathematical derivations, regardless of digital (e.g., floating point * or integer) representation. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * TekHVCMxVC.c * * DESCRIPTION * Source for the XcmsTekHVCQueryMaxVC() gamut boundary * querying routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /* * DEFINES */ #define MIN(x,y) ((x) > (y) ? (y) : (x)) #define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x)) #define MAX(x,y) ((x) > (y) ? (x) : (y)) #define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z)))) #define START_V 40.0 #define START_C 120.0 /************************************************************************ * * * API PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * _XcmsTekHVCQueryMaxVCRGB - Compute maximum value/chroma. * * SYNOPSIS */ Status _XcmsTekHVCQueryMaxVCRGB( XcmsCCC ccc, XcmsFloat hue, XcmsColor *pColor_return, XcmsRGBi *pRGB_return) /* * DESCRIPTION * Return the maximum chroma for a specified hue, and the * corresponding value. This is computed by a binary search of * all possible chromas. An assumption is made that there are * no local maxima. Use the unrounded Max Chroma because * the difference check can be small. * * NOTE: No local CCC is used because this is a private * routine and all routines that call it are expected * to behave properly, i.e. send a local CCC with * no white adjust function and no gamut compression * function. * * This routine only accepts hue as input and outputs * HVC's and RGBi's. * * RETURNS * XcmsFailure - Failure * XCMS_SUCCUSS - Succeeded * */ { XcmsFloat nSmall, nLarge; XcmsColor tmp; tmp.format = XcmsTekHVCFormat; tmp.spec.TekHVC.H = hue; /* Use some unreachable color on the given hue */ tmp.spec.TekHVC.V = START_V; tmp.spec.TekHVC.C = START_C; /* * Convert from HVC to RGB * * Note that the CIEXYZ to RGBi conversion routine must stuff the * out of bounds RGBi values in tmp when the ccc->gamutCompProc * is NULL. */ if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsRGBiFormat, (Bool *) NULL) == XcmsFailure) && tmp.format != XcmsRGBiFormat) { return (XcmsFailure); } /* Now pick the smallest RGB */ nSmall = MIN3(tmp.spec.RGBi.red, tmp.spec.RGBi.green, tmp.spec.RGBi.blue); /* Make the smallest RGB equal to zero */ tmp.spec.RGBi.red -= nSmall; tmp.spec.RGBi.green -= nSmall; tmp.spec.RGBi.blue -= nSmall; /* Now pick the largest RGB */ nLarge = MAX3(tmp.spec.RGBi.red, tmp.spec.RGBi.green, tmp.spec.RGBi.blue); /* Scale the RGB values based on the largest one */ tmp.spec.RGBi.red /= nLarge; tmp.spec.RGBi.green /= nLarge; tmp.spec.RGBi.blue /= nLarge; tmp.format = XcmsRGBiFormat; /* If the calling routine wants RGB value give them the ones used. */ if (pRGB_return) { pRGB_return->red = tmp.spec.RGBi.red; pRGB_return->green = tmp.spec.RGBi.green; pRGB_return->blue = tmp.spec.RGBi.blue; } /* Convert from RGBi to HVC */ if (_XcmsConvertColorsWithWhitePt(ccc, &tmp, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat, (Bool *) NULL) == XcmsFailure) { return (XcmsFailure); } /* make sure to return the input hue */ tmp.spec.TekHVC.H = hue; memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); return (XcmsSuccess); } /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsTekHVCQueryMaxVC - Compute maximum value and chroma. * * SYNOPSIS */ Status XcmsTekHVCQueryMaxVC ( XcmsCCC ccc, XcmsFloat hue, XcmsColor *pColor_return) /* * DESCRIPTION * Return the maximum chroma for the specified hue, and the * corresponding value. * * ASSUMPTIONS * This routine assumes that the white point associated with * the color specification is the Screen White Point. The * Screen White Point will also be associated with the * returned color specification. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { XcmsCCCRec myCCC; /* * Check Arguments */ if (ccc == NULL || pColor_return == NULL) { return(XcmsFailure); } /* * Insure TekHVC installed */ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) { return(XcmsFailure); } /* Use my own CCC */ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat; myCCC.gamutCompProc = (XcmsCompressionProc)NULL; while (hue < 0.0) { hue += 360.0; } while (hue >= 360.0) { hue -= 360.0; } return(_XcmsTekHVCQueryMaxVCRGB (&myCCC, hue, pColor_return, (XcmsRGBi *)NULL)); } libX11-1.8.12/src/xcms/Cv.h0000644014310600000120000001115714763154126010614 #ifndef _CV_H_ #define _CV_H_ /* variables */ extern const char _XcmsCIEXYZ_prefix[]; extern const char _XcmsCIEuvY_prefix[]; extern const char _XcmsCIExyY_prefix[]; extern const char _XcmsCIELab_prefix[]; extern const char _XcmsCIELuv_prefix[]; extern const char _XcmsTekHVC_prefix[]; extern const char _XcmsRGBi_prefix[]; extern const char _XcmsRGB_prefix[]; extern XcmsColorSpace XcmsUNDEFINEDColorSpace; extern XcmsColorSpace XcmsTekHVCColorSpace; extern XcmsColorSpace XcmsCIEXYZColorSpace; extern XcmsColorSpace XcmsCIEuvYColorSpace; extern XcmsColorSpace XcmsCIExyYColorSpace; extern XcmsColorSpace XcmsCIELabColorSpace; extern XcmsColorSpace XcmsCIELuvColorSpace; extern XcmsColorSpace XcmsRGBColorSpace; extern XcmsColorSpace XcmsRGBiColorSpace; extern XcmsColorSpace *_XcmsDIColorSpacesInit[]; extern XcmsColorSpace **_XcmsDIColorSpaces; extern XcmsColorSpace *_XcmsDDColorSpacesInit[]; extern XcmsColorSpace **_XcmsDDColorSpaces; extern XcmsFunctionSet XcmsLinearRGBFunctionSet; extern XcmsFunctionSet *_XcmsSCCFuncSetsInit[]; extern XcmsFunctionSet **_XcmsSCCFuncSets; extern XcmsRegColorSpaceEntry _XcmsRegColorSpaces[]; /* functions */ extern XPointer * _XcmsCopyPointerArray( XPointer *pap); extern void _XcmsFreePointerArray( XPointer *pap); extern XPointer * _XcmsPushPointerArray( XPointer *pap, XPointer p, XPointer *papNoFree); extern Status _XcmsCIEXYZ_ValidSpec( XcmsColor *pColor); extern Status _XcmsCIEuvY_ValidSpec( XcmsColor *pColor); extern int _XcmsTekHVC_CheckModify( XcmsColor *pColor); extern Status _XcmsTekHVCQueryMaxVCRGB( XcmsCCC ccc, XcmsFloat hue, XcmsColor *pColor_return, XcmsRGBi *pRGB_return); extern Status _XcmsCIELabQueryMaxLCRGB( XcmsCCC ccc, XcmsFloat hue, /* hue in radians */ XcmsColor *pColor_return, XcmsRGBi *pRGB_return); extern Status _XcmsConvertColorsWithWhitePt( XcmsCCC ccc, XcmsColor *pColors_in_out, XcmsColor *pWhitePt, unsigned int nColors, XcmsColorFormat newFormat, Bool *pCompressed); extern Status _XcmsDIConvertColors( XcmsCCC ccc, XcmsColor *pColors_in_out, XcmsColor *pWhitePt, unsigned int nColors, XcmsColorFormat newFormat); extern Status _XcmsDDConvertColors( XcmsCCC ccc, XcmsColor *pColors_in_out, unsigned int nColors, XcmsColorFormat newFormat, Bool *pCompressed); extern XcmsColorFormat _XcmsRegFormatOfPrefix( _Xconst char *prefix); extern void _XColor_to_XcmsRGB( XcmsCCC ccc, XColor *pXColors, XcmsColor *pColors, unsigned int nColors); extern Status _XcmsSetGetColor( Status (*xColorProc)( Display* /* display */, Colormap /* colormap */, XColor* /* screen_in_out */), Display *dpy, Colormap cmap, XcmsColor *pColors_in_out, XcmsColorFormat result_format, Bool *pCompressed); extern Status _XcmsSetGetColors( Status (*xColorProc)( Display* /* display */, Colormap /* colormap */, XColor* /* screen_in_out */, int /* nColors */), Display *dpy, Colormap cmap, XcmsColor *pColors_in_out, int nColors, XcmsColorFormat result_format, Bool *pCompressed); extern Status _XcmsCIELuvQueryMaxLCRGB( XcmsCCC ccc, XcmsFloat hue, /* hue in radians */ XcmsColor *pColor_return, XcmsRGBi *pRGB_return); extern XcmsIntensityMap * _XcmsGetIntensityMap( Display *dpy, Visual *visual); extern int _XcmsInitDefaultCCCs( Display *dpy); extern int _XcmsInitScrnInfo( register Display *dpy, int screenNumber); extern XcmsCmapRec * _XcmsCopyCmapRecAndFree( Display *dpy, Colormap src_cmap, Colormap copy_cmap); extern void _XcmsCopyISOLatin1Lowered( char *dst, const char *src); extern int _XcmsEqualWhitePts( XcmsCCC ccc, XcmsColor *pWhitePt1, XcmsColor *pWhitePt2); extern int _XcmsLRGB_InitScrnDefault( Display *dpy, int screenNumber, XcmsPerScrnInfo *pPerScrnInfo); extern void _XcmsFreeIntensityMaps( Display *dpy); extern int _XcmsGetProperty( Display *pDpy, Window w, Atom property, int *pFormat, unsigned long *pNItems, unsigned long *pNBytes, char **pValue); extern unsigned long _XcmsGetElement( int format, char **pValue, unsigned long *pCount); extern void _XcmsUnresolveColor( XcmsCCC ccc, XcmsColor *pColor); extern void _XcmsResolveColor( XcmsCCC ccc, XcmsColor *pXcmsColor); #endif /* _CV_H_ */ libX11-1.8.12/src/xcms/QBlue.c0000644014310600000120000000460314763154126011245 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsQBlue.c - Query Blue * * DESCRIPTION * Routine to obtain a color specification for full * blue intensity and zero red and green intensities. * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcms.h" /************************************************************************ * * * PUBLIC INTERFACES * * * ************************************************************************/ /* * NAME * XcmsQueryBlue * * SYNOPSIS */ Status XcmsQueryBlue( XcmsCCC ccc, XcmsColorFormat target_format, XcmsColor *pColor_ret) /* * DESCRIPTION * Returns the color specification in the target format for * full intensity blue and zero intensity red and green. * * RETURNS * Returns XcmsSuccess, if failed; otherwise XcmsFailure * */ { XcmsColor tmp; tmp.format = XcmsRGBiFormat; tmp.pixel = 0; tmp.spec.RGBi.red = 0.0; tmp.spec.RGBi.green = 0.0; tmp.spec.RGBi.blue = 1.0; if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) { return(XcmsFailure); } memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor)); return(XcmsSuccess); } libX11-1.8.12/src/xcms/cmsInt.c0000644014310600000120000002173414763154126011476 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsInt.c - Xcms API utility routines * * DESCRIPTION * Xcms Application Program Interface (API) utility * routines for hanging information directly onto * the Display structure. * * */ #ifdef HAVE_CONFIG_H #include #endif #include #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" #include "reallocarray.h" #ifndef XCMSCOMPPROC # define XCMSCOMPPROC XcmsTekHVCClipC #endif /* forward/static */ static void _XcmsFreeDefaultCCCs(Display *dpy); /************************************************************************ * * * API PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * _XcmsCopyPointerArray * * SYNOPSIS */ XPointer * _XcmsCopyPointerArray( XPointer *pap) /* * DESCRIPTION * Copies an array of NULL terminated pointers. * * RETURNS * Returns NULL if failed; otherwise the address to * the copy. * */ { XPointer *newArray; char **tmp; int n; for (tmp = pap, n = 0; *tmp != NULL; tmp++, n++); n++; /* add 1 to include the NULL pointer */ if ((newArray = Xmallocarray(n, sizeof(XPointer)))) { memcpy((char *)newArray, (char *)pap, (unsigned)(n * sizeof(XPointer))); } return((XPointer *)newArray); } /* * NAME * _XcmsFreePointerArray * * SYNOPSIS */ void _XcmsFreePointerArray( XPointer *pap) /* * DESCRIPTION * Frees an array of NULL terminated pointers. * * RETURNS * void * */ { Xfree(pap); } /* * NAME * _XcmsPushPointerArray * * SYNOPSIS */ XPointer * _XcmsPushPointerArray( XPointer *pap, XPointer p, XPointer *papNoFree) /* * DESCRIPTION * Places the specified pointer at the head of an array of NULL * terminated pointers. * * RETURNS * Returns NULL if failed; otherwise the address to * the head of the array. * */ { XPointer *newArray; char **tmp; int n; for (tmp = pap, n = 0; *tmp != NULL; tmp++, n++); /* add 2: 1 for the new pointer and another for the NULL pointer */ n += 2; if ((newArray = Xmallocarray(n, sizeof(XPointer)))) { memcpy((char *)(newArray+1),(char *)pap, (unsigned)((n-1) * sizeof(XPointer))); *newArray = p; } if (pap != papNoFree) { _XcmsFreePointerArray(pap); } return((XPointer *)newArray); } /* * NAME * _XcmsInitDefaultCCCs * * SYNOPSIS */ int _XcmsInitDefaultCCCs( Display *dpy) /* * DESCRIPTION * Initializes the Xcms per Display Info structure * (XcmsPerDpyInfo). * * RETURNS * Returns 0 if failed; otherwise non-zero. * */ { int nScrn = ScreenCount(dpy); int i; XcmsCCC ccc; if (nScrn <= 0) { return(0); } /* * Create an array of XcmsCCC structures, one for each screen. * They serve as the screen's default CCC. */ if (!(ccc = Xcalloc((unsigned)nScrn, sizeof(XcmsCCCRec)))) { return(0); } dpy->cms.defaultCCCs = (XPointer)ccc; dpy->free_funcs->defaultCCCs = _XcmsFreeDefaultCCCs; for (i = 0; i < nScrn; i++, ccc++) { ccc->dpy = dpy; ccc->screenNumber = i; ccc->visual = DefaultVisual(dpy, i); /* * Used calloc to allocate memory so: * ccc->clientWhitePt->format == XcmsUndefinedFormat * ccc->gamutCompProc == NULL * ccc->whitePtAdjProc == NULL * ccc->pPerScrnInfo = NULL * * Don't need to create XcmsPerScrnInfo and its functionSet and * pScreenData components until the default CCC is accessed. * Note that the XcmsDefaultCCC routine calls _XcmsInitScrnInto * to do this. */ ccc->gamutCompProc = XCMSCOMPPROC; } return(1); } /* * NAME * _XcmsFreeDefaultCCCs - Free Default CCCs and its PerScrnInfo * * SYNOPSIS */ static void _XcmsFreeDefaultCCCs( Display *dpy) /* * DESCRIPTION * This routine frees the default XcmsCCC's associated with * each screen and its associated substructures as necessary. * * RETURNS * void * * */ { int nScrn = ScreenCount(dpy); XcmsCCC ccc; int i; /* * Free Screen data in each DefaultCCC * Do not use XcmsFreeCCC here because it will not free * DefaultCCC's. */ ccc = (XcmsCCC)dpy->cms.defaultCCCs; for (i = nScrn; i--; ccc++) { /* * Check if XcmsPerScrnInfo exists. * * This is the only place where XcmsPerScrnInfo structures * are freed since there is only one allocated per Screen. * It just so happens that we place its reference in the * default CCC. */ if (ccc->pPerScrnInfo) { /* Check if SCCData exists */ if (ccc->pPerScrnInfo->state != XcmsInitNone && ccc->pPerScrnInfo->screenData) { (*((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->screenFreeProc) (ccc->pPerScrnInfo->screenData); } Xfree(ccc->pPerScrnInfo); } } /* * Free the array of XcmsCCC structures */ Xfree(dpy->cms.defaultCCCs); dpy->cms.defaultCCCs = (XPointer)NULL; } /* * NAME * _XcmsInitScrnInfo * * SYNOPSIS */ int _XcmsInitScrnInfo( register Display *dpy, int screenNumber) /* * DESCRIPTION * Given a display and screen number, this routine attempts * to initialize the Xcms per Screen Info structure * (XcmsPerScrnInfo). * * RETURNS * Returns zero if initialization failed; non-zero otherwise. */ { XcmsFunctionSet **papSCCFuncSet = _XcmsSCCFuncSets; XcmsCCC defaultccc; /* * Check if the XcmsCCC's for each screen has been created. * Really don't need to be created until some routine uses the Xcms * API routines. */ if ((XcmsCCC)dpy->cms.defaultCCCs == NULL) { if (!_XcmsInitDefaultCCCs(dpy)) { return(0); } } defaultccc = (XcmsCCC)dpy->cms.defaultCCCs + screenNumber; /* * For each SCCFuncSet, try its pInitScrnFunc. * If the function succeeds, then we got it! */ if (!defaultccc->pPerScrnInfo) { /* * This is one of two places where XcmsPerScrnInfo structures * are allocated. There is one allocated per Screen that is * shared among visuals that do not have specific intensity * tables. Other XcmsPerScrnInfo structures are created * for the latter (see XcmsCreateCCC). The ones created * here are referenced by the default CCC. */ if (!(defaultccc->pPerScrnInfo = Xcalloc(1, sizeof(XcmsPerScrnInfo)))) { return(0); } defaultccc->pPerScrnInfo->state = XcmsInitNone; } while (*papSCCFuncSet != NULL) { if ((*(*papSCCFuncSet)->screenInitProc)(dpy, screenNumber, defaultccc->pPerScrnInfo)) { defaultccc->pPerScrnInfo->state = XcmsInitSuccess; return(1); } papSCCFuncSet++; } /* * Use Default SCCData */ return(_XcmsLRGB_InitScrnDefault(dpy, screenNumber, defaultccc->pPerScrnInfo)); } /* * NAME * _XcmsFreeIntensityMaps * * SYNOPSIS */ void _XcmsFreeIntensityMaps( Display *dpy) /* * DESCRIPTION * Frees all XcmsIntensityMap structures in the linked list * and sets dpy->cms.perVisualIntensityMaps to NULL. * * RETURNS * void * */ { XcmsIntensityMap *pNext, *pFree; pNext = (XcmsIntensityMap *)dpy->cms.perVisualIntensityMaps; while (pNext != NULL) { pFree = pNext; pNext = pNext->pNext; (*pFree->pFreeScreenData)(pFree->screenData); /* Now free the XcmsIntensityMap structure */ Xfree(pFree); } dpy->cms.perVisualIntensityMaps = (XPointer)NULL; } /* * NAME * _XcmsGetIntensityMap * * SYNOPSIS */ XcmsIntensityMap * _XcmsGetIntensityMap( Display *dpy, Visual *visual) /* * DESCRIPTION * Attempts to return a per-Visual intensity map. * * RETURNS * Pointer to the XcmsIntensityMap structure if found; * otherwise NULL * */ { VisualID targetID = visual->visualid; XcmsIntensityMap *pNext; pNext = (XcmsIntensityMap *)dpy->cms.perVisualIntensityMaps; while (pNext != NULL) { if (targetID == pNext->visualID) { return(pNext); } pNext = pNext->pNext; } return((XcmsIntensityMap *)NULL); } libX11-1.8.12/src/xcms/LabGcC.c0000644014310600000120000000733414763154126011314 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * CIELabGcC.c * * DESCRIPTION * Source for XcmsCIELabClipuv() gamut compression routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELabClipab - Reduce the chroma for a hue and L* * * SYNOPSIS */ /* ARGSUSED */ Status XcmsCIELabClipab ( XcmsCCC ccc, XcmsColor *pColors_in_out, unsigned int nColors, unsigned int i, Bool *pCompressed) /* * DESCRIPTION * Reduce the Chroma for a specific hue and chroma to * to bring the given color into the gamut of the * specified device. As required of gamut compression * functions, this routine returns pColor_in_out * in XcmsCIEXYZFormat on successful completion. * * Since this routine works with the L* within * pColor_in_out intermediate results may be returned * even though it may be invalid. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { Status retval; XcmsColor *pColor; /* * Color specification passed as input can be assumed to: * 1. Be in XcmsCIEXYZFormat * 2. Already be white point adjusted for the Screen White Point. * This means that the white point now associated with this * color spec is the Screen White Point (even if the * ccc->clientWhitePt differs). */ pColor = pColors_in_out + i; if (ccc->visual->class < PseudoColor) { /* * GRAY ! */ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat); _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc), 1, XcmsCIEXYZFormat); if (pCompressed) { *(pCompressed + i) = True; } return(XcmsSuccess); } else { if (pColor->format != XcmsCIELabFormat) { if (_XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIELabFormat) == XcmsFailure) { return(XcmsFailure); } } if (XcmsCIELabQueryMaxC(ccc, degrees(XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star, pColor->spec.CIELab.b_star)), pColor->spec.CIELab.L_star, pColor) == XcmsFailure) { return(XcmsFailure); } retval = _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat); if (retval != XcmsFailure && pCompressed != NULL) { *(pCompressed + i) = True; } return(retval); } } libX11-1.8.12/src/xcms/xyY.c0000644014310600000120000002321514763154126011026 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * CIExyY.c * * DESCRIPTION * This file contains routines that support the CIE xyY * color space to include conversions to and from the CIE * XYZ space. * * DOCUMENTATION * "TekColor Color Management System, System Implementor's Manual" */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /* * DEFINES */ #define EPS 0.00001 /* some extremely small number */ #ifdef DBL_EPSILON # define XMY_DBL_EPSILON DBL_EPSILON #else # define XMY_DBL_EPSILON 0.00001 #endif /* * FORWARD DECLARATIONS */ static int CIExyY_ParseString(register char *spec, XcmsColor *pColor); static Status XcmsCIExyY_ValidSpec(XcmsColor *pColor); /* * LOCAL VARIABLES */ /* * NULL terminated list of functions applied to get from CIExyY to CIEXYZ */ static XcmsConversionProc Fl_CIExyY_to_CIEXYZ[] = { XcmsCIExyYToCIEXYZ, NULL }; /* * NULL terminated list of functions applied to get from CIEXYZ to CIExyY */ static XcmsConversionProc Fl_CIEXYZ_to_CIExyY[] = { XcmsCIEXYZToCIExyY, NULL }; /* * GLOBALS */ /* * CIE xyY Color Space */ XcmsColorSpace XcmsCIExyYColorSpace = { _XcmsCIExyY_prefix, /* prefix */ XcmsCIExyYFormat, /* id */ CIExyY_ParseString, /* parseString */ Fl_CIExyY_to_CIEXYZ, /* to_CIEXYZ */ Fl_CIEXYZ_to_CIExyY, /* from_CIEXYZ */ 1 }; /************************************************************************ * * * PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * CIExyY_ParseString * * SYNOPSIS */ static int CIExyY_ParseString( register char *spec, XcmsColor *pColor) /* * DESCRIPTION * This routines takes a string and attempts to convert * it into a XcmsColor structure with XcmsCIExyYFormat. * The assumed CIExyY string syntax is: * CIExyY:// * Where x, y, and Y are in string input format for floats * consisting of: * a. an optional sign * b. a string of numbers possibly containing a decimal point, * c. an optional exponent field containing an 'E' or 'e' * followed by a possibly signed integer string. * * RETURNS * 0 if failed, non-zero otherwise. */ { int n; char *pchar; if ((pchar = strchr(spec, ':')) == NULL) { return(XcmsFailure); } n = (int)(pchar - spec); /* * Check for proper prefix. */ if (strncmp(spec, _XcmsCIExyY_prefix, (size_t)n) != 0) { return(XcmsFailure); } /* * Attempt to parse the value portion. */ if (sscanf(spec + n + 1, "%lf/%lf/%lf", &pColor->spec.CIExyY.x, &pColor->spec.CIExyY.y, &pColor->spec.CIExyY.Y) != 3) { char *s; /* Maybe failed due to locale */ int f; if ((s = strdup(spec))) { for (f = 0; s[f]; ++f) if (s[f] == '.') s[f] = ','; else if (s[f] == ',') s[f] = '.'; if (sscanf(s + n + 1, "%lf/%lf/%lf", &pColor->spec.CIExyY.x, &pColor->spec.CIExyY.y, &pColor->spec.CIExyY.Y) != 3) { free(s); return(XcmsFailure); } free(s); } else return(XcmsFailure); } pColor->format = XcmsCIExyYFormat; pColor->pixel = 0; return(XcmsCIExyY_ValidSpec(pColor)); } /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * CIExyY_ValidSpec() * * SYNOPSIS */ static Status XcmsCIExyY_ValidSpec( XcmsColor *pColor) /* * DESCRIPTION * Checks a valid CIExyY color specification. * * RETURNS * XcmsFailure if invalid. * XcmsSuccess if valid. * */ { if (pColor->format != XcmsCIExyYFormat || (pColor->spec.CIExyY.x < 0.0 - XMY_DBL_EPSILON) || (pColor->spec.CIExyY.x > 1.0 + XMY_DBL_EPSILON) || (pColor->spec.CIExyY.y < 0.0 - XMY_DBL_EPSILON) || (pColor->spec.CIExyY.y > 1.0 + XMY_DBL_EPSILON) || (pColor->spec.CIExyY.Y < 0.0 - XMY_DBL_EPSILON) || (pColor->spec.CIExyY.Y > 1.0 + XMY_DBL_EPSILON)) { return(XcmsFailure); } return(XcmsSuccess); } /* * NAME * XcmsCIExyYToCIEXYZ - convert CIExyY to CIEXYZ * * SYNOPSIS */ Status XcmsCIExyYToCIEXYZ( XcmsCCC ccc, XcmsColor *pxyY_WhitePt, XcmsColor *pColors_in_out, unsigned int nColors) /* * DESCRIPTION * Converts color specifications in an array of XcmsColor * structures from CIExyY format to CIEXYZ format. * * RETURNS * XcmsFailure if failed, * XcmsSuccess if succeeded. */ { XcmsColor *pColor = pColors_in_out; XcmsColor whitePt; XcmsCIEXYZ XYZ_return; XcmsFloat div; /* temporary storage in case divisor is zero */ XcmsFloat u, v, x, y, z; /* temporary storage */ unsigned int i; /* * Check arguments */ if (pxyY_WhitePt == NULL || pColors_in_out == NULL) { return(XcmsFailure); } /* * Now convert each XcmsColor structure to CIEXYZ form */ for (i = 0; i < nColors; i++, pColor++) { /* Make sure original format is CIExyY and valid */ if (!XcmsCIExyY_ValidSpec(pColor)) { return(XcmsFailure); } if ((div = (-2 * pColor->spec.CIExyY.x) + (12 * pColor->spec.CIExyY.y) + 3) == 0.0) { /* Note that the divisor is zero */ /* This return is abitrary. */ XYZ_return.X = 0; XYZ_return.Y = 0; XYZ_return.Z = 0; } else { /* * Make sure white point is in CIEXYZ form */ if (pxyY_WhitePt->format != XcmsCIEXYZFormat) { /* Make copy of the white point because we're going to modify it */ memcpy((char *)&whitePt, (char *)pxyY_WhitePt, sizeof(XcmsColor)); if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1, XcmsCIEXYZFormat)) { return(XcmsFailure); } pxyY_WhitePt = &whitePt; } /* Make sure it is a white point, i.e., Y == 1.0 */ if (pxyY_WhitePt->spec.CIEXYZ.Y != 1.0) { return(XcmsFailure); } /* Convert from xyY to uvY to XYZ */ u = (4 * pColor->spec.CIExyY.x) / div; v = (9 * pColor->spec.CIExyY.y) / div; div = (6.0 * u) - (16.0 * v) + 12.0; if (div == 0.0) { /* Note that the divisor is zero */ /* This return is abitrary. */ if ((div = (6.0 * whitePt.spec.CIEuvY.u_prime) - (16.0 * whitePt.spec.CIEuvY.v_prime) + 12.0) == 0.0) { div = EPS; } x = 9.0 * whitePt.spec.CIEuvY.u_prime / div; y = 4.0 * whitePt.spec.CIEuvY.u_prime / div; } else { /* convert u, v to small xyz */ x = 9.0 * u / div; y = 4.0 * v / div; } z = 1.0 - x - y; if (y == 0.0) y = EPS; /* Have to worry about divide by 0 */ XYZ_return.Y = pColor->spec.CIExyY.Y; XYZ_return.X = x * XYZ_return.Y / y; XYZ_return.Z = z * XYZ_return.Y / y; } /* Copy result to pColor */ memcpy ((char *)&pColor->spec, (char *)&XYZ_return, sizeof(XcmsCIEXYZ)); /* Identify that the format is now CIEXYZ */ pColor->format = XcmsCIEXYZFormat; } return(XcmsSuccess); } /* * NAME * XcmsCIEXYZToCIExyY - convert CIEXYZ to CIExyY * * SYNOPSIS */ /* ARGSUSED */ Status XcmsCIEXYZToCIExyY( XcmsCCC ccc, XcmsColor *pxyY_WhitePt, XcmsColor *pColors_in_out, unsigned int nColors) /* * DESCRIPTION * Converts color specifications in an array of XcmsColor * structures from CIEXYZ format to CIExyY format. * * RETURNS * XcmsFailure if failed, * XcmsSuccess if succeeded. * */ { XcmsColor *pColor = pColors_in_out; XcmsCIExyY xyY_return; XcmsFloat div; /* temporary storage in case divisor is zero */ unsigned int i; /* * Check arguments * pxyY_WhitePt ignored */ if (pColors_in_out == NULL) { return(XcmsFailure); } /* * Now convert each XcmsColor structure to CIEXYZ form */ for (i = 0; i < nColors; i++, pColor++) { if (!_XcmsCIEXYZ_ValidSpec(pColor)) { return(XcmsFailure); } /* Now convert for XYZ to xyY */ if ((div = pColor->spec.CIEXYZ.X + pColor->spec.CIEXYZ.Y + pColor->spec.CIEXYZ.Z) == 0.0) { div = EPS; } xyY_return.x = pColor->spec.CIEXYZ.X / div; xyY_return.y = pColor->spec.CIEXYZ.Y / div; xyY_return.Y = pColor->spec.CIEXYZ.Y; /* Copy result to pColor */ memcpy ((char *)&pColor->spec, (char *)&xyY_return, sizeof(XcmsCIExyY)); /* Identify that the format is now CIEXYZ */ pColor->format = XcmsCIExyYFormat; } return(XcmsSuccess); } libX11-1.8.12/src/xcms/UNDEFINED.c0000644014310600000120000000612614763154126011540 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * * NAME * UNDEFINED.c * * DESCRIPTION * UNDEFINED Color Space * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" /* * FORWARD DECLARATIONS */ static int DummyParseStringProc( char* /* color_string */, XcmsColor* /* color_return */ ); static Status ReturnZero( XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* colors */, unsigned int /* ncolors */ ); /* * LOCALS VARIABLES */ static Status (*(Fl_ReturnZero[]))( XcmsCCC /* ccc */, XcmsColor* /* white_point */, XcmsColor* /* colors */, unsigned int /* ncolors */ ) = { ReturnZero, NULL }; /* * GLOBALS * Variables declared in this package that are allowed * to be used globally. */ /* * UNDEFINED Color Space */ XcmsColorSpace XcmsUNDEFINEDColorSpace = { "undefined", /* prefix */ XcmsUndefinedFormat, /* id */ &DummyParseStringProc, /* parseString */ Fl_ReturnZero, /* to_CIEXYZ */ Fl_ReturnZero /* from_CIEXYZ */ }; /************************************************************************ * * * PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * ReturnZero * * SYNOPSIS */ /* ARGSUSED */ static Status ReturnZero( XcmsCCC ccc /* ccc */, XcmsColor* white /* white_point */, XcmsColor* colors /* colors */, unsigned int ncolors /* ncolors */ ) /* * DESCRIPTION * Does nothing. * * RETURNS * 0 * */ { return(0); } static int DummyParseStringProc( char* color_string /* color_string */, XcmsColor* color_return /* color_return */ ) { return(0); } /* ### EOF ### */ libX11-1.8.12/src/xcms/QuCol.c0000644014310600000120000000451314763154126011260 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsQuCol.c * * DESCRIPTION * Source for XcmsQueryColors * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsQueryColor - Query Color * * SYNOPSIS */ Status XcmsQueryColor( Display *dpy, Colormap colormap, XcmsColor *pXcmsColor_in_out, XcmsColorFormat result_format) /* * DESCRIPTION * This routine uses XQueryColor to obtain the X RGB values * stored in the specified colormap for the specified pixel. * The X RGB values are then converted to the target format as * specified by the format component of the XcmsColor structure. * * RETURNS * XcmsFailure if failed; * XcmsSuccess if it succeeded. * * Returns a color specification of the color stored in the * specified pixel. */ { return(_XcmsSetGetColor(XQueryColor, dpy, colormap, pXcmsColor_in_out, result_format, (Bool *) NULL)); } libX11-1.8.12/src/xcms/AddSF.c0000644014310600000120000001047714763154126011164 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsAddSF.c * * DESCRIPTION * Source for XcmsAddFunctionSet * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /* * DEFINES */ #define NextUnregDdCsID(lastid) \ (XCMS_UNREG_ID(lastid) ? ++lastid : XCMS_FIRST_UNREG_DD_ID) #define MIN(x,y) ((x) > (y) ? (y) : (x)) /* * NAME * XcmsAddFunctionSet - Add an Screen Color Characterization * Function Set * * SYNOPSIS */ Status XcmsAddFunctionSet(XcmsFunctionSet *pNewFS) /* * DESCRIPTION * Additional Screen Color Characterization Function Sets are * managed on a global basis. This means that with exception * of the provided DD color spaces: * RGB and RGBi * DD color spaces may have different XcmsColorFormat IDs between * clients. So, you must be careful when using XcmsColorFormat * across clients! Use the routines XcmsFormatOfPrefix() * and XcmsPrefixOfFormat() appropriately. * * RETURNS * XcmsSuccess if succeeded, otherwise XcmsFailure * * CAVEATS * Additional Screen Color Characterization Function Sets * should be added prior to any use of the routine * XcmsCreateCCC(). If not, XcmsCCC structures created * prior to the call of this routines will not have had * a chance to initialize using the added Screen Color * Characterization Function Set. */ { XcmsFunctionSet **papSCCFuncSets = _XcmsSCCFuncSets; XcmsColorSpace **papNewCSs; XcmsColorSpace *pNewCS, **paptmpCS; XcmsColorFormat lastID = 0; if (papSCCFuncSets != NULL) { if ((papNewCSs = pNewFS->DDColorSpaces) == NULL) { /* * Error, new Screen Color Characterization Function Set * missing color spaces */ return(XcmsFailure); } while ((pNewCS = *papNewCSs++) != NULL) { if ((pNewCS->id = _XcmsRegFormatOfPrefix(pNewCS->prefix)) != 0) { if (XCMS_DI_ID(pNewCS->id)) { /* This is a Device-Independent Color Space */ return(XcmsFailure); } /* * REGISTERED DD Color Space * therefore use the registered ID. */ } else { /* * UNREGISTERED DD Color Space * then see if the color space is already in * _XcmsDDColorSpaces. * a. If same prefix, then use the same ID. * b. Otherwise, use a new ID. */ for (paptmpCS = _XcmsDDColorSpaces; *paptmpCS != NULL; paptmpCS++){ lastID = MIN(lastID, (*paptmpCS)->id); if (strcmp(pNewCS->prefix, (*paptmpCS)->prefix) == 0) { pNewCS->id = (*paptmpCS)->id; break; } } if (pNewCS->id == 0) { /* still haven't found one */ pNewCS->id = NextUnregDdCsID(lastID); if ((paptmpCS = (XcmsColorSpace **)_XcmsPushPointerArray( (XPointer *) _XcmsDDColorSpaces, (XPointer) pNewCS, (XPointer *) _XcmsDDColorSpacesInit)) == NULL) { return(XcmsFailure); } _XcmsDDColorSpaces = paptmpCS; } } } } if ((papSCCFuncSets = (XcmsFunctionSet **) _XcmsPushPointerArray((XPointer *) _XcmsSCCFuncSets, (XPointer) pNewFS, (XPointer *)_XcmsSCCFuncSetsInit)) == NULL) { return(XcmsFailure); } _XcmsSCCFuncSets = papSCCFuncSets; return(XcmsSuccess); } libX11-1.8.12/src/xcms/IdOfPr.c0000644014310600000120000000562214763154126011362 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsIdOfPr.c * * DESCRIPTION * Source for XcmsFormatOfPrefix() * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /* * NAME * XcmsFormatOfPrefix * * SYNOPSIS */ XcmsColorFormat XcmsFormatOfPrefix(char *prefix) /* * DESCRIPTION * Returns the Color Space ID for the specified prefix * if the color space is found in the Color Conversion * Context. * * RETURNS * Color Space ID if found; zero otherwise. */ { XcmsColorSpace **papColorSpaces; char string_buf[64]; char *string_lowered; size_t len; /* * While copying prefix to string_lowered, convert to lowercase */ if ((len = strlen(prefix)) >= sizeof(string_buf)) { string_lowered = Xmalloc(len+1); } else { string_lowered = string_buf; } _XcmsCopyISOLatin1Lowered(string_lowered, prefix); /* * First try Device-Independent color spaces */ papColorSpaces = _XcmsDIColorSpaces; if (papColorSpaces != NULL) { while (*papColorSpaces != NULL) { if (strcmp((*papColorSpaces)->prefix, string_lowered) == 0) { if (len >= sizeof(string_buf)) Xfree(string_lowered); return((*papColorSpaces)->id); } papColorSpaces++; } } /* * Next try Device-Dependent color spaces */ papColorSpaces = _XcmsDDColorSpaces; if (papColorSpaces != NULL) { while (*papColorSpaces != NULL) { if (strcmp((*papColorSpaces)->prefix, string_lowered) == 0) { if (len >= sizeof(string_buf)) Xfree(string_lowered); return((*papColorSpaces)->id); } papColorSpaces++; } } if (len >= sizeof(string_buf)) Xfree(string_lowered); return(XcmsUndefinedFormat); } libX11-1.8.12/src/xcms/Makefile.am0000644014310600000120000000506114763154126012124 noinst_LTLIBRARIES = libxcms.la AM_CPPFLAGS= \ -I$(top_srcdir)/include \ -I$(top_srcdir)/include/X11 \ -I$(top_builddir)/include \ -I$(top_builddir)/include/X11 \ -I$(top_srcdir)/src/xcms \ -I$(top_srcdir)/src/xkb \ -I$(top_srcdir)/src/xlibi18n \ -I$(top_srcdir)/src \ -D_BSD_SOURCE \ -DXCMSDIR=\"$(X11dir)\" AM_CFLAGS= \ $(X11_CFLAGS) \ $(BIGFONT_CFLAGS) \ $(XMALLOC_ZERO_CFLAGS) \ $(CWARNFLAGS) libxcms_la_SOURCES = \ AddDIC.c \ AddSF.c \ CCC.c \ CvColW.c \ CvCols.c \ Cv.h \ HVC.c \ HVCGcC.c \ HVCGcV.c \ HVCGcVC.c \ HVCMnV.c \ HVCMxC.c \ HVCMxV.c \ HVCMxVC.c \ HVCMxVs.c \ HVCWpAj.c \ IdOfPr.c \ LRGB.c \ Lab.c \ LabGcC.c \ LabGcL.c \ LabGcLC.c \ LabMnL.c \ LabMxC.c \ LabMxL.c \ LabMxLC.c \ LabWpAj.c \ Luv.c \ LuvGcC.c \ LuvGcL.c \ LuvGcLC.c \ LuvMnL.c \ LuvMxC.c \ LuvMxL.c \ LuvMxLC.c \ LuvWpAj.c \ OfCCC.c \ PrOfId.c \ QBlack.c \ QBlue.c \ QGreen.c \ QRed.c \ QWhite.c \ QuCol.c \ QuCols.c \ SetCCC.c \ SetGetCols.c \ StCol.c \ StCols.c \ UNDEFINED.c \ XRGB.c \ XYZ.c \ cmsAllCol.c \ cmsAllNCol.c \ cmsCmap.c \ cmsColNm.c \ cmsGlobls.c \ cmsInt.c \ cmsLkCol.c \ cmsMath.c \ cmsProp.c \ cmsTrig.c \ uvY.c \ xyY.c \ Xcmsint.h X11dir = $(X11_DATADIR) dist_X11_DATA = Xcms.txt if LINT # Check source code with tools like lint & sparse ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) lint: $(LINT) $(ALL_LINT_FLAGS) $(libxcms_la_SOURCES) -lm endif LINT libX11-1.8.12/src/xcms/LabMxC.c0000644014310600000120000001445114763154126011345 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * * NAME * CIELabMxC.c * * DESCRIPTION * Source for the XcmsCIELabQueryMaxC() gamut boundary * querying routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include #include "Cv.h" /* * DEFINES */ #define MAXBISECTCOUNT 100 #define EPS (XcmsFloat)0.001 #define START_CHROMA (XcmsFloat)3.6 #define TOPL (XcmsFloat)100.0 /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELabQueryMaxC - max chroma for a hue_angle and L_star * * SYNOPSIS */ Status XcmsCIELabQueryMaxC( XcmsCCC ccc, XcmsFloat hue_angle, /* hue angle in degrees */ XcmsFloat L_star, XcmsColor *pColor_return) /* * DESCRIPTION * Return the maximum chroma for a specific hue_angle and L_star. * The returned format is in XcmsCIELabFormat. * * * ASSUMPTIONS * This routine assumes that the white point associated with * the color specification is the Screen White Point. The * Screen White Point will also be associated with the * returned color specification. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { XcmsCCCRec myCCC; XcmsColor tmp; XcmsColor max_lc; XcmsFloat n_L_star, last_L_star, prev_L_star; XcmsFloat hue, lastaStar, lastbStar, /*lastChroma,*/ maxDist, nT, rFactor; XcmsRGBi rgb_saved; int nCount, nMaxCount; /* * Check Arguments */ if (ccc == NULL || pColor_return == NULL) { return(XcmsFailure); } /* Use my own CCC and inherit screen white Pt */ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat; myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */ while (hue_angle < 0.0) { hue_angle += 360.0; } while (hue_angle >= 360.0) { hue_angle -= 360.0; } hue = radians(hue_angle); tmp.spec.CIELab.L_star = L_star; tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, START_CHROMA); tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, START_CHROMA); tmp.pixel = pColor_return->pixel; tmp.format = XcmsCIELabFormat; /* Step 1: compute the maximum L_star and chroma for this hue. */ memcpy((char *)&max_lc, (char *)&tmp, sizeof(XcmsColor)); if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved) == XcmsFailure) { return(XcmsFailure); } /* * Step 2: Do a bisection here to compute the maximum chroma * Note the differences between when the point to be found * is above the maximum LC point and when it is below. */ if (L_star <= max_lc.spec.CIELab.L_star) { maxDist = max_lc.spec.CIELab.L_star; } else { maxDist = TOPL - max_lc.spec.CIELab.L_star; } n_L_star = L_star; last_L_star = -1.0; nMaxCount = MAXBISECTCOUNT; rFactor = 1.0; for (nCount = 0; nCount < nMaxCount; nCount++) { prev_L_star = last_L_star; last_L_star = tmp.spec.CIELab.L_star; /* lastChroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star, */ /* tmp.spec.CIELab.b_star); */ lastaStar = tmp.spec.CIELab.a_star; lastbStar = tmp.spec.CIELab.b_star; nT = (n_L_star - max_lc.spec.CIELab.L_star) / maxDist * rFactor; if (nT > 0) { tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT; tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT; tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT; } else { tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT); tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT); tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT); } tmp.format = XcmsRGBiFormat; /* convert from RGB to CIELab */ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp, ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } /* * Now check if we've reached the target L_star */ /* printf("result Lstar = %lf\n", tmp.spec.CIELab.L_star); */ if (tmp.spec.CIELab.L_star <= L_star + EPS && tmp.spec.CIELab.L_star >= L_star - EPS) { memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); return(XcmsSuccess); } if (nT > 0) { n_L_star += ((TOPL - n_L_star) * (L_star - tmp.spec.CIELab.L_star)) / (TOPL - L_star); } else { n_L_star *= L_star / tmp.spec.CIELuv.L_star; } if (tmp.spec.CIELab.L_star <= prev_L_star + EPS && tmp.spec.CIELab.L_star >= prev_L_star - EPS) { rFactor *= 0.5; /* selective relaxation employed */ /* printf("rFactor = %lf\n", rFactor); */ } } if (XCMS_FABS(last_L_star - L_star) < XCMS_FABS(tmp.spec.CIELab.L_star - L_star)) { tmp.spec.CIELab.a_star = lastaStar; tmp.spec.CIELab.b_star = lastbStar; /* tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, lastChroma); */ /* tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, lastChroma); */ } tmp.spec.CIELab.L_star = L_star; memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor)); return(XcmsSuccess); } libX11-1.8.12/src/xcms/LuvGcC.c0000644014310600000120000000733414763154126011364 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * CIELuvGcC.c * * DESCRIPTION * Source for XcmsCIELuvClipuv() gamut compression routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIELuvClipuv - Reduce the chroma for a hue and L* * * SYNOPSIS */ /* ARGSUSED */ Status XcmsCIELuvClipuv ( XcmsCCC ccc, XcmsColor *pColors_in_out, unsigned int nColors, unsigned int i, Bool *pCompressed) /* * DESCRIPTION * Reduce the Chroma for a specific hue and chroma to * to bring the given color into the gamut of the * specified device. As required of gamut compression * functions, this routine returns pColor_in_out * in XcmsCIEXYZFormat on successful completion. * * Since this routine works with the L* within * pColor_in_out intermediate results may be returned * even though it may be invalid. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { Status retval; XcmsColor *pColor; /* * Color specification passed as input can be assumed to: * 1. Be in XcmsCIEXYZFormat * 2. Already be white point adjusted for the Screen White Point. * This means that the white point now associated with this * color spec is the Screen White Point (even if the * ccc->clientWhitePt differs). */ pColor = pColors_in_out + i; if (ccc->visual->class < PseudoColor) { /* * GRAY ! */ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat); _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc), 1, XcmsCIEXYZFormat); if (pCompressed) { *(pCompressed + i) = True; } return(XcmsSuccess); } else { if (pColor->format != XcmsCIELuvFormat) { if (_XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIELuvFormat) == XcmsFailure) { return(XcmsFailure); } } if (XcmsCIELuvQueryMaxC(ccc, degrees(XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star, pColor->spec.CIELuv.v_star)), pColor->spec.CIELuv.L_star, pColor) == XcmsFailure) { return(XcmsFailure); } retval = _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat); if (retval != XcmsFailure && pCompressed != NULL) { *(pCompressed + i) = True; } return(retval); } } libX11-1.8.12/src/xcms/uvY.c0000644014310600000120000002443514763154126011025 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of XCMS based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * CIEuvy.c * * DESCRIPTION * This file contains routines that support the CIE u'v'Y * color space to include conversions to and from the CIE * XYZ space. * * DOCUMENTATION * "TekColor Color Management System, System Implementor's Manual" */ #ifdef HAVE_CONFIG_H #include #endif #include #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" #include /* * FORWARD DECLARATIONS */ static int CIEuvY_ParseString(register char *spec, XcmsColor *pColor); /* * DEFINES * Internal definitions that need NOT be exported to any package * or program using this package. */ #ifdef DBL_EPSILON # define XMY_DBL_EPSILON DBL_EPSILON #else # define XMY_DBL_EPSILON 0.00001 #endif /* * LOCAL VARIABLES */ /* * NULL terminated list of functions applied to get from CIEuvY to CIEXYZ */ static XcmsConversionProc Fl_CIEuvY_to_CIEXYZ[] = { XcmsCIEuvYToCIEXYZ, NULL }; /* * NULL terminated list of functions applied to get from CIEXYZ to CIEuvY */ static XcmsConversionProc Fl_CIEXYZ_to_CIEuvY[] = { XcmsCIEXYZToCIEuvY, NULL }; /* * GLOBALS */ /* * CIE uvY Color Space */ XcmsColorSpace XcmsCIEuvYColorSpace = { _XcmsCIEuvY_prefix, /* prefix */ XcmsCIEuvYFormat, /* id */ CIEuvY_ParseString, /* parseString */ Fl_CIEuvY_to_CIEXYZ, /* to_CIEXYZ */ Fl_CIEXYZ_to_CIEuvY, /* from_CIEXYZ */ 1 }; /************************************************************************ * * * PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * CIEuvY_ParseString * * SYNOPSIS */ static int CIEuvY_ParseString( register char *spec, XcmsColor *pColor) /* * DESCRIPTION * This routines takes a string and attempts to convert * it into a XcmsColor structure with XcmsCIEuvYFormat. * The assumed CIEuvY string syntax is: * CIEuvY:// * Where u, v, and Y are in string input format for floats * consisting of: * a. an optional sign * b. a string of numbers possibly containing a decimal point, * c. an optional exponent field containing an 'E' or 'e' * followed by a possibly signed integer string. * * RETURNS * 0 if failed, non-zero otherwise. */ { size_t n; char *pchar; if ((pchar = strchr(spec, ':')) == NULL) { return(XcmsFailure); } n = (size_t)(pchar - spec); /* * Check for proper prefix. */ if (strncmp(spec, _XcmsCIEuvY_prefix, n) != 0) { return(XcmsFailure); } /* * Attempt to parse the value portion. */ if (sscanf(spec + n + 1, "%lf/%lf/%lf", &pColor->spec.CIEuvY.u_prime, &pColor->spec.CIEuvY.v_prime, &pColor->spec.CIEuvY.Y) != 3) { char *s; /* Maybe failed due to locale */ int f; if ((s = strdup(spec))) { for (f = 0; s[f]; ++f) if (s[f] == '.') s[f] = ','; else if (s[f] == ',') s[f] = '.'; if (sscanf(s + n + 1, "%lf/%lf/%lf", &pColor->spec.CIEuvY.u_prime, &pColor->spec.CIEuvY.v_prime, &pColor->spec.CIEuvY.Y) != 3) { free(s); return(XcmsFailure); } free(s); } else return(XcmsFailure); } pColor->format = XcmsCIEuvYFormat; pColor->pixel = 0; return(_XcmsCIEuvY_ValidSpec(pColor)); } /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsCIEuvY_ValidSpec * * SYNOPSIS */ Status _XcmsCIEuvY_ValidSpec( XcmsColor *pColor) /* * DESCRIPTION * Checks if color specification valid for CIE u'v'Y. * * RETURNS * XcmsFailure if invalid, * XcmsSuccess if valid. * */ { if (pColor->format != XcmsCIEuvYFormat || (pColor->spec.CIEuvY.Y < 0.0 - XMY_DBL_EPSILON) || (pColor->spec.CIEuvY.Y > 1.0 + XMY_DBL_EPSILON)) { return(XcmsFailure); } return(XcmsSuccess); } /* * NAME * XcmsCIEuvYToCIEXYZ - convert CIEuvY to CIEXYZ * * SYNOPSIS */ Status XcmsCIEuvYToCIEXYZ( XcmsCCC ccc, XcmsColor *puvY_WhitePt, XcmsColor *pColors_in_out, unsigned int nColors) /* * DESCRIPTION * Converts color specifications in an array of XcmsColor * structures from CIEuvY format to CIEXYZ format. * * RETURNS * XcmsFailure if failed, * XcmsSuccess if succeeded. * */ { XcmsCIEXYZ XYZ_return; XcmsColor whitePt; unsigned int i; XcmsColor *pColor = pColors_in_out; XcmsFloat div, x, y, z, Y; /* * Check arguments * Postpone checking puvY_WhitePt until it is actually needed * otherwise converting between XYZ and uvY will fail. */ if (pColors_in_out == NULL) { return(XcmsFailure); } /* * Now convert each XcmsColor structure to CIEXYZ form */ for (i = 0; i < nColors; i++, pColor++) { /* Make sure original format is CIEuvY */ if (!_XcmsCIEuvY_ValidSpec(pColor)) { return(XcmsFailure); } /* * Convert to CIEXYZ */ Y = pColor->spec.CIEuvY.Y; /* Convert color u'v' to xyz space */ div = (6.0 * pColor->spec.CIEuvY.u_prime) - (16.0 * pColor->spec.CIEuvY.v_prime) + 12.0; if (div == 0.0) { /* use white point since div == 0 */ if (puvY_WhitePt == NULL ) { return(XcmsFailure); } /* * Make sure white point is in CIEuvY form */ if (puvY_WhitePt->format != XcmsCIEuvYFormat) { /* Make copy of the white point because we're going to modify it */ memcpy((char *)&whitePt, (char *)puvY_WhitePt, sizeof(XcmsColor)); if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1, XcmsCIEuvYFormat)) { return(XcmsFailure); } puvY_WhitePt = &whitePt; } /* Make sure it is a white point, i.e., Y == 1.0 */ if (puvY_WhitePt->spec.CIEuvY.Y != 1.0) { return(XcmsFailure); } div = (6.0 * puvY_WhitePt->spec.CIEuvY.u_prime) - (16.0 * puvY_WhitePt->spec.CIEuvY.v_prime) + 12.0; if (div == 0) { /* internal error */ return(XcmsFailure); } x = 9.0 * puvY_WhitePt->spec.CIEuvY.u_prime / div; y = 4.0 * puvY_WhitePt->spec.CIEuvY.v_prime / div; } else { x = 9.0 * pColor->spec.CIEuvY.u_prime / div; y = 4.0 * pColor->spec.CIEuvY.v_prime / div; } z = 1.0 - x - y; /* Convert from xyz to XYZ */ /* Conversion uses color normalized lightness based on Y */ if (y != 0.0) { XYZ_return.X = x * Y / y; } else { XYZ_return.X = x; } XYZ_return.Y = Y; if (y != 0.0) { XYZ_return.Z = z * Y / y; } else { XYZ_return.Z = z; } memcpy((char *)&pColor->spec.CIEXYZ, (char *)&XYZ_return, sizeof(XcmsCIEXYZ)); /* Identify that format is now CIEXYZ */ pColor->format = XcmsCIEXYZFormat; } return(XcmsSuccess); } /* * NAME * XcmsCIEXYZToCIEuvY - convert CIEXYZ to CIEuvY * * SYNOPSIS */ Status XcmsCIEXYZToCIEuvY( XcmsCCC ccc, XcmsColor *puvY_WhitePt, XcmsColor *pColors_in_out, unsigned int nColors) /* * DESCRIPTION * Converts color specifications in an array of XcmsColor * structures from CIEXYZ format to CIEuvY format. * * RETURNS * XcmsFailure if failed, * XcmsSuccess if succeeded. * */ { XcmsCIEuvY uvY_return; XcmsColor whitePt; unsigned int i; XcmsColor *pColor = pColors_in_out; XcmsFloat div; /* * Check arguments * Postpone checking puvY_WhitePt until it is actually needed * otherwise converting between XYZ and uvY will fail. */ if (pColors_in_out == NULL) { return(XcmsFailure); } /* * Now convert each XcmsColor structure to CIEuvY form */ for (i = 0; i < nColors; i++, pColor++) { /* Make sure original format is CIEXYZ */ if (!_XcmsCIEXYZ_ValidSpec(pColor)) { return(XcmsFailure); } /* Convert to CIEuvY */ div = pColor->spec.CIEXYZ.X + (15.0 * pColor->spec.CIEXYZ.Y) + (3.0 * pColor->spec.CIEXYZ.Z); if (div == 0.0) { /* Use white point since div == 0.0 */ if (puvY_WhitePt == NULL ) { return(XcmsFailure); } /* * Make sure white point is in CIEuvY form */ if (puvY_WhitePt->format != XcmsCIEuvYFormat) { /* Make copy of the white point because we're going to modify it */ memcpy((char *)&whitePt, (char *)puvY_WhitePt, sizeof(XcmsColor)); if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1, XcmsCIEuvYFormat)) { return(XcmsFailure); } puvY_WhitePt = &whitePt; } /* Make sure it is a white point, i.e., Y == 1.0 */ if (puvY_WhitePt->spec.CIEuvY.Y != 1.0) { return(XcmsFailure); } uvY_return.Y = pColor->spec.CIEXYZ.Y; uvY_return.u_prime = puvY_WhitePt->spec.CIEuvY.u_prime; uvY_return.v_prime = puvY_WhitePt->spec.CIEuvY.v_prime; } else { uvY_return.u_prime = 4.0 * pColor->spec.CIEXYZ.X / div; uvY_return.v_prime = 9.0 * pColor->spec.CIEXYZ.Y / div; uvY_return.Y = pColor->spec.CIEXYZ.Y; } memcpy((char *)&pColor->spec.CIEuvY, (char *)&uvY_return, sizeof(XcmsCIEuvY)); /* Identify that format is now CIEuvY */ pColor->format = XcmsCIEuvYFormat; } return(XcmsSuccess); } libX11-1.8.12/src/xcms/CvCols.c0000644014310600000120000006367314763154126011442 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsCvCols.c * * DESCRIPTION * Xcms API routine that converts between the * device-independent color spaces. * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" #include "reallocarray.h" /* * LOCAL DEFINES */ #define DD_FORMAT 0x01 #define DI_FORMAT 0x02 #define MIX_FORMAT 0x04 #ifndef MAX # define MAX(x,y) ((x) > (y) ? (x) : (y)) #endif /************************************************************************ * * * PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * EqualCIEXYZ * * SYNOPSIS */ static int EqualCIEXYZ( XcmsColor *p1, XcmsColor *p2) /* * DESCRIPTION * Compares two XcmsColor structures that are in XcmsCIEXYZFormat * * RETURNS * Returns 1 if equal; 0 otherwise. * */ { if (p1->format != XcmsCIEXYZFormat || p2->format != XcmsCIEXYZFormat) { return(0); } if ((p1->spec.CIEXYZ.X != p2->spec.CIEXYZ.X) || (p1->spec.CIEXYZ.Y != p2->spec.CIEXYZ.Y) || (p1->spec.CIEXYZ.Z != p2->spec.CIEXYZ.Z)) { return(0); } return(1); } /* * NAME * XcmsColorSpace * * SYNOPSIS */ static XcmsColorSpace * ColorSpaceOfID( XcmsCCC ccc, XcmsColorFormat id) /* * DESCRIPTION * Returns a pointer to the color space structure * (XcmsColorSpace) associated with the specified color space * ID. * * RETURNS * Pointer to matching XcmsColorSpace structure if found; * otherwise NULL. */ { XcmsColorSpace **papColorSpaces; if (ccc == NULL) { return(NULL); } /* * First try Device-Independent color spaces */ papColorSpaces = _XcmsDIColorSpaces; if (papColorSpaces != NULL) { while (*papColorSpaces != NULL) { if ((*papColorSpaces)->id == id) { return(*papColorSpaces); } papColorSpaces++; } } /* * Next try Device-Dependent color spaces */ papColorSpaces = ((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->DDColorSpaces; if (papColorSpaces != NULL) { while (*papColorSpaces != NULL) { if ((*papColorSpaces)->id == id) { return(*papColorSpaces); } papColorSpaces++; } } return(NULL); } /* * NAME * ValidDIColorSpaceID * * SYNOPSIS */ static int ValidDIColorSpaceID( XcmsColorFormat id) /* * DESCRIPTION * Determines if the specified color space ID is a valid * Device-Independent color space in the specified Color * Conversion Context. * * RETURNS * Returns zero if not valid; otherwise non-zero. */ { XcmsColorSpace **papRec; papRec = _XcmsDIColorSpaces; if (papRec != NULL) { while (*papRec != NULL) { if ((*papRec)->id == id) { return(1); } papRec++; } } return(0); } /* * NAME * ValidDDColorSpaceID * * SYNOPSIS */ static int ValidDDColorSpaceID( XcmsCCC ccc, XcmsColorFormat id) /* * DESCRIPTION * Determines if the specified color space ID is a valid * Device-Dependent color space in the specified Color * Conversion Context. * * RETURNS * Returns zero if not valid; otherwise non-zero. */ { XcmsColorSpace **papRec; if (ccc->pPerScrnInfo->state != XcmsInitNone) { papRec = ((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->DDColorSpaces; while (*papRec != NULL) { if ((*papRec)->id == id) { return(1); } papRec++; } } return(0); } /* * NAME * ConvertMixedColors - Convert XcmsColor structures * * SYNOPSIS */ static Status ConvertMixedColors( XcmsCCC ccc, XcmsColor *pColors_in_out, XcmsColor *pWhitePt, unsigned int nColors, XcmsColorFormat targetFormat, unsigned char format_flag) /* * DESCRIPTION * This routine will only convert the following types of * batches: * DI to DI * DD to DD * DD to CIEXYZ * In other words, it will not convert the following types of * batches: * DI to DD * DD to DI(not CIEXYZ) * * format_flag: * 0x01 : convert Device-Dependent only specifications to the * target format. * 0x02 : convert Device-Independent only specifications to the * target format. * 0x03 : convert all specifications to the target format. * * RETURNS * XcmsFailure if failed, * XcmsSuccess if none of the color specifications were * compressed in the conversion process * XcmsSuccessWithCompression if at least one of the * color specifications were compressed in the * conversion process. * */ { XcmsColor *pColor, *pColors_start; XcmsColorFormat format; Status retval_tmp; Status retval = XcmsSuccess; unsigned int iColors; unsigned int nBatch; /* * Convert array of mixed color specifications in batches of * contiguous formats to the target format */ iColors = 0; while (iColors < nColors) { /* * Find contiguous array of color specifications with the * same format */ pColor = pColors_start = pColors_in_out + iColors; format = pColors_start->format; nBatch = 0; while (iColors < nColors && pColor->format == format) { pColor++; nBatch++; iColors++; } if (format != targetFormat) { /* * Need to convert this batch from current format to target format. */ if (XCMS_DI_ID(format) && (format_flag & DI_FORMAT) && XCMS_DI_ID(targetFormat)) { /* * DI->DI * * Format of interest is Device-Independent, * This batch contains Device-Independent specifications, and * the Target format is Device-Independent. */ retval_tmp = _XcmsDIConvertColors(ccc, pColors_start, pWhitePt, nBatch, targetFormat); } else if (XCMS_DD_ID(format) && (format_flag & DD_FORMAT) && (targetFormat == XcmsCIEXYZFormat)) { /* * DD->CIEXYZ * * Format of interest is Device-Dependent, * This batch contains Device-Dependent specifications, and * the Target format is CIEXYZ. * * Since DD->CIEXYZ we can use NULL instead of pCompressed. */ if ((ccc->whitePtAdjProc != NULL) && !_XcmsEqualWhitePts(ccc, pWhitePt, ScreenWhitePointOfCCC(ccc))) { /* * Need to call WhiteAdjustProc (Screen White Point to * White Point). */ retval_tmp = (*ccc->whitePtAdjProc)(ccc, ScreenWhitePointOfCCC(ccc), pWhitePt, XcmsCIEXYZFormat, pColors_start, nBatch, (Bool *)NULL); } else { retval_tmp = _XcmsDDConvertColors(ccc, pColors_start, nBatch, XcmsCIEXYZFormat, (Bool *)NULL); } } else if (XCMS_DD_ID(format) && (format_flag & DD_FORMAT) && XCMS_DD_ID(targetFormat)) { /* * DD->DD(not CIEXYZ) * * Format of interest is Device-Dependent, * This batch contains Device-Dependent specifications, and * the Target format is Device-Dependent and not CIEXYZ. */ retval_tmp = _XcmsDDConvertColors(ccc, pColors_start, nBatch, targetFormat, (Bool *)NULL); } else { /* * This routine is called for the wrong reason. */ return(XcmsFailure); } if (retval_tmp == XcmsFailure) { return(XcmsFailure); } retval = MAX(retval, retval_tmp); } } return(retval); } /************************************************************************ * * * API PRIVATE ROUTINES * * * ************************************************************************/ /* * NAME * _XcmsEqualWhitePts * * SYNOPSIS */ int _XcmsEqualWhitePts(XcmsCCC ccc, XcmsColor *pWhitePt1, XcmsColor *pWhitePt2) /* * DESCRIPTION * * RETURNS * Returns 0 if not equal; otherwise 1. * */ { XcmsColor tmp1, tmp2; memcpy((char *)&tmp1, (char *)pWhitePt1, sizeof(XcmsColor)); memcpy((char *)&tmp2, (char *)pWhitePt2, sizeof(XcmsColor)); if (tmp1.format != XcmsCIEXYZFormat) { if (_XcmsDIConvertColors(ccc, &tmp1, (XcmsColor *) NULL, 1, XcmsCIEXYZFormat)==0) { return(0); } } if (tmp2.format != XcmsCIEXYZFormat) { if (_XcmsDIConvertColors(ccc, &tmp2, (XcmsColor *) NULL, 1, XcmsCIEXYZFormat)==0) { return(0); } } return (EqualCIEXYZ(&tmp1, &tmp2)); } /* * NAME * _XcmsDIConvertColors - Convert XcmsColor structures * * SYNOPSIS */ Status _XcmsDIConvertColors( XcmsCCC ccc, XcmsColor *pColors_in_out, XcmsColor *pWhitePt, unsigned int nColors, XcmsColorFormat newFormat) /* * DESCRIPTION * Convert XcmsColor structures to another Device-Independent * form. * * Here are some assumptions that this routine makes: * 1. The calling routine has already checked if * pColors_in_out->format == newFormat, therefore * there is no need to check again here. * 2. The calling routine has already checked nColors, * therefore this routine assumes nColors > 0. * 3. The calling routine may want to convert only between * CIExyY <-> CIEXYZ <-> CIEuvY * therefore, this routine allows pWhitePt to equal NULL. * * * RETURNS * XcmsFailure if failed, * XcmsSuccess if succeeded. * */ { XcmsColorSpace *pFrom, *pTo; XcmsDIConversionProc *src_to_CIEXYZ, *src_from_CIEXYZ; XcmsDIConversionProc *dest_to_CIEXYZ, *dest_from_CIEXYZ; XcmsDIConversionProc *to_CIEXYZ_stop, *from_CIEXYZ_start; XcmsDIConversionProc *tmp; /* * Allow pWhitePt to equal NULL. This appropriate when converting * anywhere between: * CIExyY <-> CIEXYZ <-> CIEuvY */ if (pColors_in_out == NULL || !ValidDIColorSpaceID(pColors_in_out->format) || !ValidDIColorSpaceID(newFormat)) { return(XcmsFailure); } /* * Get a handle on the function list for the current specification format */ if ((pFrom = ColorSpaceOfID(ccc, pColors_in_out->format)) == NULL) { return(XcmsFailure); } /* * Get a handle on the function list for the new specification format */ if ((pTo = ColorSpaceOfID(ccc, newFormat)) == NULL) { return(XcmsFailure); } src_to_CIEXYZ = pFrom->to_CIEXYZ; src_from_CIEXYZ = pFrom->from_CIEXYZ; dest_to_CIEXYZ = pTo->to_CIEXYZ; dest_from_CIEXYZ = pTo->from_CIEXYZ; if (pTo->inverse_flag && pFrom->inverse_flag) { /* * Find common function pointers */ for (to_CIEXYZ_stop = src_to_CIEXYZ; *to_CIEXYZ_stop; to_CIEXYZ_stop++){ for (tmp = dest_to_CIEXYZ; *tmp; tmp++) { if (*to_CIEXYZ_stop == *tmp) { goto Continue; } } } Continue: /* * Execute the functions to CIEXYZ, stopping short as necessary */ while (src_to_CIEXYZ != to_CIEXYZ_stop) { if ((*src_to_CIEXYZ++)(ccc, pWhitePt, pColors_in_out, nColors) == XcmsFailure) { return(XcmsFailure); } } /* * Determine where to start on the from_CIEXYZ path. */ from_CIEXYZ_start = dest_from_CIEXYZ; tmp = src_from_CIEXYZ; while ((*from_CIEXYZ_start == *tmp) && (*from_CIEXYZ_start != NULL)) { from_CIEXYZ_start++; tmp++; } } else { /* * The function in at least one of the Color Spaces are not * complementary, i.e., * for an i, 0 <= i < n elements * from_CIEXYZ[i] is not the inverse of to_CIEXYZ[i] * * Execute the functions all the way to CIEXYZ */ while (*src_to_CIEXYZ) { if ((*src_to_CIEXYZ++)(ccc, pWhitePt, pColors_in_out, nColors) == XcmsFailure) { return(XcmsFailure); } } /* * Determine where to start on the from_CIEXYZ path. */ from_CIEXYZ_start = dest_from_CIEXYZ; } /* * Execute the functions from CIEXYZ. */ while (*from_CIEXYZ_start) { if ((*from_CIEXYZ_start++)(ccc, pWhitePt, pColors_in_out, nColors) == XcmsFailure) { return(XcmsFailure); } } return(XcmsSuccess); } /* * NAME * _XcmsDDConvertColors - Convert XcmsColor structures * * SYNOPSIS */ Status _XcmsDDConvertColors( XcmsCCC ccc, XcmsColor *pColors_in_out, unsigned int nColors, XcmsColorFormat newFormat, Bool *pCompressed) /* * DESCRIPTION * Convert XcmsColor structures: * * 1. From CIEXYZ to Device-Dependent formats (typically RGB and * RGBi), * or * 2. Between Device-Dependent formats (typically RGB and RGBi). * * Assumes that these specifications have already been white point * adjusted if necessary from Client White Point to Screen * White Point. Therefore, the white point now associated * with the specifications is the Screen White Point. * * pCompressed may be NULL. If so this indicates that the * calling routine is not interested in knowing exactly which * color was compressed, if any. * * * RETURNS * XcmsFailure if failed, * XcmsSuccess if none of the color specifications were * compressed in the conversion process * XcmsSuccessWithCompression if at least one of the * color specifications were compressed in the * conversion process. * */ { XcmsColorSpace *pFrom, *pTo; XcmsDDConversionProc *src_to_CIEXYZ, *src_from_CIEXYZ; XcmsDDConversionProc *dest_to_CIEXYZ, *dest_from_CIEXYZ; XcmsDDConversionProc *from_CIEXYZ_start, *to_CIEXYZ_stop; XcmsDDConversionProc *tmp; int retval; int hasCompressed = 0; if (ccc == NULL || pColors_in_out == NULL) { return(XcmsFailure); } if (nColors == 0 || pColors_in_out->format == newFormat) { /* do nothing */ return(XcmsSuccess); } if (((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet) == NULL) { return(XcmsFailure); /* hmm, an internal error? */ } /* * Its ok if pColors_in_out->format == XcmsCIEXYZFormat * or * if newFormat == XcmsCIEXYZFormat */ if ( !( ValidDDColorSpaceID(ccc, pColors_in_out->format) || (pColors_in_out->format == XcmsCIEXYZFormat)) || !(ValidDDColorSpaceID(ccc, newFormat) || newFormat == XcmsCIEXYZFormat)) { return(XcmsFailure); } if ((pFrom = ColorSpaceOfID(ccc, pColors_in_out->format)) == NULL){ return(XcmsFailure); } if ((pTo = ColorSpaceOfID(ccc, newFormat)) == NULL) { return(XcmsFailure); } src_to_CIEXYZ = (XcmsDDConversionProc *)pFrom->to_CIEXYZ; src_from_CIEXYZ = (XcmsDDConversionProc *)pFrom->from_CIEXYZ; dest_to_CIEXYZ = (XcmsDDConversionProc *)pTo->to_CIEXYZ; dest_from_CIEXYZ = (XcmsDDConversionProc *)pTo->from_CIEXYZ; if (pTo->inverse_flag && pFrom->inverse_flag) { /* * Find common function pointers */ for (to_CIEXYZ_stop = src_to_CIEXYZ; *to_CIEXYZ_stop; to_CIEXYZ_stop++){ for (tmp = dest_to_CIEXYZ; *tmp; tmp++) { if (*to_CIEXYZ_stop == *tmp) { goto Continue; } } } Continue: /* * Execute the functions */ while (src_to_CIEXYZ != to_CIEXYZ_stop) { retval = (*src_to_CIEXYZ++)(ccc, pColors_in_out, nColors, pCompressed); if (retval == XcmsFailure) { return(XcmsFailure); } hasCompressed |= (retval == XcmsSuccessWithCompression); } /* * Determine where to start on the from_CIEXYZ path. */ from_CIEXYZ_start = dest_from_CIEXYZ; tmp = src_from_CIEXYZ; while ((*from_CIEXYZ_start == *tmp) && (*from_CIEXYZ_start != NULL)) { from_CIEXYZ_start++; tmp++; } } else { /* * The function in at least one of the Color Spaces are not * complementary, i.e., * for an i, 0 <= i < n elements * from_CIEXYZ[i] is not the inverse of to_CIEXYZ[i] * * Execute the functions all the way to CIEXYZ */ while (*src_to_CIEXYZ) { retval = (*src_to_CIEXYZ++)(ccc, pColors_in_out, nColors, pCompressed); if (retval == XcmsFailure) { return(XcmsFailure); } hasCompressed |= (retval == XcmsSuccessWithCompression); } /* * Determine where to start on the from_CIEXYZ path. */ from_CIEXYZ_start = dest_from_CIEXYZ; } while (*from_CIEXYZ_start) { retval = (*from_CIEXYZ_start++)(ccc, pColors_in_out, nColors, pCompressed); if (retval == XcmsFailure) { return(XcmsFailure); } hasCompressed |= (retval == XcmsSuccessWithCompression); } return(hasCompressed ? XcmsSuccessWithCompression : XcmsSuccess); } /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsConvertColors - Convert XcmsColor structures * * SYNOPSIS */ Status XcmsConvertColors( XcmsCCC ccc, XcmsColor *pColors_in_out, unsigned int nColors, XcmsColorFormat targetFormat, Bool *pCompressed) /* * DESCRIPTION * Convert XcmsColor structures to another format * * RETURNS * XcmsFailure if failed, * XcmsSuccess if succeeded without gamut compression, * XcmsSuccessWithCompression if succeeded with gamut * compression. * */ { XcmsColor clientWhitePt; XcmsColor Color1; XcmsColor *pColors_tmp; int callWhiteAdjustProc = 0; XcmsColorFormat format; Status retval; unsigned char contents_flag = 0x00; unsigned int iColors; if (ccc == NULL || pColors_in_out == NULL || !(ValidDIColorSpaceID(targetFormat) || ValidDDColorSpaceID(ccc, targetFormat))) { return(XcmsFailure); } /* * Check formats in color specification array */ format = pColors_in_out->format; for (pColors_tmp = pColors_in_out, iColors = nColors; iColors; pColors_tmp++, iColors--) { if (!(ValidDIColorSpaceID(pColors_tmp->format) || ValidDDColorSpaceID(ccc, pColors_tmp->format))) { return(XcmsFailure); } if (XCMS_DI_ID(pColors_tmp->format)) { contents_flag |= DI_FORMAT; } else { contents_flag |= DD_FORMAT; } if (pColors_tmp->format != format) { contents_flag |= MIX_FORMAT; } } /* * Check if we need the Client White Point. */ if ((contents_flag & DI_FORMAT) || XCMS_DI_ID(targetFormat)) { /* To proceed, we need to get the Client White Point */ memcpy((char *)&clientWhitePt, (char *)&ccc->clientWhitePt, sizeof(XcmsColor)); if (clientWhitePt.format == XcmsUndefinedFormat) { /* * Client White Point is undefined, therefore set to the Screen * White Point. * Since Client White Point == Screen White Point, WhiteAdjustProc * is not called. */ memcpy((char *)&clientWhitePt, (char *)&ccc->pPerScrnInfo->screenWhitePt, sizeof(XcmsColor)); } else if ((ccc->whitePtAdjProc != NULL) && !_XcmsEqualWhitePts(ccc, &clientWhitePt, ScreenWhitePointOfCCC(ccc))) { /* * Client White Point != Screen White Point, and WhiteAdjustProc * is not NULL, therefore, will need to call it when * converting between DI and DD specifications. */ callWhiteAdjustProc = 1; } } /* * Make copy of array of color specifications */ if (nColors > 1) { pColors_tmp = Xmallocarray(nColors, sizeof(XcmsColor)); if (pColors_tmp == NULL) return(XcmsFailure); } else { pColors_tmp = &Color1; } memcpy((char *)pColors_tmp, (char *)pColors_in_out, nColors * sizeof(XcmsColor)); /* * zero out pCompressed */ if (pCompressed) { bzero((char *)pCompressed, nColors * sizeof(Bool)); } if (contents_flag == DD_FORMAT || contents_flag == DI_FORMAT) { /* * ENTIRE ARRAY IS IN ONE FORMAT. */ if (XCMS_DI_ID(format) && XCMS_DI_ID(targetFormat)) { /* * DI-to-DI only conversion */ retval = _XcmsDIConvertColors(ccc, pColors_tmp, &clientWhitePt, nColors, targetFormat); } else if (XCMS_DD_ID(format) && XCMS_DD_ID(targetFormat)) { /* * DD-to-DD only conversion * Since DD->DD there will be no compressed thus we can * pass NULL instead of pCompressed. */ retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors, targetFormat, (Bool *)NULL); } else { /* * Otherwise we have: * 1. Device-Independent to Device-Dependent Conversion * OR * 2. Device-Dependent to Device-Independent Conversion * * We need to go from oldFormat -> CIEXYZ -> targetFormat * adjusting for white points as necessary. */ if (XCMS_DI_ID(format)) { /* * 1. Device-Independent to Device-Dependent Conversion */ if (callWhiteAdjustProc) { /* * White Point Adjustment * Client White Point to Screen White Point */ retval = (*ccc->whitePtAdjProc)(ccc, &clientWhitePt, ScreenWhitePointOfCCC(ccc), targetFormat, pColors_tmp, nColors, pCompressed); } else { if (_XcmsDIConvertColors(ccc, pColors_tmp, &clientWhitePt, nColors, XcmsCIEXYZFormat) == XcmsFailure) { goto Failure; } retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors, targetFormat, pCompressed); } } else { /* * 2. Device-Dependent to Device-Independent Conversion */ if (callWhiteAdjustProc) { /* * White Point Adjustment * Screen White Point to Client White Point */ retval = (*ccc->whitePtAdjProc)(ccc, ScreenWhitePointOfCCC(ccc), &clientWhitePt, targetFormat, pColors_tmp, nColors, pCompressed); } else { /* * Since DD->CIEXYZ, no compression takes place therefore * we can pass NULL instead of pCompressed. */ if (_XcmsDDConvertColors(ccc, pColors_tmp, nColors, XcmsCIEXYZFormat, (Bool *)NULL) == XcmsFailure) { goto Failure; } retval = _XcmsDIConvertColors(ccc, pColors_tmp, &clientWhitePt, nColors, targetFormat); } } } } else { /* * ARRAY HAS MIXED FORMATS. */ if ((contents_flag == (DI_FORMAT | MIX_FORMAT)) && XCMS_DI_ID(targetFormat)) { /* * Convert from DI to DI in batches of contiguous formats * * Because DI->DI, WhiteAdjustProc not called. */ retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt, nColors, targetFormat, (unsigned char)DI_FORMAT); } else if ((contents_flag == (DD_FORMAT | MIX_FORMAT)) && XCMS_DD_ID(targetFormat)) { /* * Convert from DD to DD in batches of contiguous formats * * Because DD->DD, WhiteAdjustProc not called. */ retval = ConvertMixedColors(ccc, pColors_tmp, (XcmsColor *)NULL, nColors, targetFormat, (unsigned char)DD_FORMAT); } else if (XCMS_DI_ID(targetFormat)) { /* * We need to convert from DI-to-DI and DD-to-DI, therefore * 1. convert DD specifications to CIEXYZ, then * 2. convert all in batches to the target DI format. * * Note that ConvertMixedColors will call WhiteAdjustProc * as necessary. */ /* * Convert only DD specifications in batches of contiguous formats * to CIEXYZ * * Since DD->CIEXYZ, ConvertMixedColors will apply WhiteAdjustProc * if required. */ retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt, nColors, XcmsCIEXYZFormat, (unsigned char)DD_FORMAT); /* * Because at this point we may have a mix of DI formats * (e.g., CIEXYZ, CIELuv) we must convert the specs to the * target DI format in batches of contiguous source formats. */ retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt, nColors, targetFormat, (unsigned char)DI_FORMAT); } else { /* * We need to convert from DI-to-DD and DD-to-DD, therefore * 1. convert DI specifications to CIEXYZ, then * 2. convert all to the DD target format. * * This allows white point adjustment and gamut compression * to be applied to all the color specifications in one * swoop if those functions do in fact modify the entire * group of color specifications. */ /* * Convert in batches to CIEXYZ * * If DD->CIEXYZ, ConvertMixedColors will apply WhiteAdjustProc * if required. */ if ((retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt, nColors, XcmsCIEXYZFormat, (unsigned char)(DI_FORMAT | DD_FORMAT))) == XcmsFailure) { goto Failure; } /* * Convert all specifications (now in CIEXYZ format) to * the target DD format. * Since CIEXYZ->DD, compression MAY take place therefore * we must pass pCompressed. * Note that WhiteAdjustProc must be used if necessary. */ if (callWhiteAdjustProc) { /* * White Point Adjustment * Client White Point to Screen White Point */ retval = (*ccc->whitePtAdjProc)(ccc, &clientWhitePt, ScreenWhitePointOfCCC(ccc), targetFormat, pColors_tmp, nColors, pCompressed); } else { retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors, targetFormat, pCompressed); } } } if (retval != XcmsFailure) { memcpy((char *)pColors_in_out, (char *)pColors_tmp, nColors * sizeof(XcmsColor)); } if (nColors > 1) { Xfree(pColors_tmp); } return(retval); Failure: if (nColors > 1) { Xfree(pColors_tmp); } return(XcmsFailure); } /* * NAME * XcmsRegFormatOfPrefix * * SYNOPSIS */ XcmsColorFormat _XcmsRegFormatOfPrefix( _Xconst char *prefix) /* * DESCRIPTION * Returns a color space ID associated with the specified * X Consortium registered color space prefix. * * RETURNS * The color space ID if found; * otherwise NULL. */ { XcmsRegColorSpaceEntry *pEntry = _XcmsRegColorSpaces; while (pEntry->prefix != NULL) { if (strcmp(prefix, pEntry->prefix) == 0) { return(pEntry->id); } pEntry++; } return(XcmsUndefinedFormat); } libX11-1.8.12/src/xcms/cmsCmap.c0000644014310600000120000003016414763154126011621 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsCmap.c - Client Colormap Management Routines * * DESCRIPTION * Routines that store additional information about * colormaps being used by the X Client. * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Xutil.h" #include "Cmap.h" #include "Cv.h" /* * FORWARD DECLARATIONS */ static void _XcmsFreeClientCmaps(Display *dpy); /************************************************************************ * * * PRIVATE INTERFACES * * * ************************************************************************/ /* * NAME * CmapRecForColormap * * SYNOPSIS */ static XcmsCmapRec * CmapRecForColormap( Display *dpy, Colormap cmap) /* * DESCRIPTION * Find the corresponding XcmsCmapRec for cmap. In not found * this routines attempts to create one. * * RETURNS * Returns NULL if failed; otherwise the address to * the corresponding XcmsCmapRec. * */ { XcmsCmapRec *pRec; int nScrn; int i, j; XVisualInfo visualTemplate; /* Template of the visual we want */ XVisualInfo *visualList; /* List for visuals that match */ int nVisualsMatched; /* Number of visuals that match */ Window tmpWindow; Visual *vp; unsigned long border = 0; _XAsyncHandler async; _XAsyncErrorState async_state; LockDisplay(dpy); for (pRec = (XcmsCmapRec *)dpy->cms.clientCmaps; pRec != NULL; pRec = pRec->pNext) { if (pRec->cmapID == cmap) { UnlockDisplay(dpy); SyncHandle(); return(pRec); } } UnlockDisplay(dpy); SyncHandle(); /* * Can't find an XcmsCmapRec associated with cmap in our records. * Let's try to see if its a default colormap */ nScrn = ScreenCount(dpy); for (i = 0; i < nScrn; i++) { if (cmap == DefaultColormap(dpy, i)) { /* It is ... lets go ahead and store that info */ if ((pRec = _XcmsAddCmapRec(dpy, cmap, RootWindow(dpy, i), DefaultVisual(dpy, i))) == NULL) { return((XcmsCmapRec *)NULL); } pRec->ccc = XcmsCreateCCC( dpy, i, /* screenNumber */ DefaultVisual(dpy, i), (XcmsColor *)NULL, /* clientWhitePt */ (XcmsCompressionProc)NULL, /* gamutCompProc */ (XPointer)NULL, /* gamutCompClientData */ (XcmsWhiteAdjustProc)NULL, /* whitePtAdjProc */ (XPointer)NULL /* whitePtAdjClientData */ ); return(pRec); } } /* * Nope, its not a default colormap, so it's probably a foreign color map * of which we have no specific details. Let's go through the * rigorous process of finding this colormap: * for each screen * for each screen's visual types * create a window with cmap specified as the colormap * if successful * Add a CmapRec * Create an XcmsCCC * return the CmapRec * else * continue */ async_state.error_code = 0; /* don't care */ async_state.major_opcode = X_CreateWindow; async_state.minor_opcode = 0; for (i = 0; i < nScrn; i++) { visualTemplate.screen = i; visualList = XGetVisualInfo(dpy, VisualScreenMask, &visualTemplate, &nVisualsMatched); if (visualList == NULL) { continue; } /* * Attempt to create a window with cmap */ j = 0; do { vp = (visualList+j)->visual; LockDisplay(dpy); { register xCreateWindowReq *req; GetReq(CreateWindow, req); async_state.min_sequence_number = dpy->request; async_state.max_sequence_number = dpy->request; async_state.error_count = 0; async.next = dpy->async_handlers; async.handler = _XAsyncErrorHandler; async.data = (XPointer)&async_state; dpy->async_handlers = &async; req->parent = RootWindow(dpy, i); req->x = 0; req->y = 0; req->width = 1; req->height = 1; req->borderWidth = 0; req->depth = (visualList+j)->depth; req->class = CopyFromParent; req->visual = vp->visualid; tmpWindow = req->wid = XAllocID(dpy); req->mask = CWBorderPixel | CWColormap; req->length += 2; Data32 (dpy, (long *) &border, 4); Data32 (dpy, (long *) &cmap, 4); } { xGetInputFocusReply rep; _X_UNUSED register xReq *req; GetEmptyReq(GetInputFocus, req); (void) _XReply (dpy, (xReply *)&rep, 0, xTrue); } DeqAsyncHandler(dpy, &async); UnlockDisplay(dpy); SyncHandle(); } while (async_state.error_count > 0 && ++j < nVisualsMatched); Xfree(visualList); /* * if successful */ if (j < nVisualsMatched) { if ((pRec = _XcmsAddCmapRec(dpy, cmap, tmpWindow, vp)) == NULL) return((XcmsCmapRec *)NULL); pRec->ccc = XcmsCreateCCC( dpy, i, /* screenNumber */ vp, (XcmsColor *)NULL, /* clientWhitePt */ (XcmsCompressionProc)NULL, /* gamutCompProc */ (XPointer)NULL, /* gamutCompClientData */ (XcmsWhiteAdjustProc)NULL, /* whitePtAdjProc */ (XPointer)NULL /* whitePtAdjClientData */ ); XDestroyWindow(dpy, tmpWindow); return(pRec); } } return(NULL); } /************************************************************************ * * * API PRIVATE INTERFACES * * * ************************************************************************/ /* * NAME * _XcmsAddCmapRec * * SYNOPSIS */ XcmsCmapRec * _XcmsAddCmapRec( Display *dpy, Colormap cmap, Window windowID, Visual *visual) /* * DESCRIPTION * Create an XcmsCmapRec for the specified cmap, windowID, * and visual, then adds it to its list of CmapRec's. * * RETURNS * Returns NULL if failed; otherwise the address to * the added XcmsCmapRec. * */ { XcmsCmapRec *pNew; if ((pNew = Xcalloc(1, sizeof(XcmsCmapRec))) == NULL) { return((XcmsCmapRec *)NULL); } pNew->cmapID = cmap; pNew->dpy = dpy; pNew->windowID = windowID; pNew->visual = visual; LockDisplay(dpy); pNew->pNext = (XcmsCmapRec *)dpy->cms.clientCmaps; dpy->cms.clientCmaps = (XPointer)pNew; dpy->free_funcs->clientCmaps = _XcmsFreeClientCmaps; UnlockDisplay(dpy); SyncHandle(); /* * Note, we don't create the XcmsCCC for pNew->ccc here because * it may require the use of XGetWindowAttributes (a round trip request) * to determine the screen. */ return(pNew); } /* * NAME * _XcmsCopyCmapRecAndFree * * SYNOPSIS */ XcmsCmapRec * _XcmsCopyCmapRecAndFree( Display *dpy, Colormap src_cmap, Colormap copy_cmap) /* * DESCRIPTION * Augments Xlib's XCopyColormapAndFree() to copy * XcmsCmapRecs. * * RETURNS * Returns NULL if failed; otherwise the address to * the copy XcmsCmapRec. * */ { XcmsCmapRec *pRec_src; XcmsCmapRec *pRec_copy; if ((pRec_src = CmapRecForColormap(dpy, src_cmap)) != NULL) { pRec_copy =_XcmsAddCmapRec(dpy, copy_cmap, pRec_src->windowID, pRec_src->visual); if (pRec_copy != NULL && pRec_src->ccc) { pRec_copy->ccc = Xcalloc(1, sizeof(XcmsCCCRec)); memcpy((char *)pRec_copy->ccc, (char *)pRec_src->ccc, sizeof(XcmsCCCRec)); } return(pRec_copy); } return((XcmsCmapRec *)NULL); } /* * NAME * _XcmsDeleteCmapRec * * SYNOPSIS */ void _XcmsDeleteCmapRec( Display *dpy, Colormap cmap) /* * DESCRIPTION * Removes and frees the specified XcmsCmapRec structure * from the linked list of structures. * * RETURNS * void * */ { XcmsCmapRec **pPrevPtr; XcmsCmapRec *pRec; int scr; /* If it is the default cmap for a screen, do not delete it, * because the server will not actually free it */ for (scr = ScreenCount(dpy); --scr >= 0; ) { if (cmap == DefaultColormap(dpy, scr)) return; } /* search for it in the list */ LockDisplay(dpy); pPrevPtr = (XcmsCmapRec **)&dpy->cms.clientCmaps; while ((pRec = *pPrevPtr) && (pRec->cmapID != cmap)) { pPrevPtr = &pRec->pNext; } if (pRec) { if (pRec->ccc) { XcmsFreeCCC(pRec->ccc); } *pPrevPtr = pRec->pNext; Xfree(pRec); } UnlockDisplay(dpy); SyncHandle(); } /* * NAME * _XcmsFreeClientCmaps * * SYNOPSIS */ static void _XcmsFreeClientCmaps( Display *dpy) /* * DESCRIPTION * Frees all XcmsCmapRec structures in the linked list * and sets dpy->cms.clientCmaps to NULL. * * RETURNS * void * */ { XcmsCmapRec *pRecNext, *pRecFree; LockDisplay(dpy); pRecNext = (XcmsCmapRec *)dpy->cms.clientCmaps; while (pRecNext != NULL) { pRecFree = pRecNext; pRecNext = pRecNext->pNext; if (pRecFree->ccc) { /* Free the XcmsCCC structure */ XcmsFreeCCC(pRecFree->ccc); } /* Now free the XcmsCmapRec structure */ Xfree(pRecFree); } dpy->cms.clientCmaps = (XPointer)NULL; UnlockDisplay(dpy); SyncHandle(); } /************************************************************************ * * * PUBLIC INTERFACES * * * ************************************************************************/ /* * NAME * XcmsCCCOfColormap * * SYNOPSIS */ XcmsCCC XcmsCCCOfColormap( Display *dpy, Colormap cmap) /* * DESCRIPTION * Finds the XcmsCCC associated with the specified colormap. * * RETURNS * Returns NULL if failed; otherwise the address to * the associated XcmsCCC structure. * */ { XWindowAttributes windowAttr; XcmsCmapRec *pRec; int nScrn = ScreenCount(dpy); int i; if ((pRec = CmapRecForColormap(dpy, cmap)) != NULL) { if (pRec->ccc) { /* XcmsCmapRec already has a XcmsCCC */ return(pRec->ccc); } /* * The XcmsCmapRec does not have a XcmsCCC yet, so let's create * one. But first, we need to know the screen associated with * cmap, so use XGetWindowAttributes() to extract that * information. Unless, of course there is only one screen!! */ if (nScrn == 1) { /* Assume screenNumber == 0 */ return(pRec->ccc = XcmsCreateCCC( dpy, 0, /* screenNumber */ pRec->visual, (XcmsColor *)NULL, /* clientWhitePt */ (XcmsCompressionProc)NULL, /* gamutCompProc */ (XPointer)NULL, /* gamutCompClientData */ (XcmsWhiteAdjustProc)NULL, /* whitePtAdjProc */ (XPointer)NULL /* whitePtAdjClientData */ )); } else { if (XGetWindowAttributes(dpy, pRec->windowID, &windowAttr)) { for (i = 0; i < nScrn; i++) { if (ScreenOfDisplay(dpy, i) == windowAttr.screen) { return(pRec->ccc = XcmsCreateCCC( dpy, i, /* screenNumber */ pRec->visual, (XcmsColor *)NULL, /* clientWhitePt */ (XcmsCompressionProc)NULL, /* gamutCompProc */ (XPointer)NULL, /* gamutCompClientData */ (XcmsWhiteAdjustProc)NULL, /* whitePtAdjProc */ (XPointer)NULL /* whitePtAdjClientData */ )); } } } } } /* * No such cmap */ return(NULL); } XcmsCCC XcmsSetCCCOfColormap( Display *dpy, Colormap cmap, XcmsCCC ccc) { XcmsCCC prev_ccc = NULL; XcmsCmapRec *pRec; pRec = CmapRecForColormap(dpy, cmap); if (pRec) { prev_ccc = pRec->ccc; pRec->ccc = ccc; } return prev_ccc; } libX11-1.8.12/src/xcms/HVCGcC.c0000644014310600000120000001123414763154126011230 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. TekColor is a * trademark of Tektronix, Inc. The term "TekHVC" designates a particular * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent * foreign patents pending). Permission is hereby granted to use, copy, * modify, sell, and otherwise distribute this software and its * documentation for any purpose and without fee, provided that: * * 1. This copyright, permission, and disclaimer notice is reproduced in * all copies of this software and any modification thereof and in * supporting documentation; * 2. Any color-handling application which displays TekHVC color * cooordinates identifies these as TekHVC color coordinates in any * interface that displays these coordinates and in any associated * documentation; * 3. The term "TekHVC" is always used, and is only used, in association * with the mathematical derivations of the TekHVC Color Space, * including those provided in this file and any equivalent pathways and * mathematical derivations, regardless of digital (e.g., floating point * or integer) representation. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * TekHVCGcC.c * * DESCRIPTION * Source for XcmsTekHVCClipC() gamut compression routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsTekHVCClipC - Reduce the chroma for a hue and value * * SYNOPSIS */ /* ARGSUSED */ Status XcmsTekHVCClipC ( XcmsCCC ccc, XcmsColor *pColors_in_out, unsigned int nColors, unsigned int i, Bool *pCompressed) /* * DESCRIPTION * Reduce the Chroma for a specific hue and value to * to bring the given color into the gamut of the * specified device. As required of gamut compression * functions in Xcms, this routine returns pColor_in_out * in XcmsCIEXYZFormat on successful completion. * * Since this routine works with the value within * pColor_in_out intermediate results may be returned * even though it may be invalid. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { Status retval; XcmsColor *pColor; /* * Color specification passed as input can be assumed to: * 1. Be in XcmsCIEXYZFormat * 2. Already be white point adjusted for the Screen White Point. * This means that the white point now associated with this * color spec is the Screen White Point (even if the * ccc->clientWhitePt differs). */ /* * Insure TekHVC installed */ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) { return(XcmsFailure); } pColor = pColors_in_out + i; if (ccc->visual->class < StaticColor && FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) { /* * GRAY ! */ _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat); pColor->spec.TekHVC.H = pColor->spec.TekHVC.C = 0.0; _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat); if (pCompressed) { *(pCompressed + i) = True; } return(XcmsSuccess); } else { if (pColor->format != XcmsTekHVCFormat) { if (_XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat) == XcmsFailure) { return(XcmsFailure); } } if (XcmsTekHVCQueryMaxC(ccc, pColor->spec.TekHVC.H, pColor->spec.TekHVC.V, pColor) == XcmsFailure) { return(XcmsFailure); } retval = _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat); if (retval != XcmsFailure && pCompressed != NULL) { *(pCompressed + i) = True; } return(retval); } } libX11-1.8.12/src/xcms/QBlack.c0000644014310600000120000000454514763154126011377 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsQBlack.c - Query Black * * DESCRIPTION * Routine to obtain a color specification for zero * red, green, and blue intensities. * * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcms.h" /************************************************************************ * * * PUBLIC INTERFACES * * * ************************************************************************/ /* * NAME * XcmsQueryBlack * * SYNOPSIS */ Status XcmsQueryBlack( XcmsCCC ccc, XcmsColorFormat target_format, XcmsColor *pColor_ret) /* * DESCRIPTION * Returns the color specification in the target format for * zero intensity red, green, and blue. * * RETURNS * Returns XcmsSuccess, if failed; otherwise XcmsFailure * */ { XcmsColor tmp; tmp.format = XcmsRGBiFormat; tmp.pixel = 0; tmp.spec.RGBi.red = 0.0; tmp.spec.RGBi.green = 0.0; tmp.spec.RGBi.blue = 0.0; if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) { return(XcmsFailure); } memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor)); return(XcmsSuccess); } libX11-1.8.12/src/xcms/cmsAllNCol.c0000644014310600000120000001276614763154126012235 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsAlNCol.c * * DESCRIPTION * Source for XcmsAllocNamedColor * * */ #ifdef HAVE_CONFIG_H #include #endif #include #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /* * NAME * XcmsAllocNamedColor - * * SYNOPSIS */ Status XcmsAllocNamedColor ( Display *dpy, Colormap cmap, _Xconst char *colorname, XcmsColor *pColor_scrn_return, XcmsColor *pColor_exact_return, XcmsColorFormat result_format) /* * DESCRIPTION * Finds the color specification associated with the color * name in the Device-Independent Color Name Database, then * converts that color specification to an RGB format. This * RGB value is then used in a call to XAllocColor to allocate * a read-only color cell. * * RETURNS * 0 if failed to parse string or find any entry in the database. * 1 if succeeded in converting color name to XcmsColor. * 2 if succeeded in converting color name to another color name. * */ { long nbytes; xAllocNamedColorReply rep; xAllocNamedColorReq *req; XColor hard_def; XColor exact_def; Status retval1 = 1; Status retval2 = XcmsSuccess; XcmsColor tmpColor; XColor XColor_in_out; XcmsCCC ccc; /* * 0. Check for invalid arguments. */ if (dpy == NULL || colorname[0] == '\0' || pColor_scrn_return == 0 || pColor_exact_return == NULL) { return(XcmsFailure); } if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) { return(XcmsFailure); } /* * 1. Convert string to a XcmsColor using Xcms and i18n mechanism */ if ((retval1 = _XcmsResolveColorString(ccc, &colorname, &tmpColor, result_format)) == XcmsFailure) { return(XcmsFailure); } if (retval1 == _XCMS_NEWNAME) { goto PassToServer; } memcpy((char *)pColor_exact_return, (char *)&tmpColor, sizeof(XcmsColor)); /* * 2. Convert tmpColor to RGB * Assume pColor_exact_return is now adjusted to Client White Point */ if ((retval2 = XcmsConvertColors(ccc, &tmpColor, 1, XcmsRGBFormat, (Bool *) NULL)) == XcmsFailure) { return(XcmsFailure); } /* * 3. Convert to XColor and call XAllocColor */ _XcmsRGB_to_XColor(&tmpColor, &XColor_in_out, 1); if (XAllocColor(ccc->dpy, cmap, &XColor_in_out) == 0) { return(XcmsFailure); } /* * 4. pColor_scrn_return * * Now convert to the target format. * We can ignore the return value because we're already in a * device-dependent format. */ _XColor_to_XcmsRGB(ccc, &XColor_in_out, pColor_scrn_return, 1); if (result_format != XcmsRGBFormat) { if (result_format == XcmsUndefinedFormat) { result_format = pColor_exact_return->format; } if (XcmsConvertColors(ccc, pColor_scrn_return, 1, result_format, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } } return(retval1 > retval2 ? retval1 : retval2); PassToServer: /* * All previous methods failed, so lets pass it to the server * for parsing. */ dpy = ccc->dpy; LockDisplay(dpy); GetReq(AllocNamedColor, req); req->cmap = cmap; nbytes = req->nbytes = (CARD16) strlen(colorname); req->length += (nbytes + 3) >> 2; /* round up to mult of 4 */ _XSend(dpy, colorname, nbytes); /* _XSend is more efficient that Data, since _XReply follows */ if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { UnlockDisplay(dpy); SyncHandle(); return (0); } exact_def.red = rep.exactRed; exact_def.green = rep.exactGreen; exact_def.blue = rep.exactBlue; hard_def.red = rep.screenRed; hard_def.green = rep.screenGreen; hard_def.blue = rep.screenBlue; exact_def.pixel = hard_def.pixel = rep.pixel; UnlockDisplay(dpy); SyncHandle(); /* * Now convert to the target format. */ _XColor_to_XcmsRGB(ccc, &exact_def, pColor_exact_return, 1); _XColor_to_XcmsRGB(ccc, &hard_def, pColor_scrn_return, 1); if (result_format != XcmsRGBFormat && result_format != XcmsUndefinedFormat) { if (XcmsConvertColors(ccc, pColor_exact_return, 1, result_format, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } if (XcmsConvertColors(ccc, pColor_scrn_return, 1, result_format, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } } return(XcmsSuccess); } libX11-1.8.12/src/xcms/Xcms.txt0000644014310600000120000000327314763154126011546 /* * (c) Copyright 1990 1991 Tektronix Inc. * All Rights Reserved * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of Tektronix not be used * in advertising or publicity pertaining to distribution of the software * without specific, written prior permission. * * Tektronix disclaims all warranties with regard to this software, including * all implied warranties of merchantability and fitness, in no event shall * Tektronix be liable for any special, indirect or consequential damages or * any damages whatsoever resulting from loss of use, data or profits, * whether in an action of contract, negligence or other tortious action, * arising out of or in connection with the use or performance of this * software. * * * NAME * Xcms.txt * * DESCRIPTION * Sample Color Name Database * */ This device-independent color name database is provided just as an example. There are no claims that these color specifications are or should be bound to the corresponding color name. As you can see, the start of the database is indicated by "XCMS_COLORDB_START". Anything before this is assumed to be comments. The "0.1" indicates the version number of the format/syntax used in this file. The color name is delimited from the color specification by one or more tabs. XCMS_COLORDB_START 0.1 cms red CIEXYZ:0.3811/0.2073/0.0213 cms green CIEXYZ:0.3203/0.6805/0.1430 cms blue CIEXYZ:0.2483/0.1122/1.2417 XCMS_COLORDB_END libX11-1.8.12/src/xcms/cmsLkCol.c0000644014310600000120000001270514763154126011746 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. Permission is * hereby granted to use, copy, modify, sell, and otherwise distribute this * software and its documentation for any purpose and without fee, provided * that this copyright, permission, and disclaimer notice is reproduced in * all copies of this software and in supporting documentation. TekColor * is a trademark of Tektronix, Inc. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * * NAME * XcmsLkCol.c * * DESCRIPTION * Source for XcmsLookupColor * * */ #ifdef HAVE_CONFIG_H #include #endif #include #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /* * NAME * XcmsLookupColor - * * SYNOPSIS */ Status XcmsLookupColor ( Display *dpy, Colormap cmap, _Xconst char *colorname, XcmsColor *pColor_exact_return, XcmsColor *pColor_scrn_return, XcmsColorFormat result_format) /* * DESCRIPTION * The XcmsLookupColor function finds the color specification * associated with a color name in the Device-Independent Color * Name Database. * RETURNS * This function returns both the color specification found in the * database (db specification) and the color specification for the * color displayable by the specified screen (screen * specification). The calling routine sets the format for these * returned specifications in the XcmsColor format component. * If XcmsUndefinedFormat, the specification is returned in the * format used to store the color in the database. */ { Status retval1 = XcmsSuccess; Status retval2 = XcmsSuccess; XcmsCCC ccc; register int n; xLookupColorReply reply; register xLookupColorReq *req; XColor def = {0,}; XColor scr = {0,}; /* * 0. Check for invalid arguments. */ if (dpy == NULL || colorname[0] == '\0' || pColor_scrn_return == 0 || pColor_exact_return == NULL) { return(XcmsFailure); } if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) { return(XcmsFailure); } /* * 1. Convert string to a XcmsColor */ if ((retval1 = _XcmsResolveColorString(ccc, &colorname, pColor_exact_return, result_format)) == XcmsFailure) { return(XcmsFailure); } if (retval1 == _XCMS_NEWNAME) { goto PassToServer; } /* * 2. pColor_scrn_return * Assume the pColor_exact_return has already been adjusted to * the Client White Point. * */ /* * Convert to RGB, adjusting for white point differences if necessary. */ memcpy((char *)pColor_scrn_return, (char *)pColor_exact_return, sizeof(XcmsColor)); if (pColor_scrn_return->format == XcmsRGBFormat) { retval2 = XcmsSuccess; } else if ((retval2 = XcmsConvertColors(ccc, pColor_scrn_return, 1, XcmsRGBFormat, (Bool *)NULL)) == XcmsFailure) { return(XcmsFailure); } /* * Then, convert XcmsColor structure to the target specification * format. Note that we must use NULL instead of passing * pCompressed. */ if (result_format == XcmsUndefinedFormat) { result_format = pColor_exact_return->format; } if (result_format == XcmsRGBFormat) { _XcmsUnresolveColor(ccc, pColor_scrn_return); } else { _XcmsResolveColor(ccc, pColor_scrn_return); if (XcmsConvertColors(ccc, pColor_scrn_return, 1, result_format, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } } return(retval1 > retval2 ? retval1 : retval2); PassToServer: /* * Xcms and i18n methods failed, so lets pass it to the server * for parsing. */ LockDisplay(dpy); GetReq (LookupColor, req); req->cmap = cmap; req->nbytes = (CARD16)(n = (int)strlen(colorname)); req->length += (n + 3) >> 2; Data (dpy, colorname, (long)n); if (!_XReply (dpy, (xReply *) &reply, 0, xTrue)) { UnlockDisplay(dpy); SyncHandle(); return (XcmsFailure); } def.red = reply.exactRed; def.green = reply.exactGreen; def.blue = reply.exactBlue; scr.red = reply.screenRed; scr.green = reply.screenGreen; scr.blue = reply.screenBlue; UnlockDisplay(dpy); SyncHandle(); _XColor_to_XcmsRGB(ccc, &def, pColor_exact_return, 1); _XColor_to_XcmsRGB(ccc, &scr, pColor_scrn_return, 1); /* * Then, convert XcmsColor structure to the target specification * format. Note that we must use NULL instead of passing * pCompressed. */ if (result_format != XcmsRGBFormat && result_format != XcmsUndefinedFormat) { if (XcmsConvertColors(ccc, pColor_exact_return, 1, result_format, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } if (XcmsConvertColors(ccc, pColor_scrn_return, 1, result_format, (Bool *) NULL) == XcmsFailure) { return(XcmsFailure); } } return(XcmsSuccess); } libX11-1.8.12/src/xcms/HVCGcV.c0000644014310600000120000001546614763154126011266 /* * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. * All Rights Reserved * * This file is a component of an X Window System-specific implementation * of Xcms based on the TekColor Color Management System. TekColor is a * trademark of Tektronix, Inc. The term "TekHVC" designates a particular * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent * foreign patents pending). Permission is hereby granted to use, copy, * modify, sell, and otherwise distribute this software and its * documentation for any purpose and without fee, provided that: * * 1. This copyright, permission, and disclaimer notice is reproduced in * all copies of this software and any modification thereof and in * supporting documentation; * 2. Any color-handling application which displays TekHVC color * cooordinates identifies these as TekHVC color coordinates in any * interface that displays these coordinates and in any associated * documentation; * 3. The term "TekHVC" is always used, and is only used, in association * with the mathematical derivations of the TekHVC Color Space, * including those provided in this file and any equivalent pathways and * mathematical derivations, regardless of digital (e.g., floating point * or integer) representation. * * Tektronix makes no representation about the suitability of this software * for any purpose. It is provided "as is" and with all faults. * * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. * * NAME * TekHVCGcV.c * * DESCRIPTION * Source for XcmsTekHVCClipV() gamut compression routine. * */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xcmsint.h" #include "Cv.h" /************************************************************************ * * * PUBLIC ROUTINES * * * ************************************************************************/ /* * NAME * XcmsTekHVCClipV - Return the closest value * * SYNOPSIS */ /* ARGSUSED */ Status XcmsTekHVCClipV ( XcmsCCC ccc, XcmsColor *pColors_in_out, unsigned int nColors, unsigned int i, Bool *pCompressed) /* * DESCRIPTION * Return the closest value for a specific hue and chroma. * This routine takes any color as input and outputs * a CIE XYZ color. * * Since this routine works with the value within * pColor_in_out intermediate results may be returned * even though it may be invalid. * * RETURNS * XcmsFailure - Failure * XcmsSuccess - Succeeded * */ { XcmsColor *pColor; XcmsColor hvc_max; XcmsCCCRec myCCC; Status retval; /* * Insure TekHVC installed */ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) { return(XcmsFailure); } /* Use my own CCC */ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec)); myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */ /* * Color specification passed as input can be assumed to: * 1. Be in XcmsCIEXYZFormat * 2. Already be white point adjusted for the Screen White Point. * This means that the white point now associated with this * color spec is the Screen White Point (even if the * ccc->clientWhitePt differs). */ pColor = pColors_in_out + i; if (ccc->visual->class < StaticColor && FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) { /* * GRAY ! */ return(XcmsFailure); } else { /* Convert from CIEXYZ to TekHVC format */ if (_XcmsDIConvertColors(&myCCC, pColor, &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat) == XcmsFailure) { return(XcmsFailure); } /* check to make sure we have a valid TekHVC number */ if (!_XcmsTekHVC_CheckModify (pColor)) { return (XcmsFailure); } /* Step 1: compute the maximum value and chroma for this hue. */ /* This copy may be overkill but it preserves the pixel etc. */ memcpy((char *)&hvc_max, (char *)pColor, sizeof(XcmsColor)); if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, hvc_max.spec.TekHVC.H, &hvc_max, (XcmsRGBi *)NULL) == XcmsFailure) { return (XcmsFailure); } /* Now check and return the appropriate value */ if (pColor->spec.TekHVC.C == hvc_max.spec.TekHVC.C) { /* When the chroma input is equal to the maximum chroma */ /* merely return the value for that chroma. */ pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V; if (!_XcmsTekHVC_CheckModify (pColor)) { return (XcmsFailure); } retval = _XcmsDIConvertColors(&myCCC, pColor, &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat); } else if (pColor->spec.TekHVC.C > hvc_max.spec.TekHVC.C) { /* When the chroma input is greater than the maximum chroma */ /* merely return the value and chroma for the given hue. */ pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C; pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V; return (XcmsFailure); } else if (pColor->spec.TekHVC.V < hvc_max.spec.TekHVC.V) { /* When the value input is less than the maximum value point */ /* compute the intersection of the line from 0,0 to max_V, max_C */ /* using the chroma input. */ pColor->spec.TekHVC.V = pColor->spec.TekHVC.C * hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C; if (pColor->spec.TekHVC.V >= hvc_max.spec.TekHVC.V) { pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C; pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V; } if (!_XcmsTekHVC_CheckModify (pColor)) { return (XcmsFailure); } retval = _XcmsDIConvertColors(&myCCC, pColor, &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat); } else { /* When the value input is greater than the maximum value point */ /* use HvcMaxValue to find the maximum value for the given chroma. */ if (pColor->format != XcmsTekHVCFormat) { if (_XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat) == XcmsFailure) { return(XcmsFailure); } } if (XcmsTekHVCQueryMaxV(&myCCC, pColor->spec.TekHVC.H, pColor->spec.TekHVC.C, pColor) == XcmsFailure) { return (XcmsFailure); } retval = _XcmsDIConvertColors(&myCCC, pColor, &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat); } if (retval != XcmsFailure && pCompressed != NULL) { *(pCompressed + i) = True; } return(retval); } } libX11-1.8.12/src/StColor.c0000644014310600000120000000341114763154126010644 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XStoreColor( register Display *dpy, Colormap cmap, XColor *def) { xColorItem *citem; register xStoreColorsReq *req; LockDisplay(dpy); GetReqExtra(StoreColors, SIZEOF(xColorItem), req); /* assume size is 4*n */ req->cmap = cmap; citem = (xColorItem *) NEXTPTR(req,xStoreColorsReq); citem->pixel = def->pixel; citem->red = def->red; citem->green = def->green; citem->blue = def->blue; citem->flags = def->flags; /* do_red, do_green, do_blue */ citem->pad = 0; UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/Context.c0000644014310600000120000002014414763154126010705 /*********************************************************** Copyright 1987, 1988, 1990 by Digital Equipment Corporation, Maynard, All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ /* Copyright 1987, 1988, 1990, 1994, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ /* This module implements a simple sparse array. XSaveContext(a,b,c,d) will store d in position (a,b,c) of the array. XFindContext(a,b,c,&d) will set d to be the value in position (a,b,c). XDeleteContext(a,b,c) will delete the entry in (a,b,c). a is a display id, b is a resource id, and c is a Context. d is just an XPointer. This code will work with any range of parameters, but is geared to be most efficient with very few (one or two) different a's. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xutil.h" #ifdef XTHREADS #include "locking.h" #endif #define INITHASHMASK 63 /* Number of entries originally in the hash table. */ typedef struct _TableEntryRec { /* Stores one entry. */ XID rid; XContext context; XPointer data; struct _TableEntryRec *next; } TableEntryRec, *TableEntry; typedef struct _XContextDB { /* Stores hash table for one display. */ TableEntry *table; /* Pointer to array of hash entries. */ int mask; /* Current size of hash table minus 1. */ int numentries; /* Number of entries currently in table. */ #ifdef XTHREADS LockInfoRec linfo; #endif } DBRec, *DB; #ifdef MOTIFBC static DB NullDB = (DB)0; #endif /* Given an XID and a context, returns a value between 0 and HashSize-1. Currently, this requires that HashSize be a power of 2. */ #define Hash(db,rid,context) \ (db)->table[(((rid) << 1) + context) & (db)->mask] /* Resize the given db */ static void ResizeTable(DB db) { TableEntry *otable; register TableEntry entry, next, *pold, *head; register int i, j; otable = db->table; for (i = INITHASHMASK+1; (i + i) < db->numentries; ) i += i; db->table = Xcalloc(i, sizeof(TableEntry)); if (!db->table) { db->table = otable; return; } j = db->mask + 1; db->mask = i - 1; for (pold = otable ; --j >= 0; pold++) { for (entry = *pold; entry; entry = next) { next = entry->next; head = &Hash(db, entry->rid, entry->context); entry->next = *head; *head = entry; } } Xfree(otable); } static void _XFreeContextDB(Display *display) { register DB db; register int i; register TableEntry *pentry, entry, next; db = display->context_db; if (db) { for (i = db->mask + 1, pentry = db->table ; --i >= 0; pentry++) { for (entry = *pentry; entry; entry = next) { next = entry->next; Xfree(entry); } } Xfree(db->table); _XFreeMutex(&db->linfo); Xfree(db); display->context_db = NULL; } } /* Public routines. */ /* Save the given value of data to correspond with the keys XID and context. Returns nonzero error code if an error has occurred, 0 otherwise. Possible errors are Out-of-memory. */ int XSaveContext( Display *display, register XID rid, register XContext context, _Xconst char* data) { DB *pdb; register DB db; TableEntry *head; register TableEntry entry; #ifdef MOTIFBC if (!display) { pdb = &NullDB; db = *pdb; } else #endif { LockDisplay(display); pdb = &display->context_db; db = *pdb; UnlockDisplay(display); } if (!db) { db = Xmalloc(sizeof(DBRec)); if (!db) return XCNOMEM; db->mask = INITHASHMASK; db->table = Xcalloc(db->mask + 1, sizeof(TableEntry)); if (!db->table) { Xfree(db); return XCNOMEM; } db->numentries = 0; _XCreateMutex(&db->linfo); #ifdef MOTIFBC if (!display) *pdb = db; else #endif { LockDisplay(display); *pdb = db; display->free_funcs->context_db = _XFreeContextDB; UnlockDisplay(display); } } _XLockMutex(&db->linfo); head = &Hash(db, rid, context); _XUnlockMutex(&db->linfo); for (entry = *head; entry; entry = entry->next) { if (entry->rid == rid && entry->context == context) { entry->data = (XPointer)data; return 0; } } entry = Xmalloc(sizeof(TableEntryRec)); if (!entry) return XCNOMEM; entry->rid = rid; entry->context = context; entry->data = (XPointer)data; entry->next = *head; *head = entry; _XLockMutex(&db->linfo); db->numentries++; if (db->numentries > (db->mask << 2)) ResizeTable(db); _XUnlockMutex(&db->linfo); return 0; } /* Given an XID and context, returns the associated data. Note that data here is a pointer since it is a return value. Returns nonzero error code if an error has occurred, 0 otherwise. Possible errors are Entry-not-found. */ int XFindContext(Display *display, XID rid, XContext context, XPointer *data) { register DB db; register TableEntry entry; #ifdef MOTIFBC if (!display) db = NullDB; else #endif { LockDisplay(display); db = display->context_db; UnlockDisplay(display); } if (!db) return XCNOENT; _XLockMutex(&db->linfo); for (entry = Hash(db, rid, context); entry; entry = entry->next) { if (entry->rid == rid && entry->context == context) { *data = (XPointer)entry->data; _XUnlockMutex(&db->linfo); return 0; } } _XUnlockMutex(&db->linfo); return XCNOENT; } /* Deletes the entry for the given XID and context from the datastructure. This returns the same thing that FindContext would have returned if called with the same arguments. */ int XDeleteContext(Display *display, XID rid, XContext context) { register DB db; register TableEntry entry, *prev; #ifdef MOTIFBC if (!display) db = NullDB; else #endif { LockDisplay(display); db = display->context_db; UnlockDisplay(display); } if (!db) return XCNOENT; _XLockMutex(&db->linfo); for (prev = &Hash(db, rid, context); (entry = *prev); prev = &entry->next) { if (entry->rid == rid && entry->context == context) { *prev = entry->next; Xfree(entry); db->numentries--; if (db->numentries < db->mask && db->mask > INITHASHMASK) ResizeTable(db); _XUnlockMutex(&db->linfo); return 0; } } _XUnlockMutex(&db->linfo); return XCNOENT; } libX11-1.8.12/src/UninsCmap.c0000644014310600000120000000264514763154126011164 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XUninstallColormap( register Display *dpy, Colormap cmap) { register xResourceReq *req; LockDisplay(dpy); GetResReq(UninstallColormap, cmap, req); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/ChWindow.c0000644014310600000120000000323414763154126011004 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XResizeWindow( register Display *dpy, Window w, unsigned int width, unsigned int height) { register xConfigureWindowReq *req; LockDisplay(dpy); GetReqExtra(ConfigureWindow, 8, req); /* 2 4-byte quantities */ req->window = w; req->mask = CWWidth | CWHeight; { CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xConfigureWindowReq); *valuePtr++ = width; *valuePtr = height; } UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/SetStCmap.c0000644014310600000120000000652514763154126011133 /*********************************************************** Copyright 1987, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "Xatomtype.h" #include /* * WARNING * * This is a pre-ICCCM routine. It must not reference any of the new fields * in the XStandardColormap structure. */ void XSetStandardColormap( Display *dpy, Window w, XStandardColormap *cmap, Atom property) /* XA_RGB_BEST_MAP, etc. */ { Screen *sp; XStandardColormap stdcmap; sp = _XScreenOfWindow (dpy, w); if (!sp) { /* already caught the XGetGeometry error in _XScreenOfWindow */ return; } stdcmap.colormap = cmap->colormap; stdcmap.red_max = cmap->red_max; stdcmap.red_mult = cmap->red_mult; stdcmap.green_max = cmap->green_max; stdcmap.green_mult = cmap->green_mult; stdcmap.blue_max = cmap->blue_max; stdcmap.blue_mult = cmap->blue_mult; stdcmap.base_pixel = cmap->base_pixel; stdcmap.visualid = sp->root_visual->visualid; stdcmap.killid = None; /* don't know how to kill this one */ #ifdef XCMS XSetRGBColormaps (dpy, w, &stdcmap, 1, property); #endif return; } libX11-1.8.12/src/PutImage.c0000644014310600000120000007504314763154126011004 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xutil.h" #include #include #include "Cr.h" #include "ImUtil.h" #include "reallocarray.h" #if defined(__STDC__) && ((defined(sun) && defined(SVR4)) || defined(WIN32)) #define RConst /**/ #else #define RConst const #endif /* assumes pad is a power of 2 */ #define ROUNDUP(nbytes, pad) (((nbytes) + ((pad) - 1)) & ~(long)((pad) - 1)) static unsigned char const _reverse_byte[0x100] = { 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff }; static unsigned char const _reverse_nibs[0x100] = { 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0, 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, 0xe1, 0xf1, 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72, 0x82, 0x92, 0xa2, 0xb2, 0xc2, 0xd2, 0xe2, 0xf2, 0x03, 0x13, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73, 0x83, 0x93, 0xa3, 0xb3, 0xc3, 0xd3, 0xe3, 0xf3, 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb4, 0xc4, 0xd4, 0xe4, 0xf4, 0x05, 0x15, 0x25, 0x35, 0x45, 0x55, 0x65, 0x75, 0x85, 0x95, 0xa5, 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, 0xe6, 0xf6, 0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78, 0x88, 0x98, 0xa8, 0xb8, 0xc8, 0xd8, 0xe8, 0xf8, 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, 0x69, 0x79, 0x89, 0x99, 0xa9, 0xb9, 0xc9, 0xd9, 0xe9, 0xf9, 0x0a, 0x1a, 0x2a, 0x3a, 0x4a, 0x5a, 0x6a, 0x7a, 0x8a, 0x9a, 0xaa, 0xba, 0xca, 0xda, 0xea, 0xfa, 0x0b, 0x1b, 0x2b, 0x3b, 0x4b, 0x5b, 0x6b, 0x7b, 0x8b, 0x9b, 0xab, 0xbb, 0xcb, 0xdb, 0xeb, 0xfb, 0x0c, 0x1c, 0x2c, 0x3c, 0x4c, 0x5c, 0x6c, 0x7c, 0x8c, 0x9c, 0xac, 0xbc, 0xcc, 0xdc, 0xec, 0xfc, 0x0d, 0x1d, 0x2d, 0x3d, 0x4d, 0x5d, 0x6d, 0x7d, 0x8d, 0x9d, 0xad, 0xbd, 0xcd, 0xdd, 0xed, 0xfd, 0x0e, 0x1e, 0x2e, 0x3e, 0x4e, 0x5e, 0x6e, 0x7e, 0x8e, 0x9e, 0xae, 0xbe, 0xce, 0xde, 0xee, 0xfe, 0x0f, 0x1f, 0x2f, 0x3f, 0x4f, 0x5f, 0x6f, 0x7f, 0x8f, 0x9f, 0xaf, 0xbf, 0xcf, 0xdf, 0xef, 0xff }; int _XReverse_Bytes( unsigned char *bpt, int nb) { do { *bpt = _reverse_byte[*bpt]; bpt++; } while (--nb > 0); return 0; } /* XXX the following functions are declared int instead of void because various * compilers and lints complain about later initialization of SwapFunc and/or * (swapfunc == NoSwap) when void is used. */ /*ARGSUSED*/ static void NoSwap ( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height, int half_order) { long h = height; if (srcinc == destinc) memcpy((char *)dest, (char *)src, (int)(srcinc * (h - 1) + srclen)); else for (; --h >= 0; src += srcinc, dest += destinc) memcpy((char *)dest, (char *)src, (int)srclen); } static void SwapTwoBytes ( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height, int half_order) { long length = ROUNDUP(srclen, 2); register long h, n; srcinc -= length; destinc -= length; for (h = height; --h >= 0; src += srcinc, dest += destinc) { if ((h == 0) && (srclen != length)) { length -= 2; if (half_order == MSBFirst) *(dest + length) = *(src + length + 1); else *(dest + length + 1) = *(src + length); } for (n = length; n > 0; n -= 2, src += 2) { *dest++ = *(src + 1); *dest++ = *src; } } } static void SwapThreeBytes ( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height, int byte_order) { long length = ((srclen + 2) / 3) * 3; register long h, n; srcinc -= length; destinc -= length; for (h = height; --h >= 0; src += srcinc, dest += destinc) { if ((h == 0) && (srclen != length)) { length -= 3; if ((srclen - length) == 2) *(dest + length + 1) = *(src + length + 1); if (byte_order == MSBFirst) *(dest + length) = *(src + length + 2); else *(dest + length + 2) = *(src + length); } for (n = length; n > 0; n -= 3, src += 3) { *dest++ = *(src + 2); *dest++ = *(src + 1); *dest++ = *src; } } } static void SwapFourBytes ( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height, int half_order) { long length = ROUNDUP(srclen, 4); register long h, n; srcinc -= length; destinc -= length; for (h = height; --h >= 0; src += srcinc, dest += destinc) { if ((h == 0) && (srclen != length)) { length -= 4; if (half_order == MSBFirst) *(dest + length) = *(src + length + 3); if (((half_order == LSBFirst) && ((srclen - length) == 3)) || ((half_order == MSBFirst) && (srclen & 2))) *(dest + length + 1) = *(src + length + 2); if (((half_order == MSBFirst) && ((srclen - length) == 3)) || ((half_order == LSBFirst) && (srclen & 2))) *(dest + length + 2) = *(src + length + 1); if (half_order == LSBFirst) *(dest + length + 3) = *(src + length); } for (n = length; n > 0; n -= 4, src += 4) { *dest++ = *(src + 3); *dest++ = *(src + 2); *dest++ = *(src + 1); *dest++ = *src; } } } static void SwapWords ( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height, int half_order) { long length = ROUNDUP(srclen, 4); register long h, n; srcinc -= length; destinc -= length; for (h = height; --h >= 0; src += srcinc, dest += destinc) { if ((h == 0) && (srclen != length)) { length -= 4; if (half_order == MSBFirst) *(dest + length + 1) = *(src + length + 3); if (((half_order == LSBFirst) && ((srclen - length) == 3)) || ((half_order == MSBFirst) && (srclen & 2))) *(dest + length) = *(src + length + 2); if (((half_order == MSBFirst) && ((srclen - length) == 3)) || ((half_order == LSBFirst) && (srclen & 2))) *(dest + length + 3) = *(src + length + 1); if (half_order == LSBFirst) *(dest + length + 2) = *(src + length); } for (n = length; n > 0; n -= 4, src += 2) { *dest++ = *(src + 2); *dest++ = *(src + 3); *dest++ = *src++; *dest++ = *src++; } } } static void SwapNibbles( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height) { register long h, n; register const unsigned char *rev = _reverse_nibs; srcinc -= srclen; destinc -= srclen; for (h = height; --h >= 0; src += srcinc, dest += destinc) for (n = srclen; --n >= 0; ) *dest++ = rev[*src++]; } static void ShiftNibblesLeft ( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height, int nibble_order) { register long h, n; register unsigned char c1, c2; srcinc -= srclen; destinc -= srclen; if (nibble_order == MSBFirst) { for (h = height; --h >= 0; src += srcinc, dest += destinc) for (n = srclen; --n >= 0; ) { c1 = *src++; c2 = *src; *dest++ = ((c1 & 0x0f) << 4) | ((c2 & (unsigned)0xf0) >> 4); } } else { for (h = height; --h >= 0; src += srcinc, dest += destinc) for (n = srclen; --n >= 0; ) { c1 = *src++; c2 = *src; *dest++ = ((c2 & 0x0f) << 4) | ((c1 & (unsigned)0xf0) >> 4); } } } /*ARGSUSED*/ static void SwapBits( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height, int half_order) { register long h, n; register const unsigned char *rev = _reverse_byte; srcinc -= srclen; destinc -= srclen; for (h = height; --h >= 0; src += srcinc, dest += destinc) for (n = srclen; --n >= 0; ) *dest++ = rev[*src++]; } static void SwapBitsAndTwoBytes( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height, int half_order) { long length = ROUNDUP(srclen, 2); register long h, n; register const unsigned char *rev = _reverse_byte; srcinc -= length; destinc -= length; for (h = height; --h >= 0; src += srcinc, dest += destinc) { if ((h == 0) && (srclen != length)) { length -= 2; if (half_order == MSBFirst) *(dest + length) = rev[*(src + length + 1)]; else *(dest + length + 1) = rev[*(src + length)]; } for (n = length; n > 0; n -= 2, src += 2) { *dest++ = rev[*(src + 1)]; *dest++ = rev[*src]; } } } static void SwapBitsAndFourBytes( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height, int half_order) { long length = ROUNDUP(srclen, 4); register long h, n; register const unsigned char *rev = _reverse_byte; srcinc -= length; destinc -= length; for (h = height; --h >= 0; src += srcinc, dest += destinc) { if ((h == 0) && (srclen != length)) { length -= 4; if (half_order == MSBFirst) *(dest + length) = rev[*(src + length + 3)]; if (((half_order == LSBFirst) && ((srclen - length) == 3)) || ((half_order == MSBFirst) && (srclen & 2))) *(dest + length + 1) = rev[*(src + length + 2)]; if (((half_order == MSBFirst) && ((srclen - length) == 3)) || ((half_order == LSBFirst) && (srclen & 2))) *(dest + length + 2) = rev[*(src + length + 1)]; if (half_order == LSBFirst) *(dest + length + 3) = rev[*(src + length)]; } for (n = length; n > 0; n -= 4, src += 4) { *dest++ = rev[*(src + 3)]; *dest++ = rev[*(src + 2)]; *dest++ = rev[*(src + 1)]; *dest++ = rev[*src]; } } } static void SwapBitsAndWords( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height, int half_order) { long length = ROUNDUP(srclen, 4); register long h, n; register const unsigned char *rev = _reverse_byte; srcinc -= length; destinc -= length; for (h = height; --h >= 0; src += srcinc, dest += destinc) { if ((h == 0) && (srclen != length)) { length -= 4; if (half_order == MSBFirst) *(dest + length + 1) = rev[*(src + length + 3)]; if (((half_order == LSBFirst) && ((srclen - length) == 3)) || ((half_order == MSBFirst) && (srclen & 2))) *(dest + length) = rev[*(src + length + 2)]; if (((half_order == MSBFirst) && ((srclen - length) == 3)) || ((half_order == LSBFirst) && (srclen & 2))) *(dest + length + 3) = rev[*(src + length + 1)]; if (half_order == LSBFirst) *(dest + length + 2) = rev[*(src + length)]; } for (n = length; n > 0; n -= 4, src += 2) { *dest++ = rev[*(src + 2)]; *dest++ = rev[*(src + 3)]; *dest++ = rev[*src++]; *dest++ = rev[*src++]; } } } /* The following table gives the bit ordering within bytes (when accessed sequentially) for a scanline containing 32 bits, with bits numbered 0 to 31, where bit 0 should be leftmost on the display. For a given byte labelled A-B, A is for the most significant bit of the byte, and B is for the least significant bit. legend: 1 scanline-unit = 8 2 scanline-unit = 16 4 scanline-unit = 32 M byte-order = MostSignificant L byte-order = LeastSignificant m bit-order = MostSignificant l bit-order = LeastSignificant format ordering 1Mm 00-07 08-15 16-23 24-31 2Mm 00-07 08-15 16-23 24-31 4Mm 00-07 08-15 16-23 24-31 1Ml 07-00 15-08 23-16 31-24 2Ml 15-08 07-00 31-24 23-16 4Ml 31-24 23-16 15-08 07-00 1Lm 00-07 08-15 16-23 24-31 2Lm 08-15 00-07 24-31 16-23 4Lm 24-31 16-23 08-15 00-07 1Ll 07-00 15-08 23-16 31-24 2Ll 07-00 15-08 23-16 31-24 4Ll 07-00 15-08 23-16 31-24 The following table gives the required conversion between any two formats. It is based strictly on the table above. If you believe one, you should believe the other. legend: n no changes s reverse 8-bit units within 16-bit units l reverse 8-bit units within 32-bit units w reverse 16-bit units within 32-bit units R reverse bits within 8-bit units S s+R L l+R W w+R */ static void (* RConst (SwapFunction[12][12]))( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height, int half_order) = { #define n NoSwap, #define s SwapTwoBytes, #define l SwapFourBytes, #define w SwapWords, #define R SwapBits, #define S SwapBitsAndTwoBytes, #define L SwapBitsAndFourBytes, #define W SwapBitsAndWords, /* 1Mm 2Mm 4Mm 1Ml 2Ml 4Ml 1Lm 2Lm 4Lm 1Ll 2Ll 4Ll */ /* 1Mm */ { n n n R S L n s l R R R }, /* 2Mm */ { n n n R S L n s l R R R }, /* 4Mm */ { n n n R S L n s l R R R }, /* 1Ml */ { R R R n s l R S L n n n }, /* 2Ml */ { S S S s n w S R W s s s }, /* 4Ml */ { L L L l w n L W R l l l }, /* 1Lm */ { n n n R S L n s l R R R }, /* 2Lm */ { s s s S R W s n w S S S }, /* 4Lm */ { l l l L W R l w n L L L }, /* 1Ll */ { R R R n s l R S L n n n }, /* 2Ll */ { R R R n s l R S L n n n }, /* 4Ll */ { R R R n s l R S L n n n } #undef n #undef s #undef l #undef w #undef R #undef S #undef L #undef W }; /* Of course, the table above is a lie. We also need to factor in the * order of the source data to cope with swapping half of a unit at the * end of a scanline, since we are trying to avoid de-ref'ing off the * end of the source. * * Defines whether the first half of a unit has the first half of the data */ static int const HalfOrder[12] = { LSBFirst, /* 1Mm */ LSBFirst, /* 2Mm */ LSBFirst, /* 4Mm */ LSBFirst, /* 1Ml */ MSBFirst, /* 2Ml */ MSBFirst, /* 4Ml */ LSBFirst, /* 1Lm */ MSBFirst, /* 2Lm */ MSBFirst, /* 4Lm */ LSBFirst, /* 1Ll */ LSBFirst, /* 2Ll */ LSBFirst /* 4Ll */ }; /* Finally, for SwapWords cases, the half order depends not just on the source * but also on the destination scanline unit. Use of this table changes some * MSBFirsts to LSBFirsts that are "do not care" (because the function will be * NoSwap or SwapBits) in addition to changing the desired ones. */ static int const HalfOrderWord[12] = { MSBFirst, /* 1Mm */ MSBFirst, /* 2Mm */ MSBFirst, /* 4Mm */ MSBFirst, /* 1Ml */ MSBFirst, /* 2Ml */ LSBFirst, /* 4Ml */ MSBFirst, /* 1Lm */ MSBFirst, /* 2Lm */ LSBFirst, /* 4Lm */ MSBFirst, /* 1Ll */ MSBFirst, /* 2Ll */ MSBFirst /* 4Ll */ }; /* * This macro creates a value from 0 to 11 suitable for indexing * into the table above. */ #define ComposeIndex(bitmap_unit, bitmap_bit_order, byte_order) \ (((bitmap_unit == 32) ? 2 : ((bitmap_unit == 16) ? 1 : 0)) \ + (((bitmap_bit_order == MSBFirst) ? 0 : 3) \ + ((byte_order == MSBFirst) ? 0 : 6))) /* Cancel a GetReq operation, before doing _XSend or Data */ #define UnGetReq(name)\ dpy->bufptr -= SIZEOF(x##name##Req);\ X_DPY_REQUEST_DECREMENT(dpy) static void SendXYImage( register Display *dpy, register xPutImageReq *req, register XImage *image, int req_xoffset, int req_yoffset) { register int j; long total_xoffset, bytes_per_src, bytes_per_dest, length; long bytes_per_line, bytes_per_src_plane, bytes_per_dest_plane; char *src, *dest, *buf; char *extra = (char *)NULL; register void (*swapfunc)( register unsigned char *src, register unsigned char *dest, long srclen, long srcinc, long destinc, unsigned int height, int half_order); int half_order; total_xoffset = image->xoffset + req_xoffset; req->leftPad = total_xoffset & (dpy->bitmap_unit - 1); total_xoffset = (unsigned)(total_xoffset - req->leftPad) >> 3; /* The protocol requires left-pad of zero on all ZPixmap, even * though the 1-bit case is identical to bitmap format. This is a * bug in the protocol, caused because 1-bit ZPixmap was added late * in the game. Hairy shifting code compensation isn't worth it, * just use XYPixmap format instead. */ if ((req->leftPad != 0) && (req->format == ZPixmap)) req->format = XYPixmap; bytes_per_dest = (unsigned long)ROUNDUP((long)req->width + req->leftPad, dpy->bitmap_pad) >> 3; bytes_per_dest_plane = bytes_per_dest * req->height; length = bytes_per_dest_plane * image->depth; req->length += (length + 3) >> 2; swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit, image->bitmap_bit_order, image->byte_order)] [ComposeIndex(dpy->bitmap_unit, dpy->bitmap_bit_order, dpy->byte_order)]; half_order = HalfOrder[ComposeIndex(image->bitmap_unit, image->bitmap_bit_order, image->byte_order)]; if (half_order == MSBFirst) half_order = HalfOrderWord[ComposeIndex(dpy->bitmap_unit, dpy->bitmap_bit_order, dpy->byte_order)]; src = image->data + (image->bytes_per_line * req_yoffset) + total_xoffset; /* when total_xoffset > 0, we have to worry about stepping off the * end of image->data. */ if ((swapfunc == NoSwap) && (image->bytes_per_line == bytes_per_dest) && (((total_xoffset == 0) && ((image->depth == 1) || (image->height == req->height))) || ((image->depth == 1) && ((req_yoffset + req->height) < (unsigned)image->height)))) { Data(dpy, src, length); return; } length = ROUNDUP(length, 4); if ((dpy->bufptr + length) > dpy->bufmax) { if ((buf = _XAllocScratch(dpy, length)) == NULL) { UnGetReq(PutImage); return; } } else buf = dpy->bufptr; bytes_per_src = (req->width + req->leftPad + (unsigned)7) >> 3; bytes_per_line = image->bytes_per_line; bytes_per_src_plane = bytes_per_line * image->height; total_xoffset &= (image->bitmap_unit - 1) >> 3; if ((total_xoffset > 0) && (image->byte_order != image->bitmap_bit_order)) { char *temp; long bytes_per_temp_plane, temp_length; bytes_per_line = bytes_per_src + total_xoffset; src -= total_xoffset; bytes_per_temp_plane = bytes_per_line * req->height; temp_length = ROUNDUP(bytes_per_temp_plane * image->depth, 4); if (buf == dpy->bufptr) { if (! (temp = _XAllocScratch(dpy, temp_length))) { UnGetReq(PutImage); return; } } else if ((extra = temp = Xmalloc(temp_length)) == NULL) { UnGetReq(PutImage); return; } swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit, image->bitmap_bit_order, image->byte_order)] [ComposeIndex(image->bitmap_unit, dpy->byte_order, dpy->byte_order)]; for (dest = temp, j = image->depth; --j >= 0; src += bytes_per_src_plane, dest += bytes_per_temp_plane) (*swapfunc)((unsigned char *)src, (unsigned char *)dest, bytes_per_line, (long)image->bytes_per_line, bytes_per_line, req->height, half_order); swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit, dpy->byte_order, dpy->byte_order)] [ComposeIndex(dpy->bitmap_unit, dpy->bitmap_bit_order, dpy->byte_order)]; half_order = HalfOrder[ComposeIndex(image->bitmap_unit, dpy->byte_order, dpy->byte_order)]; src = temp + total_xoffset; bytes_per_src_plane = bytes_per_temp_plane; } for (dest = buf, j = image->depth; --j >= 0; src += bytes_per_src_plane, dest += bytes_per_dest_plane) (*swapfunc)((unsigned char *)src, (unsigned char *)dest, bytes_per_src, bytes_per_line, bytes_per_dest, req->height, half_order); Xfree(extra); if (buf == dpy->bufptr) dpy->bufptr += length; else _XSend(dpy, buf, length); } static void SendZImage( register Display *dpy, register xPutImageReq *req, register XImage *image, int req_xoffset, int req_yoffset, int dest_bits_per_pixel, int dest_scanline_pad) { long bytes_per_src, bytes_per_dest, length; unsigned char *src, *dest; unsigned char *shifted_src = NULL; req->leftPad = 0; bytes_per_src = ROUNDUP((long)req->width * image->bits_per_pixel, 8) >> 3; bytes_per_dest = ROUNDUP((long)req->width * dest_bits_per_pixel, dest_scanline_pad) >> 3; length = bytes_per_dest * req->height; req->length += (length + 3) >> 2; src = (unsigned char *)image->data + (req_yoffset * image->bytes_per_line) + ((req_xoffset * image->bits_per_pixel) >> 3); if ((image->bits_per_pixel == 4) && ((unsigned int) req_xoffset & 0x01)) { if (! (shifted_src = Xmallocarray(req->height, image->bytes_per_line))) { UnGetReq(PutImage); return; } ShiftNibblesLeft(src, shifted_src, bytes_per_src, (long) image->bytes_per_line, (long) image->bytes_per_line, req->height, image->byte_order); src = shifted_src; } /* when req_xoffset > 0, we have to worry about stepping off the * end of image->data. */ if (((image->byte_order == dpy->byte_order) || (image->bits_per_pixel == 8)) && ((long)image->bytes_per_line == bytes_per_dest) && ((req_xoffset == 0) || ((req_yoffset + req->height) < (unsigned)image->height))) { Data(dpy, (char *)src, length); Xfree(shifted_src); return; } length = ROUNDUP(length, 4); if ((dpy->bufptr + length) <= dpy->bufmax) dest = (unsigned char *)dpy->bufptr; else if ((dest = (unsigned char *) _XAllocScratch(dpy, length)) == NULL) { Xfree(shifted_src); UnGetReq(PutImage); return; } if ((image->byte_order == dpy->byte_order) || (image->bits_per_pixel == 8)) NoSwap(src, dest, bytes_per_src, (long)image->bytes_per_line, bytes_per_dest, req->height, image->byte_order); else if (image->bits_per_pixel == 32) SwapFourBytes(src, dest, bytes_per_src, (long)image->bytes_per_line, bytes_per_dest, req->height, image->byte_order); else if (image->bits_per_pixel == 24) SwapThreeBytes(src, dest, bytes_per_src, (long)image->bytes_per_line, bytes_per_dest, req->height, image->byte_order); else if (image->bits_per_pixel == 16) SwapTwoBytes(src, dest, bytes_per_src, (long)image->bytes_per_line, bytes_per_dest, req->height, image->byte_order); else SwapNibbles(src, dest, bytes_per_src, (long)image->bytes_per_line, bytes_per_dest, req->height); if (dest == (unsigned char *)dpy->bufptr) dpy->bufptr += length; else _XSend(dpy, (char *)dest, length); Xfree(shifted_src); } static void PutImageRequest( register Display *dpy, Drawable d, GC gc, register XImage *image, int req_xoffset, int req_yoffset, int x, int y, unsigned int req_width, unsigned int req_height, int dest_bits_per_pixel, int dest_scanline_pad) { register xPutImageReq *req; GetReq(PutImage, req); req->drawable = d; req->gc = gc->gid; req->dstX = x; req->dstY = y; req->width = req_width; req->height = req_height; req->depth = image->depth; req->format = image->format; if ((image->bits_per_pixel == 1) || (image->format != ZPixmap)) SendXYImage(dpy, req, image, req_xoffset, req_yoffset); else SendZImage(dpy, req, image, req_xoffset, req_yoffset, dest_bits_per_pixel, dest_scanline_pad); } static void PutSubImage ( register Display *dpy, Drawable d, GC gc, register XImage *image, int req_xoffset, int req_yoffset, int x, int y, unsigned int req_width, unsigned int req_height, int dest_bits_per_pixel, int dest_scanline_pad) { int left_pad, BytesPerRow, Available; if ((req_width == 0) || (req_height == 0)) return; Available = ((65536 < dpy->max_request_size) ? (65536 << 2) : (dpy->max_request_size << 2)) - SIZEOF(xPutImageReq); if ((image->bits_per_pixel == 1) || (image->format != ZPixmap)) { left_pad = (image->xoffset + req_xoffset) & (dpy->bitmap_unit - 1); BytesPerRow = (ROUNDUP((long)req_width + left_pad, dpy->bitmap_pad) >> 3) * image->depth; } else { left_pad = 0; BytesPerRow = ROUNDUP((long)req_width * dest_bits_per_pixel, dest_scanline_pad) >> 3; } if ((BytesPerRow * req_height) <= Available) { PutImageRequest(dpy, d, gc, image, req_xoffset, req_yoffset, x, y, req_width, req_height, dest_bits_per_pixel, dest_scanline_pad); } else if (req_height > 1) { int SubImageHeight = Available / BytesPerRow; if (SubImageHeight == 0) SubImageHeight = 1; PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y, req_width, (unsigned int) SubImageHeight, dest_bits_per_pixel, dest_scanline_pad); PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset + SubImageHeight, x, y + SubImageHeight, req_width, req_height - SubImageHeight, dest_bits_per_pixel, dest_scanline_pad); } else { int SubImageWidth = ((((Available << 3) / dest_scanline_pad) * dest_scanline_pad) - left_pad) / dest_bits_per_pixel; PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y, (unsigned int) SubImageWidth, 1, dest_bits_per_pixel, dest_scanline_pad); PutSubImage(dpy, d, gc, image, req_xoffset + SubImageWidth, req_yoffset, x + SubImageWidth, y, req_width - SubImageWidth, 1, dest_bits_per_pixel, dest_scanline_pad); } } int XPutImage ( register Display *dpy, Drawable d, GC gc, register XImage *image, int req_xoffset, int req_yoffset, int x, int y, unsigned int req_width, unsigned int req_height) { long width = req_width; long height = req_height; int dest_bits_per_pixel, dest_scanline_pad; if (req_xoffset < 0) { width += req_xoffset; req_xoffset = 0; } if (req_yoffset < 0) { height += req_yoffset; req_yoffset = 0; } if ((req_xoffset + width) > image->width) width = image->width - req_xoffset; if ((req_yoffset + height) > image->height) height = image->height - req_yoffset; if ((width <= 0) || (height <= 0)) return 0; if (width > USHRT_MAX) width = USHRT_MAX; if (height > USHRT_MAX) height = USHRT_MAX; if ((image->bits_per_pixel == 1) || (image->format != ZPixmap)) { dest_bits_per_pixel = 1; dest_scanline_pad = dpy->bitmap_pad; } else { register int n; register ScreenFormat *format; dest_bits_per_pixel = image->bits_per_pixel; dest_scanline_pad = image->bitmap_pad; for (n = dpy->nformats, format = dpy->pixmap_format; --n >= 0; format++) if (format->depth == image->depth) { dest_bits_per_pixel = format->bits_per_pixel; dest_scanline_pad = format->scanline_pad; } if (dest_bits_per_pixel != image->bits_per_pixel) { XImage img; register long i, j; /* XXX slow, but works */ img.width = width; img.height = height; img.xoffset = 0; img.format = ZPixmap; img.byte_order = dpy->byte_order; img.bitmap_unit = dpy->bitmap_unit; img.bitmap_bit_order = dpy->bitmap_bit_order; img.bitmap_pad = dest_scanline_pad; img.depth = image->depth; img.bits_per_pixel = dest_bits_per_pixel; img.bytes_per_line = ROUNDUP((dest_bits_per_pixel * width), dest_scanline_pad) >> 3; img.data = Xmallocarray(height, img.bytes_per_line); if (img.data == NULL) return 0; _XInitImageFuncPtrs(&img); for (j = height; --j >= 0; ) for (i = width; --i >= 0; ) XPutPixel(&img, i, j, XGetPixel(image, req_xoffset + i, req_yoffset + j)); LockDisplay(dpy); FlushGC(dpy, gc); PutSubImage(dpy, d, gc, &img, 0, 0, x, y, (unsigned int) width, (unsigned int) height, dest_bits_per_pixel, dest_scanline_pad); UnlockDisplay(dpy); SyncHandle(); Xfree(img.data); return 0; } } LockDisplay(dpy); FlushGC(dpy, gc); PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y, (unsigned int) width, (unsigned int) height, dest_bits_per_pixel, dest_scanline_pad); UnlockDisplay(dpy); SyncHandle(); #ifdef USE_DYNAMIC_XCURSOR if (image->bits_per_pixel == 1 && x == 0 && y == 0 && width == image->width && height == image->height && gc->values.function == GXcopy && (gc->values.plane_mask & 1)) { _XNoticePutBitmap (dpy, d, image); } #endif return 0; } libX11-1.8.12/src/FontInfo.c0000644014310600000120000001444614763154126011013 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "reallocarray.h" #include #if defined(XF86BIGFONT) #define USE_XF86BIGFONT #endif #ifdef USE_XF86BIGFONT extern void _XF86BigfontFreeFontMetrics( XFontStruct* /* fs */ ); #endif char **XListFontsWithInfo( register Display *dpy, _Xconst char *pattern, /* null-terminated */ int maxNames, int *actualCount, /* RETURN */ XFontStruct **info) /* RETURN */ { unsigned long nbytes; unsigned long reply_left; /* unused data left in reply buffer */ register int i; register XFontStruct *fs; unsigned int size = 0; XFontStruct *finfo = NULL; char **flist = NULL; xListFontsWithInfoReply reply; register xListFontsReq *req; int j; if (pattern != NULL && strlen(pattern) >= USHRT_MAX) return NULL; LockDisplay(dpy); GetReq(ListFontsWithInfo, req); req->maxNames = maxNames; nbytes = req->nbytes = pattern ? (CARD16) strlen (pattern) : 0; req->length += (nbytes + 3) >> 2; _XSend (dpy, pattern, nbytes); /* use _XSend instead of Data, since subsequent _XReply will flush buffer */ for (i = 0; ; i++) { if (!_XReply (dpy, (xReply *) &reply, ((SIZEOF(xListFontsWithInfoReply) - SIZEOF(xGenericReply)) >> 2), xFalse)) { reply.nameLength = 0; /* avoid trying to read more replies */ reply_left = 0; goto badmem; } reply_left = reply.length - ((SIZEOF(xListFontsWithInfoReply) - SIZEOF(xGenericReply)) >> 2); if (reply.nameLength == 0) { _XEatDataWords(dpy, reply_left); break; } if (reply.nReplies >= (INT_MAX - i)) /* avoid overflowing size */ goto badmem; if ((i + reply.nReplies) >= size) { size = i + reply.nReplies + 1; if (size >= (INT_MAX / sizeof(XFontStruct))) goto badmem; if (finfo) { XFontStruct * tmp_finfo; char ** tmp_flist; tmp_finfo = Xreallocarray (finfo, size, sizeof(XFontStruct)); if (tmp_finfo) finfo = tmp_finfo; else goto badmem; tmp_flist = Xreallocarray (flist, size + 1, sizeof(char *)); if (tmp_flist) flist = tmp_flist; else goto badmem; } else { if (! (finfo = Xmallocarray(size, sizeof(XFontStruct)))) goto clearwire; if (! (flist = Xmallocarray(size + 1, sizeof(char *)))) { Xfree(finfo); goto clearwire; } } } fs = &finfo[i]; fs->ext_data = NULL; fs->per_char = NULL; fs->fid = None; fs->direction = reply.drawDirection; fs->min_char_or_byte2 = reply.minCharOrByte2; fs->max_char_or_byte2 = reply.maxCharOrByte2; fs->min_byte1 = reply.minByte1; fs->max_byte1 = reply.maxByte1; fs->default_char = reply.defaultChar; fs->all_chars_exist = reply.allCharsExist; fs->ascent = cvtINT16toInt (reply.fontAscent); fs->descent = cvtINT16toInt (reply.fontDescent); /* XXX the next two statements won't work if short isn't 16 bits */ fs->min_bounds = * (XCharStruct *) &reply.minBounds; fs->max_bounds = * (XCharStruct *) &reply.maxBounds; fs->n_properties = reply.nFontProps; fs->properties = NULL; if (fs->n_properties > 0) { /* nFontProps is a CARD16 */ nbytes = reply.nFontProps * SIZEOF(xFontProp); if ((nbytes >> 2) <= reply_left) { fs->properties = Xmallocarray (reply.nFontProps, sizeof(XFontProp)); } if (! fs->properties) goto badmem; _XRead32 (dpy, (long *)fs->properties, nbytes); reply_left -= (nbytes >> 2); } /* nameLength is a CARD8 */ nbytes = reply.nameLength + 1; if (!i) nbytes++; /* make first string 1 byte longer, to match XListFonts */ flist[i] = Xmalloc (nbytes); if (! flist[i]) { if (finfo[i].properties) Xfree(finfo[i].properties); goto badmem; } if (!i) { *flist[0] = 0; /* zero to distinguish from XListFonts */ flist[0]++; } flist[i][reply.nameLength] = '\0'; _XReadPad (dpy, flist[i], (long) reply.nameLength); } *info = finfo; *actualCount = i; if (flist) flist[i] = NULL; /* required in case XFreeFontNames is called */ UnlockDisplay(dpy); SyncHandle(); return (flist); badmem: /* Free all memory allocated by this function. */ for (j=(i-1); (j >= 0); j--) { if (j == 0) flist[j]--; /* was incremented above */ Xfree(flist[j]); if (finfo[j].properties) Xfree(finfo[j].properties); } Xfree(flist); Xfree(finfo); clearwire: /* Clear the wire. */ _XEatDataWords(dpy, reply_left); while ((reply.nameLength != 0) && _XReply(dpy, (xReply *) &reply, ((SIZEOF(xListFontsWithInfoReply) - SIZEOF(xGenericReply)) >> 2), xTrue)); UnlockDisplay(dpy); SyncHandle(); *info = NULL; *actualCount = 0; return (char **) NULL; } int XFreeFontInfo ( char **names, XFontStruct *info, int actualCount) { register int i; if (names) { Xfree (names[0]-1); for (i = 1; i < actualCount; i++) { Xfree (names[i]); } Xfree(names); } if (info) { for (i = 0; i < actualCount; i++) { if (info[i].per_char) #ifdef USE_XF86BIGFONT _XF86BigfontFreeFontMetrics(&info[i]); #else Xfree (info[i].per_char); #endif if (info[i].properties) Xfree (info[i].properties); } Xfree(info); } return 1; } libX11-1.8.12/src/PmapBgnd.c0000644014310600000120000000312214763154126010746 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XSetWindowBackgroundPixmap( register Display *dpy, Window w, Pixmap pixmap) { register xChangeWindowAttributesReq *req; LockDisplay (dpy); GetReqExtra (ChangeWindowAttributes, 4, req); req->window = w; req->valueMask = CWBackPixmap; OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixmap); UnlockDisplay (dpy); SyncHandle(); return 1; } libX11-1.8.12/src/PeekEvent.c0000644014310600000120000000325114763154126011147 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" /* * Return the next event in the queue, * BUT do not remove it from the queue. * If none found, flush and wait until there is an event to peek. */ int XPeekEvent ( register Display *dpy, register XEvent *event) { XEvent copy; LockDisplay(dpy); if (dpy->head == NULL) _XReadEvents(dpy); *event = (dpy->head)->event; if (_XCopyEventCookie(dpy, &event->xcookie, ©.xcookie)) { _XStoreEventCookie(dpy, ©); *event = copy; } UnlockDisplay(dpy); return 1; } libX11-1.8.12/src/UngrabPtr.c0000644014310600000120000000263114763154126011166 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XUngrabPointer( register Display *dpy, Time time) { register xResourceReq *req; LockDisplay(dpy); GetResReq(UngrabPointer, time, req); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/ParseCol.c0000644014310600000120000000673714763154126011005 /* Copyright 1985, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "Xlibint.h" #include "Xcmsint.h" Status XParseColor ( register Display *dpy, Colormap cmap, _Xconst char *spec, XColor *def) { register size_t n, i; int r, g, b; char c; XcmsCCC ccc; XcmsColor cmsColor; if (!spec) return(0); n = strlen (spec); if (n >= USHRT_MAX) return(0); if (*spec == '#') { /* * RGB */ spec++; n--; if (n != 3 && n != 6 && n != 9 && n != 12) return (0); n /= 3; g = b = 0; do { r = g; g = b; b = 0; for (i = 0; i < n; i++) { c = *spec++; b <<= 4; if (c >= '0' && c <= '9') b |= c - '0'; else if (c >= 'A' && c <= 'F') b |= c - ('A' - 10); else if (c >= 'a' && c <= 'f') b |= c - ('a' - 10); else return (0); } } while (*spec != '\0'); n <<= 2; n = 16 - n; def->red = r << n; def->green = g << n; def->blue = b << n; def->flags = DoRed | DoGreen | DoBlue; return (1); } #ifdef XCMS /* * Let's Attempt to use Xcms and i18n approach to Parse Color */ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) { const char *tmpName = spec; switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor, XcmsRGBFormat)) { case XcmsSuccess: case XcmsSuccessWithCompression: cmsColor.pixel = def->pixel; _XcmsRGB_to_XColor(&cmsColor, def, 1); return(1); case XcmsFailure: case _XCMS_NEWNAME: /* * if the result was _XCMS_NEWNAME tmpName points to * a string in cmsColNm.c:pairs table, for example, * gray70 would become tekhvc:0.0/70.0/0.0 */ break; } } #endif /* * Xcms and i18n methods failed, so lets pass it to the server * for parsing. */ { xLookupColorReply reply; register xLookupColorReq *req; LockDisplay(dpy); GetReq (LookupColor, req); req->cmap = cmap; req->nbytes = (CARD16) (n = strlen(spec)); req->length += (n + 3) >> 2; Data (dpy, spec, (long)n); if (!_XReply (dpy, (xReply *) &reply, 0, xTrue)) { UnlockDisplay(dpy); SyncHandle(); return (0); } def->red = reply.exactRed; def->green = reply.exactGreen; def->blue = reply.exactBlue; def->flags = DoRed | DoGreen | DoBlue; UnlockDisplay(dpy); SyncHandle(); return (1); } } libX11-1.8.12/src/ChkTypEv.c0000644014310600000120000000457114763154126010764 /* Copyright 1985, 1987, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" /* * Check existing events in queue to find if any match. If so, return. * If not, flush buffer and see if any more events are readable. If one * matches, return. If all else fails, tell the user no events found. */ Bool XCheckTypedEvent ( register Display *dpy, int type, /* Selected event type. */ register XEvent *event) /* XEvent to be filled in. */ { register _XQEvent *prev, *qelt; unsigned long qe_serial = 0; int n; /* time through count */ LockDisplay(dpy); /* Delete unclaimed cookies */ _XFreeEventCookies(dpy); prev = NULL; for (n = 3; --n >= 0;) { for (qelt = prev ? prev->next : dpy->head; qelt; prev = qelt, qelt = qelt->next) { if (qelt->event.type == type) { *event = qelt->event; _XDeq(dpy, prev, qelt); _XStoreEventCookie(dpy, event); UnlockDisplay(dpy); return True; } } if (prev) qe_serial = prev->qserial_num; switch (n) { case 2: _XEventsQueued(dpy, QueuedAfterReading); break; case 1: _XFlush(dpy); break; } if (prev && prev->qserial_num != qe_serial) /* another thread has snatched this event */ prev = NULL; } UnlockDisplay(dpy); return False; } libX11-1.8.12/src/Quarks.c0000644014310600000120000002506314763154126010534 /*********************************************************** Copyright 1987, 1988, 1990 by Digital Equipment Corporation, Maynard, All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ /* Copyright 1987, 1988, 1990, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include #include "Xresinternal.h" #include "reallocarray.h" /* Not cost effective, at least for vanilla MIT clients */ /* #define PERMQ */ #ifdef PERMQ typedef unsigned char Bits; #endif typedef unsigned long Entry; /* don't confuse with EntryRec from Xintatom.h */ static XrmQuark nextQuark = 1; /* next available quark number */ static unsigned long quarkMask = 0; static Entry zero = 0; static Entry *quarkTable = &zero; /* crock */ static unsigned long quarkRehash; static XrmString **stringTable = NULL; #ifdef PERMQ static Bits **permTable = NULL; #endif static XrmQuark nextUniq = -1; /* next quark from XrmUniqueQuark */ #define QUANTUMSHIFT 8 #define QUANTUMMASK ((1 << QUANTUMSHIFT) - 1) #define CHUNKPER 8 #define CHUNKMASK ((CHUNKPER << QUANTUMSHIFT) - 1) #define LARGEQUARK ((Entry)0x80000000L) #define QUARKSHIFT 18 #define QUARKMASK ((LARGEQUARK - 1) >> QUARKSHIFT) #define XSIGMASK ((1L << QUARKSHIFT) - 1) #define STRQUANTSIZE (sizeof(XrmString) * (QUANTUMMASK + 1)) #ifdef PERMQ #define QUANTSIZE (STRQUANTSIZE + \ (sizeof(Bits) * ((QUANTUMMASK + 1) >> 3)) #else #define QUANTSIZE STRQUANTSIZE #endif #define HASH(sig) ((sig) & quarkMask) #define REHASHVAL(sig) ((((sig) % quarkRehash) + 2) | 1) #define REHASH(idx,rehash) ((idx + rehash) & quarkMask) #define NAME(q) stringTable[(q) >> QUANTUMSHIFT][(q) & QUANTUMMASK] #ifdef PERMQ #define BYTEREF(q) permTable[(q) >> QUANTUMSHIFT][((q) & QUANTUMMASK) >> 3] #define ISPERM(q) (BYTEREF(q) & (1 << ((q) & 7))) #define SETPERM(q) BYTEREF(q) |= (1 << ((q) & 7)) #define CLEARPERM(q) BYTEREF(q) &= ~(1 << ((q) & 7)) #endif /* Permanent memory allocation */ #define WALIGN sizeof(unsigned long) #define DALIGN sizeof(double) #define NEVERFREETABLESIZE ((8192-12) & ~(DALIGN-1)) static char *neverFreeTable = NULL; static int neverFreeTableSize = 0; static char *permalloc(unsigned int length) { char *ret; if (neverFreeTableSize < length) { if (length >= NEVERFREETABLESIZE) return Xmalloc(length); if (! (ret = Xmalloc(NEVERFREETABLESIZE))) return (char *) NULL; neverFreeTableSize = NEVERFREETABLESIZE; neverFreeTable = ret; } ret = neverFreeTable; neverFreeTable += length; neverFreeTableSize -= length; return(ret); } typedef struct {char a; double b;} TestType1; typedef struct {char a; unsigned long b;} TestType2; #ifdef XTHREADS static char *_Xpermalloc(unsigned int length); char *Xpermalloc(unsigned int length) { char *p; _XLockMutex(_Xglobal_lock); p = _Xpermalloc(length); _XUnlockMutex(_Xglobal_lock); return p; } #define Xpermalloc _Xpermalloc static #endif /* XTHREADS */ char *Xpermalloc(unsigned int length) { int i; if (neverFreeTableSize && length < NEVERFREETABLESIZE) { if ((sizeof(TestType1) != (sizeof(TestType2) - sizeof(unsigned long) + sizeof(double))) && !(length & (DALIGN-1)) && ((i = (NEVERFREETABLESIZE - neverFreeTableSize) & (DALIGN-1)))) { neverFreeTableSize -= DALIGN - i; neverFreeTable += DALIGN - i; } else if ((i = (NEVERFREETABLESIZE - neverFreeTableSize) & (WALIGN-1))) { neverFreeTableSize -= WALIGN - i; neverFreeTable += WALIGN - i; } } return permalloc(length); } static Bool ExpandQuarkTable(void) { unsigned long oldmask, newmask; register char c, *s; register Entry *oldentries, *entries; register Entry entry; register int oldidx, newidx, rehash; Signature sig; XrmQuark q; oldentries = quarkTable; if ((oldmask = quarkMask)) newmask = (oldmask << 1) + 1; else { if (!stringTable) { stringTable = Xmalloc(sizeof(XrmString *) * CHUNKPER); if (!stringTable) return False; stringTable[0] = (XrmString *)NULL; } #ifdef PERMQ if (!permTable) permTable = Xmalloc(sizeof(Bits *) * CHUNKPER); if (!permTable) return False; #endif stringTable[0] = (XrmString *)Xpermalloc(QUANTSIZE); if (!stringTable[0]) return False; #ifdef PERMQ permTable[0] = (Bits *)((char *)stringTable[0] + STRQUANTSIZE); #endif newmask = 0x1ff; } entries = Xcalloc(newmask + 1, sizeof(Entry)); if (!entries) return False; quarkTable = entries; quarkMask = newmask; quarkRehash = quarkMask - 2; for (oldidx = 0; oldidx <= oldmask; oldidx++) { if ((entry = oldentries[oldidx])) { if (entry & LARGEQUARK) q = entry & (LARGEQUARK-1); else q = (entry >> QUARKSHIFT) & QUARKMASK; for (sig = 0, s = NAME(q); (c = *s++); ) sig = (sig << 1) + c; newidx = HASH(sig); if (entries[newidx]) { rehash = REHASHVAL(sig); do { newidx = REHASH(newidx, rehash); } while (entries[newidx]); } entries[newidx] = entry; } } if (oldmask) Xfree(oldentries); return True; } XrmQuark _XrmInternalStringToQuark( register _Xconst char *name, register int len, register Signature sig, Bool permstring) { register XrmQuark q; register Entry entry; register int idx, rehash; register char *s1, *s2; char *new; rehash = 0; idx = HASH(sig); _XLockMutex(_Xglobal_lock); while ((entry = quarkTable[idx])) { if (entry & LARGEQUARK) q = entry & (LARGEQUARK-1); else { if ((entry - sig) & XSIGMASK) goto nomatch; q = (entry >> QUARKSHIFT) & QUARKMASK; } s2 = NAME(q); if(memcmp((char *)name, s2, len) != 0) { goto nomatch; } s2 += len; if (*s2) { nomatch: if (!rehash) rehash = REHASHVAL(sig); idx = REHASH(idx, rehash); continue; } #ifdef PERMQ if (permstring && !ISPERM(q)) { Xfree(NAME(q)); NAME(q) = (char *)name; SETPERM(q); } #endif _XUnlockMutex(_Xglobal_lock); return q; } if (nextUniq == nextQuark) goto fail; if ((nextQuark + (nextQuark >> 2)) > quarkMask) { if (!ExpandQuarkTable()) goto fail; _XUnlockMutex(_Xglobal_lock); return _XrmInternalStringToQuark(name, len, sig, permstring); } q = nextQuark; if (!(q & QUANTUMMASK)) { if (!(q & CHUNKMASK)) { if (!(new = Xreallocarray(stringTable, (q >> QUANTUMSHIFT) + CHUNKPER, sizeof(XrmString *)))) goto fail; stringTable = (XrmString **)new; #ifdef PERMQ if (!(new = Xreallocarray(permTable, (q >> QUANTUMSHIFT) + CHUNKPER, sizeof(Bits *)))) goto fail; permTable = (Bits **)new; #endif } new = Xpermalloc(QUANTSIZE); if (!new) goto fail; stringTable[q >> QUANTUMSHIFT] = (XrmString *)new; #ifdef PERMQ permTable[q >> QUANTUMSHIFT] = (Bits *)(new + STRQUANTSIZE); #endif } if (!permstring) { s2 = (char *)name; #ifdef PERMQ name = Xmalloc(len+1); #else name = permalloc(len+1); #endif if (!name) goto fail; s1 = (char*)name; memcpy(s1, s2, (size_t)len); s1[len] = '\0'; #ifdef PERMQ CLEARPERM(q); } else { SETPERM(q); #endif } NAME(q) = (char *)name; if (q <= QUARKMASK) entry = (q << QUARKSHIFT) | (sig & XSIGMASK); else entry = q | LARGEQUARK; quarkTable[idx] = entry; nextQuark++; _XUnlockMutex(_Xglobal_lock); return q; fail: _XUnlockMutex(_Xglobal_lock); return NULLQUARK; } XrmQuark XrmStringToQuark( _Xconst char *name) { register char c, *tname; register Signature sig = 0; if (!name) return (NULLQUARK); for (tname = (char *)name; (c = *tname++); ) sig = (sig << 1) + c; return _XrmInternalStringToQuark(name, tname-(char *)name-1, sig, False); } XrmQuark XrmPermStringToQuark( _Xconst char *name) { register char c, *tname; register Signature sig = 0; if (!name) return (NULLQUARK); for (tname = (char *)name; (c = *tname++); ) sig = (sig << 1) + c; return _XrmInternalStringToQuark(name, tname-(char *)name-1, sig, True); } XrmQuark XrmUniqueQuark(void) { XrmQuark q; _XLockMutex(_Xglobal_lock); if (nextUniq == nextQuark) q = NULLQUARK; else q = nextUniq--; _XUnlockMutex(_Xglobal_lock); return q; } XrmString XrmQuarkToString(register XrmQuark quark) { XrmString s; _XLockMutex(_Xglobal_lock); if (quark <= 0 || quark >= nextQuark) s = NULLSTRING; else { #ifdef PERMQ /* We have to mark the quark as permanent, since the caller might hold * onto the string pointer forever. */ SETPERM(quark); #endif s = NAME(quark); } _XUnlockMutex(_Xglobal_lock); return s; } libX11-1.8.12/src/ChkIfEv.c0000644014310600000120000000512014763154126010535 /* Copyright 1985, 1987, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" /* * Check existing events in queue to find if any match. If so, return. * If not, flush buffer and see if any more events are readable. If one * matches, return. If all else fails, tell the user no events found. */ Bool XCheckIfEvent ( register Display *dpy, register XEvent *event, /* XEvent to be filled in. */ Bool (*predicate)( Display* /* display */, XEvent* /* event */, char* /* arg */ ), /* function to call */ char *arg) { register _XQEvent *prev, *qelt; unsigned long qe_serial = 0; int n; /* time through count */ LockDisplay(dpy); #ifdef XTHREADS dpy->ifevent_thread = xthread_self(); #endif dpy->in_ifevent++; prev = NULL; for (n = 3; --n >= 0;) { for (qelt = prev ? prev->next : dpy->head; qelt; prev = qelt, qelt = qelt->next) { if(qelt->qserial_num > qe_serial && (*predicate)(dpy, &qelt->event, arg)) { *event = qelt->event; _XDeq(dpy, prev, qelt); _XStoreEventCookie(dpy, event); dpy->in_ifevent--; UnlockDisplay(dpy); return True; } } if (prev) qe_serial = prev->qserial_num; switch (n) { case 2: _XEventsQueued(dpy, QueuedAfterReading); break; case 1: _XFlush(dpy); break; } if (prev && prev->qserial_num != qe_serial) /* another thread has snatched this event */ prev = NULL; } dpy->in_ifevent--; UnlockDisplay(dpy); return False; } libX11-1.8.12/src/FreeEData.c0000644014310600000120000000272614763154126011047 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int _XFreeExtData (XExtData *extension) { XExtData *temp; while (extension) { if (extension->free_private) (*extension->free_private)(extension); else Xfree (extension->private_data); temp = extension->next; Xfree (extension); extension = temp; } return 0; } libX11-1.8.12/src/SetLocale.c0000644014310600000120000001266514763154126011145 /* * Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation, * and Nippon Telegraph and Telephone Corporation * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the names of OMRON, NTT Software, and NTT * not be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. OMRON, NTT Software, * and NTT make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. * * OMRON, NTT SOFTWARE, AND NTT, DISCLAIM ALL WARRANTIES WITH REGARD * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS, IN NO EVENT SHALL OMRON, NTT SOFTWARE, OR NTT, BE * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * Authors: Li Yuhong OMRON Corporation * Tetsuya Kato NTT Software Corporation * Hiroshi Kuribayashi OMRON Corporation * */ /* Copyright 1987,1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xlcint.h" #include #include #include "XlcPubI.h" #define MAXLOCALE 64 /* buffer size of locale name */ #if defined(__APPLE__) || defined(__CYGWIN__) char * _Xsetlocale( int category, _Xconst char *name ) { return setlocale(category, name); } #endif /* __APPLE__ || __CYGWIN__ */ /* * _XlcMapOSLocaleName is an implementation dependent routine that derives * the LC_CTYPE locale name as used in the sample implementation from that * returned by setlocale. * * Should match the code in Xt ExtractLocaleName. * * This function name is a bit of a misnomer. Even the siname parameter * name is a misnomer. On most modern operating systems this function is * a no-op, simply returning the osname; but on older operating systems * like Ultrix, or HPUX 9.x and earlier, when you set LANG=german.88591 * then the string returned by setlocale(LC_ALL, "") will look something * like: "german.88591 german.88591 ... german.88591". Then this function * will pick out the LC_CTYPE component and return a pointer to that. */ char * _XlcMapOSLocaleName( char *osname, char *siname) { #if defined(CSRG_BASED) || defined(sun) || defined(SVR4) || defined(WIN32) || defined(linux) # if defined(WIN32) # define SKIPCOUNT 1 # define STARTCHAR '=' # define ENDCHAR ';' # define WHITEFILL # else # if defined(linux) # define STARTSTR "LC_CTYPE=" # define ENDCHAR ';' # else # if !defined(sun) || defined(SVR4) # define STARTCHAR '/' # define ENDCHAR '/' # endif # endif # endif char *start; char *end; int len; # ifdef SKIPCOUNT int n; # endif start = osname; # ifdef SKIPCOUNT for (n = SKIPCOUNT; --n >= 0 && start && (start = strchr (start, STARTCHAR)); start++) ; if (!start) start = osname; # endif # ifdef STARTCHAR if (start && (start = strchr (start, STARTCHAR))) # elif defined (STARTSTR) if (start && (start = strstr (start,STARTSTR))) # endif { # ifdef STARTCHAR start++; # elif defined (STARTSTR) start += strlen(STARTSTR); # endif if ((end = strchr (start, ENDCHAR))) { len = end - start; if (len >= MAXLOCALE) len = MAXLOCALE - 1; strncpy(siname, start, (size_t) len); *(siname + len) = '\0'; # ifdef WHITEFILL for (start = siname; start = strchr(start, ' '); ) *start++ = '-'; # endif return siname; } else /* if no ENDCHAR is found we are at the end of the line */ return start; } # ifdef WHITEFILL if (strchr(osname, ' ')) { len = strlen(osname); if (len >= MAXLOCALE - 1) len = MAXLOCALE - 1; strncpy(siname, osname, len); *(siname + len) = '\0'; for (start = siname; start = strchr(start, ' '); ) *start++ = '-'; return siname; } # endif # undef STARTCHAR # undef ENDCHAR # undef WHITEFILL #endif return osname; } libX11-1.8.12/src/GetFPath.c0000644014310600000120000000540514763154126010726 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "reallocarray.h" #include char **XGetFontPath( register Display *dpy, int *npaths) /* RETURN */ { xGetFontPathReply rep; unsigned long nbytes = 0; char **flist = NULL; char *ch = NULL; char *chend; int count = 0; register unsigned i; register int length; _X_UNUSED register xReq *req; LockDisplay(dpy); GetEmptyReq (GetFontPath, req); (void) _XReply (dpy, (xReply *) &rep, 0, xFalse); if (rep.nPaths) { flist = Xmallocarray(rep.nPaths, sizeof (char *)); if (rep.length < (INT_MAX >> 2)) { nbytes = (unsigned long) rep.length << 2; ch = Xmalloc (nbytes + 1); /* +1 to leave room for last null-terminator */ } if ((! flist) || (! ch)) { Xfree(flist); Xfree(ch); _XEatDataWords(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); return (char **) NULL; } _XReadPad (dpy, ch, nbytes); /* * unpack into null terminated strings. */ chend = ch + nbytes; length = *(unsigned char *)ch; for (i = 0; i < rep.nPaths; i++) { if (ch + length < chend) { flist[i] = ch+1; /* skip over length */ ch += length + 1; /* find next length ... */ length = *(unsigned char *)ch; *ch = '\0'; /* and replace with null-termination */ count++; } else if (i == 0) { Xfree(flist); Xfree(ch); flist = NULL; break; } else flist[i] = NULL; } } *npaths = count; UnlockDisplay(dpy); SyncHandle(); return (flist); } int XFreeFontPath (char **list) { if (list != NULL) { Xfree (list[0]-1); Xfree (list); } return 1; } libX11-1.8.12/src/QuTileShp.c0000644014310600000120000000350214763154126011136 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" Status XQueryBestTile( register Display *dpy, Drawable drawable, unsigned int width, unsigned int height, unsigned int *ret_width, unsigned int *ret_height) { xQueryBestSizeReply rep; register xQueryBestSizeReq *req; LockDisplay(dpy); GetReq(QueryBestSize, req); req->class = TileShape; req->drawable = drawable; req->width = width; req->height = height; if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) { UnlockDisplay(dpy); SyncHandle(); return(0); } *ret_width = rep.width; *ret_height = rep.height; UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/x11_xcb.c0000644014310600000120000000055014763154126010525 /* Copyright (C) 2003,2006 Jamey Sharp, Josh Triplett * This file is licensed under the MIT license. See the file COPYING. */ #include "Xlibint.h" #include "Xxcbint.h" xcb_connection_t *XGetXCBConnection(Display *dpy) { return dpy->xcb->connection; } void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner) { dpy->xcb->event_owner = owner; } libX11-1.8.12/src/GetImage.c0000644014310600000120000001045414763154126010746 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include /* for XDestroyImage */ #include "ImUtil.h" #include #define ROUNDUP(nbytes, pad) (((((nbytes) - 1) + (pad)) / (pad)) * (pad)) #ifdef HAVE___BUILTIN_POPCOUNTL # define Ones __builtin_popcountl #else /* * Count the number of bits set to 1 in a 32-bit word. * Algorithm from MIT AI Lab Memo 239: "HAKMEM", ITEM 169. * http://dspace.mit.edu/handle/1721.1/6086 */ static inline unsigned int Ones(unsigned long mask) { register unsigned long y; y = (mask >> 1) & 033333333333; y = mask - y - ((y >>1) & 033333333333); return ((unsigned int) (((y + (y >> 3)) & 030707070707) % 077)); } #endif XImage *XGetImage ( register Display *dpy, Drawable d, int x, int y, unsigned int width, unsigned int height, unsigned long plane_mask, int format) /* either XYPixmap or ZPixmap */ { xGetImageReply rep; register xGetImageReq *req; char *data; unsigned long nbytes; XImage *image; int planes; LockDisplay(dpy); GetReq (GetImage, req); /* * first set up the standard stuff in the request */ req->drawable = d; req->x = x; req->y = y; req->width = width; req->height = height; req->planeMask = plane_mask; req->format = format; if (_XReply (dpy, (xReply *) &rep, 0, xFalse) == 0 || rep.length == 0) { UnlockDisplay(dpy); SyncHandle(); return (XImage *)NULL; } if (rep.length < (INT_MAX >> 2)) { nbytes = (unsigned long)rep.length << 2; data = Xmalloc(nbytes); } else data = NULL; if (! data) { _XEatDataWords(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); return (XImage *) NULL; } _XReadPad (dpy, data, nbytes); if (format == XYPixmap) { image = XCreateImage(dpy, _XVIDtoVisual(dpy, rep.visual), Ones (plane_mask & (((unsigned long)0xFFFFFFFF) >> (32 - rep.depth))), format, 0, data, width, height, dpy->bitmap_pad, 0); planes = image->depth; } else { /* format == ZPixmap */ image = XCreateImage (dpy, _XVIDtoVisual(dpy, rep.visual), rep.depth, ZPixmap, 0, data, width, height, _XGetScanlinePad(dpy, (int) rep.depth), 0); planes = 1; } if (!image) { Xfree(data); } else { if (planes < 1 || image->height < 1 || image->bytes_per_line < 1 || INT_MAX / image->height <= image->bytes_per_line || INT_MAX / planes <= image->height * image->bytes_per_line || nbytes < planes * image->height * image->bytes_per_line) { XDestroyImage(image); image = NULL; } } UnlockDisplay(dpy); SyncHandle(); return (image); } XImage *XGetSubImage( register Display *dpy, Drawable d, int x, int y, unsigned int width, unsigned int height, unsigned long plane_mask, int format, /* either XYPixmap or ZPixmap */ XImage *dest_image, int dest_x, int dest_y) { XImage *temp_image; temp_image = XGetImage(dpy, d, x, y, width, height, plane_mask, format); if (!temp_image) return (XImage *)NULL; _XSetImage(temp_image, dest_image, dest_x, dest_y); XDestroyImage(temp_image); return (dest_image); } libX11-1.8.12/src/Iconify.c0000644014310600000120000000612314763154126010662 /*********************************************************** Copyright 1988 by Wyse Technology, Inc., San Jose, Ca. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name Wyse not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ /* Copyright 1988, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include /* * This function instructs the window manager to change this window from * NormalState to IconicState. */ Status XIconifyWindow ( Display *dpy, Window w, int screen) { Atom prop; prop = XInternAtom (dpy, "WM_CHANGE_STATE", False); if (prop == None) return False; else { XClientMessageEvent ev = { .type = ClientMessage, .window = w, .message_type = prop, .format = 32, .data.l[0] = IconicState }; Window root = RootWindow (dpy, screen); return (XSendEvent (dpy, root, False, SubstructureRedirectMask|SubstructureNotifyMask, (XEvent *)&ev)); } } libX11-1.8.12/src/KillCl.c0000644014310600000120000000261114763154126010432 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XKillClient( register Display *dpy, XID resource) { register xResourceReq *req; LockDisplay(dpy); GetResReq(KillClient, resource, req); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/DrLine.c0000644014310600000120000000467314763154126010447 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" /* precompute the maximum size of batching request allowed */ #define wsize (SIZEOF(xPolySegmentReq) + WLNSPERBATCH * SIZEOF(xSegment)) #define zsize (SIZEOF(xPolySegmentReq) + ZLNSPERBATCH * SIZEOF(xSegment)) int XDrawLine ( register Display *dpy, Drawable d, GC gc, int x1, int y1, int x2, int y2) { register xSegment *segment; LockDisplay(dpy); FlushGC(dpy, gc); { register xPolySegmentReq *req = (xPolySegmentReq *) dpy->last_req; /* if same as previous request, with same drawable, batch requests */ if ( (req->reqType == X_PolySegment) && (req->drawable == d) && (req->gc == gc->gid) && ((dpy->bufptr + SIZEOF(xSegment)) <= dpy->bufmax) && (((char *)dpy->bufptr - (char *)req) < (gc->values.line_width ? wsize : zsize)) ) { req->length += SIZEOF(xSegment) >> 2; segment = (xSegment *) dpy->bufptr; dpy->bufptr += SIZEOF(xSegment); } else { GetReqExtra (PolySegment, SIZEOF(xSegment), req); req->drawable = d; req->gc = gc->gid; segment = (xSegment *) NEXTPTR(req,xPolySegmentReq); } segment->x1 = x1; segment->y1 = y1; segment->x2 = x2; segment->y2 = y2; UnlockDisplay(dpy); SyncHandle(); } return 1; } libX11-1.8.12/src/DrRects.c0000644014310600000120000000363314763154126010633 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XDrawRectangles( register Display *dpy, Drawable d, GC gc, XRectangle *rects, int n_rects) { register xPolyRectangleReq *req; long len; int n; LockDisplay(dpy); FlushGC(dpy, gc); while (n_rects) { GetReq(PolyRectangle, req); req->drawable = (CARD32) d; req->gc = (CARD32) gc->gid; n = n_rects; len = ((long)n) << 1; if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) { n = (int) ((dpy->max_request_size - req->length) >> 1); len = ((long)n) << 1; } SetReqLen(req, len, len); len <<= 2; /* watch out for macros... */ Data16 (dpy, (short *) rects, len); n_rects -= n; rects += n; } UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/Xrm.c0000644014310600000120000020704314763154126010034 /*********************************************************** Copyright 1987, 1988, 1990 by Digital Equipment Corporation, Maynard All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ /* Copyright 1987, 1988, 1990, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "Xlibint.h" #include #include "Xlcint.h" #ifdef XTHREADS #include "locking.h" #endif #include #include #include #include "Xresinternal.h" #include "Xresource.h" /* These Xrm routines allow very fast lookup of resources in the resource database. Several usage patterns are exploited: (1) Widgets get a lot of resources at one time. Rather than look up each from scratch, we can precompute the prioritized list of database levels once, then search for each resource starting at the beginning of the list. (2) Many database levels don't contain any leaf resource nodes. There is no point in looking for resources on a level that doesn't contain any. This information is kept on a per-level basis. (3) Sometimes the widget instance tree is structured such that you get the same class name repeated on the fully qualified widget name. This can result in the same database level occurring multiple times on the search list. The code below only checks to see if you get two identical search lists in a row, rather than look back through all database levels, but in practice this removes all duplicates I've ever observed. Joel McCormack */ /* The Xrm representation has been completely redesigned to substantially reduce memory and hopefully improve performance. The database is structured into two kinds of tables: LTables that contain only values, and NTables that contain only other tables. Some invariants: The next pointer of the top-level node table points to the top-level leaf table, if any. Within an LTable, for a given name, the tight value always precedes the loose value, and if both are present the loose value is always right after the tight value. Within an NTable, all of the entries for a given name are contiguous, in the order tight NTable, loose NTable, tight LTable, loose LTable. Bob Scheifler */ static XrmQuark XrmQString, XrmQANY; typedef Bool (*DBEnumProc)( XrmDatabase* /* db */, XrmBindingList /* bindings */, XrmQuarkList /* quarks */, XrmRepresentation* /* type */, XrmValue* /* value */, XPointer /* closure */ ); typedef struct _VEntry { struct _VEntry *next; /* next in chain */ XrmQuark name; /* name of this entry */ unsigned int tight:1; /* 1 if it is a tight binding */ unsigned int string:1; /* 1 if type is String */ unsigned int size:30; /* size of value */ } VEntryRec, *VEntry; typedef struct _DEntry { VEntryRec entry; /* entry */ XrmRepresentation type; /* representation type */ } DEntryRec, *DEntry; /* the value is right after the structure */ #define StringValue(ve) (XPointer)((ve) + 1) #define RepType(ve) ((DEntry)(ve))->type /* the value is right after the structure */ #define DataValue(ve) (XPointer)(((DEntry)(ve)) + 1) #define RawValue(ve) (char *)((ve)->string ? StringValue(ve) : DataValue(ve)) typedef struct _NTable { struct _NTable *next; /* next in chain */ XrmQuark name; /* name of this entry */ unsigned int tight:1; /* 1 if it is a tight binding */ unsigned int leaf:1; /* 1 if children are values */ unsigned int hasloose:1; /* 1 if has loose children */ unsigned int hasany:1; /* 1 if has ANY entry */ unsigned int pad:4; /* unused */ unsigned int mask:8; /* hash size - 1 */ unsigned int entries:16; /* number of children */ } NTableRec, *NTable; /* the buckets are right after the structure */ #define NodeBuckets(ne) ((NTable *)((ne) + 1)) #define NodeHash(ne,q) NodeBuckets(ne)[(q) & (ne)->mask] /* leaf tables have an extra level of indirection for the buckets, * so that resizing can be done without invalidating a search list. * This is completely ugly, and wastes some memory, but the Xlib * spec doesn't really specify whether invalidation is OK, and the * old implementation did not invalidate. */ typedef struct _LTable { NTableRec table; VEntry *buckets; } LTableRec, *LTable; #define LeafHash(le,q) (le)->buckets[(q) & (le)->table.mask] /* An XrmDatabase just holds a pointer to the first top-level table. * The type name is no longer descriptive, but better to not change * the Xresource.h header file. This type also gets used to define * XrmSearchList, which is a complete crock, but we'll just leave it * and caste types as required. */ typedef struct _XrmHashBucketRec { NTable table; XPointer mbstate; XrmMethods methods; #ifdef XTHREADS LockInfoRec linfo; #endif } XrmHashBucketRec; /* closure used in get/put resource */ typedef struct _VClosure { XrmRepresentation *type; /* type of value */ XrmValuePtr value; /* value itself */ } VClosureRec, *VClosure; /* closure used in get search list */ typedef struct _SClosure { LTable *list; /* search list */ int idx; /* index of last filled element */ int limit; /* maximum index */ } SClosureRec, *SClosure; /* placed in XrmSearchList to indicate next table is loose only */ #define LOOSESEARCH ((LTable)1) /* closure used in enumerate database */ typedef struct _EClosure { XrmDatabase db; /* the database */ DBEnumProc proc; /* the user proc */ XPointer closure; /* the user closure */ XrmBindingList bindings; /* binding list */ XrmQuarkList quarks; /* quark list */ int mode; /* XrmEnum */ } EClosureRec, *EClosure; /* types for typecasting ETable based functions to NTable based functions */ typedef Bool (*getNTableSProcp)( NTable table, XrmNameList names, XrmClassList classes, SClosure closure); typedef Bool (*getNTableVProcp)( NTable table, XrmNameList names, XrmClassList classes, VClosure closure); typedef Bool (*getNTableEProcp)( NTable table, XrmNameList names, XrmClassList classes, register int level, EClosure closure); /* predicate to determine when to resize a hash table */ #define GrowthPred(n,m) ((unsigned)(n) > (((m) + 1) << 2)) #define GROW(prev) \ if (GrowthPred((*prev)->entries, (*prev)->mask)) \ GrowTable(prev) /* pick a reasonable value for maximum depth of resource database */ #define MAXDBDEPTH 100 /* macro used in get/search functions */ /* find an entry named ename, with leafness given by leaf */ #define NFIND(ename) \ q = ename; \ entry = NodeHash(table, q); \ while (entry && entry->name != q) \ entry = entry->next; \ if (leaf && entry && !entry->leaf) { \ entry = entry->next; \ if (entry && !entry->leaf) \ entry = entry->next; \ if (entry && entry->name != q) \ entry = (NTable)NULL; \ } /* resourceQuarks keeps track of what quarks have been associated with values * in all LTables. If a quark has never been used in an LTable, we don't need * to bother looking for it. */ static unsigned char *resourceQuarks = (unsigned char *)NULL; static XrmQuark maxResourceQuark = -1; /* determines if a quark has been used for a value in any database */ #define IsResourceQuark(q) ((q) > 0 && (q) <= maxResourceQuark && \ resourceQuarks[(q) >> 3] & (1 << ((q) & 7))) typedef unsigned char XrmBits; #define BSLASH ((XrmBits) (1 << 5)) #define NORMAL ((XrmBits) (1 << 4)) #define EOQ ((XrmBits) (1 << 3)) #define SEP ((XrmBits) (1 << 2)) #define ENDOF ((XrmBits) (1 << 1)) #define SPACE (NORMAL|EOQ|SEP|(XrmBits)0) #define RSEP (NORMAL|EOQ|SEP|(XrmBits)1) #define EOS (EOQ|SEP|ENDOF|(XrmBits)0) #define EOL (EOQ|SEP|ENDOF|(XrmBits)1) #define BINDING (NORMAL|EOQ) #define ODIGIT (NORMAL|(XrmBits)1) #define next_char(ch,str) xrmtypes[(unsigned char)((ch) = *(++(str)))] #define next_mbchar(ch,len,str) xrmtypes[(unsigned char)(ch = (*db->methods->mbchar)(db->mbstate, str, &len), str += len, ch)] #define is_space(bits) ((bits) == SPACE) #define is_EOQ(bits) ((bits) & EOQ) #define is_EOF(bits) ((bits) == EOS) #define is_EOL(bits) ((bits) & ENDOF) #define is_binding(bits) ((bits) == BINDING) #define is_odigit(bits) ((bits) == ODIGIT) #define is_separator(bits) ((bits) & SEP) #define is_nonpcs(bits) (!(bits)) #define is_normal(bits) ((bits) & NORMAL) #define is_simple(bits) ((bits) & (NORMAL|BSLASH)) #define is_special(bits) ((bits) & (ENDOF|BSLASH)) /* parsing types */ static XrmBits const xrmtypes[256] = { EOS,0,0,0,0,0,0,0, 0,SPACE,EOL,0,0, #ifdef WIN32 EOL, /* treat CR the same as LF, just in case */ #else 0, #endif 0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, SPACE,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL, NORMAL,NORMAL,BINDING,NORMAL,NORMAL,NORMAL,BINDING,NORMAL, ODIGIT,ODIGIT,ODIGIT,ODIGIT,ODIGIT,ODIGIT,ODIGIT,ODIGIT, NORMAL,NORMAL,RSEP,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL, NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL, NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL, NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL, NORMAL,NORMAL,NORMAL,NORMAL,BSLASH,NORMAL,NORMAL,NORMAL, NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL, NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL, NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL, NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,NORMAL,0 /* The rest will be automatically initialized to zero. */ }; void XrmInitialize(void) { XrmQString = XrmPermStringToQuark("String"); XrmQANY = XrmPermStringToQuark("?"); } XrmDatabase XrmGetDatabase( Display *display) { XrmDatabase retval; LockDisplay(display); retval = display->db; UnlockDisplay(display); return retval; } void XrmSetDatabase( Display *display, XrmDatabase database) { LockDisplay(display); /* destroy database if set up implicitly by XGetDefault() */ if (display->db && (display->flags & XlibDisplayDfltRMDB)) { XrmDestroyDatabase(display->db); display->flags &= ~XlibDisplayDfltRMDB; } display->db = database; UnlockDisplay(display); } void XrmStringToQuarkList( register _Xconst char *name, register XrmQuarkList quarks) /* RETURN */ { register XrmBits bits; register Signature sig = 0; register char ch, *tname; register int i = 0; if ((tname = (char *)name)) { tname--; while (!is_EOF(bits = next_char(ch, tname))) { if (is_binding (bits)) { if (i) { /* Found a complete name */ *quarks++ = _XrmInternalStringToQuark(name,tname - name, sig, False); i = 0; sig = 0; } name = tname+1; } else { sig = (sig << 1) + ch; /* Compute the signature. */ i++; } } *quarks++ = _XrmInternalStringToQuark(name, tname - name, sig, False); } *quarks = NULLQUARK; } void XrmStringToBindingQuarkList( register _Xconst char *name, register XrmBindingList bindings, /* RETURN */ register XrmQuarkList quarks) /* RETURN */ { register XrmBits bits; register Signature sig = 0; register char ch, *tname; register XrmBinding binding; register int i = 0; if ((tname = (char *)name)) { tname--; binding = XrmBindTightly; while (!is_EOF(bits = next_char(ch, tname))) { if (is_binding (bits)) { if (i) { /* Found a complete name */ *bindings++ = binding; *quarks++ = _XrmInternalStringToQuark(name, tname - name, sig, False); i = 0; sig = 0; binding = XrmBindTightly; } name = tname+1; if (ch == '*') binding = XrmBindLoosely; } else { sig = (sig << 1) + ch; /* Compute the signature. */ i++; } } *bindings = binding; *quarks++ = _XrmInternalStringToQuark(name, tname - name, sig, False); } *quarks = NULLQUARK; } #ifdef DEBUG static void PrintQuarkList( XrmQuarkList quarks, FILE *stream) { Bool firstNameSeen; for (firstNameSeen = False; *quarks; quarks++) { if (firstNameSeen) { (void) fprintf(stream, "."); } firstNameSeen = True; (void) fputs(XrmQuarkToString(*quarks), stream); } } /* PrintQuarkList */ #endif /* DEBUG */ /* * Fallback methods for Xrm parsing. * Simulate a C locale. No state needed here. */ static void c_mbnoop( XPointer state) { } static char c_mbchar( XPointer state, const char *str, int *lenp) { *lenp = 1; return *str; } static const char * c_lcname( XPointer state) { return "C"; } static const XrmMethodsRec mb_methods = { c_mbnoop, /* mbinit */ c_mbchar, /* mbchar */ c_mbnoop, /* mbfinish */ c_lcname, /* lcname */ c_mbnoop /* destroy */ }; static XrmDatabase NewDatabase(void) { register XrmDatabase db; db = Xmalloc(sizeof(XrmHashBucketRec)); if (db) { _XCreateMutex(&db->linfo); db->table = (NTable)NULL; db->mbstate = (XPointer)NULL; db->methods = _XrmInitParseInfo(&db->mbstate); if (!db->methods) db->methods = &mb_methods; } return db; } /* move all values from ftable to ttable, and free ftable's buckets. * ttable is guaranteed empty to start with. */ static void MoveValues( LTable ftable, register LTable ttable) { register VEntry fentry, nfentry; register VEntry *prev; register VEntry *bucket; register VEntry tentry; register int i; for (i = ftable->table.mask, bucket = ftable->buckets; i >= 0; i--) { for (fentry = *bucket++; fentry; fentry = nfentry) { prev = &LeafHash(ttable, fentry->name); tentry = *prev; *prev = fentry; /* chain on all with same name, to preserve invariant order */ while ((nfentry = fentry->next) && nfentry->name == fentry->name) fentry = nfentry; fentry->next = tentry; } } Xfree(ftable->buckets); } /* move all tables from ftable to ttable, and free ftable. * ttable is quaranteed empty to start with. */ static void MoveTables( NTable ftable, register NTable ttable) { register NTable fentry, nfentry; register NTable *prev; register NTable *bucket; register NTable tentry; register int i; for (i = ftable->mask, bucket = NodeBuckets(ftable); i >= 0; i--) { for (fentry = *bucket++; fentry; fentry = nfentry) { prev = &NodeHash(ttable, fentry->name); tentry = *prev; *prev = fentry; /* chain on all with same name, to preserve invariant order */ while ((nfentry = fentry->next) && nfentry->name == fentry->name) fentry = nfentry; fentry->next = tentry; } } Xfree(ftable); } /* grow the table, based on current number of entries */ static void GrowTable( NTable *prev) { register NTable table; register int i; table = *prev; i = table->mask; if (i == 255) /* biggest it gets */ return; while (i < 255 && GrowthPred(table->entries, i)) i = (i << 1) + 1; i++; /* i is now the new size */ if (table->leaf) { register LTable ltable; LTableRec otable; ltable = (LTable)table; /* cons up a copy to make MoveValues look symmetric */ otable = *ltable; ltable->buckets = Xcalloc(i, sizeof(VEntry)); if (!ltable->buckets) { ltable->buckets = otable.buckets; return; } ltable->table.mask = i - 1; MoveValues(&otable, ltable); } else { register NTable ntable; ntable = Xcalloc(1, sizeof(NTableRec) + (i * sizeof(NTable))); if (!ntable) return; *ntable = *table; ntable->mask = i - 1; *prev = ntable; MoveTables(table, ntable); } } /* merge values from ftable into *pprev, destroy ftable in the process */ static void MergeValues( LTable ftable, NTable *pprev, Bool override) { register VEntry fentry, tentry; register VEntry *prev; register LTable ttable; VEntry *bucket; int i; register XrmQuark q; ttable = (LTable)*pprev; if (ftable->table.hasloose) ttable->table.hasloose = 1; for (i = ftable->table.mask, bucket = ftable->buckets; i >= 0; i--, bucket++) { for (fentry = *bucket; fentry; ) { q = fentry->name; prev = &LeafHash(ttable, q); tentry = *prev; while (tentry && tentry->name != q) tentry = *(prev = &tentry->next); /* note: test intentionally uses fentry->name instead of q */ /* permits serendipitous inserts */ while (tentry && tentry->name == fentry->name) { /* if tentry is earlier, skip it */ if (!fentry->tight && tentry->tight) { tentry = *(prev = &tentry->next); continue; } if (fentry->tight != tentry->tight) { /* no match, chain in fentry */ *prev = fentry; prev = &fentry->next; fentry = *prev; *prev = tentry; ttable->table.entries++; } else if (override) { /* match, chain in fentry, splice out and free tentry */ *prev = fentry; prev = &fentry->next; fentry = *prev; *prev = tentry->next; /* free the overridden entry */ Xfree(tentry); /* get next tentry */ tentry = *prev; } else { /* match, discard fentry */ prev = &tentry->next; tentry = fentry; /* use as a temp var */ fentry = fentry->next; /* free the overpowered entry */ Xfree(tentry); /* get next tentry */ tentry = *prev; } if (!fentry) break; } /* at this point, tentry cannot match any fentry named q */ /* chain in all bindings together, preserve invariant order */ while (fentry && fentry->name == q) { *prev = fentry; prev = &fentry->next; fentry = *prev; *prev = tentry; ttable->table.entries++; } } } Xfree(ftable->buckets); Xfree(ftable); /* resize if necessary, now that we're all done */ GROW(pprev); } /* merge tables from ftable into *pprev, destroy ftable in the process */ static void MergeTables( NTable ftable, NTable *pprev, Bool override) { register NTable fentry, tentry; NTable nfentry; register NTable *prev; register NTable ttable; NTable *bucket; int i; register XrmQuark q; ttable = *pprev; if (ftable->hasloose) ttable->hasloose = 1; if (ftable->hasany) ttable->hasany = 1; for (i = ftable->mask, bucket = NodeBuckets(ftable); i >= 0; i--, bucket++) { for (fentry = *bucket; fentry; ) { q = fentry->name; prev = &NodeHash(ttable, q); tentry = *prev; while (tentry && tentry->name != q) tentry = *(prev = &tentry->next); /* note: test intentionally uses fentry->name instead of q */ /* permits serendipitous inserts */ while (tentry && tentry->name == fentry->name) { /* if tentry is earlier, skip it */ if ((fentry->leaf && !tentry->leaf) || (!fentry->tight && tentry->tight && (fentry->leaf || !tentry->leaf))) { tentry = *(prev = &tentry->next); continue; } nfentry = fentry->next; if (fentry->leaf != tentry->leaf || fentry->tight != tentry->tight) { /* no match, just chain in */ *prev = fentry; *(prev = &fentry->next) = tentry; ttable->entries++; } else { if (fentry->leaf) MergeValues((LTable)fentry, prev, override); else MergeTables(fentry, prev, override); /* bump to next tentry */ tentry = *(prev = &(*prev)->next); } /* bump to next fentry */ fentry = nfentry; if (!fentry) break; } /* at this point, tentry cannot match any fentry named q */ /* chain in all bindings together, preserve invariant order */ while (fentry && fentry->name == q) { *prev = fentry; prev = &fentry->next; fentry = *prev; *prev = tentry; ttable->entries++; } } } Xfree(ftable); /* resize if necessary, now that we're all done */ GROW(pprev); } void XrmCombineDatabase( XrmDatabase from, XrmDatabase *into, Bool override) { register NTable *prev; register NTable ftable, ttable, nftable; if (!*into) { *into = from; } else if (from) { _XLockMutex(&from->linfo); _XLockMutex(&(*into)->linfo); if ((ftable = from->table)) { prev = &(*into)->table; ttable = *prev; if (!ftable->leaf) { nftable = ftable->next; if (ttable && !ttable->leaf) { /* both have node tables, merge them */ MergeTables(ftable, prev, override); /* bump to into's leaf table, if any */ ttable = *(prev = &(*prev)->next); } else { /* into has no node table, link from's in */ *prev = ftable; *(prev = &ftable->next) = ttable; } /* bump to from's leaf table, if any */ ftable = nftable; } else { /* bump to into's leaf table, if any */ if (ttable && !ttable->leaf) ttable = *(prev = &ttable->next); } if (ftable) { /* if into has a leaf, merge, else insert */ if (ttable) MergeValues((LTable)ftable, prev, override); else *prev = ftable; } } (from->methods->destroy)(from->mbstate); _XUnlockMutex(&from->linfo); _XFreeMutex(&from->linfo); Xfree(from); _XUnlockMutex(&(*into)->linfo); } } void XrmMergeDatabases( XrmDatabase from, XrmDatabase *into) { XrmCombineDatabase(from, into, True); } /* store a value in the database, overriding any existing entry */ static void PutEntry( XrmDatabase db, XrmBindingList bindings, XrmQuarkList quarks, XrmRepresentation type, XrmValuePtr value) { register NTable *pprev, *prev; register NTable table; register XrmQuark q; register VEntry *vprev; register VEntry entry; NTable *nprev, *firstpprev; #define NEWTABLE(q,i) \ table = Xmalloc(sizeof(LTableRec)); \ if (!table) \ return; \ table->name = q; \ table->hasloose = 0; \ table->hasany = 0; \ table->mask = 0; \ table->entries = 0; \ if (quarks[i]) { \ table->leaf = 0; \ nprev = NodeBuckets(table); \ } else { \ table->leaf = 1; \ if (!(nprev = Xmalloc(sizeof(VEntry *)))) {\ Xfree(table); \ return; \ } \ ((LTable)table)->buckets = (VEntry *)nprev; \ } \ *nprev = (NTable)NULL; \ table->next = *prev; \ *prev = table if (!db || !*quarks) return; table = *(prev = &db->table); /* if already at leaf, bump to the leaf table */ if (!quarks[1] && table && !table->leaf) table = *(prev = &table->next); pprev = prev; if (!table || (quarks[1] && table->leaf)) { /* no top-level node table, create one and chain it in */ NEWTABLE(NULLQUARK,1); table->tight = 1; /* arbitrary */ prev = nprev; } else { /* search along until we need a value */ while (quarks[1]) { q = *quarks; table = *(prev = &NodeHash(table, q)); while (table && table->name != q) table = *(prev = &table->next); if (!table) break; /* not found */ if (quarks[2]) { if (table->leaf) break; /* not found */ } else { if (!table->leaf) { /* bump to leaf table, if any */ table = *(prev = &table->next); if (!table || table->name != q) break; /* not found */ if (!table->leaf) { /* bump to leaf table, if any */ table = *(prev = &table->next); if (!table || table->name != q) break; /* not found */ } } } if (*bindings == XrmBindTightly) { if (!table->tight) break; /* not found */ } else { if (table->tight) { /* bump to loose table, if any */ table = *(prev = &table->next); if (!table || table->name != q || !quarks[2] != table->leaf) break; /* not found */ } } /* found that one, bump to next quark */ pprev = prev; quarks++; bindings++; } if (!quarks[1]) { /* found all the way to a leaf */ q = *quarks; entry = *(vprev = &LeafHash((LTable)table, q)); while (entry && entry->name != q) entry = *(vprev = &entry->next); /* if want loose and have tight, bump to next entry */ if (entry && *bindings == XrmBindLoosely && entry->tight) entry = *(vprev = &entry->next); if (entry && entry->name == q && (*bindings == XrmBindTightly) == entry->tight) { /* match, need to override */ if ((type == XrmQString) == entry->string && entry->size == value->size) { /* update type if not String, can be different */ if (!entry->string) RepType(entry) = type; /* identical size, just overwrite value */ memcpy(RawValue(entry), (char *)value->addr, value->size); return; } /* splice out and free old entry */ *vprev = entry->next; Xfree(entry); (*pprev)->entries--; } /* this is where to insert */ prev = (NTable *)vprev; } } /* keep the top table, because we may have to grow it */ firstpprev = pprev; /* iterate until we get to the leaf */ while (quarks[1]) { /* build a new table and chain it in */ NEWTABLE(*quarks,2); if (*quarks++ == XrmQANY) (*pprev)->hasany = 1; if (*bindings++ == XrmBindTightly) { table->tight = 1; } else { table->tight = 0; (*pprev)->hasloose = 1; } (*pprev)->entries++; pprev = prev; prev = nprev; } /* now allocate the value entry */ entry = Xmalloc(((type == XrmQString) ? sizeof(VEntryRec) : sizeof(DEntryRec)) + value->size); if (!entry) return; entry->name = q = *quarks; if (*bindings == XrmBindTightly) { entry->tight = 1; } else { entry->tight = 0; (*pprev)->hasloose = 1; } /* chain it in, with a bit of type cast ugliness */ entry->next = *((VEntry *)prev); *((VEntry *)prev) = entry; entry->size = value->size; if (type == XrmQString) { entry->string = 1; } else { entry->string = 0; RepType(entry) = type; } /* save a copy of the value */ memcpy(RawValue(entry), (char *)value->addr, value->size); (*pprev)->entries++; /* this is a new leaf, need to remember it for search lists */ if (q > maxResourceQuark) { unsigned oldsize = (maxResourceQuark + 1) >> 3; unsigned size = ((q | 0x7f) + 1) >> 3; /* reallocate in chunks */ if (resourceQuarks) { unsigned char *prevQuarks = resourceQuarks; resourceQuarks = Xrealloc(resourceQuarks, size); if (!resourceQuarks) { Xfree(prevQuarks); } } else resourceQuarks = Xmalloc(size); if (resourceQuarks) { bzero((char *)&resourceQuarks[oldsize], size - oldsize); maxResourceQuark = (size << 3) - 1; } else { maxResourceQuark = -1; } } if (q > 0 && resourceQuarks) resourceQuarks[q >> 3] |= 1 << (q & 0x7); GROW(firstpprev); #undef NEWTABLE } void XrmQPutResource( XrmDatabase *pdb, XrmBindingList bindings, XrmQuarkList quarks, XrmRepresentation type, XrmValuePtr value) { if (!*pdb) *pdb = NewDatabase(); _XLockMutex(&(*pdb)->linfo); PutEntry(*pdb, bindings, quarks, type, value); _XUnlockMutex(&(*pdb)->linfo); } void XrmPutResource( XrmDatabase *pdb, _Xconst char *specifier, _Xconst char *type, XrmValuePtr value) { XrmBinding bindings[MAXDBDEPTH+1]; XrmQuark quarks[MAXDBDEPTH+1]; if (!*pdb) *pdb = NewDatabase(); _XLockMutex(&(*pdb)->linfo); XrmStringToBindingQuarkList(specifier, bindings, quarks); PutEntry(*pdb, bindings, quarks, XrmStringToQuark(type), value); _XUnlockMutex(&(*pdb)->linfo); } void XrmQPutStringResource( XrmDatabase *pdb, XrmBindingList bindings, XrmQuarkList quarks, _Xconst char *str) { XrmValue value; if (!*pdb) *pdb = NewDatabase(); value.addr = (XPointer) str; value.size = (unsigned) strlen(str) + 1; _XLockMutex(&(*pdb)->linfo); PutEntry(*pdb, bindings, quarks, XrmQString, &value); _XUnlockMutex(&(*pdb)->linfo); } /* Function Name: GetDatabase * Description: Parses a string and stores it as a database. * Arguments: db - the database. * str - a pointer to the string containing the database. * filename - source filename, if any. * doall - whether to do all lines or just one */ /* * This function is highly optimized to inline as much as possible. * Be very careful with modifications, or simplifications, as they * may adversely affect the performance. * * Chris Peterson, MIT X Consortium 5/17/90. */ /* * Xlib spec says max 100 quarks in a lookup, will stop and return if * return if any single production's lhs has more than 100 components. */ #define QLIST_SIZE 100 /* * This should be big enough to handle things like the XKeysymDB or biggish * ~/.Xdefaults or app-defaults files. Anything bigger will be allocated on * the heap. */ #define DEF_BUFF_SIZE 8192 static void GetIncludeFile( XrmDatabase db, _Xconst char *base, _Xconst char *fname, int fnamelen, int depth); static void GetDatabase( XrmDatabase db, _Xconst char *str, _Xconst char *filename, Bool doall, int depth) { char *rhs; char *lhs, lhs_s[DEF_BUFF_SIZE]; XrmQuark quarks[QLIST_SIZE + 1]; /* allow for a terminal NullQuark */ XrmBinding bindings[QLIST_SIZE + 1]; register char *ptr; register XrmBits bits = 0; register char c; register Signature sig; register char *ptr_max; register int num_quarks; register XrmBindingList t_bindings; int len, alloc_chars; unsigned long str_len; XrmValue value; Bool only_pcs; Bool dolines; if (!db) return; /* * if strlen (str) < DEF_BUFF_SIZE allocate buffers on the stack for * speed otherwise malloc the buffer. From a buffer overflow standpoint * we can be sure that neither: a) a component on the lhs, or b) a * value on the rhs, will be longer than the overall length of str, * i.e. strlen(str). * * This should give good performance when parsing "*foo: bar" type * databases as might be passed with -xrm command line options; but * with larger databases, e.g. .Xdefaults, app-defaults, or KeysymDB * files, the size of the buffers will be overly large. One way * around this would be to double-parse each production with a resulting * performance hit. In any event we can be assured that a lhs component * name or a rhs value won't be longer than str itself. */ str_len = strlen (str); if (DEF_BUFF_SIZE > str_len) lhs = lhs_s; else if ((lhs = Xmalloc (str_len)) == NULL) return; alloc_chars = DEF_BUFF_SIZE < str_len ? str_len : DEF_BUFF_SIZE; if ((rhs = Xmalloc (alloc_chars)) == NULL) { if (lhs != lhs_s) Xfree (lhs); return; } (*db->methods->mbinit)(db->mbstate); str--; dolines = True; while (!is_EOF(bits) && dolines) { dolines = doall; /* * First: Remove extra whitespace. */ do { bits = next_char(c, str); } while is_space(bits); /* * Ignore empty lines. */ if (is_EOL(bits)) continue; /* start a new line. */ /* * Second: check the first character in a line to see if it is * "!" signifying a comment, or "#" signifying a directive. */ if (c == '!') { /* Comment, spin to next newline */ while (is_simple(bits = next_char(c, str))) {} if (is_EOL(bits)) continue; while (!is_EOL(bits = next_mbchar(c, len, str))) {} str--; continue; /* start a new line. */ } if (c == '#') { /* Directive */ /* remove extra whitespace */ only_pcs = True; while (is_space(bits = next_char(c, str))) {} /* only "include" directive is currently defined */ if (!strncmp(str, "include", 7)) { str += (7-1); /* remove extra whitespace */ while (is_space(bits = next_char(c, str))) {} /* must have a starting " */ if (c == '"') { _Xconst char *fname = str+1; len = 0; do { if (only_pcs) { bits = next_char(c, str); if (is_nonpcs(bits)) only_pcs = False; } if (!only_pcs) bits = next_mbchar(c, len, str); } while (c != '"' && !is_EOL(bits)); /* must have an ending " */ if (c == '"') GetIncludeFile(db, filename, fname, str - len - fname, depth); } } /* spin to next newline */ if (only_pcs) { while (is_simple(bits)) bits = next_char(c, str); if (is_EOL(bits)) continue; } while (!is_EOL(bits)) bits = next_mbchar(c, len, str); str--; continue; /* start a new line. */ } /* * Third: loop through the LHS of the resource specification * storing characters and converting this to a Quark. */ num_quarks = 0; t_bindings = bindings; sig = 0; ptr = lhs; *t_bindings = XrmBindTightly; for(;;) { if (!is_binding(bits)) { while (!is_EOQ(bits)) { *ptr++ = c; sig = (sig << 1) + c; /* Compute the signature. */ bits = next_char(c, str); } quarks[num_quarks++] = _XrmInternalStringToQuark(lhs, ptr - lhs, sig, False); if (num_quarks > QLIST_SIZE) { Xfree(rhs); if (lhs != lhs_s) Xfree (lhs); (*db->methods->mbfinish)(db->mbstate); return; } if (is_separator(bits)) { if (!is_space(bits)) break; /* Remove white space */ do { *ptr++ = c; sig = (sig << 1) + c; /* Compute the signature. */ } while (is_space(bits = next_char(c, str))); /* * The spec doesn't permit it, but support spaces * internal to resource name/class */ if (is_separator(bits)) break; num_quarks--; continue; } if (c == '.') *(++t_bindings) = XrmBindTightly; else *(++t_bindings) = XrmBindLoosely; sig = 0; ptr = lhs; } else { /* * Magic unspecified feature #254. * * If two separators appear with no Text between them then * ignore them. * * If anyone of those separators is a '*' then the binding * will be loose, otherwise it will be tight. */ if (c == '*') *t_bindings = XrmBindLoosely; } bits = next_char(c, str); } quarks[num_quarks] = NULLQUARK; /* * Make sure that there is a ':' in this line. */ if (c != ':') { char oldc; /* * A parsing error has occurred, toss everything on the line * a new_line can still be escaped with a '\'. */ while (is_normal(bits)) bits = next_char(c, str); if (is_EOL(bits)) continue; bits = next_mbchar(c, len, str); do { oldc = c; bits = next_mbchar(c, len, str); } while (c && (c != '\n' || oldc == '\\')); str--; continue; } /* * I now have a quark and binding list for the entire left hand * side. "c" currently points to the ":" separating the left hand * side for the right hand side. It is time to begin processing * the right hand side. */ /* * Fourth: Remove more whitespace */ for(;;) { if (is_space(bits = next_char(c, str))) continue; if (c != '\\') break; bits = next_char(c, str); if (c == '\n') continue; str--; bits = BSLASH; c = '\\'; break; } /* * Fifth: Process the right hand side. */ ptr = rhs; ptr_max = ptr + alloc_chars - 4; only_pcs = True; len = 1; for(;;) { /* * Tight loop for the normal case: Non backslash, non-end of value * character that will fit into the allocated buffer. */ if (only_pcs) { while (is_normal(bits) && ptr < ptr_max) { *ptr++ = c; bits = next_char(c, str); } if (is_EOL(bits)) break; if (is_nonpcs(bits)) { only_pcs = False; bits = next_mbchar(c, len, str); } } while (!is_special(bits) && ptr + len <= ptr_max) { len = -len; while (len) *ptr++ = str[len++]; if (*str == '\0') { bits = EOS; break; } bits = next_mbchar(c, len, str); } if (is_EOL(bits)) { str--; break; } if (c == '\\') { /* * We need to do some magic after a backslash. */ Bool read_next = True; if (only_pcs) { bits = next_char(c, str); if (is_nonpcs(bits)) only_pcs = False; } if (!only_pcs) bits = next_mbchar(c, len, str); if (is_EOL(bits)) { if (is_EOF(bits)) continue; } else if (c == 'n') { /* * "\n" means insert a newline. */ *ptr++ = '\n'; } else if (c == '\\') { /* * "\\" completes to just one backslash. */ *ptr++ = '\\'; } else { /* * pick up to three octal digits after the '\'. */ char temp[3]; int count = 0; while (is_odigit(bits) && count < 3) { temp[count++] = c; if (only_pcs) { bits = next_char(c, str); if (is_nonpcs(bits)) only_pcs = False; } if (!only_pcs) bits = next_mbchar(c, len, str); } /* * If we found three digits then insert that octal code * into the value string as a character. */ if (count == 3) { *ptr++ = (unsigned char) ((temp[0] - '0') * 0100 + (temp[1] - '0') * 010 + (temp[2] - '0')); } else { int tcount; /* * Otherwise just insert those characters into the * string, since no special processing is needed on * numerics we can skip the special processing. */ for (tcount = 0; tcount < count; tcount++) { *ptr++ = temp[tcount]; /* print them in the correct order */ } } read_next = False; } if (read_next) { if (only_pcs) { bits = next_char(c, str); if (is_nonpcs(bits)) only_pcs = False; } if (!only_pcs) bits = next_mbchar(c, len, str); } } /* * It is important to make sure that there is room for at least * four more characters in the buffer, since I can add that * many characters into the buffer after a backslash has occurred. */ if (ptr + len > ptr_max) { char * temp_str; alloc_chars += BUFSIZ/10; temp_str = Xrealloc(rhs, sizeof(char) * alloc_chars); if (!temp_str) { Xfree(rhs); if (lhs != lhs_s) Xfree (lhs); (*db->methods->mbfinish)(db->mbstate); return; } ptr = temp_str + (ptr - rhs); /* reset pointer. */ rhs = temp_str; ptr_max = rhs + alloc_chars - 4; } } /* * Lastly: Terminate the value string, and store this entry * into the database. */ *ptr++ = '\0'; /* Store it in database */ value.size = ptr - rhs; value.addr = (XPointer) rhs; PutEntry(db, bindings, quarks, XrmQString, &value); } if (lhs != lhs_s) Xfree (lhs); Xfree (rhs); (*db->methods->mbfinish)(db->mbstate); } void XrmPutStringResource( XrmDatabase *pdb, _Xconst char*specifier, _Xconst char*str) { XrmValue value; XrmBinding bindings[MAXDBDEPTH+1]; XrmQuark quarks[MAXDBDEPTH+1]; if (!*pdb) *pdb = NewDatabase(); XrmStringToBindingQuarkList(specifier, bindings, quarks); value.addr = (XPointer) str; value.size = (unsigned) strlen(str)+1; _XLockMutex(&(*pdb)->linfo); PutEntry(*pdb, bindings, quarks, XrmQString, &value); _XUnlockMutex(&(*pdb)->linfo); } void XrmPutLineResource( XrmDatabase *pdb, _Xconst char*line) { if (!*pdb) *pdb = NewDatabase(); _XLockMutex(&(*pdb)->linfo); GetDatabase(*pdb, line, (char *)NULL, False, 0); _XUnlockMutex(&(*pdb)->linfo); } XrmDatabase XrmGetStringDatabase( _Xconst char *data) { XrmDatabase db; db = NewDatabase(); _XLockMutex(&db->linfo); GetDatabase(db, data, (char *)NULL, True, 0); _XUnlockMutex(&db->linfo); return db; } /* Function Name: ReadInFile * Description: Reads the file into a buffer. * Arguments: filename - the name of the file. * Returns: An allocated string containing the contents of the file. */ static char * ReadInFile(_Xconst char *filename) { register int fd, size; char * filebuf; /* * MS-Windows and OS/2 note: Default open mode includes O_TEXT */ if ( (fd = _XOpenFile (filename, O_RDONLY)) == -1 ) return (char *)NULL; /* * MS-Windows and OS/2 note: depending on how the sources are * untarred, the newlines in resource files may or may not have * been expanded to CRLF. Either way the size returned by fstat * is sufficient to read the file into because in text-mode any * CRLFs in a file will be converted to newlines (LF) with the * result that the number of bytes actually read with be <= * to the size returned by fstat. */ { struct stat status_buffer; if ( ((fstat(fd, &status_buffer)) == -1 ) || (status_buffer.st_size >= INT_MAX) ) { close (fd); return (char *)NULL; } else size = (int) status_buffer.st_size; } if (!(filebuf = Xmalloc(size + 1))) { /* leave room for '\0' */ close(fd); return (char *)NULL; } size = read (fd, filebuf, size); if (size < 0) { close (fd); Xfree(filebuf); return (char *)NULL; } close (fd); filebuf[size] = '\0'; /* NULL terminate it. */ return filebuf; } static void GetIncludeFile( XrmDatabase db, _Xconst char *base, _Xconst char *fname, int fnamelen, int depth) { int len; char *str; char realfname[BUFSIZ]; if (fnamelen <= 0 || fnamelen >= BUFSIZ) return; if (depth >= MAXDBDEPTH) return; if (*fname != '/' && base && (str = strrchr(base, '/'))) { len = str - base + 1; if (len + fnamelen >= BUFSIZ) return; strncpy(realfname, base, (size_t) len); strncpy(realfname + len, fname, (size_t) fnamelen); realfname[len + fnamelen] = '\0'; } else { strncpy(realfname, fname, (size_t) fnamelen); realfname[fnamelen] = '\0'; } if (!(str = ReadInFile(realfname))) return; GetDatabase(db, str, realfname, True, depth + 1); Xfree(str); } XrmDatabase XrmGetFileDatabase( _Xconst char *filename) { XrmDatabase db; char *str; if (!(str = ReadInFile(filename))) return (XrmDatabase)NULL; db = NewDatabase(); _XLockMutex(&db->linfo); GetDatabase(db, str, filename, True, 0); _XUnlockMutex(&db->linfo); Xfree(str); return db; } Status XrmCombineFileDatabase( _Xconst char *filename, XrmDatabase *target, Bool override) { XrmDatabase db; char *str; if (!(str = ReadInFile(filename))) return 0; if (override) { db = *target; if (!db) *target = db = NewDatabase(); } else db = NewDatabase(); _XLockMutex(&db->linfo); GetDatabase(db, str, filename, True, 0); _XUnlockMutex(&db->linfo); Xfree(str); if (!override) XrmCombineDatabase(db, target, False); return 1; } /* call the user proc for every value in the table, arbitrary order. * stop if user proc returns True. level is current depth in database. */ /*ARGSUSED*/ static Bool EnumLTable( LTable table, XrmNameList names, XrmClassList classes, register int level, register EClosure closure) { register VEntry *bucket; register int i; register VEntry entry; XrmValue value; XrmRepresentation type; Bool tightOk; closure->bindings[level] = (table->table.tight ? XrmBindTightly : XrmBindLoosely); closure->quarks[level] = table->table.name; level++; tightOk = !*names; closure->quarks[level + 1] = NULLQUARK; for (i = table->table.mask, bucket = table->buckets; i >= 0; i--, bucket++) { for (entry = *bucket; entry; entry = entry->next) { if (entry->tight && !tightOk) continue; closure->bindings[level] = (entry->tight ? XrmBindTightly : XrmBindLoosely); closure->quarks[level] = entry->name; value.size = entry->size; if (entry->string) { type = XrmQString; value.addr = StringValue(entry); } else { type = RepType(entry); value.addr = DataValue(entry); } if ((*closure->proc)(&closure->db, closure->bindings+1, closure->quarks+1, &type, &value, closure->closure)) return True; } } return False; } static Bool EnumAllNTable( NTable table, register int level, register EClosure closure) { register NTable *bucket; register int i; register NTable entry; XrmQuark empty = NULLQUARK; if (level >= MAXDBDEPTH) return False; for (i = table->mask, bucket = NodeBuckets(table); i >= 0; i--, bucket++) { for (entry = *bucket; entry; entry = entry->next) { if (entry->leaf) { if (EnumLTable((LTable)entry, &empty, &empty, level, closure)) return True; } else { closure->bindings[level] = (entry->tight ? XrmBindTightly : XrmBindLoosely); closure->quarks[level] = entry->name; if (EnumAllNTable(entry, level+1, closure)) return True; } } } return False; } /* recurse on every table in the table, arbitrary order. * stop if user proc returns True. level is current depth in database. */ static Bool EnumNTable( NTable table, XrmNameList names, XrmClassList classes, register int level, register EClosure closure) { register NTable entry; register XrmQuark q; register unsigned int leaf; Bool (*get)( NTable table, XrmNameList names, XrmClassList classes, register int level, EClosure closure); Bool bilevel; /* find entries named ename, leafness leaf, tight or loose, and call get */ #define ITIGHTLOOSE(ename) \ NFIND(ename); \ if (entry) { \ if (leaf == entry->leaf) { \ if (!leaf && !entry->tight && entry->next && \ entry->next->name == q && entry->next->tight && \ (bilevel || entry->next->hasloose) && \ EnumLTable((LTable)entry->next, names+1, classes+1, \ level, closure)) \ return True; \ if ((*get)(entry, names+1, classes+1, level, closure)) \ return True; \ if (entry->tight && (entry = entry->next) && \ entry->name == q && leaf == entry->leaf && \ (*get)(entry, names+1, classes+1, level, closure)) \ return True; \ } else if (entry->leaf) { \ if ((bilevel || entry->hasloose) && \ EnumLTable((LTable)entry, names+1, classes+1, level, closure))\ return True; \ if (entry->tight && (entry = entry->next) && \ entry->name == q && (bilevel || entry->hasloose) && \ EnumLTable((LTable)entry, names+1, classes+1, level, closure))\ return True; \ } \ } /* find entries named ename, leafness leaf, loose only, and call get */ #define ILOOSE(ename) \ NFIND(ename); \ if (entry && entry->tight && (entry = entry->next) && entry->name != q) \ entry = (NTable)NULL; \ if (entry) { \ if (leaf == entry->leaf) { \ if ((*get)(entry, names+1, classes+1, level, closure)) \ return True; \ } else if (entry->leaf && (bilevel || entry->hasloose)) { \ if (EnumLTable((LTable)entry, names+1, classes+1, level, closure))\ return True; \ } \ } if (level >= MAXDBDEPTH) return False; closure->bindings[level] = (table->tight ? XrmBindTightly : XrmBindLoosely); closure->quarks[level] = table->name; level++; if (!*names) { if (EnumAllNTable(table, level, closure)) return True; } else { if (names[1] || closure->mode == XrmEnumAllLevels) { get = EnumNTable; /* recurse */ leaf = 0; bilevel = !names[1]; } else { get = (getNTableEProcp)EnumLTable; /* bottom of recursion */ leaf = 1; bilevel = False; } if (table->hasloose && closure->mode == XrmEnumAllLevels) { NTable *bucket; int i; XrmQuark empty = NULLQUARK; for (i = table->mask, bucket = NodeBuckets(table); i >= 0; i--, bucket++) { q = NULLQUARK; for (entry = *bucket; entry; entry = entry->next) { if (!entry->tight && entry->name != q && entry->name != *names && entry->name != *classes) { q = entry->name; if (entry->leaf) { if (EnumLTable((LTable)entry, &empty, &empty, level, closure)) return True; } else { if (EnumNTable(entry, &empty, &empty, level, closure)) return True; } } } } } ITIGHTLOOSE(*names); /* do name, tight and loose */ ITIGHTLOOSE(*classes); /* do class, tight and loose */ if (table->hasany) { ITIGHTLOOSE(XrmQANY); /* do ANY, tight and loose */ } if (table->hasloose) { while (1) { names++; classes++; if (!*names) break; if (!names[1] && closure->mode != XrmEnumAllLevels) { get = (getNTableEProcp)EnumLTable; /* bottom of recursion */ leaf = 1; } ILOOSE(*names); /* loose names */ ILOOSE(*classes); /* loose classes */ if (table->hasany) { ILOOSE(XrmQANY); /* loose ANY */ } } names--; classes--; } } /* now look for matching leaf nodes */ entry = table->next; if (!entry) return False; if (entry->leaf) { if (entry->tight && !table->tight) entry = entry->next; } else { entry = entry->next; if (!entry || !entry->tight) return False; } if (!entry || entry->name != table->name) return False; /* found one */ level--; if ((!*names || entry->hasloose) && EnumLTable((LTable)entry, names, classes, level, closure)) return True; if (entry->tight && entry == table->next && (entry = entry->next) && entry->name == table->name && (!*names || entry->hasloose)) return EnumLTable((LTable)entry, names, classes, level, closure); return False; #undef ITIGHTLOOSE #undef ILOOSE } /* call the proc for every value in the database, arbitrary order. * stop if the proc returns True. */ Bool XrmEnumerateDatabase( XrmDatabase db, XrmNameList names, XrmClassList classes, int mode, DBEnumProc proc, XPointer closure) { XrmBinding bindings[MAXDBDEPTH+2]; XrmQuark quarks[MAXDBDEPTH+2]; register NTable table; EClosureRec eclosure; Bool retval = False; if (!db) return False; _XLockMutex(&db->linfo); eclosure.db = db; eclosure.proc = proc; eclosure.closure = closure; eclosure.bindings = bindings; eclosure.quarks = quarks; eclosure.mode = mode; table = db->table; if (table && !table->leaf && !*names && mode == XrmEnumOneLevel) table = table->next; if (table) { if (!table->leaf) retval = EnumNTable(table, names, classes, 0, &eclosure); else retval = EnumLTable((LTable)table, names, classes, 0, &eclosure); } _XUnlockMutex(&db->linfo); return retval; } static void PrintBindingQuarkList( XrmBindingList bindings, XrmQuarkList quarks, FILE *stream) { Bool firstNameSeen; for (firstNameSeen = False; *quarks; bindings++, quarks++) { if (*bindings == XrmBindLoosely) { (void) fprintf(stream, "*"); } else if (firstNameSeen) { (void) fprintf(stream, "."); } firstNameSeen = True; (void) fputs(XrmQuarkToString(*quarks), stream); } } /* output out the entry in correct file syntax */ /*ARGSUSED*/ static Bool DumpEntry( XrmDatabase *db, XrmBindingList bindings, XrmQuarkList quarks, XrmRepresentation *type, XrmValuePtr value, XPointer data) { FILE *stream = (FILE *)data; register unsigned int i; register char *s; register char c; if (*type != XrmQString) (void) putc('!', stream); PrintBindingQuarkList(bindings, quarks, stream); s = value->addr; i = value->size; if (*type == XrmQString) { (void) fputs(":\t", stream); if (i) i--; } else (void) fprintf(stream, "=%s:\t", XrmRepresentationToString(*type)); if (i && (*s == ' ' || *s == '\t')) (void) putc('\\', stream); /* preserve leading whitespace */ while (i--) { c = *s++; if (c == '\n') { if (i) (void) fputs("\\n\\\n", stream); else (void) fputs("\\n", stream); } else if (c == '\\') (void) fputs("\\\\", stream); else if ((c < ' ' && c != '\t') || ((unsigned char)c >= 0x7f && (unsigned char)c < 0xa0)) (void) fprintf(stream, "\\%03o", (unsigned char)c); else (void) putc(c, stream); } (void) putc('\n', stream); return ferror(stream) != 0; } #ifdef DEBUG void PrintTable( NTable table, FILE *file) { XrmBinding bindings[MAXDBDEPTH+1]; XrmQuark quarks[MAXDBDEPTH+1]; EClosureRec closure; XrmQuark empty = NULLQUARK; closure.db = (XrmDatabase)NULL; closure.proc = DumpEntry; closure.closure = (XPointer)file; closure.bindings = bindings; closure.quarks = quarks; closure.mode = XrmEnumAllLevels; if (table->leaf) EnumLTable((LTable)table, &empty, &empty, 0, &closure); else EnumNTable(table, &empty, &empty, 0, &closure); } #endif /* DEBUG */ void XrmPutFileDatabase( XrmDatabase db, _Xconst char *fileName) { FILE *file; XrmQuark empty = NULLQUARK; if (!db) return; if (!(file = fopen(fileName, "w"))) return; if (XrmEnumerateDatabase(db, &empty, &empty, XrmEnumAllLevels, DumpEntry, (XPointer) file)) unlink((char *)fileName); fclose(file); } /* macros used in get/search functions */ /* find entries named ename, leafness leaf, tight or loose, and call get */ #define GTIGHTLOOSE(ename,looseleaf) \ NFIND(ename); \ if (entry) { \ if (leaf == entry->leaf) { \ if (!leaf && !entry->tight && entry->next && \ entry->next->name == q && entry->next->tight && \ entry->next->hasloose && \ looseleaf((LTable)entry->next, names+1, classes+1, closure)) \ return True; \ if ((*get)(entry, names+1, classes+1, closure)) \ return True; \ if (entry->tight && (entry = entry->next) && \ entry->name == q && leaf == entry->leaf && \ (*get)(entry, names+1, classes+1, closure)) \ return True; \ } else if (entry->leaf) { \ if (entry->hasloose && \ looseleaf((LTable)entry, names+1, classes+1, closure)) \ return True; \ if (entry->tight && (entry = entry->next) && \ entry->name == q && entry->hasloose && \ looseleaf((LTable)entry, names+1, classes+1, closure)) \ return True; \ } \ } /* find entries named ename, leafness leaf, loose only, and call get */ #define GLOOSE(ename,looseleaf) \ NFIND(ename); \ if (entry && entry->tight && (entry = entry->next) && entry->name != q) \ entry = (NTable)NULL; \ if (entry) { \ if (leaf == entry->leaf) { \ if ((*get)(entry, names+1, classes+1, closure)) \ return True; \ } else if (entry->leaf && entry->hasloose) { \ if (looseleaf((LTable)entry, names+1, classes+1, closure)) \ return True; \ } \ } /* add tight/loose entry to the search list, return True if list is full */ /*ARGSUSED*/ static Bool AppendLEntry( LTable table, XrmNameList names, XrmClassList classes, register SClosure closure) { /* check for duplicate */ if (closure->idx >= 0 && closure->list[closure->idx] == table) return False; if (closure->idx == closure->limit) return True; /* append it */ closure->idx++; closure->list[closure->idx] = table; return False; } /* add loose entry to the search list, return True if list is full */ /*ARGSUSED*/ static Bool AppendLooseLEntry( LTable table, XrmNameList names, XrmClassList classes, register SClosure closure) { /* check for duplicate */ if (closure->idx >= 0 && closure->list[closure->idx] == table) return False; if (closure->idx >= closure->limit - 1) return True; /* append it */ closure->idx++; closure->list[closure->idx] = LOOSESEARCH; closure->idx++; closure->list[closure->idx] = table; return False; } /* search for a leaf table */ static Bool SearchNEntry( NTable table, XrmNameList names, XrmClassList classes, SClosure closure) { register NTable entry; register XrmQuark q; register unsigned int leaf; Bool (*get)( NTable table, XrmNameList names, XrmClassList classes, SClosure closure); if (names[1]) { get = SearchNEntry; /* recurse */ leaf = 0; } else { get = (getNTableSProcp)AppendLEntry; /* bottom of recursion */ leaf = 1; } GTIGHTLOOSE(*names, AppendLooseLEntry); /* do name, tight and loose */ GTIGHTLOOSE(*classes, AppendLooseLEntry); /* do class, tight and loose */ if (table->hasany) { GTIGHTLOOSE(XrmQANY, AppendLooseLEntry); /* do ANY, tight and loose */ } if (table->hasloose) { while (1) { names++; classes++; if (!*names) break; if (!names[1]) { get = (getNTableSProcp)AppendLEntry; /* bottom of recursion */ leaf = 1; } GLOOSE(*names, AppendLooseLEntry); /* loose names */ GLOOSE(*classes, AppendLooseLEntry); /* loose classes */ if (table->hasany) { GLOOSE(XrmQANY, AppendLooseLEntry); /* loose ANY */ } } } /* now look for matching leaf nodes */ entry = table->next; if (!entry) return False; if (entry->leaf) { if (entry->tight && !table->tight) entry = entry->next; } else { entry = entry->next; if (!entry || !entry->tight) return False; } if (!entry || entry->name != table->name) return False; /* found one */ if (entry->hasloose && AppendLooseLEntry((LTable)entry, names, classes, closure)) return True; if (entry->tight && entry == table->next && (entry = entry->next) && entry->name == table->name && entry->hasloose) return AppendLooseLEntry((LTable)entry, names, classes, closure); return False; } Bool XrmQGetSearchList( XrmDatabase db, XrmNameList names, XrmClassList classes, XrmSearchList searchList, /* RETURN */ int listLength) { register NTable table; SClosureRec closure; if (listLength <= 0) return False; closure.list = (LTable *)searchList; closure.idx = -1; closure.limit = listLength - 2; if (db) { _XLockMutex(&db->linfo); table = db->table; if (*names) { if (table && !table->leaf) { if (SearchNEntry(table, names, classes, &closure)) { _XUnlockMutex(&db->linfo); return False; } } else if (table && table->hasloose && AppendLooseLEntry((LTable)table, names, classes, &closure)) { _XUnlockMutex(&db->linfo); return False; } } else { if (table && !table->leaf) table = table->next; if (table && AppendLEntry((LTable)table, names, classes, &closure)) { _XUnlockMutex(&db->linfo); return False; } } _XUnlockMutex(&db->linfo); } closure.list[closure.idx + 1] = (LTable)NULL; return True; } Bool XrmQGetSearchResource( XrmSearchList searchList, register XrmName name, register XrmClass class, XrmRepresentation *pType, /* RETURN */ XrmValue *pValue) /* RETURN */ { register LTable *list; register LTable table; register VEntry entry = NULL; int flags; /* find tight or loose entry */ #define VTIGHTLOOSE(q) \ entry = LeafHash(table, q); \ while (entry && entry->name != q) \ entry = entry->next; \ if (entry) \ break /* find loose entry */ #define VLOOSE(q) \ entry = LeafHash(table, q); \ while (entry && entry->name != q) \ entry = entry->next; \ if (entry) { \ if (!entry->tight) \ break; \ if ((entry = entry->next) && entry->name == q) \ break; \ } list = (LTable *)searchList; /* figure out which combination of name and class we need to search for */ flags = 0; if (IsResourceQuark(name)) flags = 2; if (IsResourceQuark(class)) flags |= 1; if (!flags) { /* neither name nor class has ever been used to name a resource */ table = (LTable)NULL; } else if (flags == 3) { /* both name and class */ while ((table = *list++)) { if (table != LOOSESEARCH) { VTIGHTLOOSE(name); /* do name, tight and loose */ VTIGHTLOOSE(class); /* do class, tight and loose */ } else { table = *list++; VLOOSE(name); /* do name, loose only */ VLOOSE(class); /* do class, loose only */ } } } else { /* just one of name or class */ if (flags == 1) name = class; while ((table = *list++)) { if (table != LOOSESEARCH) { VTIGHTLOOSE(name); /* tight and loose */ } else { table = *list++; VLOOSE(name); /* loose only */ } } } if (table) { /* found a match */ if (entry->string) { *pType = XrmQString; pValue->addr = StringValue(entry); } else { *pType = RepType(entry); pValue->addr = DataValue(entry); } pValue->size = entry->size; return True; } *pType = NULLQUARK; pValue->addr = (XPointer)NULL; pValue->size = 0; return False; #undef VTIGHTLOOSE #undef VLOOSE } /* look for a tight/loose value */ static Bool GetVEntry( LTable table, XrmNameList names, XrmClassList classes, VClosure closure) { register VEntry entry; register XrmQuark q; /* try name first */ q = *names; entry = LeafHash(table, q); while (entry && entry->name != q) entry = entry->next; if (!entry) { /* not found, try class */ q = *classes; entry = LeafHash(table, q); while (entry && entry->name != q) entry = entry->next; if (!entry) return False; } if (entry->string) { *closure->type = XrmQString; closure->value->addr = StringValue(entry); } else { *closure->type = RepType(entry); closure->value->addr = DataValue(entry); } closure->value->size = entry->size; return True; } /* look for a loose value */ static Bool GetLooseVEntry( LTable table, XrmNameList names, XrmClassList classes, VClosure closure) { register VEntry entry; register XrmQuark q; #define VLOOSE(ename) \ q = ename; \ entry = LeafHash(table, q); \ while (entry && entry->name != q) \ entry = entry->next; \ if (entry && entry->tight && (entry = entry->next) && entry->name != q) \ entry = (VEntry)NULL; /* bump to last component */ while (names[1]) { names++; classes++; } VLOOSE(*names); /* do name, loose only */ if (!entry) { VLOOSE(*classes); /* do class, loose only */ if (!entry) return False; } if (entry->string) { *closure->type = XrmQString; closure->value->addr = StringValue(entry); } else { *closure->type = RepType(entry); closure->value->addr = DataValue(entry); } closure->value->size = entry->size; return True; #undef VLOOSE } /* recursive search for a value */ static Bool GetNEntry( NTable table, XrmNameList names, XrmClassList classes, VClosure closure) { register NTable entry; register XrmQuark q; register unsigned int leaf; Bool (*get)( NTable table, XrmNameList names, XrmClassList classes, VClosure closure); NTable otable; if (names[2]) { get = GetNEntry; /* recurse */ leaf = 0; } else { get = (getNTableVProcp)GetVEntry; /* bottom of recursion */ leaf = 1; } GTIGHTLOOSE(*names, GetLooseVEntry); /* do name, tight and loose */ GTIGHTLOOSE(*classes, GetLooseVEntry); /* do class, tight and loose */ if (table->hasany) { GTIGHTLOOSE(XrmQANY, GetLooseVEntry); /* do ANY, tight and loose */ } if (table->hasloose) { while (1) { names++; classes++; if (!names[1]) break; if (!names[2]) { get = (getNTableVProcp)GetVEntry; /* bottom of recursion */ leaf = 1; } GLOOSE(*names, GetLooseVEntry); /* do name, loose only */ GLOOSE(*classes, GetLooseVEntry); /* do class, loose only */ if (table->hasany) { GLOOSE(XrmQANY, GetLooseVEntry); /* do ANY, loose only */ } } } /* look for matching leaf tables */ otable = table; table = table->next; if (!table) return False; if (table->leaf) { if (table->tight && !otable->tight) table = table->next; } else { table = table->next; if (!table || !table->tight) return False; } if (!table || table->name != otable->name) return False; /* found one */ if (table->hasloose && GetLooseVEntry((LTable)table, names, classes, closure)) return True; if (table->tight && table == otable->next) { table = table->next; if (table && table->name == otable->name && table->hasloose) return GetLooseVEntry((LTable)table, names, classes, closure); } return False; } Bool XrmQGetResource( XrmDatabase db, XrmNameList names, XrmClassList classes, XrmRepresentation *pType, /* RETURN */ XrmValuePtr pValue) /* RETURN */ { register NTable table; VClosureRec closure; if (db && *names) { _XLockMutex(&db->linfo); closure.type = pType; closure.value = pValue; table = db->table; if (names[1]) { if (table && !table->leaf) { if (GetNEntry(table, names, classes, &closure)) { _XUnlockMutex(&db->linfo); return True; } } else if (table && table->hasloose && GetLooseVEntry((LTable)table, names, classes, &closure)) { _XUnlockMutex (&db->linfo); return True; } } else { if (table && !table->leaf) table = table->next; if (table && GetVEntry((LTable)table, names, classes, &closure)) { _XUnlockMutex(&db->linfo); return True; } } _XUnlockMutex(&db->linfo); } *pType = NULLQUARK; pValue->addr = (XPointer)NULL; pValue->size = 0; return False; } Bool XrmGetResource(XrmDatabase db, _Xconst char *name_str, _Xconst char *class_str, XrmString *pType_str, XrmValuePtr pValue) { XrmName names[MAXDBDEPTH+1]; XrmClass classes[MAXDBDEPTH+1]; XrmRepresentation fromType; Bool result; XrmStringToNameList(name_str, names); XrmStringToClassList(class_str, classes); result = XrmQGetResource(db, names, classes, &fromType, pValue); (*pType_str) = XrmQuarkToString(fromType); return result; } /* destroy all values, plus table itself */ static void DestroyLTable( LTable table) { register int i; register VEntry *buckets; register VEntry entry, next; buckets = table->buckets; for (i = table->table.mask; i >= 0; i--, buckets++) { for (next = *buckets; (entry = next); ) { next = entry->next; Xfree(entry); } } Xfree(table->buckets); Xfree(table); } /* destroy all contained tables, plus table itself */ static void DestroyNTable( NTable table) { register int i; register NTable *buckets; register NTable entry, next; buckets = NodeBuckets(table); for (i = table->mask; i >= 0; i--, buckets++) { for (next = *buckets; (entry = next); ) { next = entry->next; if (entry->leaf) DestroyLTable((LTable)entry); else DestroyNTable(entry); } } Xfree(table); } const char * XrmLocaleOfDatabase( XrmDatabase db) { const char* retval; _XLockMutex(&db->linfo); retval = (*db->methods->lcname)(db->mbstate); _XUnlockMutex(&db->linfo); return retval; } void XrmDestroyDatabase( XrmDatabase db) { register NTable table, next; if (db) { _XLockMutex(&db->linfo); for (next = db->table; (table = next); ) { next = table->next; if (table->leaf) DestroyLTable((LTable)table); else DestroyNTable(table); } _XUnlockMutex(&db->linfo); _XFreeMutex(&db->linfo); (*db->methods->destroy)(db->mbstate); Xfree(db); } } libX11-1.8.12/src/MapSubs.c0000644014310600000120000000263014763154126010633 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XMapSubwindows( register Display *dpy, Window win) { register xResourceReq *req; LockDisplay(dpy); GetResReq(MapSubwindows, win, req); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/SetClMask.c0000644014310600000120000000302014763154126011101 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XSetClipMask ( register Display *dpy, GC gc, Pixmap mask) { LockDisplay(dpy); /* always update, since client may have changed pixmap contents */ gc->values.clip_mask = mask; gc->dirty |= GCClipMask; gc->rects = 0; _XFlushGCCache(dpy, gc); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/locking.c0000644014310600000120000004210414763154126010707 /* Copyright 1992, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ /* * Author: Stephen Gildea, MIT X Consortium * * locking.c - multi-thread locking routines implemented in C Threads */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #undef _XLockMutex #undef _XUnlockMutex #undef _XCreateMutex #undef _XFreeMutex #ifdef XTHREADS #ifdef __UNIXWARE__ #include #endif #include "Xprivate.h" #include "locking.h" #ifdef XTHREADS_WARN #include /* for warn/debug stuff */ #endif /* Additional arguments for source code location lock call was made from */ #if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE) # define XTHREADS_FILE_LINE_ARGS \ , \ char* file, /* source file, from macro */ \ int line #else # define XTHREADS_FILE_LINE_ARGS /* None */ #endif #define NUM_FREE_CVLS 4 /* in lcWrap.c */ extern LockInfoPtr _Xi18n_lock; /* in lcConv.c */ extern LockInfoPtr _conv_lock; #ifdef WIN32 static DWORD _X_TlsIndex = (DWORD)-1; void _Xthread_init(void) { if (_X_TlsIndex == (DWORD)-1) _X_TlsIndex = TlsAlloc(); } struct _xthread_waiter * _Xthread_waiter(void) { struct _xthread_waiter *me; if (!(me = TlsGetValue(_X_TlsIndex))) { me = xmalloc(sizeof(struct _xthread_waiter)); me->sem = CreateSemaphore(NULL, 0, 1, NULL); me->next = NULL; TlsSetValue(_X_TlsIndex, me); } return me; } #endif /* WIN32 */ static xthread_t _Xthread_self(void) { return xthread_self(); } static LockInfoRec global_lock; static LockInfoRec i18n_lock; static LockInfoRec conv_lock; static void _XLockMutex( LockInfoPtr lip XTHREADS_FILE_LINE_ARGS ) { xmutex_lock(lip->lock); } static void _XUnlockMutex( LockInfoPtr lip XTHREADS_FILE_LINE_ARGS ) { xmutex_unlock(lip->lock); } static void _XCreateMutex( LockInfoPtr lip) { lip->lock = xmutex_malloc(); if (lip->lock) { xmutex_init(lip->lock); xmutex_set_name(lip->lock, "Xlib"); } } static void _XFreeMutex( LockInfoPtr lip) { xmutex_clear(lip->lock); xmutex_free(lip->lock); lip->lock = NULL; } #ifdef XTHREADS_WARN static char *locking_file; static int locking_line; static xthread_t locking_thread; static Bool xlibint_unlock = False; /* XlibInt.c may Unlock and re-Lock */ /* history that is useful to examine in a debugger */ #define LOCK_HIST_SIZE 21 static struct { Bool lockp; /* True for lock, False for unlock */ xthread_t thread; char *file; int line; } locking_history[LOCK_HIST_SIZE]; int lock_hist_loc = 0; /* next slot to fill */ static void _XLockDisplayWarn( Display *dpy, char *file, /* source file, from macro */ int line) { xthread_t self; xthread_t old_locker; self = xthread_self(); old_locker = locking_thread; if (xthread_have_id(old_locker)) { if (xthread_equal(old_locker, self)) printf("Xlib ERROR: %s line %d thread %x: locking display already locked at %s line %d\n", file, line, self, locking_file, locking_line); #ifdef XTHREADS_DEBUG else printf("%s line %d: thread %x waiting on lock held by %s line %d thread %x\n", file, line, self, locking_file, locking_line, old_locker); #endif /* XTHREADS_DEBUG */ } xmutex_lock(dpy->lock->mutex); if (strcmp(file, "XlibInt.c") == 0) { if (!xlibint_unlock) printf("Xlib ERROR: XlibInt.c line %d thread %x locking display it did not unlock\n", line, self); xlibint_unlock = False; } #ifdef XTHREADS_DEBUG /* if (old_locker && old_locker != self) */ if (strcmp("XClearArea.c", file) && strcmp("XDrSegs.c", file)) /* ico */ printf("%s line %d: thread %x got display lock\n", file, line, self); #endif /* XTHREADS_DEBUG */ locking_thread = self; if (strcmp(file, "XlibInt.c") != 0) { locking_file = file; locking_line = line; } locking_history[lock_hist_loc].file = file; locking_history[lock_hist_loc].line = line; locking_history[lock_hist_loc].thread = self; locking_history[lock_hist_loc].lockp = True; lock_hist_loc++; if (lock_hist_loc >= LOCK_HIST_SIZE) lock_hist_loc = 0; } #endif /* XTHREADS_WARN */ static void _XUnlockDisplay( Display *dpy XTHREADS_FILE_LINE_ARGS ) { #ifdef XTHREADS_WARN xthread_t self = xthread_self(); #ifdef XTHREADS_DEBUG if (strcmp("XClearArea.c", file) && strcmp("XDrSegs.c", file)) /* ico */ printf("%s line %d: thread %x unlocking display\n", file, line, self); #endif /* XTHREADS_DEBUG */ if (!xthread_have_id(locking_thread)) printf("Xlib ERROR: %s line %d thread %x: unlocking display that is not locked\n", file, line, self); else if (strcmp(file, "XlibInt.c") == 0) xlibint_unlock = True; #ifdef XTHREADS_DEBUG else if (strcmp(file, locking_file) != 0) /* not always an error because locking_file is not per-thread */ printf("%s line %d: unlocking display locked from %s line %d (probably okay)\n", file, line, locking_file, locking_line); #endif /* XTHREADS_DEBUG */ xthread_clear_id(locking_thread); locking_history[lock_hist_loc].file = file; locking_history[lock_hist_loc].line = line; locking_history[lock_hist_loc].thread = self; locking_history[lock_hist_loc].lockp = False; lock_hist_loc++; if (lock_hist_loc >= LOCK_HIST_SIZE) lock_hist_loc = 0; #endif /* XTHREADS_WARN */ if (dpy->in_ifevent == 0 || !xthread_equal(dpy->ifevent_thread, xthread_self())) xmutex_unlock(dpy->lock->mutex); } static struct _XCVList *_XCreateCVL( Display *dpy) { struct _XCVList *cvl; if ((cvl = dpy->lock->free_cvls) != NULL) { dpy->lock->free_cvls = cvl->next; dpy->lock->num_free_cvls--; } else { cvl = Xmalloc(sizeof(struct _XCVList)); if (!cvl) return NULL; cvl->cv = xcondition_malloc(); if (!cvl->cv) { Xfree(cvl); return NULL; } xcondition_init(cvl->cv); xcondition_set_name(cvl->cv, "Xlib read queue"); } cvl->next = NULL; return cvl; } /* Put ourselves on the queue to read the connection. Allocates and returns a queue element. */ static struct _XCVList * _XPushReader( Display *dpy, struct _XCVList ***tail) { struct _XCVList *cvl; cvl = _XCreateCVL(dpy); #ifdef XTHREADS_DEBUG printf("_XPushReader called in thread %x, pushing %x\n", xthread_self(), cvl); #endif **tail = cvl; *tail = &cvl->next; return cvl; } /* signal the next thread waiting to read the connection */ static void _XPopReader( Display *dpy, struct _XCVList **list, struct _XCVList ***tail) { register struct _XCVList *front = *list; #ifdef XTHREADS_DEBUG printf("_XPopReader called in thread %x, popping %x\n", xthread_self(), front); #endif if (dpy->flags & XlibDisplayProcConni) /* we never added ourself in the first place */ return; if (front) { /* check "front" for paranoia */ *list = front->next; if (*tail == &front->next) /* did we free the last elt? */ *tail = list; if (dpy->lock->num_free_cvls < NUM_FREE_CVLS) { front->next = dpy->lock->free_cvls; dpy->lock->free_cvls = front; dpy->lock->num_free_cvls++; } else { xcondition_clear(front->cv); Xfree(front->cv); Xfree(front); } } /* signal new front after it is in place */ if ((dpy->lock->reply_first = (dpy->lock->reply_awaiters != NULL))) { ConditionSignal(dpy, dpy->lock->reply_awaiters->cv); } else if (dpy->lock->event_awaiters) { ConditionSignal(dpy, dpy->lock->event_awaiters->cv); } } static void _XConditionWait( xcondition_t cv, xmutex_t mutex XTHREADS_FILE_LINE_ARGS ) { #ifdef XTHREADS_WARN xthread_t self = xthread_self(); char *old_file = locking_file; int old_line = locking_line; #ifdef XTHREADS_DEBUG printf("line %d thread %x in condition wait\n", line, self); #endif xthread_clear_id(locking_thread); locking_history[lock_hist_loc].file = file; locking_history[lock_hist_loc].line = line; locking_history[lock_hist_loc].thread = self; locking_history[lock_hist_loc].lockp = False; lock_hist_loc++; if (lock_hist_loc >= LOCK_HIST_SIZE) lock_hist_loc = 0; #endif /* XTHREADS_WARN */ xcondition_wait(cv, mutex); #ifdef XTHREADS_WARN locking_thread = self; locking_file = old_file; locking_line = old_line; locking_history[lock_hist_loc].file = file; locking_history[lock_hist_loc].line = line; locking_history[lock_hist_loc].thread = self; locking_history[lock_hist_loc].lockp = True; lock_hist_loc++; if (lock_hist_loc >= LOCK_HIST_SIZE) lock_hist_loc = 0; #ifdef XTHREADS_DEBUG printf("line %d thread %x was signaled\n", line, self); #endif /* XTHREADS_DEBUG */ #endif /* XTHREADS_WARN */ } static void _XConditionSignal( xcondition_t cv XTHREADS_FILE_LINE_ARGS ) { #ifdef XTHREADS_WARN #ifdef XTHREADS_DEBUG printf("line %d thread %x is signalling\n", line, xthread_self()); #endif #endif xcondition_signal(cv); } static void _XConditionBroadcast( xcondition_t cv XTHREADS_FILE_LINE_ARGS ) { #ifdef XTHREADS_WARN #ifdef XTHREADS_DEBUG printf("line %d thread %x is broadcasting\n", line, xthread_self()); #endif #endif xcondition_broadcast(cv); } static void _XFreeDisplayLock( Display *dpy) { struct _XCVList *cvl; if (dpy->lock != NULL) { if (dpy->lock->mutex != NULL) { xmutex_clear(dpy->lock->mutex); xmutex_free(dpy->lock->mutex); } if (dpy->lock->cv != NULL) { xcondition_clear(dpy->lock->cv); xcondition_free(dpy->lock->cv); } if (dpy->lock->writers != NULL) { xcondition_clear(dpy->lock->writers); xcondition_free(dpy->lock->writers); } while ((cvl = dpy->lock->free_cvls)) { dpy->lock->free_cvls = cvl->next; xcondition_clear(cvl->cv); Xfree(cvl->cv); Xfree(cvl); } Xfree(dpy->lock); dpy->lock = NULL; } if (dpy->lock_fns != NULL) { Xfree(dpy->lock_fns); dpy->lock_fns = NULL; } } /* * wait for thread with user-level display lock to release it. */ static void _XDisplayLockWait( Display *dpy) { xthread_t self; while (dpy->lock->locking_level > 0) { self = xthread_self(); if (xthread_equal(dpy->lock->locking_thread, self)) break; ConditionWait(dpy, dpy->lock->cv); } } static void _XLockDisplay( Display *dpy XTHREADS_FILE_LINE_ARGS ) { struct _XErrorThreadInfo *ti; if (dpy->in_ifevent && xthread_equal(dpy->ifevent_thread, xthread_self())) return; #ifdef XTHREADS_WARN _XLockDisplayWarn(dpy, file, line); #else xmutex_lock(dpy->lock->mutex); #endif if (dpy->lock->locking_level > 0) _XDisplayLockWait(dpy); /* * Skip the two function calls below which may generate requests * when LockDisplay is called from within _XError. */ for (ti = dpy->error_threads; ti; ti = ti->next) if (ti->error_thread == xthread_self()) return; _XIDHandler(dpy); _XSeqSyncFunction(dpy); } /* * _XReply is allowed to exit from select/poll and clean up even if a * user-level lock is in force, so it uses this instead of _XFancyLockDisplay. */ static void _XInternalLockDisplay( Display *dpy, Bool wskip XTHREADS_FILE_LINE_ARGS ) { if (dpy->in_ifevent && xthread_equal(dpy->ifevent_thread, xthread_self())) return; #ifdef XTHREADS_WARN _XLockDisplayWarn(dpy, file, line); #else xmutex_lock(dpy->lock->mutex); #endif if (!wskip && dpy->lock->locking_level > 0) _XDisplayLockWait(dpy); } static void _XUserLockDisplay( register Display* dpy) { _XDisplayLockWait(dpy); if (++dpy->lock->locking_level == 1) { dpy->lock->lock_wait = _XDisplayLockWait; dpy->lock->locking_thread = xthread_self(); } } static void _XUserUnlockDisplay( register Display* dpy) { if (dpy->lock->locking_level > 0 && --dpy->lock->locking_level == 0) { /* signal other threads that might be waiting in XLockDisplay */ ConditionBroadcast(dpy, dpy->lock->cv); dpy->lock->lock_wait = NULL; xthread_clear_id(dpy->lock->locking_thread); } } /* returns 0 if initialized ok, -1 if unable to allocate a mutex or other memory */ static int _XInitDisplayLock( Display *dpy) { dpy->lock_fns = Xmalloc(sizeof(struct _XLockPtrs)); if (dpy->lock_fns == NULL) return -1; dpy->lock = Xmalloc(sizeof(struct _XLockInfo)); if (dpy->lock == NULL) { _XFreeDisplayLock(dpy); return -1; } dpy->lock->cv = xcondition_malloc(); dpy->lock->mutex = xmutex_malloc(); dpy->lock->writers = xcondition_malloc(); if (!dpy->lock->cv || !dpy->lock->mutex || !dpy->lock->writers) { _XFreeDisplayLock(dpy); return -1; } dpy->lock->reply_bytes_left = 0; dpy->lock->reply_was_read = False; dpy->lock->reply_awaiters = NULL; dpy->lock->reply_awaiters_tail = &dpy->lock->reply_awaiters; dpy->lock->event_awaiters = NULL; dpy->lock->event_awaiters_tail = &dpy->lock->event_awaiters; dpy->lock->reply_first = False; dpy->lock->locking_level = 0; dpy->lock->num_free_cvls = 0; dpy->lock->free_cvls = NULL; xthread_clear_id(dpy->lock->locking_thread); xthread_clear_id(dpy->lock->reading_thread); xthread_clear_id(dpy->lock->conni_thread); xmutex_init(dpy->lock->mutex); xmutex_set_name(dpy->lock->mutex, "Xlib Display"); xcondition_init(dpy->lock->cv); xcondition_set_name(dpy->lock->cv, "XLockDisplay"); xcondition_init(dpy->lock->writers); xcondition_set_name(dpy->lock->writers, "Xlib wait for writable"); dpy->lock_fns->lock_display = _XLockDisplay; dpy->lock->internal_lock_display = _XInternalLockDisplay; dpy->lock_fns->unlock_display = _XUnlockDisplay; dpy->lock->user_lock_display = _XUserLockDisplay; dpy->lock->user_unlock_display = _XUserUnlockDisplay; dpy->lock->pop_reader = _XPopReader; dpy->lock->push_reader = _XPushReader; dpy->lock->condition_wait = _XConditionWait; dpy->lock->condition_signal = _XConditionSignal; dpy->lock->condition_broadcast = _XConditionBroadcast; dpy->lock->create_cvl = _XCreateCVL; dpy->lock->lock_wait = NULL; /* filled in by XLockDisplay() */ return 0; } #ifdef __UNIXWARE__ xthread_t __x11_thr_self() { return 0; } xthread_t (*_x11_thr_self)() = __x11_thr_self; #endif Status XInitThreads(void) { if (_Xglobal_lock) return 1; #ifdef __UNIXWARE__ else { void *dl_handle = dlopen(NULL, RTLD_LAZY); if (!dl_handle || ((_x11_thr_self = (xthread_t(*)())dlsym(dl_handle,"thr_self")) == 0)) { _x11_thr_self = __x11_thr_self; (void) fprintf (stderr, "XInitThreads called, but no libthread in the calling program!\n" ); } } #endif /* __UNIXWARE__ */ #ifdef xthread_init xthread_init(); /* return value? */ #endif if (!(global_lock.lock = xmutex_malloc())) return 0; if (!(i18n_lock.lock = xmutex_malloc())) { xmutex_free(global_lock.lock); global_lock.lock = NULL; return 0; } if (!(conv_lock.lock = xmutex_malloc())) { xmutex_free(global_lock.lock); global_lock.lock = NULL; xmutex_free(i18n_lock.lock); i18n_lock.lock = NULL; return 0; } _Xglobal_lock = &global_lock; xmutex_init(_Xglobal_lock->lock); xmutex_set_name(_Xglobal_lock->lock, "Xlib global"); _Xi18n_lock = &i18n_lock; xmutex_init(_Xi18n_lock->lock); xmutex_set_name(_Xi18n_lock->lock, "Xlib i18n"); _conv_lock = &conv_lock; xmutex_init(_conv_lock->lock); xmutex_set_name(_conv_lock->lock, "Xlib conv"); _XLockMutex_fn = _XLockMutex; _XUnlockMutex_fn = _XUnlockMutex; _XCreateMutex_fn = _XCreateMutex; _XFreeMutex_fn = _XFreeMutex; _XInitDisplayLock_fn = _XInitDisplayLock; _XFreeDisplayLock_fn = _XFreeDisplayLock; _Xthread_self_fn = _Xthread_self; #ifdef XTHREADS_WARN #ifdef XTHREADS_DEBUG setlinebuf(stdout); /* for debugging messages */ #endif #endif return 1; } Status XFreeThreads(void) { if (global_lock.lock != NULL) { xmutex_free(global_lock.lock); global_lock.lock = NULL; } if (i18n_lock.lock != NULL) { xmutex_free(i18n_lock.lock); i18n_lock.lock = NULL; } if (conv_lock.lock != NULL) { xmutex_free(conv_lock.lock); conv_lock.lock = NULL; } return 1; } #else /* XTHREADS */ Status XInitThreads(void) { return 0; } Status XFreeThreads(void) { return 0; } #endif /* XTHREADS */ libX11-1.8.12/src/evtomask.c0000644014310600000120000000573014763154126011116 /* Copyright 1987, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include /* * This array can be used given an event type to determine the mask bits * that could have generated it. */ long const _Xevent_to_mask [LASTEvent] = { 0, /* no event 0 */ 0, /* no event 1 */ KeyPressMask, /* KeyPress */ KeyReleaseMask, /* KeyRelease */ ButtonPressMask, /* ButtonPress */ ButtonReleaseMask, /* ButtonRelease */ PointerMotionMask|PointerMotionHintMask|Button1MotionMask| Button2MotionMask|Button3MotionMask|Button4MotionMask| Button5MotionMask|ButtonMotionMask, /* MotionNotify */ EnterWindowMask, /* EnterNotify */ LeaveWindowMask, /* LeaveNotify */ FocusChangeMask, /* FocusIn */ FocusChangeMask, /* FocusOut */ KeymapStateMask, /* KeymapNotify */ ExposureMask, /* Expose */ ExposureMask, /* GraphicsExpose */ ExposureMask, /* NoExpose */ VisibilityChangeMask, /* VisibilityNotify */ SubstructureNotifyMask, /* CreateNotify */ StructureNotifyMask|SubstructureNotifyMask, /* DestroyNotify */ StructureNotifyMask|SubstructureNotifyMask, /* UnmapNotify */ StructureNotifyMask|SubstructureNotifyMask, /* MapNotify */ SubstructureRedirectMask, /* MapRequest */ SubstructureNotifyMask|StructureNotifyMask, /* ReparentNotify */ StructureNotifyMask|SubstructureNotifyMask, /* ConfigureNotify */ SubstructureRedirectMask, /* ConfigureRequest */ SubstructureNotifyMask|StructureNotifyMask, /* GravityNotify */ ResizeRedirectMask, /* ResizeRequest */ SubstructureNotifyMask|StructureNotifyMask, /* CirculateNotify */ SubstructureRedirectMask, /* CirculateRequest */ PropertyChangeMask, /* PropertyNotify */ 0, /* SelectionClear */ 0, /* SelectionRequest */ 0, /* SelectionNotify */ ColormapChangeMask, /* ColormapNotify */ 0, /* ClientMessage */ 0, /* MappingNotify */ }; libX11-1.8.12/src/ChGC.c0000644014310600000120000000316614763154126010032 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Cr.h" int XChangeGC ( register Display *dpy, GC gc, unsigned long valuemask, XGCValues *values) { LockDisplay(dpy); valuemask &= (1L << (GCLastBit + 1)) - 1; if (valuemask) _XUpdateGCCache (gc, valuemask, values); /* if any Resource ID changed, must flush */ if (gc->dirty & (GCFont | GCTile | GCStipple)) _XFlushGCCache(dpy, gc); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/LookupCol.c0000644014310600000120000000555314763154126011177 /* Copyright 1985, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "Xlibint.h" #include "Xcmsint.h" Status XLookupColor ( register Display *dpy, Colormap cmap, _Xconst char *spec, XColor *def, XColor *scr) { register size_t n; xLookupColorReply reply; register xLookupColorReq *req; XcmsCCC ccc; XcmsColor cmsColor_exact; if (spec == NULL) return 0; n = strlen (spec); if (n >= USHRT_MAX) return 0; #ifdef XCMS /* * Let's Attempt to use Xcms and i18n approach to Parse Color */ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) { const char *tmpName = spec; switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor_exact, XcmsRGBFormat)) { case XcmsSuccess: case XcmsSuccessWithCompression: _XcmsRGB_to_XColor(&cmsColor_exact, def, 1); memcpy((char *)scr, (char *)def, sizeof(XColor)); _XUnresolveColor(ccc, scr); return(1); case XcmsFailure: case _XCMS_NEWNAME: /* * if the result was _XCMS_NEWNAME tmpName points to * a string in cmsColNm.c:pairs table, for example, * gray70 would become tekhvc:0.0/70.0/0.0 */ break; } } #endif /* * Xcms and i18n methods failed, so lets pass it to the server * for parsing. */ LockDisplay(dpy); GetReq (LookupColor, req); req->cmap = cmap; req->nbytes = n; req->length += (n + 3) >> 2; Data (dpy, spec, (long)n); if (!_XReply (dpy, (xReply *) &reply, 0, xTrue)) { UnlockDisplay(dpy); SyncHandle(); return (0); } def->red = reply.exactRed; def->green = reply.exactGreen; def->blue = reply.exactBlue; scr->red = reply.screenRed; scr->green = reply.screenGreen; scr->blue = reply.screenBlue; UnlockDisplay(dpy); SyncHandle(); return (1); } libX11-1.8.12/src/VisUtil.c0000644014310600000120000001577714763154126010700 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xutil.h" #include #include "reallocarray.h" /* * This procedure returns a list of visual information structures * that match the specified attributes given in the visual information * template. * * If no visuals exist that match the specified attributes, a NULL is * returned. * * The choices for visual_info_mask are: * * VisualNoMask * VisualIDMask * VisualScreenMask * VisualDepthMask * VisualClassMask * VisualRedMaskMask * VisualGreenMaskMask * VisualBlueMaskMask * VisualColormapSizeMask * VisualBitsPerRGBMask * VisualAllMask */ XVisualInfo *XGetVisualInfo( Display *dpy, register long visual_info_mask, register XVisualInfo *visual_info_template, int *nitems) /* RETURN */ { register Visual *vp; register Depth *dp; Screen *sp; int ii,screen_s,screen_e,total,count; register XVisualInfo *vip,*vip_base; /* NOTE: NO HIGH PERFORMING CODE TO BE FOUND HERE */ LockDisplay(dpy); /* ALLOCATE THE ORIGINAL BUFFER; REALLOCED LATER IF OVERFLOW OCCURS; FREED AT END IF NO VISUALS ARE FOUND */ count = 0; total = 10; if (! (vip_base = vip = Xmallocarray(total, sizeof(XVisualInfo)))) { UnlockDisplay(dpy); return (XVisualInfo *) NULL; } /* DETERMINE IF WE DO ALL SCREENS OR ONLY ONE */ screen_s = 0; screen_e = dpy->nscreens; if (visual_info_mask & VisualScreenMask) { screen_s = visual_info_template->screen; if (screen_s < 0 || screen_s >= screen_e) screen_e = screen_s; else screen_e = screen_s + 1; } /* LOOP THROUGH SCREENS */ for (ii=screen_s; iiscreens[ii]); /* LOOP THROUGH DEPTHS */ for (dp=sp->depths; dp < (sp->depths + sp->ndepths); dp++) { if ((visual_info_mask & VisualDepthMask) && (dp->depth != visual_info_template->depth)) continue; /* LOOP THROUGH VISUALS */ if (dp->visuals) { for (vp=dp->visuals; vp<(dp->visuals + dp->nvisuals); vp++) { if ((visual_info_mask & VisualIDMask) && (vp->visualid != visual_info_template->visualid)) continue; if ((visual_info_mask & VisualClassMask) && (vp->class != visual_info_template->class)) continue; if ((visual_info_mask & VisualRedMaskMask) && (vp->red_mask != visual_info_template->red_mask)) continue; if ((visual_info_mask & VisualGreenMaskMask) && (vp->green_mask != visual_info_template->green_mask)) continue; if ((visual_info_mask & VisualBlueMaskMask) && (vp->blue_mask != visual_info_template->blue_mask)) continue; if ((visual_info_mask & VisualColormapSizeMask) && (vp->map_entries != visual_info_template->colormap_size)) continue; if ((visual_info_mask & VisualBitsPerRGBMask) && (vp->bits_per_rgb != visual_info_template->bits_per_rgb)) continue; /* YEA!!! WE FOUND A GOOD ONE */ if (count+1 > total) { XVisualInfo *old_vip_base = vip_base; total += 10; if (! (vip_base = Xreallocarray(vip_base, total, sizeof(XVisualInfo)))) { Xfree(old_vip_base); UnlockDisplay(dpy); return (XVisualInfo *) NULL; } vip = &vip_base[count]; } count++; vip->visual = _XVIDtoVisual(dpy, vp->visualid); vip->visualid = vp->visualid; vip->screen = ii; vip->depth = dp->depth; vip->class = vp->class; vip->red_mask = vp->red_mask; vip->green_mask = vp->green_mask; vip->blue_mask = vp->blue_mask; vip->colormap_size = vp->map_entries; vip->bits_per_rgb = vp->bits_per_rgb; vip++; } /* END OF LOOP ON VISUALS */ } /* END OF IF THERE ARE ANY VISUALS AT THIS DEPTH */ } /* END OF LOOP ON DEPTHS */ } /* END OF LOOP ON SCREENS */ UnlockDisplay(dpy); if (count) { *nitems = count; return vip_base; } Xfree(vip_base); *nitems = 0; return NULL; } /* * This procedure will return the visual information for a visual * that matches the specified depth and class for a screen. Since * multiple visuals may exist that match the specified depth and * class, which visual chosen is undefined. * * If a visual is found, True is returned as the function value, * otherwise False is returned. */ Status XMatchVisualInfo( Display *dpy, int screen, int depth, int class, XVisualInfo *visual_info) /* RETURNED */ { Visual *vp; Depth *dp; Screen *sp; int ii,jj; if (screen < 0 || screen >= dpy->nscreens) return False; LockDisplay(dpy); sp = (Screen *)(&dpy->screens[screen]); dp = sp->depths; for (ii=0; ii < sp->ndepths; ii++) { /* LOOK THROUGH DEPTHS FOR THE WANTED DEPTH */ if (dp->depth == depth) { vp = dp->visuals; /* LOOK THROUGH VISUALS FOR THE WANTED CLASS */ /* if nvisuals == 0 then vp will be NULL */ for (jj=0; jjnvisuals; jj++) { if (vp->class == class) { visual_info->visual = _XVIDtoVisual(dpy, vp->visualid); visual_info->visualid = vp->visualid; visual_info->screen = screen; visual_info->depth = depth; visual_info->class = vp->class; visual_info->red_mask = vp->red_mask; visual_info->green_mask = vp->green_mask; visual_info->blue_mask = vp->blue_mask; visual_info->colormap_size = vp->map_entries; visual_info->bits_per_rgb = vp->bits_per_rgb; UnlockDisplay(dpy); return True; } vp++; } } dp++; } UnlockDisplay(dpy); return False; } libX11-1.8.12/src/CopyPlane.c0000644014310600000120000000356614763154126011164 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XCopyPlane( register Display *dpy, Drawable src_drawable, Drawable dst_drawable, GC gc, int src_x, int src_y, unsigned int width, unsigned int height, int dst_x, int dst_y, unsigned long bit_plane) { register xCopyPlaneReq *req; LockDisplay(dpy); FlushGC(dpy, gc); GetReq(CopyPlane, req); req->srcDrawable = src_drawable; req->dstDrawable = dst_drawable; req->gc = gc->gid; req->srcX = src_x; req->srcY = src_y; req->dstX = dst_x; req->dstY = dst_y; req->width = width; req->height = height; req->bitPlane = bit_plane; UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/GetSOwner.c0000644014310600000120000000303714763154126011140 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" Window XGetSelectionOwner( register Display *dpy, Atom selection) { xGetSelectionOwnerReply rep; register xResourceReq *req; LockDisplay(dpy); GetResReq(GetSelectionOwner, selection, req); if (_XReply(dpy, (xReply *)&rep, 0, xTrue) == 0) rep.owner = None; UnlockDisplay(dpy); SyncHandle(); return(rep.owner); } libX11-1.8.12/src/os2Stubs.c0000644014310600000120000003306314763154126011011 /* * (c) Copyright 1996 by Sebastien Marineau and Holger Veit * * * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * Except as contained in this notice, the name of Sebastien Marineau or Holger Veit * shall not be used in advertising or otherwise to promote the sale, use or other * dealings in this Software without prior written authorization from Holger Veit or * Sebastien Marineau. * */ /* A few OS/2 functions needed in the X11 lib. Mainly, the file path redirection * functions and the "optimized" select() for the clients */ #define I_NEED_OS2_H #ifdef HAVE_CONFIG_H #include #endif #include #include #include #define INCL_DOSSEMAPHORES #define INCL_DOSNPIPES #define INCL_DOSMISC #define INCL_DOSMODULEMGR #undef BOOL #undef BYTE #include #include #include char *__XOS2RedirRoot(char *fname) { /* This adds a further redirection by allowing the ProjectRoot * to be prepended by the content of the envvar X11ROOT. * This is for the purpose to move the whole X11 stuff to a different * disk drive. * The feature was added despite various environment variables * because not all file opens respect them. */ static char redirname[300]; /* enough for long filenames */ char *root; /* if name does not start with /, assume it is not root-based */ if (fname==0 || !(fname[0]=='/' || fname[0]=='\\')) return fname; root = (char*)getenv("X11ROOT"); if (root==0 || (fname[1]==':' && isalpha(fname[0])) || (strlen(fname)+strlen(root)+2) > 300) return fname; sprintf(redirname,"%s%s",root,fname); return redirname; } char *__XOS2RedirRoot1(char *format, char *arg1, char *arg2, char *arg3) { /* this first constructs a name from a format and up to three * components, then adds a path */ char buf[300]; sprintf(buf,format,arg1,arg2,arg3); return __XOS2RedirRoot(buf); } /* This below implements select() for the calls in this file. It has been */ /* somewhat optimized for improved performance, but assumes a few */ /* things so it cannot be used as a general select. If both pipes and */ /* sockets are present, this may call the emx select */ HEV hPipeSem; HMODULE hmod_so32dll; static int (*os2_tcp_select)(int*,int,int,int,long); ULONG os2_get_sys_millis(); extern int _files[]; #define MAX_TCP 256 /* These lifted from sys/emx.h. Change if that changes there! */ #define F_SOCKET 0x10000000 #define F_PIPE 0x20000000 struct select_data { fd_set read_copy; fd_set write_copy; BOOL have_read; BOOL have_write; int tcp_select_mask[MAX_TCP]; int tcp_emx_handles[MAX_TCP]; int tcp_select_copy[MAX_TCP]; int socket_nread; int socket_nwrite; int socket_ntotal; int pipe_ntotal; int pipe_have_write; int max_fds; }; int os2ClientSelect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { static BOOL FirstTime=TRUE; static haveTCPIP=TRUE; ULONG timeout_ms; ULONG postCount, start_millis,now_millis; char faildata[16]; struct select_data sd; BOOL any_ready; int np,ns, i,ready_handles,n; APIRET rc; sd.have_read=FALSE; sd.have_write=FALSE; sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0; sd.max_fds=31; ready_handles=0; any_ready=FALSE; sd.pipe_ntotal=0; sd.pipe_have_write=FALSE; if(FirstTime){ /* First load the so32dll.dll module and get a pointer to the SELECT fn */ if((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0){ fprintf(stderr, "Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata); haveTCPIP=FALSE; } if((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0){ fprintf(stderr, "Could not query address of SELECT, rc = %d.\n",rc); haveTCPIP=FALSE; } /* Call these a first time to set the semaphore */ rc = DosCreateEventSem(NULL, &hPipeSem, DC_SEM_SHARED, FALSE); if(rc) { fprintf(stderr, "Could not create event semaphore, rc=%d\n",rc); return(-1); } rc = DosResetEventSem(hPipeSem, &postCount); FirstTime = FALSE; } /* Set up the time delay structs */ if(timeout!=NULL) { timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000; } else { timeout_ms=1000000; } /* This should be large enough... */ if(timeout_ms>0) start_millis=os2_get_sys_millis(); /* Copy the masks */ {FD_ZERO(&sd.read_copy);} {FD_ZERO(&sd.write_copy);} if(readfds!=NULL){ XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE;} if(writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy);sd.have_write=TRUE;} /* And zero the original masks */ if(sd.have_read){ FD_ZERO(readfds);} if(sd.have_write) {FD_ZERO(writefds);} if(exceptfds != NULL) {FD_ZERO(exceptfds);} /* Now we parse the fd_sets passed to select and separate pipe/sockets */ n = os2_parse_select(&sd,nfds); if(n == -1) { errno = EBADF; return (-1); } /* Now we have three cases: either we have sockets, pipes, or both */ /* We handle all three cases differently to optimize things */ /* Case 1: only pipes! */ if((sd.pipe_ntotal >0) && (!sd.socket_ntotal)){ np = os2_check_pipes(&sd,readfds,writefds); if(np > 0){ return (np); } else if (np == -1) { return(-1); } while(!any_ready){ rc = DosWaitEventSem(hPipeSem, timeout_ms); if(rc == 640) { return(0); } if((rc != 0) && (rc != 95)) {errno= EBADF; return(-1);} np = os2_check_pipes(&sd,readfds,writefds); if (np > 0){ return(np); } else if (np < 0){ return(-1); } } } /* Case 2: only sockets. Just let the os/2 tcp select do the work */ if((sd.socket_ntotal > 0) && (!sd.pipe_ntotal)){ ns = os2_check_sockets(&sd, readfds, writefds, timeout_ms); return (ns); } /* Case 3: combination of both */ if((sd.socket_ntotal > 0) && (sd.pipe_ntotal)){ np = os2_check_pipes(&sd,readfds,writefds); if(np > 0){ any_ready=TRUE; ready_handles += np; } else if (np == -1) { return(-1); } ns = os2_check_sockets(&sd,readfds,writefds, 0); if(ns>0){ ready_handles+=ns; any_ready = TRUE; } else if (ns == -1) {return(-1);} while (!any_ready && timeout_ms){ rc = DosWaitEventSem(hPipeSem, 10L); if(rc == 0){ np = os2_check_pipes(&sd,readfds,writefds); if(np > 0){ ready_handles+=np; any_ready = TRUE; } else if (np == -1) { return(-1); } } ns = os2_check_sockets(&sd,readfds,writefds,exceptfds, 0); if(ns>0){ ready_handles+=ns; any_ready = TRUE; } else if (ns == -1) {return(-1);} if (i%8 == 0) { now_millis = os2_get_sys_millis(); if((now_millis-start_millis) > timeout_ms) timeout_ms = 0; } i++; } } return(ready_handles); } ULONG os2_get_sys_millis() { APIRET rc; ULONG milli; rc = DosQuerySysInfo(14, 14, &milli, sizeof(milli)); if(rc) { fprintf(stderr,"Bad return code querying the millisecond counter! rc=%d\n",rc); return(0); } return(milli); } int os2_parse_select(sd,nfds) struct select_data *sd; int nfds; { int i; APIRET rc; /* First we determine up to which descriptor we need to check. */ /* No need to check up to 256 if we don't have to (and usually we don't...)*/ /* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX!!! */ if(nfds > sd->max_fds){ for(i=0;i<((FD_SETSIZE+31)/32);i++){ if(sd->read_copy.fds_bits[i] || sd->write_copy.fds_bits[i]) sd->max_fds=(i*32) +32; } } else { sd->max_fds = nfds; } /* Check if result is greater than specified in select() call */ if(sd->max_fds > nfds) sd->max_fds = nfds; if (sd->have_read) { for (i = 0; i < sd->max_fds; ++i) { if (FD_ISSET (i, &sd->read_copy)){ if(_files[i] & F_SOCKET) { sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i); sd->tcp_emx_handles[sd->socket_ntotal]=i; sd->socket_ntotal++; sd->socket_nread++; } else if (_files[i] & F_PIPE) { sd -> pipe_ntotal++; rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i); if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;} } } } } if (sd->have_write) { for (i = 0; i < sd->max_fds; ++i) { if (FD_ISSET (i, &sd->write_copy)){ if(_files[i] & F_SOCKET) { sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i); sd->tcp_emx_handles[sd->socket_ntotal]=i; sd->socket_ntotal++; sd->socket_nwrite++; } else if (_files[i] & F_PIPE) { sd -> pipe_ntotal++; rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i); if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;} sd -> pipe_have_write=TRUE; } } } } return(sd->socket_ntotal); } int os2_check_sockets(sd,readfds,writefds) struct select_data *sd; fd_set *readfds,*writefds; { int e,i; int j,n; memcpy(sd->tcp_select_copy,sd->tcp_select_mask, sd->socket_ntotal*sizeof(int)); e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread, sd->socket_nwrite, 0, 0); if(e == 0) return(e); /* We have something ready? */ if(e>0){ j = 0; n = 0; for (i = 0; i < sd->socket_nread; ++i, ++j) if (sd->tcp_select_copy[j] != -1) { FD_SET (sd->tcp_emx_handles[j], readfds); n ++; } for (i = 0; i < sd->socket_nwrite; ++i, ++j) if (sd->tcp_select_copy[j] != -1) { FD_SET (sd->tcp_emx_handles[j], writefds); n ++; } errno = 0; return n; } if(e<0){ /*Error -- TODO */ fprintf(stderr,"Error in server select! e=%d\n",e); errno = EBADF; return (-1); } } /* Check to see if anything is ready on pipes */ int os2_check_pipes(sd,readfds,writefds) struct select_data *sd; fd_set *readfds,*writefds; { int i,e; ULONG ulPostCount; PIPESEMSTATE pipeSemState[128]; APIRET rc; e = 0; rc = DosResetEventSem(hPipeSem,&ulPostCount); rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState, sizeof(pipeSemState)); if(rc) fprintf(stderr,"SELECT: rc from QueryNPipeSem: %d\n",rc); i=0; while (pipeSemState[i].fStatus != 0) { /*fprintf(stderr,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n", pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey, pipeSemState[i].usAvail); */ if((pipeSemState[i].fStatus == 1) && (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))){ FD_SET(pipeSemState[i].usKey,readfds); e++; } else if((pipeSemState[i].fStatus == 2) && (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))){ FD_SET(pipeSemState[i].usKey,writefds); e++; } else if( (pipeSemState[i].fStatus == 3) && ( (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) || (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )){ errno = EBADF; return (-1); } i++; } /* endwhile */ /*fprintf(stderr,"Done listing pipe sem entries, total %d entries, total ready entries %d\n",i,e);*/ errno = 0; return(e); } libX11-1.8.12/src/Pending.c0000644014310600000120000000337114763154126010650 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" /* Read in pending events if needed and return the number of queued events. */ int XEventsQueued ( register Display *dpy, int mode) { int ret_val; LockDisplay(dpy); if (dpy->qlen || (mode == QueuedAlready)) ret_val = dpy->qlen; else ret_val = _XEventsQueued (dpy, mode); UnlockDisplay(dpy); return ret_val; } int XPending (register Display *dpy) { int ret_val; LockDisplay(dpy); if (dpy->qlen) ret_val = dpy->qlen; else ret_val = _XEventsQueued (dpy, QueuedAfterFlush); UnlockDisplay(dpy); return ret_val; } libX11-1.8.12/src/RaiseWin.c0000644014310600000120000000311714763154126011003 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XRaiseWindow ( register Display *dpy, Window w) { register xConfigureWindowReq *req; unsigned long val = Above; /* needed for macro below */ LockDisplay(dpy); GetReqExtra(ConfigureWindow, 4, req); req->window = w; req->mask = CWStackMode; OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/MapRaised.c0000644014310600000120000000321414763154126011125 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XMapRaised ( register Display *dpy, Window w) { register xConfigureWindowReq *req; register xResourceReq *req2; unsigned long val = Above; /* needed for macro */ LockDisplay(dpy); GetReqExtra(ConfigureWindow, 4, req); req->window = w; req->mask = CWStackMode; OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val); GetResReq (MapWindow, w, req2); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/OCWrap.c0000644014310600000120000000577114763154126010425 /* * Copyright 1992, 1993 by TOSHIBA Corp. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of TOSHIBA not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. TOSHIBA make no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * * Author: Katsuhisa Yano TOSHIBA Corp. * mopi@osa.ilab.toshiba.co.jp */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xlcint.h" XOC XCreateOC(XOM om, ...) { va_list var; XlcArgList args; XOC oc; int num_args; va_start(var, om); _XlcCountVaList(var, &num_args); va_end(var); va_start(var, om); _XlcVaToArgList(var, num_args, &args); va_end(var); if (args == (XlcArgList) NULL) return (XOC) NULL; oc = (*om->methods->create_oc)(om, args, num_args); Xfree(args); if (oc) { oc->core.next = om->core.oc_list; om->core.oc_list = oc; } return oc; } void XDestroyOC(XOC oc) { XOC prev, oc_list; prev = oc_list = oc->core.om->core.oc_list; if (oc_list == oc) oc->core.om->core.oc_list = oc_list->core.next; else { while ((oc_list = oc_list->core.next)) { if (oc_list == oc) { prev->core.next = oc_list->core.next; break; } prev = oc_list; } } (*oc->methods->destroy)(oc); } XOM XOMOfOC(XOC oc) { return oc->core.om; } char * XSetOCValues(XOC oc, ...) { va_list var; XlcArgList args; char *ret; int num_args; va_start(var, oc); _XlcCountVaList(var, &num_args); va_end(var); va_start(var, oc); _XlcVaToArgList(var, num_args, &args); va_end(var); if (args == (XlcArgList) NULL) return (char *) NULL; ret = (*oc->methods->set_values)(oc, args, num_args); Xfree(args); return ret; } char * XGetOCValues(XOC oc, ...) { va_list var; XlcArgList args; char *ret; int num_args; va_start(var, oc); _XlcCountVaList(var, &num_args); va_end(var); va_start(var, oc); _XlcVaToArgList(var, num_args, &args); va_end(var); if (args == (XlcArgList) NULL) return (char *) NULL; ret = (*oc->methods->get_values)(oc, args, num_args); Xfree(args); return ret; } libX11-1.8.12/src/Window.c0000644014310600000120000000766014763154126010540 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" void _XProcessWindowAttributes ( Display *dpy, xChangeWindowAttributesReq *req, unsigned long valuemask, XSetWindowAttributes *attributes) { unsigned long values[32]; register unsigned long *value = values; unsigned int nvalues; if (valuemask & CWBackPixmap) *value++ = attributes->background_pixmap; if (valuemask & CWBackPixel) *value++ = attributes->background_pixel; if (valuemask & CWBorderPixmap) *value++ = attributes->border_pixmap; if (valuemask & CWBorderPixel) *value++ = attributes->border_pixel; if (valuemask & CWBitGravity) *value++ = attributes->bit_gravity; if (valuemask & CWWinGravity) *value++ = attributes->win_gravity; if (valuemask & CWBackingStore) *value++ = attributes->backing_store; if (valuemask & CWBackingPlanes) *value++ = attributes->backing_planes; if (valuemask & CWBackingPixel) *value++ = attributes->backing_pixel; if (valuemask & CWOverrideRedirect) *value++ = attributes->override_redirect; if (valuemask & CWSaveUnder) *value++ = attributes->save_under; if (valuemask & CWEventMask) *value++ = attributes->event_mask; if (valuemask & CWDontPropagate) *value++ = attributes->do_not_propagate_mask; if (valuemask & CWColormap) *value++ = attributes->colormap; if (valuemask & CWCursor) *value++ = attributes->cursor; req->length += (nvalues = value - values); nvalues <<= 2; /* watch out for macros... */ Data32 (dpy, (long *) values, (long)nvalues); } #define AllMaskBits (CWBackPixmap|CWBackPixel|CWBorderPixmap|\ CWBorderPixel|CWBitGravity|CWWinGravity|\ CWBackingStore|CWBackingPlanes|CWBackingPixel|\ CWOverrideRedirect|CWSaveUnder|CWEventMask|\ CWDontPropagate|CWColormap|CWCursor) Window XCreateWindow( register Display *dpy, Window parent, int x, int y, unsigned int width, unsigned int height, unsigned int borderWidth, int depth, unsigned int class, Visual *visual, unsigned long valuemask, XSetWindowAttributes *attributes) { Window wid; register xCreateWindowReq *req; LockDisplay(dpy); GetReq(CreateWindow, req); req->parent = parent; req->x = x; req->y = y; req->width = width; req->height = height; req->borderWidth = borderWidth; req->depth = depth; req->class = class; if (visual == CopyFromParent) req->visual = CopyFromParent; else req->visual = visual->visualid; wid = req->wid = XAllocID(dpy); valuemask &= AllMaskBits; if ((req->mask = valuemask)) _XProcessWindowAttributes (dpy, (xChangeWindowAttributesReq *)req, valuemask, attributes); UnlockDisplay(dpy); SyncHandle(); return (wid); } libX11-1.8.12/src/config.h.in0000644014310600000120000002111614763154146011142 /* src/config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if `struct sockaddr_in' has a `sin_len' member */ #undef BSD44SOCKETS /* Include compose table cache support */ #undef COMPOSECACHE /* Has getresuid() & getresgid() functions */ #undef HASGETRESUID /* Has issetugid() function */ #undef HASSETUGID /* Has shm*() functions */ #undef HAS_SHM /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Use dlopen to load shared libraries */ #undef HAVE_DLOPEN /* Define to 1 if you have the 'getaddrinfo' function. */ #undef HAVE_GETADDRINFO /* Define to 1 if you have the 'getpagesize' function. */ #undef HAVE_GETPAGESIZE /* Define to 1 if you have the 'inet_ntop' function. */ #undef HAVE_INET_NTOP /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* launchd support available */ #undef HAVE_LAUNCHD /* Define to 1 if you have the 'ws2_32' library (-lws2_32). */ #undef HAVE_LIBWS2_32 /* Define to 1 if you have the header file. */ #undef HAVE_MINIX_CONFIG_H /* Define to 1 if you have a working 'mmap' system call. */ #undef HAVE_MMAP /* Define to 1 if you have the 'reallocarray' function. */ #undef HAVE_REALLOCARRAY /* Define to 1 if you have the 'seteuid' function. */ #undef HAVE_SETEUID /* Define to 1 if the system has the type 'socklen_t'. */ #undef HAVE_SOCKLEN_T /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the 'strcasecmp' function. */ #undef HAVE_STRCASECMP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the 'strlcpy' function. */ #undef HAVE_STRLCPY /* Define to 1 if you have the 'strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if the system has the type 'struct sockaddr_storage'. */ #undef HAVE_STRUCT_SOCKADDR_STORAGE /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILIO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H /* Define to 1 if the system has the `__builtin_popcountl' built-in function */ #undef HAVE___BUILTIN_POPCOUNTL /* Support IPv6 for TCP connections */ #undef IPv6 /* Support os-specific local connections */ #undef LOCALCONN /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Disable XLOCALEDIR environment variable */ #undef NO_XLOCALEDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Major version of this package */ #undef PACKAGE_VERSION_MAJOR /* Minor version of this package */ #undef PACKAGE_VERSION_MINOR /* Patch version of this package */ #undef PACKAGE_VERSION_PATCHLEVEL /* Define to 1 if all of the C89 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Support TCP socket connections */ #undef TCPCONN /* launchd support available */ #undef TRANS_REOPEN /* Support UNIX socket connections */ #undef UNIXCONN /* Split some i18n functions into loadable modules */ #undef USE_DYNAMIC_LC /* Use the X cursor library to load cursors */ #undef USE_DYNAMIC_XCURSOR /* poll() function is available */ #undef USE_POLL /* Enable extensions on AIX, Interix, z/OS. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable general extensions on macOS. */ #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable X/Open compliant socket functions that do not require linking with -lxnet on HP-UX 11.11. */ #ifndef _HPUX_ALT_XOPEN_SOCKET_API # undef _HPUX_ALT_XOPEN_SOCKET_API #endif /* Identify the host operating system as Minix. This macro does not affect the system headers' behavior. A future release of Autoconf may stop defining this macro. */ #ifndef _MINIX # undef _MINIX #endif /* Enable general extensions on NetBSD. Enable NetBSD compatibility extensions on Minix. */ #ifndef _NETBSD_SOURCE # undef _NETBSD_SOURCE #endif /* Enable OpenBSD compatibility extensions on NetBSD. Oddly enough, this does nothing on OpenBSD. */ #ifndef _OPENBSD_SOURCE # undef _OPENBSD_SOURCE #endif /* Define to 1 if needed for POSIX-compatible behavior. */ #ifndef _POSIX_SOURCE # undef _POSIX_SOURCE #endif /* Define to 2 if needed for POSIX-compatible behavior. */ #ifndef _POSIX_1_SOURCE # undef _POSIX_1_SOURCE #endif /* Enable POSIX-compatible threading on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ #ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ # undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ #ifndef __STDC_WANT_IEC_60559_BFP_EXT__ # undef __STDC_WANT_IEC_60559_BFP_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif /* Enable extensions specified by C23 Annex F. */ #ifndef __STDC_WANT_IEC_60559_EXT__ # undef __STDC_WANT_IEC_60559_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ # undef __STDC_WANT_IEC_60559_FUNCS_EXT__ #endif /* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # undef __STDC_WANT_IEC_60559_TYPES_EXT__ #endif /* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ #ifndef __STDC_WANT_LIB_EXT2__ # undef __STDC_WANT_LIB_EXT2__ #endif /* Enable extensions specified by ISO/IEC 24747:2009. */ #ifndef __STDC_WANT_MATH_SPEC_FUNCS__ # undef __STDC_WANT_MATH_SPEC_FUNCS__ #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable X/Open extensions. Define to 500 only if necessary to make mbstate_t available. */ #ifndef _XOPEN_SOURCE # undef _XOPEN_SOURCE #endif /* Call XInitThreads() from the library constructor */ #undef USE_THREAD_SAFETY_CONSTRUCTOR /* Version number of package */ #undef VERSION /* Location of libX11 data */ #undef X11_DATADIR /* Location of libX11 library data */ #undef X11_LIBDIR /* Include support for XCMS */ #undef XCMS /* Location of error message database */ #undef XERRORDB /* Enable XF86BIGFONT extension */ #undef XF86BIGFONT /* Use XKB */ #undef XKB /* Location of keysym database */ #undef XKEYSYMDB /* support for X Locales */ #undef XLOCALE /* Location of libX11 locale data */ #undef XLOCALEDATADIR /* Location of libX11 locale data */ #undef XLOCALEDIR /* Location of libX11 locale libraries */ #undef XLOCALELIBDIR /* Whether libX11 is compiled with thread support */ #undef XTHREADS /* Whether libX11 needs to use MT safe API's */ #undef XUSE_MTSAFE_API /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define to 1 on platforms where this makes off_t a 64-bit type. */ #undef _LARGE_FILES /* Number of bits in time_t, on hosts where this is settable. */ #undef _TIME_BITS /* Defined if needed to expose struct msghdr.msg_control */ #undef _XOPEN_SOURCE /* Define to 1 on platforms where this makes time_t a 64-bit type. */ #undef __MINGW_USE_VC2005_COMPAT libX11-1.8.12/src/DestSubs.c0000644014310600000120000000264214763154126011020 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XDestroySubwindows( register Display *dpy, Window win) { register xResourceReq *req; LockDisplay(dpy); GetResReq (DestroySubwindows,win, req); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/UnmapWin.c0000644014310600000120000000262714763154126011025 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XUnmapWindow ( register Display *dpy, Window w) { register xResourceReq *req; LockDisplay(dpy); GetResReq(UnmapWindow, w, req); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/GetNrmHint.c0000644014310600000120000001076514763154126011310 /*********************************************************** Copyright 1988 by Wyse Technology, Inc., San Jose, Ca, Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL OR WYSE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ /* Copyright 1987, 1988, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "Xatomtype.h" #include #include Status XGetWMSizeHints ( Display *dpy, Window w, XSizeHints *hints, long *supplied, Atom property) { xPropSizeHints *prop = NULL; Atom actual_type; int actual_format; unsigned long leftover; unsigned long nitems; if (XGetWindowProperty (dpy, w, property, 0L, (long)NumPropSizeElements, False, XA_WM_SIZE_HINTS, &actual_type, &actual_format, &nitems, &leftover, (unsigned char **)&prop) != Success) return False; if ((actual_type != XA_WM_SIZE_HINTS) || (nitems < OldNumPropSizeElements) || (actual_format != 32)) { Xfree (prop); return False; } hints->flags = prop->flags; /* XSizeHints misdeclares these as int instead of long */ hints->x = cvtINT32toInt (prop->x); hints->y = cvtINT32toInt (prop->y); hints->width = cvtINT32toInt (prop->width); hints->height = cvtINT32toInt (prop->height); hints->min_width = cvtINT32toInt (prop->minWidth); hints->min_height = cvtINT32toInt (prop->minHeight); hints->max_width = cvtINT32toInt (prop->maxWidth); hints->max_height = cvtINT32toInt (prop->maxHeight); hints->width_inc = cvtINT32toInt (prop->widthInc); hints->height_inc = cvtINT32toInt (prop->heightInc); hints->min_aspect.x = cvtINT32toInt (prop->minAspectX); hints->min_aspect.y = cvtINT32toInt (prop->minAspectY); hints->max_aspect.x = cvtINT32toInt (prop->maxAspectX); hints->max_aspect.y = cvtINT32toInt (prop->maxAspectY); *supplied = (USPosition | USSize | PAllHints); if (nitems >= NumPropSizeElements) { hints->base_width= cvtINT32toInt (prop->baseWidth); hints->base_height= cvtINT32toInt (prop->baseHeight); hints->win_gravity= cvtINT32toInt (prop->winGravity); *supplied |= (PBaseSize | PWinGravity); } hints->flags &= (*supplied); /* get rid of unwanted bits */ Xfree(prop); return True; } Status XGetWMNormalHints ( Display *dpy, Window w, XSizeHints *hints, long *supplied) { return (XGetWMSizeHints (dpy, w, hints, supplied, XA_WM_NORMAL_HINTS)); } libX11-1.8.12/src/xcb_io.c0000644014310600000120000006063514763154126010535 /* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett * This file is licensed under the MIT license. See the file COPYING. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "locking.h" #include "Xprivate.h" #include "Xxcbint.h" #include #include #ifdef HAVE_INTTYPES_H #include #endif #include #include #include #include #include #ifdef HAVE_SYS_SELECT_H #include #endif #define xcb_fail_assert(_message, _var) do { \ unsigned int _var = 1; \ fprintf(stderr, "[xcb] Aborting, sorry about that.\n"); \ assert(!_var); \ } while (0) #define throw_thread_fail_assert(_message, _var) do { \ fprintf(stderr, "[xcb] " _message "\n"); \ if (_Xglobal_lock) { \ fprintf(stderr, "[xcb] You called XInitThreads, this is not your fault\n"); \ } else { \ fprintf(stderr, "[xcb] Most likely this is a multi-threaded client " \ "and XInitThreads has not been called\n"); \ } \ xcb_fail_assert(_message, _var); \ } while (0) /* XXX: It would probably be most useful if we stored the last-processed * request, so we could find the offender from the message. */ #define throw_extlib_fail_assert(_message, _var) do { \ fprintf(stderr, "[xcb] " _message "\n"); \ fprintf(stderr, "[xcb] This is most likely caused by a broken X " \ "extension library\n"); \ xcb_fail_assert(_message, _var); \ } while (0) static void return_socket(void *closure) { Display *dpy = closure; InternalLockDisplay(dpy, /* don't skip user locks */ 0); _XSend(dpy, NULL, 0); dpy->bufmax = dpy->buffer; UnlockDisplay(dpy); } static Bool require_socket(Display *dpy) { if(dpy->bufmax == dpy->buffer) { uint64_t sent; int flags = 0; /* if we don't own the event queue, we have to ask XCB * to set our errors aside for us. */ if(dpy->xcb->event_owner != XlibOwnsEventQueue) flags = XCB_REQUEST_CHECKED; if(!xcb_take_socket(dpy->xcb->connection, return_socket, dpy, flags, &sent)) { _XIOError(dpy); return False; } dpy->xcb->last_flushed = sent; X_DPY_SET_REQUEST(dpy, sent); dpy->bufmax = dpy->xcb->real_bufmax; } return True; } /* Call internal connection callbacks for any fds that are currently * ready to read. This function will not block unless one of the * callbacks blocks. * * This code borrowed from _XWaitForReadable. Inverse call tree: * _XRead * _XWaitForWritable * _XFlush * _XSend * _XEventsQueued * _XReadEvents * _XRead[0-9]+ * _XAllocIDs * _XReply * _XEatData * _XReadPad */ static Bool check_internal_connections(Display *dpy) { struct _XConnectionInfo *ilist; fd_set r_mask; struct timeval tv; int result; int highest_fd = -1; if(dpy->flags & XlibDisplayProcConni || !dpy->im_fd_info) return True; FD_ZERO(&r_mask); for(ilist = dpy->im_fd_info; ilist; ilist = ilist->next) { assert(ilist->fd >= 0); FD_SET(ilist->fd, &r_mask); if(ilist->fd > highest_fd) highest_fd = ilist->fd; } assert(highest_fd >= 0); tv.tv_sec = 0; tv.tv_usec = 0; result = select(highest_fd + 1, &r_mask, NULL, NULL, &tv); if(result == -1) { if(errno != EINTR) { _XIOError(dpy); return False; } return True; } for(ilist = dpy->im_fd_info; result && ilist; ilist = ilist->next) if(FD_ISSET(ilist->fd, &r_mask)) { _XProcessInternalConnection(dpy, ilist); --result; } return True; } static PendingRequest *append_pending_request(Display *dpy, uint64_t sequence) { PendingRequest *node = malloc(sizeof(PendingRequest)); assert(node); node->next = NULL; node->sequence = sequence; node->reply_waiter = 0; if(dpy->xcb->pending_requests_tail) { if (XLIB_SEQUENCE_COMPARE(dpy->xcb->pending_requests_tail->sequence, >=, node->sequence)) throw_thread_fail_assert("Unknown sequence number " "while appending request", xcb_xlib_unknown_seq_number); if (dpy->xcb->pending_requests_tail->next != NULL) throw_thread_fail_assert("Unknown request in queue " "while appending request", xcb_xlib_unknown_req_pending); dpy->xcb->pending_requests_tail->next = node; } else dpy->xcb->pending_requests = node; dpy->xcb->pending_requests_tail = node; return node; } static void dequeue_pending_request(Display *dpy, PendingRequest *req) { if (req != dpy->xcb->pending_requests) throw_thread_fail_assert("Unknown request in queue while " "dequeuing", xcb_xlib_unknown_req_in_deq); dpy->xcb->pending_requests = req->next; if(!dpy->xcb->pending_requests) { if (req != dpy->xcb->pending_requests_tail) throw_thread_fail_assert("Unknown request in queue " "while dequeuing", xcb_xlib_unknown_req_in_deq); dpy->xcb->pending_requests_tail = NULL; } else if (XLIB_SEQUENCE_COMPARE(req->sequence, >=, dpy->xcb->pending_requests->sequence)) throw_thread_fail_assert("Unknown sequence number while " "dequeuing request", xcb_xlib_threads_sequence_lost); free(req); } static int handle_error(Display *dpy, xError *err, Bool in_XReply) { _XExtension *ext; int ret_code; /* Oddly, Xlib only allows extensions to suppress errors when * those errors were seen by _XReply. */ if(in_XReply) /* * we better see if there is an extension who may * want to suppress the error. */ for(ext = dpy->ext_procs; ext; ext = ext->next) if(ext->error && (*ext->error)(dpy, err, &ext->codes, &ret_code)) return ret_code; _XError(dpy, err); return 0; } /* Widen a 32-bit sequence number into a 64bit (uint64_t) sequence number. * Treating the comparison as a 1 and shifting it avoids a conditional branch. */ static void widen(uint64_t *wide, unsigned int narrow) { uint64_t new = (*wide & ~((uint64_t)0xFFFFFFFFUL)) | narrow; /* If just copying the upper dword of *wide makes the number * go down by more than 2^31, then it means that the lower * dword has wrapped (or we have skipped 2^31 requests, which * is hopefully improbable), so we add a carry. */ uint64_t wraps = new + (1UL << 31) < *wide; *wide = new + (wraps << 32); } /* Thread-safety rules: * * At most one thread can be reading from XCB's event queue at a time. * If you are not the current event-reading thread and you need to find * out if an event is available, you must wait. * * The same rule applies for reading replies. * * A single thread cannot be both the the event-reading and the * reply-reading thread at the same time. * * We always look at both the current event and the first pending reply * to decide which to process next. * * We always process all responses in sequence-number order, which may * mean waiting for another thread (either the event_waiter or the * reply_waiter) to handle an earlier response before we can process or * return a later one. If so, we wait on the corresponding condition * variable for that thread to process the response and wake us up. */ static xcb_generic_reply_t *poll_for_event(Display *dpy, Bool queued_only) { /* Make sure the Display's sequence numbers are valid */ if (!require_socket(dpy)) return NULL; /* Precondition: This thread can safely get events from XCB. */ assert(dpy->xcb->event_owner == XlibOwnsEventQueue && !dpy->xcb->event_waiter); if(!dpy->xcb->next_event) { if(queued_only) dpy->xcb->next_event = xcb_poll_for_queued_event(dpy->xcb->connection); else dpy->xcb->next_event = xcb_poll_for_event(dpy->xcb->connection); } if(dpy->xcb->next_event) { PendingRequest *req = dpy->xcb->pending_requests; xcb_generic_event_t *event = dpy->xcb->next_event; uint64_t event_sequence = X_DPY_GET_LAST_REQUEST_READ(dpy); widen(&event_sequence, event->full_sequence); if(!req || XLIB_SEQUENCE_COMPARE(event_sequence, <, req->sequence) || (event->response_type != X_Error && event_sequence == req->sequence)) { uint64_t request = X_DPY_GET_REQUEST(dpy); if (XLIB_SEQUENCE_COMPARE(event_sequence, >, request)) { throw_thread_fail_assert("Unknown sequence " "number while " "processing queue", xcb_xlib_threads_sequence_lost); } X_DPY_SET_LAST_REQUEST_READ(dpy, event_sequence); dpy->xcb->next_event = NULL; return (xcb_generic_reply_t *) event; } } return NULL; } static xcb_generic_reply_t *poll_for_response(Display *dpy) { void *response; xcb_generic_reply_t *event; PendingRequest *req; while(1) { xcb_generic_error_t *error = NULL; uint64_t request; Bool poll_queued_only = dpy->xcb->next_response != NULL; /* Step 1: is there an event in our queue before the next * reply/error? Return that first. * * If we don't have a reply/error saved from an earlier * invocation we check incoming events too, otherwise only * the ones already queued. */ response = poll_for_event(dpy, poll_queued_only); if(response) break; /* Step 2: * Response is NULL, i.e. we have no events. * If we are not waiting for a reply or some other thread * had dibs on the next reply, exit. */ req = dpy->xcb->pending_requests; if(!req || req->reply_waiter) break; /* Step 3: * We have some response (error or reply) related to req * saved from an earlier invocation of this function. Let's * use that one. */ if(dpy->xcb->next_response) { if (((xcb_generic_reply_t*)dpy->xcb->next_response)->response_type == X_Error) { error = dpy->xcb->next_response; response = NULL; } else { response = dpy->xcb->next_response; error = NULL; } dpy->xcb->next_response = NULL; } else { /* Step 4: pull down the next response from the wire. This * should be the 99% case. * xcb_poll_for_reply64() may also pull down events that * happened before the reply. */ if(!xcb_poll_for_reply64(dpy->xcb->connection, req->sequence, &response, &error)) { /* if there is no reply/error, xcb_poll_for_reply64 * may have read events. Return that. */ response = poll_for_event(dpy, True); break; } /* Step 5: we have a new response, but we may also have some * events that happened before that response. Return those * first and save our reply/error for the next invocation. */ event = poll_for_event(dpy, True); if(event) { dpy->xcb->next_response = error ? error : response; response = event; break; } } /* Step 6: actually handle the reply/error now... */ request = X_DPY_GET_REQUEST(dpy); if(XLIB_SEQUENCE_COMPARE(req->sequence, >, request)) { throw_thread_fail_assert("Unknown sequence number " "while awaiting reply", xcb_xlib_threads_sequence_lost); } X_DPY_SET_LAST_REQUEST_READ(dpy, req->sequence); if(response) break; dequeue_pending_request(dpy, req); if(error) return (xcb_generic_reply_t *) error; } return response; } static void handle_response(Display *dpy, xcb_generic_reply_t *response, Bool in_XReply) { _XAsyncHandler *async, *next; switch(response->response_type) { case X_Reply: for(async = dpy->async_handlers; async; async = next) { next = async->next; if(async->handler(dpy, (xReply *) response, (char *) response, sizeof(xReply) + (response->length << 2), async->data)) break; } break; case X_Error: handle_error(dpy, (xError *) response, in_XReply); break; default: /* event */ /* GenericEvents may be > 32 bytes. In this case, the * event struct is trailed by the additional bytes. the * xcb_generic_event_t struct uses 4 bytes for internal * numbering, so we need to shift the trailing data to * be after the first 32 bytes. */ if(response->response_type == GenericEvent && ((xcb_ge_event_t *) response)->length) { xcb_ge_event_t *event = (xcb_ge_event_t *) response; memmove(&event->full_sequence, &event[1], event->length * 4); } _XEnq(dpy, (xEvent *) response); break; } free(response); } int _XEventsQueued(Display *dpy, int mode) { xcb_generic_reply_t *response; if(dpy->flags & XlibDisplayIOError) return 0; if(dpy->xcb->event_owner != XlibOwnsEventQueue) return 0; if(mode == QueuedAfterFlush) _XSend(dpy, NULL, 0); else if (!check_internal_connections(dpy)) return 0; /* If another thread is blocked waiting for events, then we must * let that thread pick up the next event. Since it blocked, we * can reasonably claim there are no new events right now. */ if(!dpy->xcb->event_waiter) { while((response = poll_for_response(dpy))) handle_response(dpy, response, False); if(xcb_connection_has_error(dpy->xcb->connection)) { _XIOError(dpy); return 0; } } return dpy->qlen; } /* _XReadEvents - Flush the output queue, * then read as many events as possible (but at least 1) and enqueue them */ void _XReadEvents(Display *dpy) { xcb_generic_reply_t *response; unsigned long serial; if(dpy->flags & XlibDisplayIOError) return; _XSend(dpy, NULL, 0); if(dpy->xcb->event_owner != XlibOwnsEventQueue) return; if (!check_internal_connections(dpy)) return; serial = dpy->next_event_serial_num; while(serial == dpy->next_event_serial_num || dpy->qlen == 0) { if(dpy->xcb->event_waiter) { ConditionWait(dpy, dpy->xcb->event_notify); /* Maybe the other thread got us an event. */ continue; } if(!dpy->xcb->next_event) { xcb_generic_event_t *event; dpy->xcb->event_waiter = 1; UnlockDisplay(dpy); event = xcb_wait_for_event(dpy->xcb->connection); /* It appears that classic Xlib respected user * locks when waking up after waiting for * events. However, if this thread did not have * any user locks, and another thread takes a * user lock and tries to read events, then we'd * deadlock. So we'll choose to let the thread * that got in first consume events, despite the * later thread's user locks. */ InternalLockDisplay(dpy, /* ignore user locks */ 1); dpy->xcb->event_waiter = 0; ConditionBroadcast(dpy, dpy->xcb->event_notify); if(!event) { _XIOError(dpy); return; } dpy->xcb->next_event = event; } /* We've established most of the conditions for * poll_for_response to return non-NULL. The exceptions * are connection shutdown, and finding that another * thread is waiting for the next reply we'd like to * process. */ response = poll_for_response(dpy); if(response) handle_response(dpy, response, False); else if(dpy->xcb->pending_requests->reply_waiter) { /* need braces around ConditionWait */ ConditionWait(dpy, dpy->xcb->reply_notify); } else { _XIOError(dpy); return; } } /* The preceding loop established that there is no * event_waiter--unless we just called ConditionWait because of * a reply_waiter, in which case another thread may have become * the event_waiter while we slept unlocked. */ if(!dpy->xcb->event_waiter) while((response = poll_for_response(dpy))) handle_response(dpy, response, False); if(xcb_connection_has_error(dpy->xcb->connection)) _XIOError(dpy); } /* * _XSend - Flush the buffer and send the client data. 32 bit word aligned * transmission is used, if size is not 0 mod 4, extra bytes are transmitted. * * Note that the connection must not be read from once the data currently * in the buffer has been written. */ void _XSend(Display *dpy, const char *data, long size) { static const xReq dummy_request; static char const pad[3]; struct iovec vec[3]; uint64_t requests; uint64_t dpy_request; _XExtension *ext; xcb_connection_t *c = dpy->xcb->connection; if(dpy->flags & XlibDisplayIOError) return; if(dpy->bufptr == dpy->buffer && !size) return; /* append_pending_request does not alter the dpy request number * therefore we can get it outside of the loop and the if */ dpy_request = X_DPY_GET_REQUEST(dpy); /* iff we asked XCB to set aside errors, we must pick those up * eventually. iff there are async handlers, we may have just * issued requests that will generate replies. in either case, * we need to remember to check later. */ if(dpy->xcb->event_owner != XlibOwnsEventQueue || dpy->async_handlers) { uint64_t sequence; for(sequence = dpy->xcb->last_flushed + 1; sequence <= dpy_request; ++sequence) append_pending_request(dpy, sequence); } requests = dpy_request - dpy->xcb->last_flushed; dpy->xcb->last_flushed = dpy_request; vec[0].iov_base = dpy->buffer; vec[0].iov_len = dpy->bufptr - dpy->buffer; vec[1].iov_base = (char *)data; vec[1].iov_len = size; vec[2].iov_base = (char *)pad; vec[2].iov_len = -size & 3; for(ext = dpy->flushes; ext; ext = ext->next_flush) { int i; for(i = 0; i < 3; ++i) if(vec[i].iov_len) ext->before_flush(dpy, &ext->codes, vec[i].iov_base, vec[i].iov_len); } if(xcb_writev(c, vec, 3, requests) < 0) { _XIOError(dpy); return; } dpy->bufptr = dpy->buffer; dpy->last_req = (char *) &dummy_request; if (!check_internal_connections(dpy)) return; _XSetSeqSyncFunction(dpy); } /* * _XFlush - Flush the X request buffer. If the buffer is empty, no * action is taken. */ void _XFlush(Display *dpy) { if (!require_socket(dpy)) return; _XSend(dpy, NULL, 0); _XEventsQueued(dpy, QueuedAfterReading); } static const XID inval_id = ~0UL; void _XIDHandler(Display *dpy) { if (dpy->xcb->next_xid == inval_id) _XAllocIDs(dpy, &dpy->xcb->next_xid, 1); } /* _XAllocID - resource ID allocation routine. */ XID _XAllocID(Display *dpy) { XID ret = dpy->xcb->next_xid; assert (ret != inval_id); dpy->xcb->next_xid = inval_id; _XSetPrivSyncFunction(dpy); return ret; } /* _XAllocIDs - multiple resource ID allocation routine. */ void _XAllocIDs(Display *dpy, XID *ids, int count) { int i; #ifdef XTHREADS if (dpy->lock) (*dpy->lock->user_lock_display)(dpy); UnlockDisplay(dpy); #endif for (i = 0; i < count; i++) ids[i] = xcb_generate_id(dpy->xcb->connection); #ifdef XTHREADS InternalLockDisplay(dpy, /* don't skip user locks */ 0); if (dpy->lock) (*dpy->lock->user_unlock_display)(dpy); #endif } static void _XFreeReplyData(Display *dpy, Bool force) { if(!force && dpy->xcb->reply_consumed < dpy->xcb->reply_length) return; free(dpy->xcb->reply_data); dpy->xcb->reply_data = NULL; } /* * _XReply - Wait for a reply packet and copy its contents into the * specified rep. * extra: number of 32-bit words expected after the reply * discard: should I discard data following "extra" words? */ Status _XReply(Display *dpy, xReply *rep, int extra, Bool discard) { xcb_generic_error_t *error; xcb_connection_t *c = dpy->xcb->connection; char *reply; PendingRequest *current; uint64_t dpy_request; if (dpy->xcb->reply_data) throw_extlib_fail_assert("Extra reply data still left in queue", xcb_xlib_extra_reply_data_left); if(dpy->flags & XlibDisplayIOError) return 0; _XSend(dpy, NULL, 0); dpy_request = X_DPY_GET_REQUEST(dpy); if(dpy->xcb->pending_requests_tail && dpy->xcb->pending_requests_tail->sequence == dpy_request) current = dpy->xcb->pending_requests_tail; else current = append_pending_request(dpy, dpy_request); /* Don't let any other thread get this reply. */ current->reply_waiter = 1; while(1) { PendingRequest *req = dpy->xcb->pending_requests; xcb_generic_reply_t *response; if(req != current && req->reply_waiter) { ConditionWait(dpy, dpy->xcb->reply_notify); /* Another thread got this reply. */ continue; } req->reply_waiter = 1; UnlockDisplay(dpy); response = xcb_wait_for_reply64(c, req->sequence, &error); /* Any user locks on another thread must have been taken * while we slept in xcb_wait_for_reply64. Classic Xlib * ignored those user locks in this case, so we do too. */ InternalLockDisplay(dpy, /* ignore user locks */ 1); /* We have the response we're looking for. Now, before * letting anyone else process this sequence number, we * need to process any events that should have come * earlier. */ if(dpy->xcb->event_owner == XlibOwnsEventQueue) { xcb_generic_reply_t *event; /* Assume event queue is empty if another thread is blocking * waiting for event. */ if(!dpy->xcb->event_waiter) { while((event = poll_for_response(dpy))) handle_response(dpy, event, True); } } req->reply_waiter = 0; ConditionBroadcast(dpy, dpy->xcb->reply_notify); dpy_request = X_DPY_GET_REQUEST(dpy); if(XLIB_SEQUENCE_COMPARE(req->sequence, >, dpy_request)) { throw_thread_fail_assert("Unknown sequence number " "while processing reply", xcb_xlib_threads_sequence_lost); } X_DPY_SET_LAST_REQUEST_READ(dpy, req->sequence); if(!response) dequeue_pending_request(dpy, req); if(req == current) { reply = (char *) response; break; } if(error) handle_response(dpy, (xcb_generic_reply_t *) error, True); else if(response) handle_response(dpy, response, True); } if (!check_internal_connections(dpy)) return 0; if(dpy->xcb->next_event && dpy->xcb->next_event->response_type == X_Error) { xcb_generic_event_t *event = dpy->xcb->next_event; uint64_t last_request_read = X_DPY_GET_LAST_REQUEST_READ(dpy); uint64_t event_sequence = last_request_read; widen(&event_sequence, event->full_sequence); if(event_sequence == last_request_read) { error = (xcb_generic_error_t *) event; dpy->xcb->next_event = NULL; } } if(error) { int ret_code; /* Xlib is evil and assumes that even errors will be * copied into rep. */ memcpy(rep, error, 32); /* do not die on "no such font", "can't allocate", "can't grab" failures */ switch(error->error_code) { case BadName: switch(error->major_code) { case X_LookupColor: case X_AllocNamedColor: free(error); return 0; } break; case BadFont: if(error->major_code == X_QueryFont) { free(error); return 0; } break; case BadAlloc: case BadAccess: free(error); return 0; } ret_code = handle_error(dpy, (xError *) error, True); free(error); return ret_code; } /* it's not an error, but we don't have a reply, so it's an I/O * error. */ if(!reply) { _XIOError(dpy); return 0; } /* there's no error and we have a reply. */ dpy->xcb->reply_data = reply; dpy->xcb->reply_consumed = sizeof(xReply) + (extra * 4); dpy->xcb->reply_length = sizeof(xReply); if(dpy->xcb->reply_data[0] == 1) dpy->xcb->reply_length += (((xcb_generic_reply_t *) dpy->xcb->reply_data)->length * 4); /* error: Xlib asks too much. give them what we can anyway. */ if(dpy->xcb->reply_length < dpy->xcb->reply_consumed) dpy->xcb->reply_consumed = dpy->xcb->reply_length; memcpy(rep, dpy->xcb->reply_data, dpy->xcb->reply_consumed); _XFreeReplyData(dpy, discard); return 1; } int _XRead(Display *dpy, char *data, long size) { assert(size >= 0); if(size == 0) return 0; if(dpy->xcb->reply_data == NULL || dpy->xcb->reply_consumed + size > dpy->xcb->reply_length) throw_extlib_fail_assert("Too much data requested from _XRead", xcb_xlib_too_much_data_requested); memcpy(data, dpy->xcb->reply_data + dpy->xcb->reply_consumed, size); dpy->xcb->reply_consumed += size; _XFreeReplyData(dpy, False); return 0; } /* * _XReadPad - Read bytes from the socket taking into account incomplete * reads. If the number of bytes is not 0 mod 4, read additional pad * bytes. */ void _XReadPad(Display *dpy, char *data, long size) { _XRead(dpy, data, size); dpy->xcb->reply_consumed += -size & 3; _XFreeReplyData(dpy, False); } /* Read and discard "n" 8-bit bytes of data */ void _XEatData(Display *dpy, unsigned long n) { dpy->xcb->reply_consumed += n; _XFreeReplyData(dpy, False); } /* * Read and discard "n" 32-bit words of data * Matches the units of the length field in X protocol replies, and provides * a single implementation of overflow checking to avoid having to replicate * those checks in every caller. */ void _XEatDataWords(Display *dpy, unsigned long n) { if (n < ((INT_MAX - dpy->xcb->reply_consumed) >> 2)) dpy->xcb->reply_consumed += (n << 2); else /* Overflow would happen, so just eat the rest of the reply */ dpy->xcb->reply_consumed = dpy->xcb->reply_length; _XFreeReplyData(dpy, False); } unsigned long _XNextRequest(Display *dpy) { /* This will update dpy->request. The assumption is that the next thing * that the application will do is make a request so there's little * overhead. */ require_socket(dpy); return NextRequest(dpy); } libX11-1.8.12/src/ChActPGb.c0000644014310600000120000000307514763154126010640 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XChangeActivePointerGrab( register Display *dpy, unsigned int event_mask, /* CARD16 */ Cursor curs, Time time) { register xChangeActivePointerGrabReq *req; LockDisplay(dpy); GetReq(ChangeActivePointerGrab, req); req->eventMask = event_mask; req->cursor = curs; req->time = time; UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/Bell.c0000644014310600000120000000263014763154126010137 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XBell( register Display *dpy, int percent) { register xBellReq *req; LockDisplay(dpy); GetReq(Bell,req); req->percent = percent; UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/Text.c0000644014310600000120000000743614763154126010216 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XDrawString( register Display *dpy, Drawable d, GC gc, int x, int y, _Xconst char *string, int length) { int Datalength = 0; register xPolyText8Req *req; if (length <= 0) return 0; LockDisplay(dpy); FlushGC(dpy, gc); GetReq (PolyText8, req); req->drawable = d; req->gc = gc->gid; req->x = x; req->y = y; Datalength += SIZEOF(xTextElt) * ((length + 253) / 254) + length; req->length += (Datalength + 3)>>2; /* convert to number of 32-bit words */ /* * If the entire request does not fit into the remaining space in the * buffer, flush the buffer first. If the request does fit into the * empty buffer, then we won't have to flush it at the end to keep * the buffer 32-bit aligned. */ if (dpy->bufptr + Datalength > dpy->bufmax) _XFlush (dpy); { int nbytes; int PartialNChars = length; /* register xTextElt *elt; */ char *CharacterOffset = (char *)string; unsigned char *tbuf; while(PartialNChars > 254) { nbytes = 254 + SIZEOF(xTextElt); BufAlloc (unsigned char *, tbuf, nbytes); /* elt->delta = 0; * elt->len = 254; */ *(unsigned char *)tbuf = 254; *(tbuf+1) = 0; /* memcpy ((char *) (elt + 1), CharacterOffset, 254); */ memcpy ((char *)tbuf+2, CharacterOffset, 254); PartialNChars = PartialNChars - 254; CharacterOffset += 254; } if (PartialNChars) { nbytes = PartialNChars + SIZEOF(xTextElt); BufAlloc (unsigned char *, tbuf, nbytes); /* elt->delta = 0; * elt->len = PartialNChars; */ *(unsigned char *)tbuf = PartialNChars; *(tbuf+1) = 0; /* memcpy ((char *) (elt + 1), CharacterOffset, PartialNChars); */ memcpy ((char *)tbuf+2, CharacterOffset, (size_t)PartialNChars); } } /* Pad request out to a 32-bit boundary */ if (Datalength &= 3) { char *pad; /* * BufAlloc is a macro that uses its last argument more than * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)" */ length = 4 - Datalength; BufAlloc (char *, pad, length); /* * if there are 3 bytes of padding, the first byte MUST be 0 * so the pad bytes aren't mistaken for a final xTextElt */ *pad = 0; } /* * If the buffer pointer is not now pointing to a 32-bit boundary, * we must flush the buffer so that it does point to a 32-bit boundary * at the end of this routine. */ if ((dpy->bufptr - dpy->buffer) & 3) _XFlush (dpy); UnlockDisplay(dpy); SyncHandle(); return 0; } libX11-1.8.12/src/Misc.c0000644014310600000120000000342514763154126010157 /* Copyright 1988, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" long XMaxRequestSize(Display *dpy) { return dpy->max_request_size; } char *XResourceManagerString(Display *dpy) { return dpy->xdefaults; } unsigned long XDisplayMotionBufferSize(Display *dpy) { return dpy->motion_buffer; } int XDisplayKeycodes( Display *dpy, int *min_keycode_return, int *max_keycode_return) { *min_keycode_return = dpy->min_keycode; *max_keycode_return = dpy->max_keycode; return 1; } VisualID XVisualIDFromVisual(Visual *visual) { return visual->visualid; } long XExtendedMaxRequestSize(Display *dpy) { return dpy->bigreq_size; } libX11-1.8.12/src/SetWMCMapW.c0000644014310600000120000000536514763154126011160 /*********************************************************** Copyright 1987, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include /* * XSetWMProtocols sets the property * WM_COLORMAP_WINDOWS type: WINDOW format:32 */ Status XSetWMColormapWindows ( Display *dpy, Window w, Window *windows, int count) { Atom prop; prop = XInternAtom (dpy, "WM_COLORMAP_WINDOWS", False); if (prop == None) return False; XChangeProperty (dpy, w, prop, XA_WINDOW, 32, PropModeReplace, (unsigned char *) windows, count); return True; } libX11-1.8.12/src/SetDashes.c0000644014310600000120000000325714763154126011152 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XSetDashes ( register Display *dpy, GC gc, int dash_offset, _Xconst char *list, int n) { register xSetDashesReq *req; LockDisplay(dpy); GetReq (SetDashes,req); req->gc = gc->gid; req->dashOffset = gc->values.dash_offset = dash_offset; req->nDashes = n; req->length += (n+3)>>2; gc->dashes = 1; gc->dirty &= ~(GCDashList | GCDashOffset); Data (dpy, list, (long)n); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/FilterEv.c0000644014310600000120000001054014763154126011000 /* * Copyright 1990, 1991 by OMRON Corporation * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name OMRON not be used in * advertising or publicity pertaining to distribution of the software without * specific, written prior permission. OMRON makes no representations * about the suitability of this software for any purpose. It is provided * "as is" without express or implied warranty. * * OMRON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * EVENT SHALL OMRON BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. * * Author: Seiji Kuwari OMRON Corporation * kuwa@omron.co.jp * kuwa%omron.co.jp@uunet.uu.net */ /* Copyright 1991, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #else #define XLOCALE 1 #endif #include "Xlibint.h" #if XLOCALE #include "Xlcint.h" #endif extern long const _Xevent_to_mask[]; /* * Look up if there is a specified filter for the event. */ Bool XFilterEvent( XEvent *ev, Window window) { #if XLOCALE XFilterEventList p; Window win; long mask; Bool ret; if (window) win = window; else win = ev->xany.window; if (ev->type >= LASTEvent) mask = 0; else mask = _Xevent_to_mask[ev->type]; LockDisplay(ev->xany.display); for (p = ev->xany.display->im_filters; p != NULL; p = p->next) { if (win == p->window) { if ((mask & p->event_mask) || (ev->type >= p->start_type && ev->type <= p->end_type)) { UnlockDisplay(ev->xany.display); ret = (*(p->filter))(ev->xany.display, p->window, ev, p->client_data); return(ret); } } } for (p = ev->xany.display->im_filters; p != NULL; p = p->next) { /* Java sometimes calls XFilterEvent() with window=0 and ev come from * XNextEvent() when users type some keys quickly and switch multiple * input focuses in a Java window with the keys. * But XKeyEvent filters need to receive the event with window=0 for * _XimPendingFilter() and _XimUnfabricateSerial() to clear the * fowarded XKeyEvent with XIM_FORWARD_EVENT. * * The case of p->window == 0 is checkekd after all cases of p->window * != 0 are checked because all input contexts share * Display->im_filters but each input context has * Xic->private.proto.registed_filter_event for the filters * and same p->filter could be registerd to Display->im_filters twice * with different p->window. */ if (p->window == 0 && window == 0) { if ((mask & p->event_mask) || (ev->type >= p->start_type && ev->type <= p->end_type)) { UnlockDisplay(ev->xany.display); ret = (*(p->filter))(ev->xany.display, p->window, ev, p->client_data); return(ret); } } } UnlockDisplay(ev->xany.display); #endif return(False); } libX11-1.8.12/src/SetLStyle.c0000644014310600000120000000354114763154126011153 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XSetLineAttributes( register Display *dpy, GC gc, unsigned int linewidth, /* CARD16 */ int linestyle, int capstyle, int joinstyle) { XGCValues *gv = &gc->values; LockDisplay(dpy); if (linewidth != gv->line_width) { gv->line_width = linewidth; gc->dirty |= GCLineWidth; } if (linestyle != gv->line_style) { gv->line_style = linestyle; gc->dirty |= GCLineStyle; } if (capstyle != gv->cap_style) { gv->cap_style = capstyle; gc->dirty |= GCCapStyle; } if (joinstyle != gv->join_style) { gv->join_style = joinstyle; gc->dirty |= GCJoinStyle; } UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/TextToStr.c0000644014310600000120000000600514763154126011201 /* Copyright 1989, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "reallocarray.h" /* * XTextPropertyToStringList - set list and count to contain data stored in * null-separated STRING property. */ Status XTextPropertyToStringList ( XTextProperty *tp, char ***list_return, int *count_return) { char **list; /* return value */ int nelements; /* return value */ register char *cp; /* temp variable */ char *start; /* start of thing to copy */ int i, j; /* iterator variables */ int datalen = (int) tp->nitems; /* for convenience */ /* * make sure we understand how to do it */ if (tp->encoding != XA_STRING || tp->format != 8) return False; if (datalen == 0) { *list_return = NULL; *count_return = 0; return True; } /* * walk the list to figure out how many elements there are */ nelements = 1; /* since null-separated */ for (cp = (char *) tp->value, i = datalen; i > 0; cp++, i--) { if (*cp == '\0') nelements++; } /* * allocate list and duplicate */ list = Xmallocarray (nelements, sizeof (char *)); if (!list) return False; start = Xmalloc ((datalen + 1) * sizeof (char)); /* for */ if (!start) { Xfree (list); return False; } /* * copy data */ memcpy (start, (char *) tp->value, tp->nitems); start[datalen] = '\0'; /* * walk down list setting value */ for (cp = start, i = datalen + 1, j = 0; i > 0; cp++, i--) { if (*cp == '\0') { list[j] = start; start = (cp + 1); j++; } } /* * append final null pointer and then return data */ *list_return = list; *count_return = nelements; return True; } void XFreeStringList (char **list) { if (list) { if (list[0]) Xfree (list[0]); Xfree (list); list = NULL; } } libX11-1.8.12/src/XlibInt.c0000644014310600000120000015422614763154126010643 /* Copyright 1985, 1986, 1987, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ /* * XlibInt.c - Internal support routines for the C subroutine * interface library (Xlib) to the X Window System Protocol V11.0. */ #ifdef WIN32 #define _XLIBINT_ #endif #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "Xprivate.h" #include "reallocarray.h" #include #include #include #ifdef WIN32 #include #endif /* Needed for FIONREAD on Solaris */ #ifdef HAVE_SYS_FILIO_H #include #endif /* Needed for FIONREAD on Cygwin */ #ifdef HAVE_SYS_SOCKET_H #include #endif /* Needed for ioctl() on Solaris */ #ifdef HAVE_UNISTD_H #include #endif #ifdef XTHREADS #include "locking.h" #ifdef HAVE_SYS_IOCTL_H #include #endif /* these pointers get initialized by XInitThreads */ LockInfoPtr _Xglobal_lock = NULL; void (*_XCreateMutex_fn)(LockInfoPtr) = NULL; /* struct _XCVList *(*_XCreateCVL_fn)() = NULL; */ void (*_XFreeMutex_fn)(LockInfoPtr) = NULL; void (*_XLockMutex_fn)( LockInfoPtr /* lock */ #if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE) , char * /* file */ , int /* line */ #endif ) = NULL; void (*_XUnlockMutex_fn)( LockInfoPtr /* lock */ #if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE) , char * /* file */ , int /* line */ #endif ) = NULL; xthread_t (*_Xthread_self_fn)(void) = NULL; #define XThread_Self() ((*_Xthread_self_fn)()) #endif /* XTHREADS */ #ifdef WIN32 #define ECHECK(err) (WSAGetLastError() == err) #define ESET(val) WSASetLastError(val) #else #define ECHECK(err) (errno == err) #define ESET(val) errno = val #endif /* * The following routines are internal routines used by Xlib for protocol * packet transmission and reception. * * _XIOError(Display *) will be called if any sort of system call error occurs. * This is assumed to be a fatal condition, i.e., XIOError should not return. * * _XError(Display *, xError *) will be called whenever an X_Error event is * received. This is not assumed to be a fatal condition, i.e., it is * acceptable for this procedure to return. However, XError should NOT * perform any operations (directly or indirectly) on the DISPLAY. * * Routines declared with a return type of 'Status' return 0 on failure, * and non 0 on success. Routines with no declared return type don't * return anything. Whenever possible routines that create objects return * the object they have created. */ #define POLLFD_CACHE_SIZE 5 /* initialize the struct array passed to poll() below */ Bool _XPollfdCacheInit( Display *dpy) { #ifdef USE_POLL struct pollfd *pfp; pfp = Xmalloc(POLLFD_CACHE_SIZE * sizeof(struct pollfd)); if (!pfp) return False; pfp[0].fd = dpy->fd; pfp[0].events = POLLIN; dpy->filedes = (XPointer)pfp; #endif return True; } void _XPollfdCacheAdd( Display *dpy, int fd) { #ifdef USE_POLL struct pollfd *pfp = (struct pollfd *)dpy->filedes; if (dpy->im_fd_length <= POLLFD_CACHE_SIZE) { pfp[dpy->im_fd_length].fd = fd; pfp[dpy->im_fd_length].events = POLLIN; } #endif } /* ARGSUSED */ void _XPollfdCacheDel( Display *dpy, int fd) /* not used */ { #ifdef USE_POLL struct pollfd *pfp = (struct pollfd *)dpy->filedes; struct _XConnectionInfo *conni; /* just recalculate whole list */ if (dpy->im_fd_length <= POLLFD_CACHE_SIZE) { int loc = 1; for (conni = dpy->im_fd_info; conni; conni=conni->next) { pfp[loc].fd = conni->fd; pfp[loc].events = POLLIN; loc++; } } #endif } static int sync_hazard(Display *dpy) { /* * "span" and "hazard" need to be signed such that the ">=" comparison * works correctly in the case that hazard is greater than 65525 */ int64_t span = X_DPY_GET_REQUEST(dpy) - X_DPY_GET_LAST_REQUEST_READ(dpy); int64_t hazard = min((dpy->bufmax - dpy->buffer) / SIZEOF(xReq), 65535 - 10); return span >= 65535 - hazard - 10; } static void sync_while_locked(Display *dpy) { #ifdef XTHREADS if (dpy->lock) (*dpy->lock->user_lock_display)(dpy); #endif UnlockDisplay(dpy); SyncHandle(); InternalLockDisplay(dpy, /* don't skip user locks */ 0); #ifdef XTHREADS if (dpy->lock) (*dpy->lock->user_unlock_display)(dpy); #endif } void _XSeqSyncFunction( register Display *dpy) { xGetInputFocusReply rep; _X_UNUSED register xReq *req; if ((X_DPY_GET_REQUEST(dpy) - X_DPY_GET_LAST_REQUEST_READ(dpy)) >= (65535 - BUFSIZE/SIZEOF(xReq))) { GetEmptyReq(GetInputFocus, req); (void) _XReply (dpy, (xReply *)&rep, 0, xTrue); sync_while_locked(dpy); } else if (sync_hazard(dpy)) _XSetPrivSyncFunction(dpy); } /* NOTE: only called if !XTHREADS, or when XInitThreads wasn't called. */ static int _XPrivSyncFunction (Display *dpy) { #ifdef XTHREADS assert(!dpy->lock_fns); #endif assert(dpy->synchandler == _XPrivSyncFunction); assert((dpy->flags & XlibDisplayPrivSync) != 0); dpy->synchandler = dpy->savedsynchandler; dpy->savedsynchandler = NULL; dpy->flags &= ~XlibDisplayPrivSync; if(dpy->synchandler) dpy->synchandler(dpy); _XIDHandler(dpy); _XSeqSyncFunction(dpy); return 0; } void _XSetPrivSyncFunction(Display *dpy) { #ifdef XTHREADS if (dpy->lock_fns) return; #endif if (!(dpy->flags & XlibDisplayPrivSync)) { dpy->savedsynchandler = dpy->synchandler; dpy->synchandler = _XPrivSyncFunction; dpy->flags |= XlibDisplayPrivSync; } } void _XSetSeqSyncFunction(Display *dpy) { if (sync_hazard(dpy)) _XSetPrivSyncFunction (dpy); } #ifdef LONG64 void _XRead32( Display *dpy, long *data, long len) { register int *buf; register long i; if (len) { (void) _XRead(dpy, (char *)data, len); i = len >> 2; buf = (int *)data + i; data += i; while (--i >= 0) *--data = *--buf; } } #endif /* LONG64 */ /* * The hard part about this is that we only get 16 bits from a reply. * We have three values that will march along, with the following invariant: * dpy->last_request_read <= rep->sequenceNumber <= dpy->request * We have to keep * dpy->request - dpy->last_request_read < 2^16 * or else we won't know for sure what value to use in events. We do this * by forcing syncs when we get close. */ unsigned long _XSetLastRequestRead( register Display *dpy, register xGenericReply *rep) { register uint64_t newseq, lastseq; lastseq = X_DPY_GET_LAST_REQUEST_READ(dpy); /* * KeymapNotify has no sequence number, but is always guaranteed * to immediately follow another event, except when generated via * SendEvent (hmmm). */ if ((rep->type & 0x7f) == KeymapNotify) return(lastseq); newseq = (lastseq & ~((uint64_t)0xffff)) | rep->sequenceNumber; if (newseq < lastseq) { newseq += 0x10000; if (newseq > X_DPY_GET_REQUEST(dpy)) { (void) fprintf (stderr, "Xlib: sequence lost (0x%llx > 0x%llx) in reply type 0x%x!\n", (unsigned long long)newseq, (unsigned long long)(X_DPY_GET_REQUEST(dpy)), (unsigned int) rep->type); newseq -= 0x10000; } } X_DPY_SET_LAST_REQUEST_READ(dpy, newseq); return(newseq); } /* * Support for internal connections, such as an IM might use. * By Stephen Gildea, X Consortium, September 1993 */ /* _XRegisterInternalConnection * Each IM (or Xlib extension) that opens a file descriptor that Xlib should * include in its select/poll mask must call this function to register the * fd with Xlib. Any XConnectionWatchProc registered by XAddConnectionWatch * will also be called. * * Whenever Xlib detects input available on fd, it will call callback * with call_data to process it. If non-Xlib code calls select/poll * and detects input available, it must call XProcessInternalConnection, * which will call the associated callback. * * Non-Xlib code can learn about these additional fds by calling * XInternalConnectionNumbers or, more typically, by registering * a XConnectionWatchProc with XAddConnectionWatch * to be called when fds are registered or unregistered. * * Returns True if registration succeeded, False if not, typically * because could not allocate memory. * Assumes Display locked when called. */ Status _XRegisterInternalConnection( Display* dpy, int fd, _XInternalConnectionProc callback, XPointer call_data ) { struct _XConnectionInfo *new_conni, **iptr; struct _XConnWatchInfo *watchers; XPointer *wd; new_conni = Xmalloc(sizeof(struct _XConnectionInfo)); if (!new_conni) return 0; new_conni->watch_data = Xmallocarray(dpy->watcher_count, sizeof(XPointer)); if (!new_conni->watch_data) { Xfree(new_conni); return 0; } new_conni->fd = fd; new_conni->read_callback = callback; new_conni->call_data = call_data; new_conni->next = NULL; /* link new structure onto end of list */ for (iptr = &dpy->im_fd_info; *iptr; iptr = &(*iptr)->next) ; *iptr = new_conni; dpy->im_fd_length++; _XPollfdCacheAdd(dpy, fd); for (watchers=dpy->conn_watchers, wd=new_conni->watch_data; watchers; watchers=watchers->next, wd++) { *wd = NULL; /* for cleanliness */ (*watchers->fn) (dpy, watchers->client_data, fd, True, wd); } return 1; } /* _XUnregisterInternalConnection * Each IM (or Xlib extension) that closes a file descriptor previously * registered with _XRegisterInternalConnection must call this function. * Any XConnectionWatchProc registered by XAddConnectionWatch * will also be called. * * Assumes Display locked when called. */ void _XUnregisterInternalConnection( Display* dpy, int fd ) { struct _XConnectionInfo *info_list, **prev; struct _XConnWatchInfo *watch; XPointer *wd; for (prev = &dpy->im_fd_info; (info_list = *prev); prev = &info_list->next) { if (info_list->fd == fd) { *prev = info_list->next; dpy->im_fd_length--; for (watch=dpy->conn_watchers, wd=info_list->watch_data; watch; watch=watch->next, wd++) { (*watch->fn) (dpy, watch->client_data, fd, False, wd); } Xfree (info_list->watch_data); Xfree (info_list); break; } } _XPollfdCacheDel(dpy, fd); } /* XInternalConnectionNumbers * Returns an array of fds and an array of corresponding call data. * Typically a XConnectionWatchProc registered with XAddConnectionWatch * will be used instead of this function to discover * additional fds to include in the select/poll mask. * * The list is allocated with Xmalloc and should be freed by the caller * with Xfree; */ Status XInternalConnectionNumbers( Display *dpy, int **fd_return, int *count_return ) { int count; struct _XConnectionInfo *info_list; int *fd_list; LockDisplay(dpy); count = 0; for (info_list=dpy->im_fd_info; info_list; info_list=info_list->next) count++; fd_list = Xmallocarray (count, sizeof(int)); if (!fd_list) { UnlockDisplay(dpy); return 0; } count = 0; for (info_list=dpy->im_fd_info; info_list; info_list=info_list->next) { fd_list[count] = info_list->fd; count++; } UnlockDisplay(dpy); *fd_return = fd_list; *count_return = count; return 1; } void _XProcessInternalConnection( Display *dpy, struct _XConnectionInfo *conn_info) { dpy->flags |= XlibDisplayProcConni; UnlockDisplay(dpy); (*conn_info->read_callback) (dpy, conn_info->fd, conn_info->call_data); LockDisplay(dpy); dpy->flags &= ~XlibDisplayProcConni; } /* XProcessInternalConnection * Call the _XInternalConnectionProc registered by _XRegisterInternalConnection * for this fd. * The Display is NOT locked during the call. */ void XProcessInternalConnection( Display* dpy, int fd ) { struct _XConnectionInfo *info_list; LockDisplay(dpy); for (info_list=dpy->im_fd_info; info_list; info_list=info_list->next) { if (info_list->fd == fd) { _XProcessInternalConnection(dpy, info_list); break; } } UnlockDisplay(dpy); } /* XAddConnectionWatch * Register a callback to be called whenever _XRegisterInternalConnection * or _XUnregisterInternalConnection is called. * Callbacks are called with the Display locked. * If any connections are already registered, the callback is immediately * called for each of them. */ Status XAddConnectionWatch( Display* dpy, XConnectionWatchProc callback, XPointer client_data ) { struct _XConnWatchInfo *new_watcher, **wptr; struct _XConnectionInfo *info_list; XPointer *wd_array; LockDisplay(dpy); /* allocate new watch data */ for (info_list=dpy->im_fd_info; info_list; info_list=info_list->next) { wd_array = Xreallocarray(info_list->watch_data, dpy->watcher_count + 1, sizeof(XPointer)); if (!wd_array) { UnlockDisplay(dpy); return 0; } info_list->watch_data = wd_array; wd_array[dpy->watcher_count] = NULL; /* for cleanliness */ } new_watcher = Xmalloc(sizeof(struct _XConnWatchInfo)); if (!new_watcher) { UnlockDisplay(dpy); return 0; } new_watcher->fn = callback; new_watcher->client_data = client_data; new_watcher->next = NULL; /* link new structure onto end of list */ for (wptr = &dpy->conn_watchers; *wptr; wptr = &(*wptr)->next) ; *wptr = new_watcher; dpy->watcher_count++; /* call new watcher on all currently registered fds */ for (info_list=dpy->im_fd_info; info_list; info_list=info_list->next) { (*callback) (dpy, client_data, info_list->fd, True, info_list->watch_data + dpy->watcher_count - 1); } UnlockDisplay(dpy); return 1; } /* XRemoveConnectionWatch * Unregister a callback registered by XAddConnectionWatch. * Both callback and client_data must match what was passed to * XAddConnectionWatch. */ void XRemoveConnectionWatch( Display* dpy, XConnectionWatchProc callback, XPointer client_data ) { struct _XConnWatchInfo *watch; struct _XConnWatchInfo *previous = NULL; struct _XConnectionInfo *conni; int counter = 0; LockDisplay(dpy); for (watch=dpy->conn_watchers; watch; watch=watch->next) { if (watch->fn == callback && watch->client_data == client_data) { if (previous) previous->next = watch->next; else dpy->conn_watchers = watch->next; Xfree (watch); dpy->watcher_count--; /* remove our watch_data for each connection */ for (conni=dpy->im_fd_info; conni; conni=conni->next) { /* don't bother realloc'ing; these arrays are small anyway */ /* overlapping */ memmove(conni->watch_data+counter, conni->watch_data+counter+1, dpy->watcher_count - counter); } break; } previous = watch; counter++; } UnlockDisplay(dpy); } /* end of internal connections support */ /* Cookie jar implementation dpy->cookiejar is a linked list. _XEnq receives the events but leaves them in the normal EQ. _XStoreEvent returns the cookie event (minus data pointer) and adds it to the cookiejar. _XDeq just removes the entry like any other event but resets the data pointer for cookie events (to avoid double-free, the memory is re-used by Xlib). _XFetchEventCookie (called from XGetEventData) removes a cookie from the jar. _XFreeEventCookies removes all unclaimed cookies from the jar (called by XNextEvent). _XFreeDisplayStructure calls _XFreeEventCookies for each cookie in the normal EQ. */ #include "utlist.h" struct stored_event { XGenericEventCookie ev; struct stored_event *prev; struct stored_event *next; }; Bool _XIsEventCookie(Display *dpy, XEvent *ev) { return (ev->xcookie.type == GenericEvent && dpy->generic_event_vec[ev->xcookie.extension & 0x7F] != NULL); } /** * Free all events in the event list. */ void _XFreeEventCookies(Display *dpy) { struct stored_event **head, *e, *tmp; if (!dpy->cookiejar) return; head = (struct stored_event**)&dpy->cookiejar; DL_FOREACH_SAFE(*head, e, tmp) { XFree(e->ev.data); XFree(e); } dpy->cookiejar = NULL; } /** * Add an event to the display's event list. This event must be freed on the * next call to XNextEvent(). */ void _XStoreEventCookie(Display *dpy, XEvent *event) { XGenericEventCookie* cookie = &event->xcookie; struct stored_event **head, *add; if (!_XIsEventCookie(dpy, event)) return; head = (struct stored_event**)(&dpy->cookiejar); add = Xmalloc(sizeof(struct stored_event)); if (!add) { ESET(ENOMEM); _XIOError(dpy); return; } add->ev = *cookie; DL_APPEND(*head, add); cookie->data = NULL; /* don't return data yet, must be claimed */ } /** * Return the event with the given cookie and remove it from the list. */ Bool _XFetchEventCookie(Display *dpy, XGenericEventCookie* ev) { Bool ret = False; struct stored_event **head, *event; head = (struct stored_event**)&dpy->cookiejar; if (!_XIsEventCookie(dpy, (XEvent*)ev)) return ret; DL_FOREACH(*head, event) { if (event->ev.cookie == ev->cookie && event->ev.extension == ev->extension && event->ev.evtype == ev->evtype) { *ev = event->ev; DL_DELETE(*head, event); Xfree(event); ret = True; break; } } return ret; } Bool _XCopyEventCookie(Display *dpy, XGenericEventCookie *in, XGenericEventCookie *out) { Bool ret = False; int extension; if (!_XIsEventCookie(dpy, (XEvent*)in) || !out) return ret; extension = in->extension & 0x7F; if (!dpy->generic_event_copy_vec[extension]) return ret; ret = ((*dpy->generic_event_copy_vec[extension])(dpy, in, out)); out->cookie = ret ? ++dpy->next_cookie : 0; return ret; } /* * _XEnq - Place event packets on the display's queue. * note that no squishing of move events in V11, since there * is pointer motion hints.... */ void _XEnq( register Display *dpy, register xEvent *event) { register _XQEvent *qelt; int type, extension; if ((qelt = dpy->qfree)) { /* If dpy->qfree is non-NULL do this, else malloc a new one. */ dpy->qfree = qelt->next; } else if ((qelt = Xmalloc(sizeof(_XQEvent))) == NULL) { /* Malloc call failed! */ ESET(ENOMEM); _XIOError(dpy); return; } qelt->next = NULL; type = event->u.u.type & 0177; extension = ((xGenericEvent*)event)->extension; qelt->event.type = type; /* If an extension has registered a generic_event_vec handler, then * it can handle event cookies. Otherwise, proceed with the normal * event handlers. * * If the generic_event_vec is called, qelt->event is a event cookie * with the data pointer and the "free" pointer set. Data pointer is * some memory allocated by the extension. */ if (type == GenericEvent && dpy->generic_event_vec[extension & 0x7F]) { XGenericEventCookie *cookie = &qelt->event.xcookie; (*dpy->generic_event_vec[extension & 0x7F])(dpy, cookie, event); cookie->cookie = ++dpy->next_cookie; qelt->qserial_num = dpy->next_event_serial_num++; if (dpy->tail) dpy->tail->next = qelt; else dpy->head = qelt; dpy->tail = qelt; dpy->qlen++; } else if ((*dpy->event_vec[type])(dpy, &qelt->event, event)) { qelt->qserial_num = dpy->next_event_serial_num++; if (dpy->tail) dpy->tail->next = qelt; else dpy->head = qelt; dpy->tail = qelt; dpy->qlen++; } else { /* ignored, or stashed away for many-to-one compression */ qelt->next = dpy->qfree; dpy->qfree = qelt; } } /* * _XDeq - Remove event packet from the display's queue. */ void _XDeq( register Display *dpy, register _XQEvent *prev, /* element before qelt */ register _XQEvent *qelt) /* element to be unlinked */ { if (prev) { if ((prev->next = qelt->next) == NULL) dpy->tail = prev; } else { /* no prev, so removing first elt */ if ((dpy->head = qelt->next) == NULL) dpy->tail = NULL; } qelt->qserial_num = 0; qelt->next = dpy->qfree; dpy->qfree = qelt; dpy->qlen--; if (_XIsEventCookie(dpy, &qelt->event)) { XGenericEventCookie* cookie = &qelt->event.xcookie; /* dpy->qfree is re-used, reset memory to avoid double free on * _XFreeDisplayStructure */ cookie->data = NULL; } } /* * EventToWire in separate file in that often not needed. */ /*ARGSUSED*/ Bool _XUnknownWireEvent( register Display *dpy, /* pointer to display structure */ register XEvent *re, /* pointer to where event should be reformatted */ register xEvent *event) /* wire protocol event */ { #ifdef notdef (void) fprintf(stderr, "Xlib: unhandled wire event! event number = %d, display = %x\n.", event->u.u.type, dpy); #endif return(False); } Bool _XUnknownWireEventCookie( Display *dpy, /* pointer to display structure */ XGenericEventCookie *re, /* pointer to where event should be reformatted */ xEvent *event) /* wire protocol event */ { #ifdef notdef fprintf(stderr, "Xlib: unhandled wire cookie event! extension number = %d, display = %x\n.", ((xGenericEvent*)event)->extension, dpy); #endif return(False); } Bool _XUnknownCopyEventCookie( Display *dpy, /* pointer to display structure */ XGenericEventCookie *in, /* source */ XGenericEventCookie *out) /* destination */ { #ifdef notdef fprintf(stderr, "Xlib: unhandled cookie event copy! extension number = %d, display = %x\n.", in->extension, dpy); #endif return(False); } /*ARGSUSED*/ Status _XUnknownNativeEvent( register Display *dpy, /* pointer to display structure */ register XEvent *re, /* pointer to where event should be reformatted */ register xEvent *event) /* wire protocol event */ { #ifdef notdef (void) fprintf(stderr, "Xlib: unhandled native event! event number = %d, display = %x\n.", re->type, dpy); #endif return(0); } /* * reformat a wire event into an XEvent structure of the right type. */ Bool _XWireToEvent( register Display *dpy, /* pointer to display structure */ register XEvent *re, /* pointer to where event should be reformatted */ register xEvent *event) /* wire protocol event */ { re->type = event->u.u.type & 0x7f; ((XAnyEvent *)re)->serial = _XSetLastRequestRead(dpy, (xGenericReply *)event); ((XAnyEvent *)re)->send_event = ((event->u.u.type & 0x80) != 0); ((XAnyEvent *)re)->display = dpy; /* Ignore the leading bit of the event type since it is set when a client sends an event rather than the server. */ switch (event-> u.u.type & 0177) { case KeyPress: case KeyRelease: { register XKeyEvent *ev = (XKeyEvent*) re; ev->root = event->u.keyButtonPointer.root; ev->window = event->u.keyButtonPointer.event; ev->subwindow = event->u.keyButtonPointer.child; ev->time = event->u.keyButtonPointer.time; ev->x = cvtINT16toInt(event->u.keyButtonPointer.eventX); ev->y = cvtINT16toInt(event->u.keyButtonPointer.eventY); ev->x_root = cvtINT16toInt(event->u.keyButtonPointer.rootX); ev->y_root = cvtINT16toInt(event->u.keyButtonPointer.rootY); ev->state = event->u.keyButtonPointer.state; ev->same_screen = event->u.keyButtonPointer.sameScreen; ev->keycode = event->u.u.detail; } break; case ButtonPress: case ButtonRelease: { register XButtonEvent *ev = (XButtonEvent *) re; ev->root = event->u.keyButtonPointer.root; ev->window = event->u.keyButtonPointer.event; ev->subwindow = event->u.keyButtonPointer.child; ev->time = event->u.keyButtonPointer.time; ev->x = cvtINT16toInt(event->u.keyButtonPointer.eventX); ev->y = cvtINT16toInt(event->u.keyButtonPointer.eventY); ev->x_root = cvtINT16toInt(event->u.keyButtonPointer.rootX); ev->y_root = cvtINT16toInt(event->u.keyButtonPointer.rootY); ev->state = event->u.keyButtonPointer.state; ev->same_screen = event->u.keyButtonPointer.sameScreen; ev->button = event->u.u.detail; } break; case MotionNotify: { register XMotionEvent *ev = (XMotionEvent *)re; ev->root = event->u.keyButtonPointer.root; ev->window = event->u.keyButtonPointer.event; ev->subwindow = event->u.keyButtonPointer.child; ev->time = event->u.keyButtonPointer.time; ev->x = cvtINT16toInt(event->u.keyButtonPointer.eventX); ev->y = cvtINT16toInt(event->u.keyButtonPointer.eventY); ev->x_root = cvtINT16toInt(event->u.keyButtonPointer.rootX); ev->y_root = cvtINT16toInt(event->u.keyButtonPointer.rootY); ev->state = event->u.keyButtonPointer.state; ev->same_screen = event->u.keyButtonPointer.sameScreen; ev->is_hint = event->u.u.detail; } break; case EnterNotify: case LeaveNotify: { register XCrossingEvent *ev = (XCrossingEvent *) re; ev->root = event->u.enterLeave.root; ev->window = event->u.enterLeave.event; ev->subwindow = event->u.enterLeave.child; ev->time = event->u.enterLeave.time; ev->x = cvtINT16toInt(event->u.enterLeave.eventX); ev->y = cvtINT16toInt(event->u.enterLeave.eventY); ev->x_root = cvtINT16toInt(event->u.enterLeave.rootX); ev->y_root = cvtINT16toInt(event->u.enterLeave.rootY); ev->state = event->u.enterLeave.state; ev->mode = event->u.enterLeave.mode; ev->same_screen = (event->u.enterLeave.flags & ELFlagSameScreen) && True; ev->focus = (event->u.enterLeave.flags & ELFlagFocus) && True; ev->detail = event->u.u.detail; } break; case FocusIn: case FocusOut: { register XFocusChangeEvent *ev = (XFocusChangeEvent *) re; ev->window = event->u.focus.window; ev->mode = event->u.focus.mode; ev->detail = event->u.u.detail; } break; case KeymapNotify: { register XKeymapEvent *ev = (XKeymapEvent *) re; ev->window = None; memcpy(&ev->key_vector[1], (char *)((xKeymapEvent *) event)->map, sizeof (((xKeymapEvent *) event)->map)); } break; case Expose: { register XExposeEvent *ev = (XExposeEvent *) re; ev->window = event->u.expose.window; ev->x = event->u.expose.x; ev->y = event->u.expose.y; ev->width = event->u.expose.width; ev->height = event->u.expose.height; ev->count = event->u.expose.count; } break; case GraphicsExpose: { register XGraphicsExposeEvent *ev = (XGraphicsExposeEvent *) re; ev->drawable = event->u.graphicsExposure.drawable; ev->x = event->u.graphicsExposure.x; ev->y = event->u.graphicsExposure.y; ev->width = event->u.graphicsExposure.width; ev->height = event->u.graphicsExposure.height; ev->count = event->u.graphicsExposure.count; ev->major_code = event->u.graphicsExposure.majorEvent; ev->minor_code = event->u.graphicsExposure.minorEvent; } break; case NoExpose: { register XNoExposeEvent *ev = (XNoExposeEvent *) re; ev->drawable = event->u.noExposure.drawable; ev->major_code = event->u.noExposure.majorEvent; ev->minor_code = event->u.noExposure.minorEvent; } break; case VisibilityNotify: { register XVisibilityEvent *ev = (XVisibilityEvent *) re; ev->window = event->u.visibility.window; ev->state = event->u.visibility.state; } break; case CreateNotify: { register XCreateWindowEvent *ev = (XCreateWindowEvent *) re; ev->window = event->u.createNotify.window; ev->parent = event->u.createNotify.parent; ev->x = cvtINT16toInt(event->u.createNotify.x); ev->y = cvtINT16toInt(event->u.createNotify.y); ev->width = event->u.createNotify.width; ev->height = event->u.createNotify.height; ev->border_width = event->u.createNotify.borderWidth; ev->override_redirect = event->u.createNotify.override; } break; case DestroyNotify: { register XDestroyWindowEvent *ev = (XDestroyWindowEvent *) re; ev->window = event->u.destroyNotify.window; ev->event = event->u.destroyNotify.event; } break; case UnmapNotify: { register XUnmapEvent *ev = (XUnmapEvent *) re; ev->window = event->u.unmapNotify.window; ev->event = event->u.unmapNotify.event; ev->from_configure = event->u.unmapNotify.fromConfigure; } break; case MapNotify: { register XMapEvent *ev = (XMapEvent *) re; ev->window = event->u.mapNotify.window; ev->event = event->u.mapNotify.event; ev->override_redirect = event->u.mapNotify.override; } break; case MapRequest: { register XMapRequestEvent *ev = (XMapRequestEvent *) re; ev->window = event->u.mapRequest.window; ev->parent = event->u.mapRequest.parent; } break; case ReparentNotify: { register XReparentEvent *ev = (XReparentEvent *) re; ev->event = event->u.reparent.event; ev->window = event->u.reparent.window; ev->parent = event->u.reparent.parent; ev->x = cvtINT16toInt(event->u.reparent.x); ev->y = cvtINT16toInt(event->u.reparent.y); ev->override_redirect = event->u.reparent.override; } break; case ConfigureNotify: { register XConfigureEvent *ev = (XConfigureEvent *) re; ev->event = event->u.configureNotify.event; ev->window = event->u.configureNotify.window; ev->above = event->u.configureNotify.aboveSibling; ev->x = cvtINT16toInt(event->u.configureNotify.x); ev->y = cvtINT16toInt(event->u.configureNotify.y); ev->width = event->u.configureNotify.width; ev->height = event->u.configureNotify.height; ev->border_width = event->u.configureNotify.borderWidth; ev->override_redirect = event->u.configureNotify.override; } break; case ConfigureRequest: { register XConfigureRequestEvent *ev = (XConfigureRequestEvent *) re; ev->window = event->u.configureRequest.window; ev->parent = event->u.configureRequest.parent; ev->above = event->u.configureRequest.sibling; ev->x = cvtINT16toInt(event->u.configureRequest.x); ev->y = cvtINT16toInt(event->u.configureRequest.y); ev->width = event->u.configureRequest.width; ev->height = event->u.configureRequest.height; ev->border_width = event->u.configureRequest.borderWidth; ev->value_mask = event->u.configureRequest.valueMask; ev->detail = event->u.u.detail; } break; case GravityNotify: { register XGravityEvent *ev = (XGravityEvent *) re; ev->window = event->u.gravity.window; ev->event = event->u.gravity.event; ev->x = cvtINT16toInt(event->u.gravity.x); ev->y = cvtINT16toInt(event->u.gravity.y); } break; case ResizeRequest: { register XResizeRequestEvent *ev = (XResizeRequestEvent *) re; ev->window = event->u.resizeRequest.window; ev->width = event->u.resizeRequest.width; ev->height = event->u.resizeRequest.height; } break; case CirculateNotify: { register XCirculateEvent *ev = (XCirculateEvent *) re; ev->window = event->u.circulate.window; ev->event = event->u.circulate.event; ev->place = event->u.circulate.place; } break; case CirculateRequest: { register XCirculateRequestEvent *ev = (XCirculateRequestEvent *) re; ev->window = event->u.circulate.window; ev->parent = event->u.circulate.event; ev->place = event->u.circulate.place; } break; case PropertyNotify: { register XPropertyEvent *ev = (XPropertyEvent *) re; ev->window = event->u.property.window; ev->atom = event->u.property.atom; ev->time = event->u.property.time; ev->state = event->u.property.state; } break; case SelectionClear: { register XSelectionClearEvent *ev = (XSelectionClearEvent *) re; ev->window = event->u.selectionClear.window; ev->selection = event->u.selectionClear.atom; ev->time = event->u.selectionClear.time; } break; case SelectionRequest: { register XSelectionRequestEvent *ev = (XSelectionRequestEvent *) re; ev->owner = event->u.selectionRequest.owner; ev->requestor = event->u.selectionRequest.requestor; ev->selection = event->u.selectionRequest.selection; ev->target = event->u.selectionRequest.target; ev->property = event->u.selectionRequest.property; ev->time = event->u.selectionRequest.time; } break; case SelectionNotify: { register XSelectionEvent *ev = (XSelectionEvent *) re; ev->requestor = event->u.selectionNotify.requestor; ev->selection = event->u.selectionNotify.selection; ev->target = event->u.selectionNotify.target; ev->property = event->u.selectionNotify.property; ev->time = event->u.selectionNotify.time; } break; case ColormapNotify: { register XColormapEvent *ev = (XColormapEvent *) re; ev->window = event->u.colormap.window; ev->colormap = event->u.colormap.colormap; ev->new = event->u.colormap.new; ev->state = event->u.colormap.state; } break; case ClientMessage: { register int i; register XClientMessageEvent *ev = (XClientMessageEvent *) re; ev->window = event->u.clientMessage.window; ev->format = event->u.u.detail; switch (ev->format) { case 8: ev->message_type = event->u.clientMessage.u.b.type; for (i = 0; i < 20; i++) ev->data.b[i] = event->u.clientMessage.u.b.bytes[i]; break; case 16: ev->message_type = event->u.clientMessage.u.s.type; ev->data.s[0] = cvtINT16toShort(event->u.clientMessage.u.s.shorts0); ev->data.s[1] = cvtINT16toShort(event->u.clientMessage.u.s.shorts1); ev->data.s[2] = cvtINT16toShort(event->u.clientMessage.u.s.shorts2); ev->data.s[3] = cvtINT16toShort(event->u.clientMessage.u.s.shorts3); ev->data.s[4] = cvtINT16toShort(event->u.clientMessage.u.s.shorts4); ev->data.s[5] = cvtINT16toShort(event->u.clientMessage.u.s.shorts5); ev->data.s[6] = cvtINT16toShort(event->u.clientMessage.u.s.shorts6); ev->data.s[7] = cvtINT16toShort(event->u.clientMessage.u.s.shorts7); ev->data.s[8] = cvtINT16toShort(event->u.clientMessage.u.s.shorts8); ev->data.s[9] = cvtINT16toShort(event->u.clientMessage.u.s.shorts9); break; case 32: ev->message_type = event->u.clientMessage.u.l.type; ev->data.l[0] = cvtINT32toLong(event->u.clientMessage.u.l.longs0); ev->data.l[1] = cvtINT32toLong(event->u.clientMessage.u.l.longs1); ev->data.l[2] = cvtINT32toLong(event->u.clientMessage.u.l.longs2); ev->data.l[3] = cvtINT32toLong(event->u.clientMessage.u.l.longs3); ev->data.l[4] = cvtINT32toLong(event->u.clientMessage.u.l.longs4); break; default: /* XXX should never occur */ break; } } break; case MappingNotify: { register XMappingEvent *ev = (XMappingEvent *)re; ev->window = 0; ev->first_keycode = event->u.mappingNotify.firstKeyCode; ev->request = event->u.mappingNotify.request; ev->count = event->u.mappingNotify.count; } break; default: return(_XUnknownWireEvent(dpy, re, event)); } return(True); } static int SocketBytesReadable(Display *dpy) { int bytes = 0, last_error; #ifdef WIN32 last_error = WSAGetLastError(); ioctlsocket(ConnectionNumber(dpy), FIONREAD, &bytes); WSASetLastError(last_error); #else last_error = errno; ioctl(ConnectionNumber(dpy), FIONREAD, &bytes); errno = last_error; #endif return bytes; } _X_NORETURN void _XDefaultIOErrorExit( Display *dpy, void *user_data) { exit(1); /*NOTREACHED*/ } /* * _XDefaultIOError - Default fatal system error reporting routine. Called * when an X internal system error is encountered. */ _X_NORETURN int _XDefaultIOError( Display *dpy) { int killed = ECHECK(EPIPE); /* * If the socket was closed on the far end, the final recvmsg in * xcb will have thrown EAGAIN because we're non-blocking. Detect * this to get the more informative error message. */ if (ECHECK(EAGAIN) && SocketBytesReadable(dpy) <= 0) killed = True; if (killed) { fprintf (stderr, "X connection to %s broken (explicit kill or server shutdown).\r\n", DisplayString (dpy)); } else { fprintf (stderr, "XIO: fatal IO error %d (%s) on X server \"%s\"\r\n", #ifdef WIN32 WSAGetLastError(), strerror(WSAGetLastError()), #else errno, strerror (errno), #endif DisplayString (dpy)); fprintf (stderr, " after %lu requests (%lu known processed) with %d events remaining.\r\n", NextRequest(dpy) - 1, LastKnownRequestProcessed(dpy), QLength(dpy)); } exit(1); /*NOTREACHED*/ } static int _XPrintDefaultError( Display *dpy, XErrorEvent *event, FILE *fp) { char buffer[BUFSIZ]; char mesg[BUFSIZ]; char number[32]; const char *mtype = "XlibMessage"; register _XExtension *ext = (_XExtension *)NULL; _XExtension *bext = (_XExtension *)NULL; XGetErrorText(dpy, event->error_code, buffer, BUFSIZ); XGetErrorDatabaseText(dpy, mtype, "XError", "X Error", mesg, BUFSIZ); (void) fprintf(fp, "%s: %s\n ", mesg, buffer); XGetErrorDatabaseText(dpy, mtype, "MajorCode", "Request Major code %d", mesg, BUFSIZ); (void) fprintf(fp, mesg, event->request_code); if (event->request_code < 128) { snprintf(number, sizeof(number), "%d", event->request_code); XGetErrorDatabaseText(dpy, "XRequest", number, "", buffer, BUFSIZ); } else { for (ext = dpy->ext_procs; ext && (ext->codes.major_opcode != event->request_code); ext = ext->next) ; if (ext) { strncpy(buffer, ext->name, BUFSIZ); buffer[BUFSIZ - 1] = '\0'; } else buffer[0] = '\0'; } (void) fprintf(fp, " (%s)\n", buffer); if (event->request_code >= 128) { XGetErrorDatabaseText(dpy, mtype, "MinorCode", "Request Minor code %d", mesg, BUFSIZ); fputs(" ", fp); (void) fprintf(fp, mesg, event->minor_code); if (ext) { snprintf(mesg, sizeof(mesg), "%s.%d", ext->name, event->minor_code); XGetErrorDatabaseText(dpy, "XRequest", mesg, "", buffer, BUFSIZ); (void) fprintf(fp, " (%s)", buffer); } fputs("\n", fp); } if (event->error_code >= 128) { /* kludge, try to find the extension that caused it */ buffer[0] = '\0'; for (ext = dpy->ext_procs; ext; ext = ext->next) { if (ext->error_string) (*ext->error_string)(dpy, event->error_code, &ext->codes, buffer, BUFSIZ); if (buffer[0]) { bext = ext; break; } if (ext->codes.first_error && ext->codes.first_error < (int)event->error_code && (!bext || ext->codes.first_error > bext->codes.first_error)) bext = ext; } if (bext) snprintf(buffer, sizeof(buffer), "%s.%d", bext->name, event->error_code - bext->codes.first_error); else strcpy(buffer, "Value"); XGetErrorDatabaseText(dpy, mtype, buffer, "", mesg, BUFSIZ); if (mesg[0]) { fputs(" ", fp); (void) fprintf(fp, mesg, event->resourceid); fputs("\n", fp); } /* let extensions try to print the values */ for (ext = dpy->ext_procs; ext; ext = ext->next) { if (ext->error_values) (*ext->error_values)(dpy, event, fp); } } else if ((event->error_code == BadWindow) || (event->error_code == BadPixmap) || (event->error_code == BadCursor) || (event->error_code == BadFont) || (event->error_code == BadDrawable) || (event->error_code == BadColor) || (event->error_code == BadGC) || (event->error_code == BadIDChoice) || (event->error_code == BadValue) || (event->error_code == BadAtom)) { if (event->error_code == BadValue) XGetErrorDatabaseText(dpy, mtype, "Value", "Value 0x%x", mesg, BUFSIZ); else if (event->error_code == BadAtom) XGetErrorDatabaseText(dpy, mtype, "AtomID", "AtomID 0x%x", mesg, BUFSIZ); else XGetErrorDatabaseText(dpy, mtype, "ResourceID", "ResourceID 0x%x", mesg, BUFSIZ); fputs(" ", fp); (void) fprintf(fp, mesg, event->resourceid); fputs("\n", fp); } XGetErrorDatabaseText(dpy, mtype, "ErrorSerial", "Error Serial #%d", mesg, BUFSIZ); fputs(" ", fp); (void) fprintf(fp, mesg, event->serial); XGetErrorDatabaseText(dpy, mtype, "CurrentSerial", "Current Serial #%lld", mesg, BUFSIZ); fputs("\n ", fp); (void) fprintf(fp, mesg, (unsigned long long)(X_DPY_GET_REQUEST(dpy))); fputs("\n", fp); if (event->error_code == BadImplementation) return 0; return 1; } int _XDefaultError( Display *dpy, XErrorEvent *event) { if (_XPrintDefaultError (dpy, event, stderr) == 0) return 0; /* * Store in dpy flags that the client is exiting on an unhandled XError * (pretend it is an IOError, since the application is dying anyway it * does not make a difference). * This is useful for _XReply not to hang if the application makes Xlib * calls in _fini as part of process termination. */ dpy->flags |= XlibDisplayIOError; exit(1); /*NOTREACHED*/ } /*ARGSUSED*/ Bool _XDefaultWireError(Display *display, XErrorEvent *he, xError *we) { return True; } /* * _XError - upcall internal or user protocol error handler */ int _XError ( Display *dpy, register xError *rep) { /* * X_Error packet encountered! We need to unpack the error before * giving it to the user. */ XEvent event; /* make it a large event */ register _XAsyncHandler *async, *next; event.xerror.serial = _XSetLastRequestRead(dpy, (xGenericReply *)rep); for (async = dpy->async_handlers; async; async = next) { next = async->next; if ((*async->handler)(dpy, (xReply *)rep, (char *)rep, SIZEOF(xError), async->data)) return 0; } event.xerror.display = dpy; event.xerror.type = X_Error; event.xerror.resourceid = rep->resourceID; event.xerror.error_code = rep->errorCode; event.xerror.request_code = rep->majorCode; event.xerror.minor_code = rep->minorCode; if (dpy->error_vec && !(*dpy->error_vec[rep->errorCode])(dpy, &event.xerror, rep)) return 0; if (_XErrorFunction != NULL) { int rtn_val; #ifdef XTHREADS struct _XErrorThreadInfo thread_info = { .error_thread = xthread_self(), .next = dpy->error_threads }, **prev; dpy->error_threads = &thread_info; if (dpy->lock) (*dpy->lock->user_lock_display)(dpy); UnlockDisplay(dpy); #endif rtn_val = (*_XErrorFunction)(dpy, (XErrorEvent *)&event); /* upcall */ #ifdef XTHREADS LockDisplay(dpy); if (dpy->lock) (*dpy->lock->user_unlock_display)(dpy); /* unlink thread_info from the list */ for (prev = &dpy->error_threads; *prev != &thread_info; prev = &(*prev)->next) ; *prev = thread_info.next; #endif return rtn_val; } else { return _XDefaultError(dpy, (XErrorEvent *)&event); } } /* * _XIOError - call user connection error handler and exit */ int _XIOError ( Display *dpy) { XIOErrorExitHandler exit_handler; void *exit_handler_data; dpy->flags |= XlibDisplayIOError; #ifdef WIN32 errno = WSAGetLastError(); #endif /* This assumes that the thread calling exit will call any atexit handlers. * If this does not hold, then an alternate solution would involve * registering an atexit handler to take over the lock, which would only * assume that the same thread calls all the atexit handlers. */ #ifdef XTHREADS if (dpy->lock) (*dpy->lock->user_lock_display)(dpy); #endif exit_handler = dpy->exit_handler; exit_handler_data = dpy->exit_handler_data; UnlockDisplay(dpy); if (_XIOErrorFunction != NULL) (*_XIOErrorFunction)(dpy); else _XDefaultIOError(dpy); exit_handler(dpy, exit_handler_data); return 1; } /* * This routine can be used to (cheaply) get some memory within a single * Xlib routine for scratch space. A single buffer is reused each time * if possible. To be MT safe, you can only call this between a call to * GetReq* and a call to Data* or _XSend*, or in a context when the thread * is guaranteed to not unlock the display. */ char *_XAllocScratch( register Display *dpy, unsigned long nbytes) { if (nbytes > dpy->scratch_length) { Xfree (dpy->scratch_buffer); dpy->scratch_buffer = Xmalloc(nbytes); if (dpy->scratch_buffer) dpy->scratch_length = nbytes; else dpy->scratch_length = 0; } return (dpy->scratch_buffer); } /* * Scratch space allocator you can call any time, multiple times, and be * MT safe, but you must hand the buffer back with _XFreeTemp. */ char *_XAllocTemp( register Display *dpy, unsigned long nbytes) { char *buf; buf = _XAllocScratch(dpy, nbytes); dpy->scratch_buffer = NULL; dpy->scratch_length = 0; return buf; } void _XFreeTemp( register Display *dpy, char *buf, unsigned long nbytes) { Xfree(dpy->scratch_buffer); dpy->scratch_buffer = buf; dpy->scratch_length = nbytes; } /* * Given a visual id, find the visual structure for this id on this display. */ Visual *_XVIDtoVisual( Display *dpy, VisualID id) { register int i, j, k; register Screen *sp; register Depth *dp; register Visual *vp; for (i = 0; i < dpy->nscreens; i++) { sp = &dpy->screens[i]; for (j = 0; j < sp->ndepths; j++) { dp = &sp->depths[j]; /* if nvisuals == 0 then visuals will be NULL */ for (k = 0; k < dp->nvisuals; k++) { vp = &dp->visuals[k]; if (vp->visualid == id) return (vp); } } } return (NULL); } int XFree (void *data) { Xfree (data); return 1; } #ifdef _XNEEDBCOPYFUNC void _Xbcopy(b1, b2, length) register char *b1, *b2; register length; { if (b1 < b2) { b2 += length; b1 += length; while (length--) *--b2 = *--b1; } else { while (length--) *b2++ = *b1++; } } #endif #ifdef DataRoutineIsProcedure void Data( Display *dpy, _Xconst char *data, long len) { if (dpy->bufptr + (len) <= dpy->bufmax) { memcpy(dpy->bufptr, data, (int)len); dpy->bufptr += ((len) + 3) & ~3; } else { _XSend(dpy, data, len); } } #endif /* DataRoutineIsProcedure */ #ifdef LONG64 int _XData32( Display *dpy, _Xconst long *data, unsigned len) { register int *buf; register long i; while (len) { buf = (int *)dpy->bufptr; i = dpy->bufmax - (char *)buf; if (!i) { _XFlush(dpy); continue; } if (len < i) i = len; dpy->bufptr = (char *)buf + i; len -= i; i >>= 2; while (--i >= 0) *buf++ = *data++; } return 0; } #endif /* LONG64 */ /* Make sure this produces the same string as DefineLocal/DefineSelf in xdm. * Otherwise, Xau will not be able to find your cookies in the Xauthority file. * * Note: POSIX says that the ``nodename'' member of utsname does _not_ have * to have sufficient information for interfacing to the network, * and so, you may be better off using gethostname (if it exists). */ #if defined(_POSIX_SOURCE) || defined(SVR4) #define NEED_UTSNAME #include #else #ifdef HAVE_UNISTD_H #include #endif #endif /* * _XGetHostname - similar to gethostname but allows special processing. */ int _XGetHostname ( char *buf, int maxlen) { int len; #ifdef NEED_UTSNAME struct utsname name; if (maxlen <= 0 || buf == NULL) return 0; uname (&name); len = (int) strlen (name.nodename); if (len >= maxlen) len = maxlen - 1; strncpy (buf, name.nodename, (size_t) len); buf[len] = '\0'; #else if (maxlen <= 0 || buf == NULL) return 0; buf[0] = '\0'; (void) gethostname (buf, maxlen); buf [maxlen - 1] = '\0'; len = (int) strlen(buf); #endif /* NEED_UTSNAME */ return len; } /* * _XScreenOfWindow - get the Screen of a given window */ Screen *_XScreenOfWindow(Display *dpy, Window w) { register int i; Window root; int x, y; /* dummy variables */ unsigned int width, height, bw, depth; /* dummy variables */ if (XGetGeometry (dpy, w, &root, &x, &y, &width, &height, &bw, &depth) == False) { return NULL; } for (i = 0; i < ScreenCount (dpy); i++) { /* find root from list */ if (root == RootWindow (dpy, i)) { return ScreenOfDisplay (dpy, i); } } return NULL; } /* * WARNING: This implementation's pre-conditions and post-conditions * must remain compatible with the old macro-based implementations of * GetReq, GetReqExtra, GetResReq, and GetEmptyReq. The portions of the * Display structure affected by those macros are part of libX11's * ABI. */ void *_XGetRequest(Display *dpy, CARD8 type, size_t len) { xReq *req; if (dpy->bufptr + len > dpy->bufmax) _XFlush(dpy); /* Request still too large, so do not allow it to overflow. */ if (dpy->bufptr + len > dpy->bufmax) { fprintf(stderr, "Xlib: request %d length %zd would exceed buffer size.\n", type, len); /* Changes failure condition from overflow to NULL dereference. */ return NULL; } if (len % 4) fprintf(stderr, "Xlib: request %d length %zd not a multiple of 4.\n", type, len); dpy->last_req = dpy->bufptr; req = (xReq*)dpy->bufptr; *req = (xReq) { .reqType = type, .data = 0, .length = len / 4 }; dpy->bufptr += len; X_DPY_REQUEST_INCREMENT(dpy); return req; } #if defined(WIN32) /* * These functions are intended to be used internally to Xlib only. * These functions will always prefix the path with a DOS drive in the * form ":". As such, these functions are only suitable * for use by Xlib function that supply a root-based path to some * particular file, e.g. /lib/X11/locale/locale.dir will * be converted to "C:/usr/X11R6.3/lib/X11/locale/locale.dir". */ static int access_file (path, pathbuf, len_pathbuf, pathret) char* path; char* pathbuf; int len_pathbuf; char** pathret; { if (access (path, F_OK) == 0) { if (strlen (path) < len_pathbuf) *pathret = pathbuf; else *pathret = Xmalloc (strlen (path) + 1); if (*pathret) { strcpy (*pathret, path); return 1; } } return 0; } static int AccessFile (path, pathbuf, len_pathbuf, pathret) char* path; char* pathbuf; int len_pathbuf; char** pathret; { unsigned long drives; int i, len; char* drive; char buf[MAX_PATH]; char* bufp; /* just try the "raw" name first and see if it works */ if (access_file (path, pathbuf, len_pathbuf, pathret)) return 1; /* try the places set in the environment */ drive = getenv ("_XBASEDRIVE"); if (!drive) drive = "C:"; len = strlen (drive) + strlen (path); if (len < MAX_PATH) bufp = buf; else bufp = Xmalloc (len + 1); strcpy (bufp, drive); strcat (bufp, path); if (access_file (bufp, pathbuf, len_pathbuf, pathret)) { if (bufp != buf) Xfree (bufp); return 1; } /* one last place to look */ drive = getenv ("HOMEDRIVE"); if (drive) { len = strlen (drive) + strlen (path); if (len < MAX_PATH) bufp = buf; else bufp = Xmalloc (len + 1); strcpy (bufp, drive); strcat (bufp, path); if (access_file (bufp, pathbuf, len_pathbuf, pathret)) { if (bufp != buf) Xfree (bufp); return 1; } } /* tried everywhere else, go fishing */ #define C_DRIVE ('C' - 'A') #define Z_DRIVE ('Z' - 'A') /* does OS/2 (with or with gcc-emx) have getdrives? */ drives = _getdrives (); for (i = C_DRIVE; i <= Z_DRIVE; i++) { /* don't check on A: or B: */ if ((1 << i) & drives) { len = 2 + strlen (path); if (len < MAX_PATH) bufp = buf; else bufp = Xmalloc (len + 1); *bufp = 'A' + i; *(bufp + 1) = ':'; *(bufp + 2) = '\0'; strcat (bufp, path); if (access_file (bufp, pathbuf, len_pathbuf, pathret)) { if (bufp != buf) Xfree (bufp); return 1; } } } return 0; } int _XOpenFile(path, flags) _Xconst char* path; int flags; { char buf[MAX_PATH]; char* bufp = NULL; int ret = -1; UINT olderror = SetErrorMode (SEM_FAILCRITICALERRORS); if (AccessFile (path, buf, MAX_PATH, &bufp)) ret = open (bufp, flags); (void) SetErrorMode (olderror); if (bufp != buf) Xfree (bufp); return ret; } int _XOpenFileMode(path, flags, mode) _Xconst char* path; int flags; mode_t mode; { char buf[MAX_PATH]; char* bufp = NULL; int ret = -1; UINT olderror = SetErrorMode (SEM_FAILCRITICALERRORS); if (AccessFile (path, buf, MAX_PATH, &bufp)) ret = open (bufp, flags, mode); (void) SetErrorMode (olderror); if (bufp != buf) Xfree (bufp); return ret; } void* _XFopenFile(path, mode) _Xconst char* path; _Xconst char* mode; { char buf[MAX_PATH]; char* bufp = NULL; void* ret = NULL; UINT olderror = SetErrorMode (SEM_FAILCRITICALERRORS); if (AccessFile (path, buf, MAX_PATH, &bufp)) ret = fopen (bufp, mode); (void) SetErrorMode (olderror); if (bufp != buf) Xfree (bufp); return ret; } int _XAccessFile(path) _Xconst char* path; { char buf[MAX_PATH]; char* bufp; int ret = -1; UINT olderror = SetErrorMode (SEM_FAILCRITICALERRORS); ret = AccessFile (path, buf, MAX_PATH, &bufp); (void) SetErrorMode (olderror); if (bufp != buf) Xfree (bufp); return ret; } #endif #ifdef WIN32 #undef _Xdebug int _Xdebug = 0; int *_Xdebug_p = &_Xdebug; void (**_XCreateMutex_fn_p)(LockInfoPtr) = &_XCreateMutex_fn; void (**_XFreeMutex_fn_p)(LockInfoPtr) = &_XFreeMutex_fn; void (**_XLockMutex_fn_p)(LockInfoPtr #if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE) , char * /* file */ , int /* line */ #endif ) = &_XLockMutex_fn; void (**_XUnlockMutex_fn_p)(LockInfoPtr #if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE) , char * /* file */ , int /* line */ #endif ) = &_XUnlockMutex_fn; LockInfoPtr *_Xglobal_lock_p = &_Xglobal_lock; #endif libX11-1.8.12/src/LiICmaps.c0000644014310600000120000000407214763154126010724 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include "reallocarray.h" Colormap *XListInstalledColormaps( register Display *dpy, Window win, int *n) /* RETURN */ { unsigned long nbytes; Colormap *cmaps; xListInstalledColormapsReply rep; register xResourceReq *req; LockDisplay(dpy); GetResReq(ListInstalledColormaps, win, req); if(_XReply(dpy, (xReply *) &rep, 0, xFalse) == 0) { UnlockDisplay(dpy); SyncHandle(); *n = 0; return((Colormap *) NULL); } if (rep.nColormaps) { cmaps = Xmallocarray(rep.nColormaps, sizeof(Colormap)); if (! cmaps) { _XEatDataWords(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); return((Colormap *) NULL); } nbytes = rep.nColormaps << 2; _XRead32 (dpy, (long *) cmaps, nbytes); } else cmaps = (Colormap *) NULL; *n = rep.nColormaps; UnlockDisplay(dpy); SyncHandle(); return(cmaps); } libX11-1.8.12/src/BdrWidth.c0000644014310600000120000000314514763154126010772 /* Copyright 1994, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XSetWindowBorderWidth( Display *dpy, Window w, unsigned int width) { unsigned long lwidth = width; /* must be CARD32 */ register xConfigureWindowReq *req; LockDisplay(dpy); GetReqExtra(ConfigureWindow, 4, req); req->window = w; req->mask = CWBorderWidth; OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), lwidth); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/ChCmap.c0000644014310600000120000000311514763154126010413 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XSetWindowColormap( register Display *dpy, Window w, Colormap colormap) { register xChangeWindowAttributesReq *req; LockDisplay(dpy); GetReqExtra (ChangeWindowAttributes, 4, req); req->window = w; req->valueMask = CWColormap; OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), colormap); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/CrGlCur.c0000644014310600000120000001314714763154126010567 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #ifdef USE_DYNAMIC_XCURSOR #include #include #include #include "Cr.h" #ifdef __CYGWIN__ #define LIBXCURSOR "cygXcursor-1.dll" #endif typedef void *XModuleType; #ifndef LIBXCURSOR #define LIBXCURSOR "libXcursor.so.1" #endif static char libraryName[] = LIBXCURSOR; static XModuleType open_library (void) { char *library = libraryName; char *dot; XModuleType module; for (;;) { module = dlopen(library, RTLD_LAZY); if (module) return module; dot = strrchr (library, '.'); if (!dot) break; *dot = '\0'; } return NULL; } static void * fetch_symbol (XModuleType module, const char *under_symbol) { void *result = NULL; const char *symbol = under_symbol + 1; result = dlsym (module, symbol); if (!result) result = dlsym (module, under_symbol); return result; } typedef void (*NoticeCreateBitmapFunc) (Display *dpy, Pixmap pid, unsigned int width, unsigned int height); typedef void (*NoticePutBitmapFunc) (Display *dpy, Drawable draw, XImage *image); typedef Cursor (*TryShapeBitmapCursorFunc) (Display *dpy, Pixmap source, Pixmap mask, XColor *foreground, XColor *background, unsigned int x, unsigned int y); typedef Cursor (*TryShapeCursorFunc) (Display *dpy, Font source_font, Font mask_font, unsigned int source_char, unsigned int mask_char, XColor _Xconst *foreground, XColor _Xconst *background); static XModuleType _XcursorModule; static Bool _XcursorModuleTried; #define GetFunc(type,name,ret) do { \ static Bool been_here; \ static type staticFunc; \ \ _XLockMutex (_Xglobal_lock); \ if (!been_here) \ { \ been_here = True; \ if (!_XcursorModuleTried) \ { \ _XcursorModuleTried = True; \ _XcursorModule = open_library (); \ } \ if (_XcursorModule) \ staticFunc = (type) fetch_symbol (_XcursorModule, "_" name); \ } \ ret = staticFunc; \ _XUnlockMutex (_Xglobal_lock); \ } while (0) static Cursor _XTryShapeCursor (Display *dpy, Font source_font, Font mask_font, unsigned int source_char, unsigned int mask_char, XColor _Xconst *foreground, XColor _Xconst *background) { TryShapeCursorFunc func; GetFunc (TryShapeCursorFunc, "XcursorTryShapeCursor", func); if (func) return (*func) (dpy, source_font, mask_font, source_char, mask_char, foreground, background); return None; } void _XNoticeCreateBitmap (Display *dpy, Pixmap pid, unsigned int width, unsigned int height) { NoticeCreateBitmapFunc func; GetFunc (NoticeCreateBitmapFunc, "XcursorNoticeCreateBitmap", func); if (func) (*func) (dpy, pid, width, height); } void _XNoticePutBitmap (Display *dpy, Drawable draw, XImage *image) { NoticePutBitmapFunc func; GetFunc (NoticePutBitmapFunc, "XcursorNoticePutBitmap", func); if (func) (*func) (dpy, draw, image); } Cursor _XTryShapeBitmapCursor (Display *dpy, Pixmap source, Pixmap mask, XColor *foreground, XColor *background, unsigned int x, unsigned int y) { TryShapeBitmapCursorFunc func; GetFunc (TryShapeBitmapCursorFunc, "XcursorTryShapeBitmapCursor", func); if (func) return (*func) (dpy, source, mask, foreground, background, x, y); return None; } #endif Cursor XCreateGlyphCursor( register Display *dpy, Font source_font, Font mask_font, unsigned int source_char, unsigned int mask_char, XColor _Xconst *foreground, XColor _Xconst *background) { Cursor cid; register xCreateGlyphCursorReq *req; #ifdef USE_DYNAMIC_XCURSOR cid = _XTryShapeCursor (dpy, source_font, mask_font, source_char, mask_char, foreground, background); if (cid) return cid; #endif LockDisplay(dpy); GetReq(CreateGlyphCursor, req); cid = req->cid = XAllocID(dpy); req->source = source_font; req->mask = mask_font; req->sourceChar = source_char; req->maskChar = mask_char; req->foreRed = foreground->red; req->foreGreen = foreground->green; req->foreBlue = foreground->blue; req->backRed = background->red; req->backGreen = background->green; req->backBlue = background->blue; UnlockDisplay(dpy); SyncHandle(); return (cid); } libX11-1.8.12/src/GetWMProto.c0000644014310600000120000000605314763154126011273 /*********************************************************** Copyright 1987, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" #include #include Status XGetWMProtocols ( Display *dpy, Window w, Atom **protocols, int *countReturn) { Atom *data = NULL; Atom actual_type; Atom prop; int actual_format; unsigned long leftover, nitems; prop = XInternAtom(dpy, "WM_PROTOCOLS", False); if (prop == None) return False; /* get the property */ if (XGetWindowProperty (dpy, w, prop, 0L, 1000000L, False, XA_ATOM, &actual_type, &actual_format, &nitems, &leftover, (unsigned char **) &data) != Success) return False; if (actual_type != XA_ATOM || actual_format != 32) { Xfree (data); return False; } *protocols = (Atom *) data; *countReturn = (int) nitems; return True; } libX11-1.8.12/src/LowerWin.c0000644014310600000120000000307714763154126011035 /* Copyright 1986, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include "Xlibint.h" int XLowerWindow( Display *dpy, Window w) { register xConfigureWindowReq *req; unsigned long val = Below; /* needed for macro */ LockDisplay(dpy); GetReqExtra(ConfigureWindow, 4, req); req->window = w; req->mask = CWStackMode; OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val); UnlockDisplay(dpy); SyncHandle(); return 1; } libX11-1.8.12/src/Withdraw.c0000644014310600000120000000573014763154126011056 /*********************************************************** Copyright 1988 by Wyse Technology, Inc., San Jose, Ca., All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name Wyse not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ /* Copyright 1988, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include /* * This function instructs the window manager to change this window from * NormalState or IconicState to Withdrawn. */ Status XWithdrawWindow ( Display *dpy, Window w, int screen) { XUnmapWindow (dpy, w); { Window root = RootWindow (dpy, screen); XUnmapEvent ev = { .type = UnmapNotify, .event = root, .window = w, .from_configure = False }; return (XSendEvent (dpy, root, False, SubstructureRedirectMask|SubstructureNotifyMask, (XEvent *)&ev)); } } libX11-1.8.12/src/Cr.h0000644014310600000120000000124014763154126007626 #ifndef _CR_H_ #define _CR_H_ #include extern int _XUpdateGCCache( register GC gc, register unsigned long mask, register XGCValues *attr); extern void _XNoticeCreateBitmap( Display *dpy, Pixmap pid, unsigned int width, unsigned int height); extern void _XNoticePutBitmap( Display *dpy, Drawable draw, XImage *image); extern Cursor _XTryShapeBitmapCursor( Display *dpy, Pixmap source, Pixmap mask, XColor *foreground, XColor *background, unsigned int x, unsigned int y); #endif /* _CR_H_ */ libX11-1.8.12/src/DisName.c0000644014310600000120000000420014763154126010574 /* Copyright 1994, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ /* XDisplayName.c */ /* * Returns the name of the display XOpenDisplay would use. This is better * than just printing the "display" variable in a program because that * could be NULL and/or there could be an environment variable set. * This makes it easier for programmers to provide meaningful error * messages. * * * For example, this is used in XOpenDisplay() as * strncpy( displaybuf, XDisplayName( display ), sizeof(displaybuf) ); * if ( *displaybuf == '\0' ) return( NULL ); * This check is actually unnecessary because the next thing is an index() * call looking for a ':' which will fail and we'll return(NULL). */ /* Written at Waterloo - JMSellens */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "Xlib.h" char * XDisplayName( _Xconst char *display) { char *d; if ( display != (char *)NULL && *display != '\0' ) return( (char *)display ); if ( (d = getenv( "DISPLAY" )) != (char *)NULL ) return( d ); return( (char *) "" ); } libX11-1.8.12/Makefile.in0000644014310600000120000007561414763154146010411 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = x11.pc x11-xcb.pc CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(pkgconfigdir)" DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = include modules src nls man specs am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/x11-xcb.pc.in \ $(srcdir)/x11.pc.in $(top_srcdir)/include/X11/XlibConf.h.in \ AUTHORS COPYING ChangeLog INSTALL README.md compile \ config.guess config.sub install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -700 -exec chmod u+rwx {} ';' \ ; rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz GZIP_ENV = -9 DIST_TARGETS = dist-xz dist-gzip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = \ find . \( -type f -a \! \ \( -name .nfs* -o -name .smb* -o -name .__afs* \) \) -print ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @XLIB_LOADABLE_I18N_FALSE@ORDER = modules src @XLIB_LOADABLE_I18N_TRUE@ORDER = src modules # Order: nls before specs SUBDIRS = include $(ORDER) nls man specs ACLOCAL_AMFLAGS = -I m4 pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = x11.pc x11-xcb.pc MAINTAINERCLEANFILES = ChangeLog INSTALL # Check source code with tools like lint & sparse @LINT_TRUE@LINT_SUBDIRS = src # modules EXTRA_DIST = README.md all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): include/X11/XlibConf.h: include/X11/stamp-h2 @test -f $@ || rm -f include/X11/stamp-h2 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) include/X11/stamp-h2 include/X11/stamp-h2: $(top_srcdir)/include/X11/XlibConf.h.in $(top_builddir)/config.status $(AM_V_at)rm -f include/X11/stamp-h2 $(AM_V_GEN)cd $(top_builddir) && $(SHELL) ./config.status include/X11/XlibConf.h distclean-hdr: -rm -f include/X11/XlibConf.h include/X11/stamp-h2 x11.pc: $(top_builddir)/config.status $(srcdir)/x11.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ x11-xcb.pc: $(top_builddir)/config.status $(srcdir)/x11-xcb.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) $(AM_V_at)$(MKDIR_P) "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -$(am__rm_f) $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \ dist-tarZ dist-xz dist-zip dist-zstd distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-pkgconfigDATA .PRECIOUS: Makefile .PHONY: ChangeLog INSTALL INSTALL: $(INSTALL_CMD) ChangeLog: $(CHANGELOG_CMD) dist-hook: ChangeLog INSTALL @LINT_TRUE@lint: @LINT_TRUE@ @for subdir in $(LINT_SUBDIRS) ; do \ @LINT_TRUE@ echo "Making $@ in $$subdir"; \ @LINT_TRUE@ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) lint) ; \ @LINT_TRUE@ done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/docbook.am0000644014310600000120000000623114763154126010266 # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # # DocBook/XML generated output formats to be installed shelf_DATA = # DocBook/XML file with chapters, appendix and images it includes dist_shelf_DATA = $(docbook) $(chapters) if HAVE_XMLTO if HAVE_STYLESHEETS XMLTO_SEARCHPATH_FLAGS = \ --searchpath "$(XORG_SGML_PATH)/X11" \ --searchpath "$(abs_top_builddir)" XMLTO_HTML_OLINK_FLAGS = \ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ --stringparam current.docid="$(<:.xml=)" XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl XMLTO_HTML_FLAGS = \ $(XMLTO_SEARCHPATH_FLAGS) \ $(XMLTO_HTML_STYLESHEET_FLAGS) \ $(XMLTO_HTML_OLINK_FLAGS) shelf_DATA += $(docbook:.xml=.html) %.html: %.xml $(chapters) $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< if HAVE_XMLTO_TEXT shelf_DATA += $(docbook:.xml=.txt) %.txt: %.xml $(chapters) $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< endif HAVE_XMLTO_TEXT if HAVE_FOP XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ XMLTO_PDF_OLINK_FLAGS = \ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ --stringparam current.docid="$(<:.xml=)" XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl XMLTO_FO_FLAGS = \ $(XMLTO_SEARCHPATH_FLAGS) \ $(XMLTO_FO_STYLESHEET_FLAGS) \ $(XMLTO_FO_IMAGEPATH_FLAGS) \ $(XMLTO_PDF_OLINK_FLAGS) shelf_DATA += $(docbook:.xml=.pdf) %.pdf: %.xml $(chapters) $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< shelf_DATA += $(docbook:.xml=.ps) %.ps: %.xml $(chapters) $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< endif HAVE_FOP # Generate documents cross-reference target databases if HAVE_XSLTPROC XSLT_SEARCHPATH_FLAGS = \ --path "$(XORG_SGML_PATH)/X11" \ --path "$(abs_top_builddir)" XSLT_OLINK_FLAGS = \ --stringparam targets.filename "$@" \ --stringparam collect.xref.targets "only" \ --stringparam olink.base.uri "$(@:.db=)" XSLT_HTML_FLAGS = \ $(XSLT_SEARCHPATH_FLAGS) \ $(XSLT_OLINK_FLAGS) \ --nonet --xinclude \ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl XSLT_PDF_FLAGS = \ $(XSLT_SEARCHPATH_FLAGS) \ $(XSLT_OLINK_FLAGS) \ --nonet --xinclude \ $(STYLESHEET_SRCDIR)/xorg-fo.xsl shelf_DATA += $(docbook:.xml=.html.db) %.html.db: %.xml $(chapters) $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< shelf_DATA += $(docbook:.xml=.pdf.db) %.pdf.db: %.xml $(chapters) $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< endif HAVE_XSLTPROC endif HAVE_STYLESHEETS endif HAVE_XMLTO CLEANFILES = $(shelf_DATA) libX11-1.8.12/cpprules.in0000644014310600000120000000232714763154126010516 # -*- Makefile -*- # Rules for generating files using the C pre-processor # (Replaces CppFileTarget from Imake) C_SED = LC_CTYPE=C $(SED) SUFFIXES += .pre WCHAR32_FLAGS = -DWCHAR32=@WCHAR32@ CPP_FILES_FLAGS = $(WCHAR32_FLAGS) # Translate XCOMM into pound sign with sed, rather than passing -DXCOMM=XCOMM # to cpp, because that trick does not work on all ANSI C preprocessors. # Delete line numbers from the cpp output (-P is not portable, I guess). # Allow XCOMM to be preceded by whitespace and provide a means of generating # output lines with trailing backslashes. # Allow XHASH to always be substituted, even in cases where XCOMM isn't. CPP_SED_MAGIC = $(C_SED) -e '/^\# *[0-9][0-9]* *.*$$/d' \ -e '/^\#line *[0-9][0-9]* *.*$$/d' \ -e '/^[ ]*XCOMM$$/s/XCOMM/\#/' \ -e '/^[ ]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/\#/' \ -e '/^[ ]*XHASH/s/XHASH/\#/' \ -e 's,X11_LOCALEDATADIR,$(X11_LOCALEDATADIR),g' \ -e '/\@\@$$/s/\@\@$$/\\/' \ -e '/^$$/d' .pre: @$(MKDIR_P) $(@D) $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $< | $(CPP_SED_MAGIC) > $@ libX11-1.8.12/INSTALL0000644014310600000120000003660014763154164007365 Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX `make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as `configure' are involved. Use GNU `make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. libX11-1.8.12/man/0000755014310600000120000000000014763154171007160 5libX11-1.8.12/man/XListExtensions.man0000644014310600000120000000007114763154126012716 .so man__libmansuffix__/XQueryExtension.__libmansuffix__ libX11-1.8.12/man/XcmsCIELabQueryMinL.man0000644014310600000120000000007514763154126013257 .so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__ libX11-1.8.12/man/XFindContext.man0000644014310600000120000000006614763154126012154 .so man__libmansuffix__/XSaveContext.__libmansuffix__ libX11-1.8.12/man/XAllocClassHint.man0000644014310600000120000001342214763154126012572 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XAllocClassHint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllocClassHint, XSetClassHint, XGetClassHint, XClassHint \- allocate class hints structure and set or read a window's WM_CLASS property .SH SYNTAX .HP XClassHint *XAllocClassHint\^(void\^); .HP XSetClassHint\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XClassHint *\fIclass_hints\fP\^); .HP Status XGetClassHint\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XClassHint *\fIclass_hints_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIclass_hints\fP 1i Specifies the .B XClassHint structure that is to be used. .IP \fIclass_hints_return\fP 1i Returns the .B XClassHint structure. .IP \fIw\fP 1i Specifies the window. .SH DESCRIPTION The .B XAllocClassHint function allocates and returns a pointer to a .B XClassHint structure. Note that the pointer fields in the .B XClassHint structure are initially set to NULL. If insufficient memory is available, .B XAllocClassHint returns NULL. To free the memory allocated to this structure, use .BR XFree . .LP The .B XSetClassHint function sets the class hint for the specified window. If the strings are not in the Host Portable Character Encoding, the result is implementation-dependent. .LP .B XSetClassHint can generate .B BadAlloc and .B BadWindow errors. .LP The .B XGetClassHint function returns the class hint of the specified window to the members of the supplied structure. If the data returned by the server is in the Latin Portable Character Encoding, then the returned strings are in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. It returns a nonzero status on success; otherwise, it returns a zero status. To free res_name and res_class when finished with the strings, use .B XFree on each individually. .LP .B XGetClassHint can generate a .B BadWindow error. .SH PROPERTIES .TP 1i \s-1WM_CLASS\s+1 Set by application programs to allow window and session managers to obtain the application's resources from the resource database. .SH STRUCTURES The .B XClassHint structure contains: .LP .EX typedef struct { char *res_name; char *res_class; } XClassHint; .LP The res_name member contains the application name, and the res_class member contains the application class. Note that the name set in this property may differ from the name set as WM_NAME. That is, WM_NAME specifies what should be displayed in the title bar and, therefore, can contain temporal information (for example, the name of a file currently in an editor's buffer). On the other hand, the name specified as part of WM_CLASS is the formal name of the application that should be used when retrieving the application's resources from the resource database. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" .na XAllocIconSize(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XAllocWMHints(__libmansuffix__), XFree(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XSetWMProtocols(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetTile.man0000644014310600000120000001124714763154126011303 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetTile __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetTile, XSetStipple, XSetTSOrigin \- GC convenience routines .SH SYNTAX .HP int XSetTile\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Pixmap \fItile\fP\^); .HP int XSetStipple\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Pixmap \fIstipple\fP\^); .HP int XSetTSOrigin\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int \fIts_x_origin\fP\^, int \fIts_y_origin\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fIstipple\fP 1i Specifies the stipple you want to set for the specified GC. .IP \fItile\fP 1i Specifies the fill tile you want to set for the specified GC. .IP \fIts_x_origin\fP 1i .br .ns .IP \fIts_y_origin\fP 1i Specify the x and y coordinates of the tile and stipple origin. .SH DESCRIPTION The .B XSetTile function sets the fill tile in the specified GC. The tile and GC must have the same depth, or a .B BadMatch error results. .LP .B XSetTile can generate .BR BadAlloc , .BR BadGC , .BR BadMatch , and .B BadPixmap errors. .LP The .B XSetStipple function sets the stipple in the specified GC. The stipple must have a depth of one, or a .B BadMatch error results. .LP .B XSetStipple can generate .BR BadAlloc , .BR BadGC , .BR BadMatch , and .B BadPixmap errors. .LP The .B XSetTSOrigin function sets the tile/stipple origin in the specified GC. When graphics requests call for tiling or stippling, the parent's origin will be interpreted relative to whatever destination drawable is specified in the graphics request. .LP .B XSetTSOrigin can generate .B BadAlloc and .B BadGC errors. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadPixmap A value for a Pixmap argument does not name a defined Pixmap. .SH "SEE ALSO" XCreateGC(__libmansuffix__), XQueryBestSize(__libmansuffix__), XSetArcMode(__libmansuffix__), XSetClipOrigin(__libmansuffix__), XSetFillStyle(__libmansuffix__), XSetFont(__libmansuffix__), XSetLineAttributes(__libmansuffix__), XSetState(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XcmsCIELabQueryMaxL.man0000644014310600000120000000007514763154126013261 .so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__ libX11-1.8.12/man/XDrawLines.man0000644014310600000120000000006314763154126011614 .so man__libmansuffix__/XDrawLine.__libmansuffix__ libX11-1.8.12/man/XSynchronize.man0000644014310600000120000000653114763154126012245 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSynchronize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSynchronize, XSetAfterFunction \- enable or disable synchronization .SH SYNTAX .HP int (*XSynchronize\^(\^Display *\fIdisplay\fP\^, Bool \fIonoff\fP\^))(); .HP int (*XSetAfterFunction\^(\^Display *\fIdisplay\fP\^, int (\^*\^\fIprocedure\fP\^)\^()))(); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIprocedure\fP 1i Specifies the procedure to be called. .IP \fIonoff\fP 1i Specifies a Boolean value that indicates whether to enable or disable synchronization. .SH DESCRIPTION The .B XSynchronize function returns the previous after function. If onoff is .BR True , .B XSynchronize turns on synchronous behavior. If onoff is .BR False , .B XSynchronize turns off synchronous behavior. .LP The specified procedure is called with only a display pointer. .B XSetAfterFunction returns the previous after function. .SH "SEE ALSO" XSetErrorHandler(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XDisableAccessControl.man0000644014310600000120000000006214763154126013751 .so man__libmansuffix__/XAddHost.__libmansuffix__ libX11-1.8.12/man/XSetLineAttributes.man0000644014310600000120000001433514763154126013345 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetLineAttributes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetLineAttributes, XSetDashes \- GC convenience routines .SH SYNTAX .HP int XSetLineAttributes\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned int \fIline_width\fP\^, int \fIline_style\fP\^, int \fIcap_style\fP\^, int \fIjoin_style\fP\^); .HP int XSetDashes\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int \fIdash_offset\fP\^, _Xconst char \fIdash_list\fP[]\^, int \fIn\fP\^); .SH ARGUMENTS .IP \fIcap_style\fP 1i Specifies the line-style and cap-style you want to set for the specified GC. You can pass .BR CapNotLast , .BR CapButt , .BR CapRound , or .BR CapProjecting . .IP \fIdash_list\fP 1i Specifies the dash-list for the dashed line-style you want to set for the specified GC. .IP \fIdash_offset\fP 1i Specifies the phase of the pattern for the dashed line-style you want to set for the specified GC. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fIjoin_style\fP 1i Specifies the line join-style you want to set for the specified GC. You can pass .BR JoinMiter , .BR JoinRound , or .BR JoinBevel . .IP \fIline_style\fP 1i Specifies the line-style you want to set for the specified GC. You can pass .BR LineSolid , .BR LineOnOffDash , or .BR LineDoubleDash . .IP \fIline_width\fP 1i Specifies the line-width you want to set for the specified GC. .IP \fIn\fP 1i Specifies the number of elements in dash_list. .SH DESCRIPTION The .B XSetLineAttributes function sets the line drawing components in the specified GC. .LP .B XSetLineAttributes can generate .BR BadAlloc , .BR BadGC , and .B BadValue errors. .LP The .B XSetDashes function sets the dash-offset and dash-list attributes for dashed line styles in the specified GC. There must be at least one element in the specified dash_list, or a .B BadValue error results. The initial and alternating elements (second, fourth, and so on) of the dash_list are the even dashes, and the others are the odd dashes. Each element specifies a dash length in pixels. All of the elements must be nonzero, or a .B BadValue error results. Specifying an odd-length list is equivalent to specifying the same list concatenated with itself to produce an even-length list. .LP The dash-offset defines the phase of the pattern, specifying how many pixels into the dash-list the pattern should actually begin in any single graphics request. Dashing is continuous through path elements combined with a join-style but is reset to the dash-offset between each sequence of joined lines. .LP The unit of measure for dashes is the same for the ordinary coordinate system. Ideally, a dash length is measured along the slope of the line, but implementations are only required to match this ideal for horizontal and vertical lines. Failing the ideal semantics, it is suggested that the length be measured along the major axis of the line. The major axis is defined as the x axis for lines drawn at an angle of between \-45 and +45 degrees or between 135 and 225 degrees from the x axis. For all other lines, the major axis is the y axis. .LP .B XSetDashes can generate .BR BadAlloc , .BR BadGC , and .B BadValue errors. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XCreateGC(__libmansuffix__), XQueryBestSize(__libmansuffix__), XSetArcMode(__libmansuffix__), XSetClipOrigin(__libmansuffix__), XSetFillStyle(__libmansuffix__), XSetFont(__libmansuffix__), XSetState(__libmansuffix__), XSetTile(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XDrawPoint.man0000644014310600000120000001217714763154126011644 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XDrawPoint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawPoint, XDrawPoints, XPoint \- draw points and points structure .SH SYNTAX .HP int XDrawPoint\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^); .HP int XDrawPoints\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, XPoint *\fIpoints\fP\^, int \fInpoints\fP\^, int \fImode\fP\^); .SH ARGUMENTS .IP \fId\fP 1i Specifies the drawable. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fImode\fP 1i Specifies the coordinate mode. You can pass .B CoordModeOrigin or .BR CoordModePrevious . .IP \fInpoints\fP 1i Specifies the number of points in the array. .IP \fIpoints\fP 1i Specifies an array of points. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates where you want the point drawn. .SH DESCRIPTION The .B XDrawPoint function uses the foreground pixel and function components of the GC to draw a single point into the specified drawable; .B XDrawPoints draws multiple points this way. .B CoordModeOrigin treats all coordinates as relative to the origin, and .B CoordModePrevious treats all coordinates after the first as relative to the previous point. .B XDrawPoints draws the points in the order listed in the array. .LP Both functions use these GC components: function, plane-mask, foreground, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. .LP .B XDrawPoint can generate .BR BadDrawable , .BR BadGC , and .B BadMatch errors. .B XDrawPoints can generate .BR BadDrawable , .BR BadGC , .BR BadMatch , and .B BadValue errors. .SH STRUCTURES The .B XPoint structure contains: .LP .EX typedef struct { short x, y; } XPoint; .EE .LP All x and y members are signed integers. The width and height members are 16-bit unsigned integers. You should be careful not to generate coordinates and sizes out of the 16-bit ranges, because the protocol only has 16-bit fields for these values. .SH DIAGNOSTICS .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XDrawArc(__libmansuffix__), XDrawLine(__libmansuffix__), XDrawRectangle(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XGetSelectionOwner.man0000644014310600000120000000007414763154126013326 .so man__libmansuffix__/XSetSelectionOwner.__libmansuffix__ libX11-1.8.12/man/XGraphicsExposeEvent.man0000644014310600000120000001524314763154126013660 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XGraphicsExposeEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGraphicsExposeEvent, XNoExposeEvent \- GraphicsExpose and NoExpose event structures .SH STRUCTURES The structures for .B GraphicsExpose and .B NoExpose events contain: .LP .EX typedef struct { int type; /\&* GraphicsExpose */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Drawable drawable; int x, y; int width, height; int count; /\&* if nonzero, at least this many more */ int major_code; /\&* core is CopyArea or CopyPlane */ int minor_code; /\&* not defined in the core */ } XGraphicsExposeEvent; .EE .LP .EX typedef struct { int type; /\&* NoExpose */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Drawable drawable; int major_code; /\&* core is CopyArea or CopyPlane */ int minor_code; /\&* not defined in the core */ } XNoExposeEvent; .EE .LP When you receive these events, their structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP Both structures have these common members: drawable, major_code, and minor_code. The drawable member is set to the drawable of the destination region on which the graphics request was to be performed. The major_code member is set to the graphics request initiated by the client and can be either .B X_CopyArea or .BR X_CopyPlane . If it is .BR X_CopyArea , a call to .B XCopyArea initiated the request. If it is .BR X_CopyPlane , a call to .B XCopyPlane initiated the request. These constants are defined in .BR X11/Xproto.h . The minor_code member, like the major_code member, indicates which graphics request was initiated by the client. However, the minor_code member is not defined by the core X protocol and will be zero in these cases, although it may be used by an extension. .LP The .B XGraphicsExposeEvent structure has these additional members: x, y, width, height, and count. The x and y members are set to the coordinates relative to the drawable's origin and indicate the upper-left corner of the rectangle. The width and height members are set to the size (extent) of the rectangle. The count member is set to the number of .B GraphicsExpose events to follow. If count is zero, no more .B GraphicsExpose events follow for this window. However, if count is nonzero, at least that number of .B GraphicsExpose events (and possibly more) are to follow for this window. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCopyArea(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSubtractRegion.man0000644014310600000120000000007214763154126012657 .so man__libmansuffix__/XIntersectRegion.__libmansuffix__ libX11-1.8.12/man/XAddConnectionWatch.man0000644014310600000120000001363114763154126013430 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XAddConnectionWatch __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAddConnectionWatch, XRemoveConnectionWatch, XProcessInternalConnection, XInternalConnectionNumbers \- handle Xlib internal connections .SH SYNTAX .HP typedef void (*XConnectionWatchProc)\^(\^Display *\fIdisplay\fP\^, XPointer \fIclient_data\fP\^, int \fIfd\fP\^, Bool \fIopening\fP\^, XPointer *\fIwatch_data\fP\^); .HP Status XAddConnectionWatch\^(\^Display *\fIdisplay\fP\^, XConnectionWatchProc \fIprocedure\fP\^, XPointer \fIclient_data\fP\^); .HP void XRemoveConnectionWatch\^(\^Display *\fIdisplay\fP\^, XConnectionWatchProc \fIprocedure\fP\^, XPointer \fIclient_data\fP\^); .HP void XProcessInternalConnection\^(\^Display *\fIdisplay\fP\^, int \fIfd\fP\^); .HP Status XInternalConnectionNumbers\^(\^Display *\fIdisplay\fP\^, int **\fIfd_return\fP\^, int *\fIcount_return\fP\^); .SH ARGUMENTS .IP \fIclient_data\fP 1i Specifies the additional client data. .IP \fIcount_return\fP 1i Returns the number of file descriptors. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIfd\fP 1i Specifies the file descriptor. .IP \fIfd_return\fP 1i Returns the file descriptors. .IP \fIprocedure\fP 1i Specifies the procedure to be called. .SH DESCRIPTION The .B XAddConnectionWatch function registers a procedure to be called each time Xlib opens or closes an internal connection for the specified display. The procedure is passed the display, the specified client_data, the file descriptor for the connection, a Boolean indicating whether the connection is being opened or closed, and a pointer to a location for private watch data. If opening is .BR True , the procedure can store a pointer to private data in the location pointed to by watch_data; when the procedure is later called for this same connection and opening is .BR False , the location pointed to by watch_data will hold this same private data pointer. .LP This function can be called at any time after a display is opened. If internal connections already exist, the registered procedure will immediately be called for each of them, before .B XAddConnectionWatch returns. .B XAddConnectionWatch returns a nonzero status if the procedure is successfully registered; otherwise, it returns zero. .LP The registered procedure should not call any Xlib functions. If the procedure directly or indirectly causes the state of internal connections or watch procedures to change, the result is not defined. If Xlib has been initialized for threads, the procedure is called with the display locked and the result of a call by the procedure to any Xlib function that locks the display is not defined unless the executing thread has externally locked the display using .BR XLockDisplay . .LP The .B XRemoveConnectionWatch function removes a previously registered connection watch procedure. The client_data must match the client_data used when the procedure was initially registered. .LP The .B XProcessInternalConnection function processes input available on an internal connection. This function should be called for an internal connection only after an operating system facility (for example, .B select or .BR poll ) has indicated that input is available; otherwise, the effect is not defined. .LP The .B XInternalConnectionNumbers function returns a list of the file descriptors for all internal connections currently open for the specified display. When the allocated list is no longer needed, free it by using .BR XFree . This functions returns a nonzero status if the list is successfully allocated; otherwise, it returns zero. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XCirculateSubwindowsDown.man0000644014310600000120000000006614763154126014557 .so man__libmansuffix__/XRaiseWindow.__libmansuffix__ libX11-1.8.12/man/XmbTextExtents.man0000644014310600000120000001266014763154126012550 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Copyright \(co 2000 The XFree86 Project, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XmbTextExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbTextExtents, XwcTextExtents, Xutf8TextExtents \- compute text extents .SH SYNTAX .HP int XmbTextExtents\^(\^XFontSet \fIfont_set\fP\^, _Xconst char *\fIstring\fP\^, int \fInum_bytes\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle *\fIoverall_logical_return\fP\^); .HP int XwcTextExtents\^(\^XFontSet \fIfont_set\fP\^, _Xconst wchar_t *\fIstring\fP\^, int \fInum_wchars\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle *\fIoverall_logical_return\fP\^); .HP int Xutf8TextExtents\^(\^XFontSet \fIfont_set\fP\^, _Xconst char *\fIstring\fP\^, int \fInum_bytes\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle *\fIoverall_logical_return\fP\^); .SH ARGUMENTS .IP \fIfont_set\fP 1i Specifies the font set. .IP \fInum_bytes\fP 1i Specifies the number of bytes in the string argument. .IP \fInum_wchars\fP 1i Specifies the number of characters in the string argument. .IP \fIoverall_ink_return\fP 1i Returns the overall ink dimensions. .IP \fIoverall_logical_return\fP 1i Returns the overall logical dimensions. .IP \fIstring\fP 1i Specifies the character string. .SH DESCRIPTION The .BR XmbTextExtents , .B XwcTextExtents and .B Xutf8TextExtents functions set the components of the specified overall_ink_return and overall_logical_return arguments to the overall bounding box of the string's image and a logical bounding box for spacing purposes, respectively. They return the value returned by .BR XmbTextEscapement , .B XwcTextEscapement or .BR Xutf8TextEscapement . These metrics are relative to the drawing origin of the string, using the fonts loaded for the specified font set. .LP If the overall_ink_return argument is non-NULL, it is set to the bounding box of the string's character ink. The overall_ink_return for a nondescending, horizontally drawn Latin character is conventionally entirely above the baseline; that is, overall_ink_return.height <= \-overall_ink_return.y. The overall_ink_return for a nonkerned character is entirely at, and to the right of, the origin; that is, overall_ink_return.x >= 0. A character consisting of a single pixel at the origin would set overall_ink_return fields y = 0, x = 0, width = 1, and height = 1. .LP If the overall_logical_return argument is non-NULL, it is set to the bounding box that provides minimum spacing to other graphical features for the string. Other graphical features, for example, a border surrounding the text, should not intersect this rectangle. .LP When the .B XFontSet has missing charsets, metrics for each unavailable character are taken from the default string returned by .B XCreateFontSet so that the metrics represent the text as it will actually be drawn. The behavior for an invalid codepoint is undefined. .LP The function .B Xutf8TextExtents is an extension introduced by The XFree86 Project, Inc., in their 4.0.2 release. Its presence is indicated by the macro .BR X_HAVE_UTF8_STRING . .SH "SEE ALSO" XmbTextEscapement(__libmansuffix__), XmbTextPerCharExtents(__libmansuffix__) \fI\*(xL\fP libX11-1.8.12/man/BitmapBitOrder.man0000644014310600000120000000007014763154126012441 .so man__libmansuffix__/ImageByteOrder.__libmansuffix__ libX11-1.8.12/man/XStringToKeysym.man0000644014310600000120000001204014763154126012675 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XStringToKeysym __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XStringToKeysym, XKeysymToString, XKeycodeToKeysym, XKeysymToKeycode, XConvertCase \- convert keysyms .SH SYNTAX .HP KeySym XStringToKeysym\^(\^_Xconst char *\fIstring\fP\^); .HP char *XKeysymToString\^(\^KeySym \fIkeysym\fP\^); .HP KeySym XKeycodeToKeysym\^(\^Display *\fIdisplay\fP\^, KeyCode \fIkeycode\fP\^, int \fIindex\fP\^); .HP KeyCode XKeysymToKeycode\^(\^Display *\fIdisplay\fP\^, KeySym \fIkeysym\fP\^); .HP void XConvertCase(\^KeySym \fIkeysym\fP\^, KeySym *\fIlower_return\fP\^, KeySym *\fIupper_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIindex\fP 1i Specifies the element of KeyCode vector. .IP \fIkeycode\fP 1i Specifies the KeyCode. .IP \fIkeysym\fP 1i Specifies the KeySym that is to be searched for or converted. .IP \fIlower_return\fP 1i Returns the lowercase form of keysym, or keysym. .IP \fIstring\fP 1i Specifies the name of the KeySym that is to be converted. .IP \fIupper_return\fP 1i Returns the uppercase form of keysym, or keysym. .SH DESCRIPTION Standard KeySym names are obtained from .B X11/keysymdef.h by removing the XK_ prefix from each name. KeySyms that are not part of the Xlib standard also may be obtained with this function. The set of KeySyms that are available in this manner and the mechanisms by which Xlib obtains them is implementation-dependent. .LP If the KeySym name is not in the Host Portable Character Encoding, the result is implementation-dependent. If the specified string does not match a valid KeySym, .B XStringToKeysym returns .BR NoSymbol . .LP The returned string is in a static area and must not be modified. The returned string is in the Host Portable Character Encoding. If the specified KeySym is not defined, .B XKeysymToString returns a NULL. .LP The .B XKeycodeToKeysym function uses internal Xlib tables and returns the KeySym defined for the specified KeyCode and the element of the KeyCode vector. If no symbol is defined, .B XKeycodeToKeysym returns .BR NoSymbol . .B XKeycodeToKeysym predates the XKB extension. If you want to lookup a KeySym while using XKB you have to use .BR XkbKeycodeToKeysym . .LP If the specified KeySym is not defined for any KeyCode, .B XKeysymToKeycode returns zero. .LP The .B XConvertCase function returns the uppercase and lowercase forms of the specified Keysym, if the KeySym is subject to case conversion; otherwise, the specified KeySym is returned to both lower_return and upper_return. Support for conversion of other than Latin and Cyrillic KeySyms is implementation-dependent. .SH "SEE ALSO" XkbKeycodeToKeysym(__libmansuffix__), XLookupKeysym(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetWMSizeHints.man0000644014310600000120000000007114763154126012563 .so man__libmansuffix__/XAllocSizeHints.__libmansuffix__ libX11-1.8.12/man/XMapSubwindows.man0000644014310600000120000000006414763154126012527 .so man__libmansuffix__/XMapWindow.__libmansuffix__ libX11-1.8.12/man/XGetTransientForHint.man0000644014310600000120000000007614763154126013631 .so man__libmansuffix__/XSetTransientForHint.__libmansuffix__ libX11-1.8.12/man/XDisplayMotionBufferSize.man0000644014310600000120000000006414763154126014505 .so man__libmansuffix__/XSendEvent.__libmansuffix__ libX11-1.8.12/man/XrmDestroyDatabase.man0000644014310600000120000000007414763154126013343 .so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__ libX11-1.8.12/man/XRemoveHosts.man0000644014310600000120000000006214763154126012201 .so man__libmansuffix__/XAddHost.__libmansuffix__ libX11-1.8.12/man/IsKeypadKey.man0000644014310600000120000000006514763154126011760 .so man__libmansuffix__/IsCursorKey.__libmansuffix__ libX11-1.8.12/man/XMapWindow.man0000644014310600000120000001363114763154126011636 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XMapWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XMapWindow, XMapRaised, XMapSubwindows \- map windows .SH SYNTAX .HP int XMapWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .HP int XMapRaised\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .HP int XMapSubwindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIw\fP 1i Specifies the window. .SH DESCRIPTION The .B XMapWindow function maps the window and all of its subwindows that have had map requests. Mapping a window that has an unmapped ancestor does not display the window but marks it as eligible for display when the ancestor becomes mapped. Such a window is called unviewable. When all its ancestors are mapped, the window becomes viewable and will be visible on the screen if it is not obscured by another window. This function has no effect if the window is already mapped. .LP If the override-redirect of the window is .B False and if some other client has selected .B SubstructureRedirectMask on the parent window, then the X server generates a .B MapRequest event, and the .B XMapWindow function does not map the window. Otherwise, the window is mapped, and the X server generates a .B MapNotify event. .LP If the window becomes viewable and no earlier contents for it are remembered, the X server tiles the window with its background. If the window's background is undefined, the existing screen contents are not altered, and the X server generates zero or more .B Expose events. If backing-store was maintained while the window was unmapped, no .B Expose events are generated. If backing-store will now be maintained, a full-window exposure is always generated. Otherwise, only visible regions may be reported. Similar tiling and exposure take place for any newly viewable inferiors. .LP If the window is an .B InputOutput window, .B XMapWindow generates .B Expose events on each .B InputOutput window that it causes to be displayed. If the client maps and paints the window and if the client begins processing events, the window is painted twice. To avoid this, first ask for .B Expose events and then map the window, so the client processes input events as usual. The event list will include .B Expose for each window that has appeared on the screen. The client's normal response to an .B Expose event should be to repaint the window. This method usually leads to simpler programs and to proper interaction with window managers. .LP .B XMapWindow can generate a .B BadWindow error. .LP The .B XMapRaised function essentially is similar to .B XMapWindow in that it maps the window and all of its subwindows that have had map requests. However, it also raises the specified window to the top of the stack. .LP .B XMapRaised can generate a .B BadWindow error. .LP The .B XMapSubwindows function maps all subwindows for a specified window in top-to-bottom stacking order. The X server generates .B Expose events on each newly displayed window. This may be much more efficient than mapping many windows one at a time because the server needs to perform much of the work only once, for all of the windows, rather than for each window. .LP .B XMapSubwindows can generate a .B BadWindow error. .SH DIAGNOSTICS .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XChangeWindowAttributes(__libmansuffix__), XConfigureWindow(__libmansuffix__), XCreateWindow(__libmansuffix__), XDestroyWindow(__libmansuffix__), XRaiseWindow(__libmansuffix__), XUnmapWindow(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XDestroyImage.man0000644014310600000120000000006414763154126012321 .so man__libmansuffix__/XInitImage.__libmansuffix__ libX11-1.8.12/man/ProtocolVersion.man0000644014310600000120000000006314763154126012743 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/DisplayHeight.man0000644014310600000120000000007014763154126012330 .so man__libmansuffix__/ImageByteOrder.__libmansuffix__ libX11-1.8.12/man/IsPFKey.man0000644014310600000120000000006514763154126011050 .so man__libmansuffix__/IsCursorKey.__libmansuffix__ libX11-1.8.12/man/XGrabKey.man0000644014310600000120000001540214763154126011253 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XGrabKey __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGrabKey, XUngrabKey \- grab keyboard keys .SH SYNTAX .HP int XGrabKey\^(\^Display *\fIdisplay\fP\^, int \fIkeycode\fP\^, unsigned int \fImodifiers\fP\^, Window \fIgrab_window\fP\^, Bool \fIowner_events\fP\^, int \fIpointer_mode\fP\^, int \fIkeyboard_mode\fP\^); .HP int XUngrabKey\^(\^Display *\fIdisplay\fP\^, int \fIkeycode\fP\^, unsigned int \fImodifiers\fP\^, Window \fIgrab_window\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgrab_window\fP 1i Specifies the grab window. .IP \fIkeyboard_mode\fP 1i Specifies further processing of keyboard events. You can pass .B GrabModeSync or .BR GrabModeAsync . .IP \fIkeycode\fP 1i Specifies the KeyCode or .BR AnyKey . .IP \fImodifiers\fP 1i Specifies the set of keymasks or .BR AnyModifier . The mask is the bitwise inclusive OR of the valid keymask bits. .IP \fIowner_events\fP 1i Specifies a Boolean value that indicates whether the keyboard events are to be reported as usual. .IP \fIpointer_mode\fP 1i Specifies further processing of pointer events. You can pass .B GrabModeSync or .BR GrabModeAsync . .SH DESCRIPTION The .B XGrabKey function establishes a passive grab on the keyboard. In the future, the keyboard is actively grabbed (as for .BR XGrabKeyboard ), the last-keyboard-grab time is set to the time at which the key was pressed (as transmitted in the .B KeyPress event), and the .B KeyPress event is reported if all of the following conditions are true: .IP \(bu 5 The keyboard is not grabbed and the specified key (which can itself be a modifier key) is logically pressed when the specified modifier keys are logically down, and no other modifier keys are logically down. .IP \(bu 5 Either the grab_window is an ancestor of (or is) the focus window, or the grab_window is a descendant of the focus window and contains the pointer. .IP \(bu 5 A passive grab on the same key combination does not exist on any ancestor of grab_window. .LP The interpretation of the remaining arguments is as for .BR XGrabKeyboard . The active grab is terminated automatically when the logical state of the keyboard has the specified key released (independent of the logical state of the modifier keys), at which point a .B KeyRelease event is reported to the grabbing window. .LP Note that the logical state of a device (as seen by client applications) may lag the physical state if device event processing is frozen. .LP A modifiers argument of .B AnyModifier is equivalent to issuing the request for all possible modifier combinations (including the combination of no modifiers). It is not required that all modifiers specified have currently assigned KeyCodes. A keycode argument of .B AnyKey is equivalent to issuing the request for all possible KeyCodes. Otherwise, the specified keycode must be in the range specified by min_keycode and max_keycode in the connection setup, or a .B BadValue error results. .LP If some other client has issued a .B XGrabKey with the same key combination on the same window, a .B BadAccess error results. When using .B AnyModifier or .BR AnyKey , the request fails completely, and a .B BadAccess error results (no grabs are established) if there is a conflicting grab for any combination. .LP .B XGrabKey can generate .BR BadAccess , .BR BadValue , and .B BadWindow errors. .LP The .B XUngrabKey function releases the key combination on the specified window if it was grabbed by this client. It has no effect on an active grab. A modifiers of .B AnyModifier is equivalent to issuing the request for all possible modifier combinations (including the combination of no modifiers). A keycode argument of .B AnyKey is equivalent to issuing the request for all possible key codes. .LP .B XUngrabKey can generate .B BadValue and .B BadWindow error. .SH DIAGNOSTICS .TP 1i .B BadAccess A client attempted to grab a key/button combination already grabbed by another client. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllowEvents(__libmansuffix__), XGrabButton(__libmansuffix__), XGrabKeyboard(__libmansuffix__), XGrabPointer(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XKeyEvent.man0000644014310600000120000000006614763154126011461 .so man__libmansuffix__/XButtonEvent.__libmansuffix__ libX11-1.8.12/man/MinCmapsOfScreen.man0000644014310600000120000000007414763154126012732 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XrmValue.man0000644014310600000120000000006714763154126011343 .so man__libmansuffix__/XrmInitialize.__libmansuffix__ libX11-1.8.12/man/XcmsQueryBlack.man0000644014310600000120000001101614763154126012471 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XcmsQueryBlack __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsQueryBlack, XcmsQueryBlue, XcmsQueryGreen, XcmsQueryRed, XcmsQueryWhite \- obtain black, blue, green, red, and white CCC color specifications .SH SYNTAX .HP Status XcmsQueryBlack\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat \fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsQueryBlue\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat \fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsQueryGreen\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat \fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsQueryRed\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat \fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsQueryWhite\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat \fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^); .SH ARGUMENTS .IP \fIccc\fP 1i Specifies the CCC. Note that the CCC's Client White Point and White Point Adjustment procedures are ignored. .IP \fIcolor_return\fP 1i Returns the color specification in the specified target format. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. .IP \fItarget_format\fP 1i Specifies the target color specification format. .SH DESCRIPTION The .B XcmsQueryBlack function returns the color specification in the specified target format for zero-intensity red, green, and blue. .LP The .B XcmsQueryBlue function returns the color specification in the specified target format for full-intensity blue while red and green are zero. .LP The .B XcmsQueryGreen function returns the color specification in the specified target format for full-intensity green while red and blue are zero. .LP The .B XcmsQueryRed function returns the color specification in the specified target format for full-intensity red while green and blue are zero. .LP The .B XcmsQueryWhite function returns the color specification in the specified target format for full-intensity red, green, and blue. .SH "SEE ALSO" XcmsCIELabQueryMaxC(__libmansuffix__), XcmsCIELuvQueryMaxC(__libmansuffix__), XcmsTekHVCQueryMaxC(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XCharStruct.man0000644014310600000120000000006314763154126012006 .so man__libmansuffix__/XLoadFont.__libmansuffix__ libX11-1.8.12/man/XcmsQueryRed.man0000644014310600000120000000007014763154126012165 .so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__ libX11-1.8.12/man/XHostAddress.man0000644014310600000120000000006214763154126012146 .so man__libmansuffix__/XAddHost.__libmansuffix__ libX11-1.8.12/man/XUngrabServer.man0000644014310600000120000000006514763154126012333 .so man__libmansuffix__/XGrabServer.__libmansuffix__ libX11-1.8.12/man/XConvertCase.man0000644014310600000120000000007114763154126012137 .so man__libmansuffix__/XStringToKeysym.__libmansuffix__ libX11-1.8.12/man/XIntersectRegion.man0000644014310600000120000001121514763154126013031 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XIntersectRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XIntersectRegion, XUnionRegion, XUnionRectWithRegion, XSubtractRegion, XXorRegion, XOffsetRegion, XShrinkRegion \- region arithmetic .SH SYNTAX .HP int XIntersectRegion\^(\^Region \fIsra\fP\^, Region \fIsrb\fP\^, Region \fIdr_return\fP\^); .HP int XUnionRegion\^(\^Region \fIsra\fP\^, Region \fIsrb\fP\^, Region \fIdr_return\fP\^); .HP int XUnionRectWithRegion\^(\^XRectangle *\fIrectangle\fP\^, Region \fIsrc_region\fP\^, Region \fIdest_region_return\fP\^); .HP int XSubtractRegion\^(\^Region \fIsra\fP\^, Region \fIsrb\fP\^, Region \fIdr_return\fP\^); .HP int XXorRegion\^(\^Region \fIsra\fP\^, Region \fIsrb\fP\^, Region \fIdr_return\fP\^); .HP int XOffsetRegion\^(\^Region \fIr\fP\^, int \fIdx\fP\^, int \fIdy\fP\^); .HP int XShrinkRegion\^(\^Region \fIr\fP\^, int \fIdx\fP\^, int \fIdy\fP\^); .SH ARGUMENTS .IP \fIdest_region_return\fP 1i Returns the destination region. .IP \fIdr_return\fP 1i Returns the result of the computation. .IP \fIdx\fP 1i .br .ns .IP \fIdy\fP 1i Specify the x and y coordinates, which define the amount you want to move or shrink the specified region. .IP \fIr\fP 1i Specifies the region. .IP \fIrectangle\fP 1i Specifies the rectangle. .IP \fIsra\fP 1i .br .ns .IP \fIsrb\fP 1i Specify the two regions with which you want to perform the computation. .IP \fIsrc_region\fP 1i Specifies the source region to be used. .SH DESCRIPTION The .B XIntersectRegion function computes the intersection of two regions. .LP The .B XUnionRegion function computes the union of two regions. .LP The .B XUnionRectWithRegion function updates the destination region from a union of the specified rectangle and the specified source region. .LP The .B XSubtractRegion function subtracts srb from sra and stores the results in dr_return. .LP The .B XXorRegion function calculates the difference between the union and intersection of two regions. .LP The .B XOffsetRegion function moves the specified region by a specified amount. .LP The .B XShrinkRegion function reduces the specified region by a specified amount. Positive values shrink the size of the region, and negative values expand the region. .SH "SEE ALSO" XCreateRegion(__libmansuffix__), XDrawRectangle(__libmansuffix__), XEmptyRegion(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XAddToSaveSet.man0000644014310600000120000000007014763154126012210 .so man__libmansuffix__/XChangeSaveSet.__libmansuffix__ libX11-1.8.12/man/XwcResetIC.man0000644014310600000120000000006414763154126011555 .so man__libmansuffix__/XmbResetIC.__libmansuffix__ libX11-1.8.12/man/XFetchName.man0000644014310600000120000000006414763154126011557 .so man__libmansuffix__/XSetWMName.__libmansuffix__ libX11-1.8.12/man/XSetWMName.man0000644014310600000120000001316014763154126011526 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetWMName __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetWMName, XGetWMName, XStoreName, XFetchName \- set or read a window's WM_NAME property .SH SYNTAX .HP void XSetWMName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, XTextProperty *\fItext_prop\fP\^); .HP Status XGetWMName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, XTextProperty *\fItext_prop_return\fP\^); .HP int XStoreName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, _Xconst char *\fIwindow_name\fP\^); .HP Status XFetchName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char **\fIwindow_name_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fItext_prop\fP 1i Specifies the .B XTextProperty structure to be used. .IP \fItext_prop_return\fP 1i Returns the .B XTextProperty structure. .IP \fIw\fP 1i Specifies the window. .IP \fIwindow_name\fP 1i Specifies the window name, which should be a null-terminated string. .IP \fIwindow_name_return\fP 1i Returns the window name, which is a null-terminated string. .SH DESCRIPTION The .B XSetWMName convenience function calls .B XSetTextProperty to set the WM_NAME property. .LP The .B XGetWMName convenience function calls .B XGetTextProperty to obtain the WM_NAME property. It returns a nonzero status on success; otherwise, it returns a zero status. .LP The .B XStoreName function assigns the name passed to window_name to the specified window. A window manager can display the window name in some prominent place, such as the title bar, to allow users to identify windows easily. Some window managers may display a window's name in the window's icon, although they are encouraged to use the window's icon name if one is provided by the application. If the string is not in the Host Portable Character Encoding, the result is implementation-dependent. .LP .B XStoreName can generate .B BadAlloc and .B BadWindow errors. .LP The .B XFetchName function returns the name of the specified window. If it succeeds, it returns a nonzero status; otherwise, no name has been set for the window, and it returns zero. If the WM_NAME property has not been set for this window, .B XFetchName sets window_name_return to NULL. If the data returned by the server is in the Latin Portable Character Encoding, then the returned string is in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. When finished with it, a client must free the window name string using .BR XFree . .LP .B XFetchName can generate a .B BadWindow error. .SH PROPERTIES .TP 1i \s-1WM_NAME\s+1 The name of the application. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocIconSize(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XAllocWMHints(__libmansuffix__), XFree(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XSetWMProtocols(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/Xutf8TextEscapement.man0000644014310600000120000000007314763154126013465 .so man__libmansuffix__/XmbTextEscapement.__libmansuffix__ libX11-1.8.12/man/XTimeCoord.man0000644014310600000120000000006414763154126011612 .so man__libmansuffix__/XSendEvent.__libmansuffix__ libX11-1.8.12/man/XListPixmapFormats.man0000644014310600000120000000007014763154126013350 .so man__libmansuffix__/ImageByteOrder.__libmansuffix__ libX11-1.8.12/man/XGCValues.man0000644014310600000120000000006314763154126011375 .so man__libmansuffix__/XCreateGC.__libmansuffix__ libX11-1.8.12/man/XEqualRegion.man0000644014310600000120000000006614763154126012142 .so man__libmansuffix__/XEmptyRegion.__libmansuffix__ libX11-1.8.12/man/XIconSize.man0000644014310600000120000000007014763154126011445 .so man__libmansuffix__/XAllocIconSize.__libmansuffix__ libX11-1.8.12/man/XResourceManagerString.man0000644014310600000120000000763314763154126014207 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XResourceManagerString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XResourceManagerString, XScreenResourceString \- obtain server resource properties .SH SYNTAX .HP char *XResourceManagerString\^(\^Display *\fIdisplay\fP\^); .HP char *XScreenResourceString\^(\^Screen *\fIscreen\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIscreen\fP 1i Specifies the screen. .SH DESCRIPTION The .B XResourceManagerString function returns the RESOURCE_MANAGER property from the server's root window of screen zero, which was returned when the connection was opened using .BR XOpenDisplay . The property is converted from type STRING to the current locale. The conversion is identical to that produced by .B XmbTextPropertyToTextList for a single element STRING property. The returned string is owned by Xlib and should not be freed by the client. The property value must be in a format that is acceptable to .BR XrmGetStringDatabase . If no property exists, NULL is returned. .LP The .B XScreenResourceString function returns the SCREEN_RESOURCES property from the root window of the specified screen. The property is converted from type STRING to the current locale. The conversion is identical to that produced by .B XmbTextPropertyToTextList for a single element STRING property. The property value must be in a format that is acceptable to .BR XrmGetStringDatabase . If no property exists, NULL is returned. The caller is responsible for freeing the returned string by using .BR XFree . .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XSetOMValues.man0000644014310600000120000000006114763154126012071 .so man__libmansuffix__/XOpenOM.__libmansuffix__ libX11-1.8.12/man/XRefreshKeyboardMapping.man0000644014310600000120000000006714763154126014323 .so man__libmansuffix__/XLookupKeysym.__libmansuffix__ libX11-1.8.12/man/XrmCombineDatabase.man0000644014310600000120000000007314763154126013265 .so man__libmansuffix__/XrmMergeDatabases.__libmansuffix__ libX11-1.8.12/man/XCreateGC.man0000644014310600000120000006155314763154126011354 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual '\" t .TH XCreateGC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateGC, XCopyGC, XChangeGC, XGetGCValues, XFreeGC, XGContextFromGC, XGCValues \- create or free graphics contexts and graphics context structure .SH SYNTAX .HP GC XCreateGC\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, unsigned long \fIvaluemask\fP\^, XGCValues *\^\fIvalues\fP\^); .HP int XCopyGC\^(\^Display *\fIdisplay\fP\^, GC \fIsrc\fP\^, unsigned long \fIvaluemask\fP\^, GC \fIdest\fP\^); .HP int XChangeGC\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long \fIvaluemask\fP\^, XGCValues *\^\fIvalues\fP\^); .HP Status XGetGCValues\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long \fIvaluemask\fP\^, XGCValues *\fIvalues_return\fP\^); .HP int XFreeGC\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^); .HP GContext XGContextFromGC\^(\^GC \fIgc\fP\^); .SH ARGUMENTS .IP \fId\fP 1i Specifies the drawable. .IP \fIdest\fP 1i Specifies the destination GC. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fIsrc\fP 1i Specifies the components of the source GC. .IP \fIvaluemask\fP 1i Specifies which components in the GC are to be set, copied, changed, or returned. This argument is the bitwise inclusive OR of zero or more of the valid GC component mask bits. .IP \fIvalues\fP 1i Specifies any values as specified by the valuemask. .IP \fIvalues_return\fP 1i Returns the GC values in the specified .B XGCValues structure. .SH DESCRIPTION The .B XCreateGC function creates a graphics context and returns a GC. The GC can be used with any destination drawable having the same root and depth as the specified drawable. Use with other drawables results in a .B BadMatch error. .LP .B XCreateGC can generate .BR BadAlloc , .BR BadDrawable , .BR BadFont , .BR BadMatch , .BR BadPixmap , and .B BadValue errors. .LP The .B XCopyGC function copies the specified components from the source GC to the destination GC. The source and destination GCs must have the same root and depth, or a .B BadMatch error results. The valuemask specifies which component to copy, as for .BR XCreateGC . .LP .B XCopyGC can generate .BR BadAlloc , .BR BadGC , and .B BadMatch errors. .LP The .B XChangeGC function changes the components specified by valuemask for the specified GC. The values argument contains the values to be set. The values and restrictions are the same as for .BR XCreateGC . Changing the clip-mask overrides any previous .B XSetClipRectangles request on the context. Changing the dash-offset or dash-list overrides any previous .B XSetDashes request on the context. The order in which components are verified and altered is server dependent. If an error is generated, a subset of the components may have been altered. .LP .B XChangeGC can generate .BR BadAlloc , .BR BadFont , .BR BadGC , .BR BadMatch , .BR BadPixmap , and .B BadValue errors. .LP The .B XGetGCValues function returns the components specified by valuemask for the specified GC. If the valuemask contains a valid set of GC mask bits .RB ( GCFunction , .BR GCPlaneMask , .BR GCForeground , .BR GCBackground , .BR GCLineWidth , .BR GCLineStyle , .BR GCCapStyle , .BR GCJoinStyle , .BR GCFillStyle , .BR GCFillRule , .BR GCTile , .BR GCStipple , .BR GCTileStipXOrigin , .BR GCTileStipYOrigin , .BR GCFont , .BR GCSubwindowMode , .BR GCGraphicsExposures , .BR GCClipXOrigin , .BR GCClipYOrigin , .BR GCDashOffset , or .BR GCArcMode ) and no error occurs, .B XGetGCValues sets the requested components in values_return and returns a nonzero status. Otherwise, it returns a zero status. Note that the clip-mask and dash-list (represented by the .B GCClipMask and .B GCDashList bits, respectively, in the valuemask) cannot be requested. Also note that an invalid resource ID (with one or more of the three most significant bits set to 1) will be returned for .BR GCFont , .BR GCTile , and .B GCStipple if the component has never been explicitly set by the client. .LP The .B XFreeGC function destroys the specified GC as well as all the associated storage. .LP .B XFreeGC can generate a .B BadGC error. .SH STRUCTURES The .B XGCValues structure contains: .LP /\&* GC attribute value mask bits */ .TS lw(.5i) lw(2.5i) lw(.75i). \&#define T{ .B GCFunction T} T{ (1L<<0) T} \&#define T{ .B GCPlaneMask T} T{ (1L<<1) T} \&#define T{ .B GCForeground T} T{ (1L<<2) T} \&#define T{ .B GCBackground T} T{ (1L<<3) T} \&#define T{ .B GCLineWidth T} T{ (1L<<4) T} \&#define T{ .B GCLineStyle T} T{ (1L<<5) T} \&#define T{ .B GCCapStyle T} T{ (1L<<6) T} \&#define T{ .B GCJoinStyle T} T{ (1L<<7) T} \&#define T{ .B GCFillStyle T} T{ (1L<<8) T} \&#define T{ .B GCFillRule T} T{ (1L<<9) T} \&#define T{ .B GCTile T} T{ (1L<<10) T} \&#define T{ .B GCStipple T} T{ (1L<<11) T} \&#define T{ .B GCTileStipXOrigin T} T{ (1L<<12) T} \&#define T{ .B GCTileStipYOrigin T} T{ (1L<<13) T} \&#define T{ .B GCFont T} T{ (1L<<14) T} \&#define T{ .B GCSubwindowMode T} T{ (1L<<15) T} \&#define T{ .B GCGraphicsExposures T} T{ (1L<<16) T} \&#define T{ .B GCClipXOrigin T} T{ (1L<<17) T} \&#define T{ .B GCClipYOrigin T} T{ (1L<<18) T} \&#define T{ .B GCClipMask T} T{ (1L<<19) T} \&#define T{ .B GCDashOffset T} T{ (1L<<20) T} \&#define T{ .B GCDashList T} T{ (1L<<21) T} \&#define T{ .B GCArcMode T} T{ (1L<<22) T} .TE .LP .EX /\&* Values */ typedef struct { int function; /\&* logical operation */ unsigned long plane_mask; /\&* plane mask */ unsigned long foreground; /\&* foreground pixel */ unsigned long background; /\&* background pixel */ int line_width; /\&* line width (in pixels) */ int line_style; /\&* LineSolid, LineOnOffDash, LineDoubleDash */ int cap_style; /\&* CapNotLast, CapButt, CapRound, CapProjecting */ int join_style; /\&* JoinMiter, JoinRound, JoinBevel */ int fill_style; /\&* FillSolid, FillTiled, FillStippled FillOpaqueStippled*/ int fill_rule; /\&* EvenOddRule, WindingRule */ int arc_mode; /\&* ArcChord, ArcPieSlice */ Pixmap tile; /\&* tile pixmap for tiling operations */ Pixmap stipple; /\&* stipple 1 plane pixmap for stippling */ int ts_x_origin; /\&* offset for tile or stipple operations */ int ts_y_origin; Font font; /\&* default text font for text operations */ int subwindow_mode; /\&* ClipByChildren, IncludeInferiors */ Bool graphics_exposures; /\&* boolean, should exposures be generated */ int clip_x_origin; /\&* origin for clipping */ int clip_y_origin; Pixmap clip_mask; /\&* bitmap clipping; other calls for rects */ int dash_offset; /\&* patterned/dashed line information */ char dashes; } XGCValues; .EE .LP The function attributes of a GC are used when you update a section of a drawable (the destination) with bits from somewhere else (the source). The function in a GC defines how the new destination bits are to be computed from the source bits and the old destination bits. .B GXcopy is typically the most useful because it will work on a color display, but special applications may use other functions, particularly in concert with particular planes of a color display. The 16 GC functions, defined in .BR X11/X.h , are: .\" are listed in Table 5-1 along with the .\"the associated hexadecimal code .\" and operation. .\".CP T 1 .\"Display Functions .TS lw(1.5i) cw(.5i) lw(2i). _ .sp 6p .B Function Name Value Operation .sp 6p _ .sp 6p T{ .B GXclear T} T{ 0x0 T} T{ 0 T} T{ .B GXand T} T{ 0x1 T} T{ src AND dst T} T{ .B GXandReverse T} T{ 0x2 T} T{ src AND NOT dst T} T{ .B GXcopy T} T{ 0x3 T} T{ src T} T{ .B GXandInverted T} T{ 0x4 T} T{ (NOT src) AND dst T} T{ .B GXnoop T} T{ 0x5 T} T{ dst T} T{ .B GXxor T} T{ 0x6 T} T{ src XOR dst T} T{ .B GXor T} T{ 0x7 T} T{ src OR dst T} T{ .B GXnor T} T{ 0x8 T} T{ (NOT src) AND (NOT dst) T} T{ .B GXequiv T} T{ 0x9 T} T{ (NOT src) XOR dst T} T{ .B GXinvert T} T{ 0xa T} T{ NOT dst T} T{ .B GXorReverse T} T{ 0xb T} T{ src OR (NOT dst) T} T{ .B GXcopyInverted T} T{ 0xc T} T{ NOT src T} T{ .B GXorInverted T} T{ 0xd T} T{ (NOT src) OR dst T} T{ .B GXnand T} T{ 0xe T} T{ (NOT src) OR (NOT dst) T} T{ .B GXset T} T{ 0xf T} T{ 1 T} .sp 6p _ .TE .LP Many graphics operations depend on either pixel values or planes in a GC. The planes attribute is of type long, and it specifies which planes of the destination are to be modified, one bit per plane. A monochrome display has only one plane and will be the least significant bit of the word. As planes are added to the display hardware, they will occupy more significant bits in the plane mask. .LP In graphics operations, given a source and destination pixel, the result is computed bitwise on corresponding bits of the pixels. That is, a Boolean operation is performed in each bit plane. The plane_mask restricts the operation to a subset of planes. A macro constant .B AllPlanes can be used to refer to all planes of the screen simultaneously. The result is computed by the following: .LP .EX ((src FUNC dst) AND plane-mask) OR (dst AND (NOT plane-mask)) .EE .LP Range checking is not performed on the values for foreground, background, or plane_mask. They are simply truncated to the appropriate number of bits. The line-width is measured in pixels and either can be greater than or equal to one (wide line) or can be the special value zero (thin line). .LP Wide lines are drawn centered on the path described by the graphics request. Unless otherwise specified by the join-style or cap-style, the bounding box of a wide line with endpoints [x1, y1], [x2, y2] and width w is a rectangle with vertices at the following real coordinates: .LP .EX [x1-(w*sn/2), y1+(w*cs/2)], [x1+(w*sn/2), y1-(w*cs/2)], [x2-(w*sn/2), y2+(w*cs/2)], [x2+(w*sn/2), y2-(w*cs/2)] .EE .LP Here sn is the sine of the angle of the line, and cs is the cosine of the angle of the line. A pixel is part of the line and so is drawn if the center of the pixel is fully inside the bounding box (which is viewed as having infinitely thin edges). If the center of the pixel is exactly on the bounding box, it is part of the line if and only if the interior is immediately to its right (x increasing direction). Pixels with centers on a horizontal edge are a special case and are part of the line if and only if the interior or the boundary is immediately below (y increasing direction) and the interior or the boundary is immediately to the right (x increasing direction). .LP Thin lines (zero line-width) are one-pixel-wide lines drawn using an unspecified, device-dependent algorithm. There are only two constraints on this algorithm. .IP 1. 5 If a line is drawn unclipped from [x1,y1] to [x2,y2] and if another line is drawn unclipped from [x1+dx,y1+dy] to [x2+dx,y2+dy], a point [x,y] is touched by drawing the first line if and only if the point [x+dx,y+dy] is touched by drawing the second line. .IP 2. 5 The effective set of points comprising a line cannot be affected by clipping. That is, a point is touched in a clipped line if and only if the point lies inside the clipping region and the point would be touched by the line when drawn unclipped. .LP A wide line drawn from [x1,y1] to [x2,y2] always draws the same pixels as a wide line drawn from [x2,y2] to [x1,y1], not counting cap-style and join-style. It is recommended that this property be true for thin lines, but this is not required. A line-width of zero may differ from a line-width of one in which pixels are drawn. This permits the use of many manufacturers' line drawing hardware, which may run many times faster than the more precisely specified wide lines. .LP In general, drawing a thin line will be faster than drawing a wide line of width one. However, because of their different drawing algorithms, thin lines may not mix well aesthetically with wide lines. If it is desirable to obtain precise and uniform results across all displays, a client should always use a line-width of one rather than a line-width of zero. .LP The line-style defines which sections of a line are drawn: .TS lw(1.0i) lw(4.5i). T{ .B LineSolid T} T{ The full path of the line is drawn. T} .sp 6p T{ .B LineDoubleDash T} T{ The full path of the line is drawn, but the even dashes are filled differently from the odd dashes (see fill-style) with .B CapButt style used where even and odd dashes meet. T} .sp 6p T{ .B LineOnOffDash T} T{ Only the even dashes are drawn, and cap-style applies to all internal ends of the individual dashes, except .B CapNotLast is treated as .BR CapButt . T} .TE .LP The cap-style defines how the endpoints of a path are drawn: .TS lw(1.0i) lw(4.5i). T{ .B CapNotLast T} T{ This is equivalent to .B CapButt except that for a line-width of zero the final endpoint is not drawn. T} .sp 6p T{ .B CapButt T} T{ The line is square at the endpoint (perpendicular to the slope of the line) with no projection beyond. T} .sp 6p T{ .B CapRound T} T{ The line has a circular arc with the diameter equal to the line-width, centered on the endpoint. (This is equivalent to .B CapButt for line-width of zero). T} .sp 6p T{ .B CapProjecting T} T{ The line is square at the end, but the path continues beyond the endpoint for a distance equal to half the line-width. (This is equivalent to .B CapButt for line-width of zero). T} .TE .LP The join-style defines how corners are drawn for wide lines: .TS lw(1.0i) lw(4.5i). T{ .B JoinMiter T} T{ The outer edges of two lines extend to meet at an angle. However, if the angle is less than 11 degrees, then a .B JoinBevel join-style is used instead. T} .sp 6p T{ .B JoinRound T} T{ The corner is a circular arc with the diameter equal to the line-width, centered on the joinpoint. T} .sp 6p T{ .B JoinBevel T} T{ The corner has .B CapButt endpoint styles with the triangular notch filled. T} .TE .LP For a line with coincident endpoints (x1=x2, y1=y2), when the cap-style is applied to both endpoints, the semantics depends on the line-width and the cap-style: .TS lw(1.0i) lw(.5i) lw(4i). T{ .B CapNotLast T} T{ thin T} T{ The results are device dependent, but the desired effect is that nothing is drawn. T} .sp 6p T{ .B CapButt T} T{ thin T} T{ The results are device dependent, but the desired effect is that a single pixel is drawn. T} .sp 6p T{ .B CapRound T} T{ thin T} T{ The results are the same as for .BR CapButt /thin. T} .sp 6p T{ .B CapProjecting T} T{ thin T} T{ The results are the same as for .BR CapButt /thin. T} .sp 6p T{ .B CapButt T} T{ wide T} T{ Nothing is drawn. T} .sp 6p T{ .B CapRound T} T{ wide T} T{ The closed path is a circle, centered at the endpoint, and with the diameter equal to the line-width. T} .sp 6p T{ .B CapProjecting T} T{ wide T} T{ The closed path is a square, aligned with the coordinate axes, centered at the endpoint, and with the sides equal to the line-width. T} .TE .LP For a line with coincident endpoints (x1=x2, y1=y2), when the join-style is applied at one or both endpoints, the effect is as if the line was removed from the overall path. However, if the total path consists of or is reduced to a single point joined with itself, the effect is the same as when the cap-style is applied at both endpoints. .LP The tile/stipple represents an infinite two-dimensional plane, with the tile/stipple replicated in all dimensions. When that plane is superimposed on the drawable for use in a graphics operation, the upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable specified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the origin of whatever destination drawable is specified in a graphics request. The tile pixmap must have the same root and depth as the GC, or a .B BadMatch error results. The stipple pixmap must have depth one and must have the same root as the GC, or a .B BadMatch error results. For stipple operations where the fill-style is .B FillStippled but not .BR FillOpaqueStippled , the stipple pattern is tiled in a single plane and acts as an additional clip mask to be ANDed with the clip-mask. Although some sizes may be faster to use than others, any size pixmap can be used for tiling or stippling. .LP The fill-style defines the contents of the source for line, text, and fill requests. For all text and fill requests (for example, .BR XDrawText , .BR XDrawText16 , .BR XFillRectangle , .BR XFillPolygon , and .BR XFillArc ); for line requests with line-style .B LineSolid (for example, .BR XDrawLine , .BR XDrawSegments , .BR XDrawRectangle , .BR XDrawArc ); and for the even dashes for line requests with line-style .B LineOnOffDash or .BR LineDoubleDash , the following apply: .TS lw(1.5i) lw(4i). T{ .B FillSolid T} T{ Foreground T} .sp 6p T{ .B FillTiled T} T{ Tile T} .sp 6p T{ .B FillOpaqueStippled T} T{ A tile with the same width and height as stipple, but with background everywhere stipple has a zero and with foreground everywhere stipple has a one T} .sp 6p T{ .B FillStippled T} T{ Foreground masked by stipple T} .TE .LP When drawing lines with line-style .BR LineDoubleDash , the odd dashes are controlled by the fill-style in the following manner: .TS lw(1.5i) lw(4i). T{ .B FillSolid T} T{ Background T} .sp 6p T{ .B FillTiled T} T{ Same as for even dashes T} .sp 6p T{ .B FillOpaqueStippled T} T{ Same as for even dashes T} .sp 6p T{ .B FillStippled T} T{ Background masked by stipple T} .TE .LP Storing a pixmap in a GC might or might not result in a copy being made. If the pixmap is later used as the destination for a graphics request, the change might or might not be reflected in the GC. If the pixmap is used simultaneously in a graphics request both as a destination and as a tile or stipple, the results are undefined. .LP For optimum performance, you should draw as much as possible with the same GC (without changing its components). The costs of changing GC components relative to using different GCs depend on the display hardware and the server implementation. It is quite likely that some amount of GC information will be cached in display hardware and that such hardware can only cache a small number of GCs. .LP The dashes value is actually a simplified form of the more general patterns that can be set with .BR XSetDashes . Specifying a value of N is equivalent to specifying the two-element list [N, N] in .BR XSetDashes . The value must be nonzero, or a .B BadValue error results. .LP The clip-mask restricts writes to the destination drawable. If the clip-mask is set to a pixmap, it must have depth one and have the same root as the GC, or a .B BadMatch error results. If clip-mask is set to .BR None , the pixels are always drawn regardless of the clip origin. The clip-mask also can be set by calling the .B XSetClipRectangles or .B XSetRegion functions. Only pixels where the clip-mask has a bit set to 1 are drawn. Pixels are not drawn outside the area covered by the clip-mask or where the clip-mask has a bit set to 0. The clip-mask affects all graphics requests. The clip-mask does not clip sources. The clip-mask origin is interpreted relative to the origin of whatever destination drawable is specified in a graphics request. .LP You can set the subwindow-mode to .B ClipByChildren or .BR IncludeInferiors . For .BR ClipByChildren , both source and destination windows are additionally clipped by all viewable .B InputOutput children. For .BR IncludeInferiors , neither source nor destination window is clipped by inferiors. This will result in including subwindow contents in the source and drawing through subwindow boundaries of the destination. The use of .B IncludeInferiors on a window of one depth with mapped inferiors of differing depth is not illegal, but the semantics are undefined by the core protocol. .LP The fill-rule defines what pixels are inside (drawn) for paths given in .B XFillPolygon requests and can be set to .B EvenOddRule or .BR WindingRule . For .BR EvenOddRule , a point is inside if an infinite ray with the point as origin crosses the path an odd number of times. For .BR WindingRule , a point is inside if an infinite ray with the point as origin crosses an unequal number of clockwise and counterclockwise directed path segments. A clockwise directed path segment is one that crosses the ray from left to right as observed from the point. A counterclockwise segment is one that crosses the ray from right to left as observed from the point. The case where a directed line segment is coincident with the ray is uninteresting because you can simply choose a different ray that is not coincident with a segment. .LP For both .B EvenOddRule and .BR WindingRule , a point is infinitely small, and the path is an infinitely thin line. A pixel is inside if the center point of the pixel is inside and the center point is not on the boundary. If the center point is on the boundary, the pixel is inside if and only if the polygon interior is immediately to its right (x increasing direction). Pixels with centers on a horizontal edge are a special case and are inside if and only if the polygon interior is immediately below (y increasing direction). .LP The arc-mode controls filling in the .B XFillArcs function and can be set to .B ArcPieSlice or .BR ArcChord . For .BR ArcPieSlice , the arcs are pie-slice filled. For .BR ArcChord , the arcs are chord filled. .LP The graphics-exposure flag controls .B GraphicsExpose event generation for .B XCopyArea and .B XCopyPlane requests (and any similar requests defined by extensions). .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadFont A value for a Font or GContext argument does not name a defined Font. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadPixmap A value for a Pixmap argument does not name a defined Pixmap. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" AllPlanes(__libmansuffix__), XCopyArea(__libmansuffix__), XCreateRegion(__libmansuffix__), XDrawArc(__libmansuffix__), XDrawLine(__libmansuffix__), XDrawRectangle(__libmansuffix__), XDrawText(__libmansuffix__), XFillRectangle(__libmansuffix__), XQueryBestSize(__libmansuffix__), XSetArcMode(__libmansuffix__), XSetClipOrigin(__libmansuffix__), XSetFillStyle(__libmansuffix__), XSetFont(__libmansuffix__), XSetLineAttributes(__libmansuffix__), XSetState(__libmansuffix__), XSetTile(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/IsModifierKey.man0000644014310600000120000000006514763154126012301 .so man__libmansuffix__/IsCursorKey.__libmansuffix__ libX11-1.8.12/man/XFreeGC.man0000644014310600000120000000006314763154126011017 .so man__libmansuffix__/XCreateGC.__libmansuffix__ libX11-1.8.12/man/XGetClassHint.man0000644014310600000120000000007114763154126012253 .so man__libmansuffix__/XAllocClassHint.__libmansuffix__ libX11-1.8.12/man/XSetIconName.man0000644014310600000120000000007014763154126012067 .so man__libmansuffix__/XSetWMIconName.__libmansuffix__ libX11-1.8.12/man/XCirculateRequestEvent.man0000644014310600000120000001202014763154126014206 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCirculateRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCirculateRequestEvent \- CirculateRequest event structure .SH STRUCTURES The structure for .B CirculateRequest events contains: .LP .EX typedef struct { int type; /\&* CirculateRequest */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window parent; Window window; int place; /\&* PlaceOnTop, PlaceOnBottom */ } XCirculateRequestEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The parent member is set to the parent window. The window member is set to the subwindow to be restacked. The place member is set to what the new position in the stacking order should be and is either .B PlaceOnTop or .BR PlaceOnBottom . If it is .BR PlaceOnTop , the subwindow should be on top of all siblings. If it is .BR PlaceOnBottom , the subwindow should be below all siblings. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XChangePointerControl.man0000644014310600000120000001165414763154126014023 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XChangePointerControl __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XChangePointerControl, XGetPointerControl \- control pointer .SH SYNTAX .HP int XChangePointerControl\^(\^Display *\fIdisplay\fP\^, Bool \fIdo_accel\fP\^, Bool \fIdo_threshold\fP\^, int \fIaccel_numerator\fP\^, int \fIaccel_denominator\fP\^, int \fIthreshold\fP\^); .HP int XGetPointerControl\^(\^Display *\fIdisplay\fP\^, int *\fIaccel_numerator_return\fP\^, int *\fIaccel_denominator_return\fP\^, int *\fIthreshold_return\fP\^); .SH ARGUMENTS .IP \fIaccel_denominator\fP 1i Specifies the denominator for the acceleration multiplier. .IP \fIaccel_denominator_return\fP 1i Returns the denominator for the acceleration multiplier. .IP \fIaccel_numerator\fP 1i Specifies the numerator for the acceleration multiplier. .IP \fIaccel_numerator_return\fP 1i Returns the numerator for the acceleration multiplier. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIdo_accel\fP 1i Specifies a Boolean value that controls whether the values for the accel_numerator or accel_denominator are used. .IP \fIdo_threshold\fP 1i Specifies a Boolean value that controls whether the value for the threshold is used. .IP \fIthreshold\fP 1i Specifies the acceleration threshold. .IP \fIthreshold_return\fP 1i Returns the acceleration threshold. .SH DESCRIPTION The .B XChangePointerControl function defines how the pointing device moves. The acceleration, expressed as a fraction, is a multiplier for movement. For example, specifying 3/1 means the pointer moves three times as fast as normal. The fraction may be rounded arbitrarily by the X server. Acceleration only takes effect if the pointer moves more than threshold pixels at once and only applies to the amount beyond the value in the threshold argument. Setting a value to \-1 restores the default. The values of the do_accel and do_threshold arguments must be .B True for the pointer values to be set, or the parameters are unchanged. Negative values (other than \-1) generate a .B BadValue error, as does a zero value for the accel_denominator argument. .LP .B XChangePointerControl can generate a .B BadValue error. .LP The .B XGetPointerControl function returns the pointer's current acceleration multiplier and acceleration threshold. .SH DIAGNOSTICS .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XChangeActivePointerGrab.man0000644014310600000120000000006614763154126014405 .so man__libmansuffix__/XGrabPointer.__libmansuffix__ libX11-1.8.12/man/IsPrivateKeypadKey.man0000644014310600000120000000006514763154126013313 .so man__libmansuffix__/IsCursorKey.__libmansuffix__ libX11-1.8.12/man/XExtentsOfFontSet.man0000644014310600000120000000627414763154126013160 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XExtentsOfFontSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XExtentsOfFontSet \- obtain the maximum extents structure for a font set .SH SYNTAX .HP XFontSetExtents *XExtentsOfFontSet\^(\^XFontSet \fIfont_set\fP\^); .SH ARGUMENTS .IP \fIfont_set\fP 1i Specifies the font set. .SH DESCRIPTION The .B XExtentsOfFontSet function returns an .B XFontSetExtents structure for the fonts used by the Xmb and Xwc layers for the given font set. .LP The .B XFontSetExtents structure is owned by Xlib and should not be modified or freed by the client. It will be freed by a call to .B XFreeFontSet with the associated .BR XFontSet . Until freed, its contents will not be modified by Xlib. .SH "SEE ALSO" XCreateFontSet(__libmansuffix__), XFontsOfFontSet(__libmansuffix__), XFontSetExtents(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XLocaleOfIM.man0000644014310600000120000000006114763154126011634 .so man__libmansuffix__/XOpenIM.__libmansuffix__ libX11-1.8.12/man/XPolygonRegion.man0000644014310600000120000000661714763154126012532 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XPolygonRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XPolygonRegion, XClipBox \- generate regions .SH SYNTAX .HP Region XPolygonRegion\^(\^XPoint \fIpoints\fP[]\^, int \fIn\fP\^, int \fIfill_rule\fP\^); .HP int XClipBox\^(\^Region \fIr\fP\^, XRectangle *\fIrect_return\fP\^); .SH ARGUMENTS .IP \fIfill_rule\fP 1i Specifies the fill-rule you want to set for the specified GC. You can pass .B EvenOddRule or .BR WindingRule . .IP \fIn\fP 1i Specifies the number of points in the polygon. .IP \fIpoints\fP 1i Specifies an array of points. .IP \fIr\fP 1i Specifies the region. .IP \fIrect_return\fP 1i Returns the smallest enclosing rectangle. .SH DESCRIPTION The .B XPolygonRegion function returns a region for the polygon defined by the points array. For an explanation of fill_rule, see .BR XCreateGC . .LP The .B XClipBox function returns the smallest rectangle enclosing the specified region. .SH "SEE ALSO" XCreateGC(__libmansuffix__), XDrawPoint(__libmansuffix__), XDrawRectangle(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XDefineCursor.man0000644014310600000120000000734314763154126012324 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XDefineCursor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDefineCursor, XUndefineCursor \- define cursors .SH SYNTAX .HP int XDefineCursor\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Cursor \fIcursor\fP\^); .HP int XUndefineCursor\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .SH ARGUMENTS .IP \fIcursor\fP 1i Specifies the cursor that is to be displayed or .BR None . .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIw\fP 1i Specifies the window. .SH DESCRIPTION If a cursor is set, it will be used when the pointer is in the window. If the cursor is .BR None , it is equivalent to .BR XUndefineCursor . .LP .B XDefineCursor can generate .B BadCursor and .B BadWindow errors. .LP The .B XUndefineCursor function undoes the effect of a previous .B XDefineCursor for this window. When the pointer is in the window, the parent's cursor will now be used. On the root window, the default cursor is restored. .LP .B XUndefineCursor can generate a .B BadWindow error. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadCursor A value for a Cursor argument does not name a defined Cursor. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XCreateFontCursor(__libmansuffix__), XRecolorCursor(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XParseColor.man0000644014310600000120000000006514763154126011777 .so man__libmansuffix__/XQueryColor.__libmansuffix__ libX11-1.8.12/man/XClearArea.man0000644014310600000120000001223014763154126011542 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XClearArea __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XClearArea, XClearWindow \- clear area or window .SH SYNTAX .HP int XClearArea\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned \fIwidth\fP\^, unsigned \fIheight\fP\^, Bool \fIexposures\fP\^); .HP int XClearWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIexposures\fP 1i Specifies a Boolean value that indicates if .B Expose events are to be generated. .IP \fIw\fP 1i Specifies the window. .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height, which are the dimensions of the rectangle. .ds Xy .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates, which are relative to the origin of the window and specify the upper-left corner of the rectangle. .SH DESCRIPTION The .B XClearArea function paints a rectangular area in the specified window according to the specified dimensions with the window's background pixel or pixmap. The subwindow-mode effectively is .BR ClipByChildren . If width is zero, it is replaced with the current width of the window minus x. If height is zero, it is replaced with the current height of the window minus y. If the window has a defined background tile, the rectangle clipped by any children is filled with this tile. If the window has background .BR None , the contents of the window are not changed. In either case, if exposures is .BR True , one or more .B Expose events are generated for regions of the rectangle that are either visible or are being retained in a backing store. If you specify a window whose class is .BR InputOnly , a .B BadMatch error results. .LP .B XClearArea can generate .BR BadMatch , .BR BadValue , and .B BadWindow errors. .LP The .B XClearWindow function clears the entire area in the specified window and is equivalent to .B XClearArea (display, w, 0, 0, 0, 0, .BR False ). If the window has a defined background tile, the rectangle is tiled with a plane-mask of all ones and .B GXcopy function. If the window has background .BR None , the contents of the window are not changed. If you specify a window whose class is .BR InputOnly , a .B BadMatch error results. .LP .B XClearWindow can generate .B BadMatch and .B BadWindow errors. .SH DIAGNOSTICS .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XCopyArea(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XCrossingEvent.man0000644014310600000120000002033014763154126012514 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCrossingEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCrossingEvent \- EnterNotify and LeaveNotify event structure .SH STRUCTURES The structure for .B EnterNotify and .B LeaveNotify events contains: .LP .EX typedef struct { int type; /\&* EnterNotify or LeaveNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; /\&* \*(lqevent\*(rq window reported relative to */ Window root; /\&* root window that the event occurred on */ Window subwindow; /\&* child window */ Time time; /\&* milliseconds */ int x, y; /\&* pointer x, y coordinates in event window */ int x_root, y_root; /\&* coordinates relative to root */ int mode; /\&* NotifyNormal, NotifyGrab, NotifyUngrab */ int detail; /\&* * NotifyAncestor, NotifyVirtual, NotifyInferior, * NotifyNonlinear,NotifyNonlinearVirtual */ Bool same_screen; /\&* same screen flag */ Bool focus; /\&* boolean focus */ unsigned int state; /\&* key or button mask */ } XCrossingEvent; typedef XCrossingEvent XEnterWindowEvent; typedef XCrossingEvent XLeaveWindowEvent; .EE .LP When you receive these events, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The window member is set to the window on which the .B EnterNotify or .B LeaveNotify event was generated and is referred to as the event window. This is the window used by the X server to report the event, and is relative to the root window on which the event occurred. The root member is set to the root window of the screen on which the event occurred. .LP For a .B LeaveNotify event, if a child of the event window contains the initial position of the pointer, the subwindow component is set to that child. Otherwise, the X server sets the subwindow member to .BR None . For an .B EnterNotify event, if a child of the event window contains the final pointer position, the subwindow component is set to that child or .BR None . .LP The time member is set to the time when the event was generated and is expressed in milliseconds. The x and y members are set to the coordinates of the pointer position in the event window. This position is always the pointer's final position, not its initial position. If the event window is on the same screen as the root window, x and y are the pointer coordinates relative to the event window's origin. Otherwise, x and y are set to zero. The x_root and y_root members are set to the pointer's coordinates relative to the root window's origin at the time of the event. .LP The same_screen member is set to indicate whether the event window is on the same screen as the root window and can be either .B True or .BR False . If .BR True , the event and root windows are on the same screen. If .BR False , the event and root windows are not on the same screen. .LP The focus member is set to indicate whether the event window is the focus window or an inferior of the focus window. The X server can set this member to either .B True or .BR False . If .BR True , the event window is the focus window or an inferior of the focus window. If .BR False , the event window is not the focus window or an inferior of the focus window. .LP The state member is set to indicate the state of the pointer buttons and modifier keys just prior to the event. The X server can set this member to the bitwise inclusive OR of one or more of the button or modifier key masks: .BR Button1Mask , .BR Button2Mask , .BR Button3Mask , .BR Button4Mask , .BR Button5Mask , .BR ShiftMask , .BR LockMask , .BR ControlMask , .BR Mod1Mask , .BR Mod2Mask , .BR Mod3Mask , .BR Mod4Mask , .BR Mod5Mask . .LP The mode member is set to indicate whether the events are normal events, pseudo-motion events when a grab activates, or pseudo-motion events when a grab deactivates. The X server can set this member to .BR NotifyNormal , .BR NotifyGrab , or .BR NotifyUngrab . .LP The detail member is set to indicate the notify detail and can be .BR NotifyAncestor , .BR NotifyVirtual , .BR NotifyInferior , .BR NotifyNonlinear , or .BR NotifyNonlinearVirtual . .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XNoExposeEvent.man0000644014310600000120000000007614763154126012472 .so man__libmansuffix__/XGraphicsExposeEvent.__libmansuffix__ libX11-1.8.12/man/XSetTransientForHint.man0000644014310600000120000001055614763154126013651 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetTransientForHint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetTransientForHint, XGetTransientForHint \- set or read a window's WM_TRANSIENT_FOR property .SH SYNTAX .HP int XSetTransientForHint\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window \fIprop_window\fP\^); .HP Status XGetTransientForHint\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window *\fIprop_window_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIw\fP 1i Specifies the window. .IP \fIprop_window\fP 1i Specifies the window that the WM_TRANSIENT_FOR property is to be set to. .IP \fIprop_window_return\fP 1i Returns the WM_TRANSIENT_FOR property of the specified window. .SH DESCRIPTION The .B XSetTransientForHint function sets the WM_TRANSIENT_FOR property of the specified window to the specified prop_window. .LP .B XSetTransientForHint can generate .B BadAlloc and .B BadWindow errors. .LP The .B XGetTransientForHint function returns the WM_TRANSIENT_FOR property for the specified window. It returns a nonzero status on success; otherwise, it returns a zero status. .LP .B XGetTransientForHint can generate a .B BadWindow error. .SH PROPERTIES .TP 1i \s-1WM_TRANSIENT_FOR\s+1 Set by application programs to indicate to the window manager that a transient top-level window, such as a dialog box. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocIconSize(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XAllocWMHints(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XSetWMProtocols(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/Compose.man0000644014310600000120000001323514763154126011206 .\" Copyright (c) 2009, Oracle and/or its affiliates. .\" .\" 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. .\" .\" shorthand for double quote that works everywhere. .ds q \N'34' .ds xL Xlib \- C Language X Interface .TH Compose __filemansuffix__ __vendorversion__ .SH NAME Compose \- X client mappings for multi-key input sequences .SH DESCRIPTION The X library, libX11, provides a simple input method for characters beyond those represented on typical keyboards using sequences of key strokes that are combined to enter a single character. .PP The compose file is searched for in the following order: .IP - If the environment variable .B $XCOMPOSEFILE is set, its value is used as the name of the Compose file. .IP - If the user's home directory has a file named .IR .XCompose , it is used as the Compose file. .IP - The system provided compose file is used by mapping the locale to a compose file from the list in .IR __xlocaledir__/compose.dir . .PP Compose files can use an .RB \*q include \*q instruction. This allows local modifications to be made to existing compose files without including all of the content directly. For example, the system's iso8859-1 compose file can be included with a line like this: .RS 4 .BI "include \*q" %S/iso8859-1/Compose \*q .RE .PP There are several substitutions that can be made in the file name of the include instruction: .TP 4 .I %H expands to the user's home directory (the .B $HOME environment variable) .TP 4 .I %L expands to the name of the locale specific Compose file (i.e., .RI \*q __xlocaledir__//Compose \*q) .TP 4 .I %S expands to the name of the system directory for Compose files (i.e., .RI \*q __xlocaledir__ \*q) .PP For example, you can include in your compose file the default Compose file by using: .RS .B "include \*q%L\*q" .RE and then rewrite only the few rules that you need to change. New compose rules can be added, and previous ones replaced. .SH FILE FORMAT .\" Based on grammar description in modules/im/ximcp/imLcPrs.c Compose files are plain text files, with a separate line for each compose sequence. Comments begin with \fB#\fP characters. Each compose sequence specifies one or more events and a resulting input sequence, with an optional comment at the end of the line: .RS \fIEVENT\fP [\fIEVENT\fP...] \fB:\fP \fIRESULT\fP [\fB#\fP \fICOMMENT\fP] .RE .PP Each event consists of a specified input keysym, and optional modifier states: .RS [([\fB!\fP] ([\fB~\fP] \fIMODIFIER\fP)...) | \fBNone\fP] \fB<\fP\fIkeysym\fP\fB>\fP .RE .PP If the modifier list is preceded by .RB \*q "!" \*q it must match exactly. MODIFIER may be one of Ctrl, Lock, Caps, Shift, Alt or Meta. Each modifier may be preceded by a .RB \*q "~" \*q character to indicate that the modifier must not be present. If .RB \*q "None" \*q is specified, no modifier may be present. .PP The result specifies a string, keysym, or both, that the X client receives as input when the sequence of events is input: .RS \fB\*q\fP\fISTRING\fP\fB\*q\fP | \fIkeysym\fP | \fB\*q\fP\fISTRING\fP\fB\*q\fP \fIkeysym\fP .RE .PP Keysyms are specified without the \fBXK_\fP prefix. .PP Strings may be direct text encoded in the locale for which the compose file is to be used, or an escaped octal or hexadecimal character code. Octal codes are specified as \fB\*q\\123\*q\fP and hexadecimal codes as \fB\*q\\x3a\*q\fP. It is not necessary to specify in the right part of a rule a locale encoded string in addition to the keysym name. If the string is omitted, Xlib figures it out from the keysym according to the current locale. I.e., if a rule looks like: .RS \fB : \*q\\300\*q Agrave\fP .RE the result of the composition is always the letter with the "\\300" code. But if the rule is: .RS \fB : Agrave\fP .RE the result depends on how Agrave is mapped in the current locale. .SH ENVIRONMENT .TP .B XCOMPOSEFILE File to use for compose sequences. .TP .B XCOMPOSECACHE Directory to use for caching compiled compose files. .SH FILES .TP .I $HOME/.XCompose User default compose file if XCOMPOSEFILE is not set. .TP .I __xlocaledir__/compose.dir File listing the compose file path to use for each locale. .TP .I __xlocaledir__//Compose System default compose file for the locale, mapped via compose.dir. .TP .I /var/cache/libx11/compose/ System-wide cache directory for compiled compose files. .TP .I $HOME/.compose-cache/ Per-user cache directory for compiled compose files. .SH SEE ALSO .BR XLookupString (__libmansuffix__), .BR XmbLookupString (__libmansuffix__), .BR XwcLookupString (__libmansuffix__), .BR Xutf8LookupString (__libmansuffix__), .BR mkcomposecache (__appmansuffix__), .BR locale (__miscmansuffix__). .br \fI\*(xL\fP libX11-1.8.12/man/XVisualIDFromVisual.man0000644014310600000120000000007014763154126013412 .so man__libmansuffix__/XGetVisualInfo.__libmansuffix__ libX11-1.8.12/man/XrmPutResource.man0000644014310600000120000001440614763154126012551 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XrmPutResource __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmPutResource, XrmQPutResource, XrmPutStringResource, XrmQPutStringResource, XrmPutLineResource \- store database resources .SH SYNTAX .HP #include .HP void XrmPutResource\^(\^XrmDatabase *\fIdatabase\fP\^, char *\fIspecifier\fP\^, char *\fItype\fP\^, XrmValue *\fIvalue\fP\^); .HP void XrmQPutResource\^(\^XrmDatabase *\fIdatabase\fP\^, XrmBindingList \fIbindings\fP\^, XrmQuarkList \fIquarks\fP\^, XrmRepresentation \fItype\fP\^, XrmValue *\fIvalue\fP\^); .HP void XrmPutStringResource\^(\^XrmDatabase *\fIdatabase\fP\^, _Xconst char *\fIspecifier\fP\^, _Xconst char *\fIvalue\fP\^); .HP void XrmQPutStringResource\^(\^XrmDatabase *\fIdatabase\fP\^, XrmBindingList \fIbindings\fP\^, XrmQuarkList \fIquarks\fP\^, _Xconst char *\fIvalue\fP\^); .HP void XrmPutLineResource\^(\^XrmDatabase *\fIdatabase\fP\^, _Xconst char *\fIline\fP\^); .SH ARGUMENTS .IP \fIbindings\fP 1i Specifies a list of bindings. .IP \fIdatabase\fP 1i Specifies the resource database. .IP \fIline\fP 1i Specifies the resource name and value pair as a single string. .IP \fIquarks\fP 1i Specifies the complete or partial name or the class list of the resource. .IP \fIspecifier\fP 1i Specifies a complete or partial specification of the resource. .IP \fItype\fP 1i Specifies the type of the resource. .IP \fIvalue\fP 1i Specifies the value of the resource, which is specified as a string. .SH DESCRIPTION If database contains NULL, .B XrmPutResource creates a new database and returns a pointer to it. .B XrmPutResource is a convenience function that calls .B XrmStringToBindingQuarkList followed by: .LP .EX XrmQPutResource(database, bindings, quarks, XrmStringToQuark(type), value) .EE .LP If the specifier and type are not in the Host Portable Character Encoding, the result is implementation-dependent. The value is stored in the database without modification. .LP If database contains NULL, .B XrmQPutResource creates a new database and returns a pointer to it. If a resource entry with the identical bindings and quarks already exists in the database, the previous type and value are replaced by the new specified type and value. The value is stored in the database without modification. .LP If database contains NULL, .B XrmPutStringResource creates a new database and returns a pointer to it. .B XrmPutStringResource adds a resource with the specified value to the specified database. .B XrmPutStringResource is a convenience function that first calls .B XrmStringToBindingQuarkList on the specifier and then calls .BR XrmQPutResource , using a \*(lqString\*(rq representation type. If the specifier is not in the Host Portable Character Encoding, the result is implementation-dependent. The value is stored in the database without modification. .LP If database contains NULL, .B XrmQPutStringResource creates a new database and returns a pointer to it. .B XrmQPutStringResource is a convenience routine that constructs an .B XrmValue for the value string (by calling .B strlen to compute the size) and then calls .BR XrmQPutResource , using a \*(lqString\*(rq representation type. The value is stored in the database without modification. .LP If database contains NULL, .B XrmPutLineResource creates a new database and returns a pointer to it. .B XrmPutLineResource adds a single resource entry to the specified database. The line should be in valid ResourceLine format (see section 15.1) terminated by a newline or null character; the database that results from using a string with incorrect syntax is implementation-dependent. The string is parsed in the locale of the database. If the .B ResourceName is not in the Host Portable Character Encoding, the result is implementation-dependent. Note that comment lines are not stored. .SH "SEE ALSO" XrmGetResource(__libmansuffix__), XrmInitialize(__libmansuffix__), XrmMergeDatabases(__libmansuffix__), XrmUniqueQuark(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XUngrabKeyboard.man0000644014310600000120000000006714763154126012627 .so man__libmansuffix__/XGrabKeyboard.__libmansuffix__ libX11-1.8.12/man/XrmQGetSearchList.man0000644014310600000120000000007014763154126013103 .so man__libmansuffix__/XrmGetResource.__libmansuffix__ libX11-1.8.12/man/XDestroyWindow.man0000644014310600000120000001106214763154126012546 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XDestroyWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDestroyWindow, XDestroySubwindows \- destroy windows .SH SYNTAX .HP int XDestroyWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .HP int XDestroySubwindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIw\fP 1i Specifies the window. .SH DESCRIPTION The .B XDestroyWindow function destroys the specified window as well as all of its subwindows and causes the X server to generate a .B DestroyNotify event for each window. The window should never be referenced again. If the window specified by the w argument is mapped, it is unmapped automatically. The ordering of the .B DestroyNotify events is such that for any given window being destroyed, .B DestroyNotify is generated on any inferiors of the window before being generated on the window itself. The ordering among siblings and across subhierarchies is not otherwise constrained. If the window you specified is a root window, no windows are destroyed. Destroying a mapped window will generate .B Expose events on other windows that were obscured by the window being destroyed. .LP .B XDestroyWindow can generate a .B BadWindow error. .LP The .B XDestroySubwindows function destroys all inferior windows of the specified window, in bottom-to-top stacking order. It causes the X server to generate a .B DestroyNotify event for each window. If any mapped subwindows were actually destroyed, .B XDestroySubwindows causes the X server to generate .B Expose events on the specified window. This is much more efficient than deleting many windows one at a time because much of the work need be performed only once for all of the windows, rather than for each window. The subwindows should never be referenced again. .LP .B XDestroySubwindows can generate a .B BadWindow error. .SH DIAGNOSTICS .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XChangeWindowAttributes(__libmansuffix__), XConfigureWindow(__libmansuffix__), XCreateWindow(__libmansuffix__), XMapWindow(__libmansuffix__), XRaiseWindow(__libmansuffix__), XUnmapWindow(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetFunction.man0000644014310600000120000000006314763154126012165 .so man__libmansuffix__/XSetState.__libmansuffix__ libX11-1.8.12/man/XSetEventQueueOwner.man0000644014310600000120000000461614763154126013511 .\" Copyright \(co 2006 Josh Triplett .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM 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. .\" .TH XSetEventQueueOwner __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetEventQueueOwner \- set event queue owner on a shared Xlib/XCB connection .SH SYNTAX .HP #include .HP void XSetEventQueueOwner(Display *\fIdpy\fP, enum XEventQueueOwner \fIowner\fP); .SH ARGUMENTS .IP \fIdpy\fP 1i Specifies the connection to the X server. .IP \fIowner\fP 1i Specifies the event queue ownership: .RS .TP \fIXlibOwnsEventQueue\fP (default) Xlib owns the event queue. Use the Xlib event-handling functions. Do not call the XCB event-handling functions. .TP \fIXCBOwnsEventQueue\fP XCB owns the event queue. Use the XCB event-handling functions. Do not call the Xlib event-handling functions. .RE .SH DESCRIPTION While a client using Xlib/XCB can issue requests and handle their replies or errors with either Xlib or XCB, only one can own and handle the event queue. By default, Xlib must own the event queue, for compatibility with legacy Xlib clients. Clients can call \fIXSetEventQueueOwner\fP immediately after \fIXOpenDisplay\fP to let XCB own the event queue instead. Clients may not call \fIXSetEventQueueOwner\fP at any other time, as this will potentially lose responses. .SH "SEE ALSO" XOpenDisplay(__libmansuffix__), XGetXCBConnection(__libmansuffix__), .br \fIXlib \- C Language X Interface\fP libX11-1.8.12/man/XcmsCIExyY.man0000644014310600000120000000006314763154126011541 .so man__libmansuffix__/XcmsColor.__libmansuffix__ libX11-1.8.12/man/XSetScreenSaver.man0000644014310600000120000001602114763154126012621 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetScreenSaver __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetScreenSaver, XForceScreenSaver, XActivateScreenSaver, XResetScreenSaver, XGetScreenSaver \- manipulate the screen saver .SH SYNTAX .HP int XSetScreenSaver\^(\^Display *\fIdisplay\fP\^, int \fItimeout\fP\^, int \fIinterval\fP\^, int \fIprefer_blanking\fP\^, int \fIallow_exposures\fP\^); .HP int XForceScreenSaver\^(\^Display *\fIdisplay\fP\^, int \fImode\fP\^); .HP int XActivateScreenSaver\^(\^Display *\fIdisplay\fP\^); .HP int XResetScreenSaver\^(\^Display *\fIdisplay\fP\^); .HP int XGetScreenSaver\^(\^Display *\fIdisplay\fP\^, int *\fItimeout_return\fP\^, int *\fIinterval_return\fP\^, int *\fIprefer_blanking_return\fP\^, int *\fIallow_exposures_return\fP\^); .SH ARGUMENTS .IP \fIallow_exposures\fP 1i Specifies the screen save control values. You can pass .BR DontAllowExposures , .BR AllowExposures , or .BR DefaultExposures . .IP \fIallow_exposures_return\fP 1i Returns the current screen save control value .RB ( DontAllowExposures , .BR AllowExposures , or .BR DefaultExposures ). .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIinterval\fP 1i Specifies the interval, in seconds, between screen saver alterations. .IP \fIinterval_return\fP 1i Returns the interval between screen saver invocations. .IP \fImode\fP 1i Specifies the mode that is to be applied. You can pass .B ScreenSaverActive or .BR ScreenSaverReset . .IP \fIprefer_blanking\fP 1i Specifies how to enable screen blanking. You can pass .BR DontPreferBlanking , .BR PreferBlanking , or .BR DefaultBlanking . .IP \fIprefer_blanking_return\fP 1i Returns the current screen blanking preference .RB ( DontPreferBlanking , .BR PreferBlanking , or .BR DefaultBlanking ). .IP \fItimeout\fP 1i Specifies the timeout, in seconds, until the screen saver turns on. .IP \fItimeout_return\fP 1i Returns the timeout, in seconds, until the screen saver turns on. .SH DESCRIPTION Timeout and interval are specified in seconds. A timeout of 0 disables the screen saver (but an activated screen saver is not deactivated), and a timeout of \-1 restores the default. Other negative values generate a .B BadValue error. If the timeout value is nonzero, .B XSetScreenSaver enables the screen saver. An interval of 0 disables the random-pattern motion. Both values are limited to a 16-bit signed integer range by the wire protocol, despite the C prototype. If no input from devices (keyboard, mouse, and so on) is generated for the specified number of timeout seconds once the screen saver is enabled, the screen saver is activated. .LP For each screen, if blanking is preferred and the hardware supports video blanking, the screen simply goes blank. Otherwise, if either exposures are allowed or the screen can be regenerated without sending .B Expose events to clients, the screen is tiled with the root window background tile randomly re-origined each interval seconds. Otherwise, the screens' states do not change, and the screen saver is not activated. The screen saver is deactivated, and all screen states are restored at the next keyboard or pointer input or at the next call to .B XForceScreenSaver with mode .BR ScreenSaverReset . .LP If the server-dependent screen saver method supports periodic change, the interval argument serves as a hint about how long the change period should be, and zero hints that no periodic change should be made. Examples of ways to change the screen include scrambling the colormap periodically, moving an icon image around the screen periodically, or tiling the screen with the root window background tile, randomly re-origined periodically. .LP .B XSetScreenSaver can generate a .B BadValue error. .LP If the specified mode is .B ScreenSaverActive and the screen saver currently is deactivated, .B XForceScreenSaver activates the screen saver even if the screen saver had been disabled with a timeout of zero. If the specified mode is .B ScreenSaverReset and the screen saver currently is enabled, .B XForceScreenSaver deactivates the screen saver if it was activated, and the activation timer is reset to its initial state (as if device input had been received). .LP .B XForceScreenSaver can generate a .B BadValue error. .LP The .B XActivateScreenSaver function activates the screen saver. .LP The .B XResetScreenSaver function resets the screen saver. .LP The .B XGetScreenSaver function gets the current screen saver values. .SH DIAGNOSTICS .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XScreenNumberOfScreen.man0000644014310600000120000000007414763154126013743 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XwcTextExtents.man0000644014310600000120000000007014763154126012553 .so man__libmansuffix__/XmbTextExtents.__libmansuffix__ libX11-1.8.12/man/XDrawImageString16.man0000644014310600000120000000007214763154126013122 .so man__libmansuffix__/XDrawImageString.__libmansuffix__ libX11-1.8.12/man/XPutImage.man0000644014310600000120000002411314763154126011441 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XPutImage __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XPutImage, XGetImage, XGetSubImage \- transfer images .SH SYNTAX .HP int XPutImage\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, XImage *\fIimage\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, int \fIdest_x\fP\^, int \fIdest_y\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^); .HP XImage *XGetImage\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned long \fIplane_mask\fP\^, int \fIformat\fP\^); .HP XImage *XGetSubImage\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned long \fIplane_mask\fP\^, int \fIformat\fP\^, XImage *\fIdest_image\fP\^, int \fIdest_x\fP\^, \fIdest_y\fP\^); .SH ARGUMENTS .IP \fId\fP 1i Specifies the drawable. .IP \fIdest_image\fP 1i Specifies the destination image. .ds Dx .IP \fIdest_x\fP 1i .br .ns .IP \fIdest_y\fP 1i Specify the x and y coordinates, which are relative to the origin of the drawable and are the coordinates of the subimage or which are relative to the origin of the destination rectangle, specify its upper-left corner, and determine where the subimage is placed in the destination image. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIformat\fP 1i Specifies the format for the image. You can pass .B XYPixmap or .BR ZPixmap . .IP \fIgc\fP 1i Specifies the GC. .IP \fIimage\fP 1i Specifies the image you want combined with the rectangle. .IP \fIplane_mask\fP 1i Specifies the plane mask. .\" *** JIM: NEED MORE INFO FOR THIS. *** .IP \fIsrc_x\fP 1i Specifies the offset in X from the left edge of the image defined by the .B XImage structure. .IP \fIsrc_y\fP 1i Specifies the offset in Y from the top edge of the image defined by the .B XImage structure. .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height of the subimage, which define the dimensions of the rectangle. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates, which are relative to the origin of the drawable and define the upper-left corner of the rectangle. .SH DESCRIPTION The .B XPutImage function combines an image with a rectangle of the specified drawable. The section of the image defined by the src_x, src_y, width, and height arguments is drawn on the specified part of the drawable. If .B XYBitmap format is used, the depth of the image must be one, or a .B BadMatch error results. The foreground pixel in the GC defines the source for the one bits in the image, and the background pixel defines the source for the zero bits. For .B XYPixmap and .BR ZPixmap , the depth of the image must match the depth of the drawable, or a .B BadMatch error results. .LP If the characteristics of the image (for example, byte_order and bitmap_unit) differ from what the server requires, .B XPutImage automatically makes the appropriate conversions. .LP This function uses these GC components: function, plane-mask, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. It also uses these GC mode-dependent components: foreground and background. .LP .B XPutImage can generate .BR BadDrawable , .BR BadGC , .BR BadMatch , and .B BadValue errors. .LP The .B XGetImage function returns a pointer to an .B XImage structure. This structure provides you with the contents of the specified rectangle of the drawable in the format you specify. If the format argument is .BR XYPixmap , the image contains only the bit planes you passed to the plane_mask argument. If the plane_mask argument only requests a subset of the planes of the display, the depth of the returned image will be the number of planes requested. If the format argument is .BR ZPixmap , .B XGetImage returns as zero the bits in all planes not specified in the plane_mask argument. The function performs no range checking on the values in plane_mask and ignores extraneous bits. .LP .B XGetImage returns the depth of the image to the depth member of the .B XImage structure. The depth of the image is as specified when the drawable was created, except when getting a subset of the planes in .B XYPixmap format, when the depth is given by the number of bits set to 1 in plane_mask. .LP If the drawable is a pixmap, the given rectangle must be wholly contained within the pixmap, or a .B BadMatch error results. If the drawable is a window, the window must be viewable, and it must be the case that if there were no inferiors or overlapping windows, the specified rectangle of the window would be fully visible on the screen and wholly contained within the outside edges of the window, or a .B BadMatch error results. Note that the borders of the window can be included and read with this request. If the window has backing-store, the backing-store contents are returned for regions of the window that are obscured by noninferior windows. If the window does not have backing-store, the returned contents of such obscured regions are undefined. The returned contents of visible regions of inferiors of a different depth than the specified window's depth are also undefined. The pointer cursor image is not included in the returned contents. If a problem occurs, .B XGetImage returns NULL. .LP .B XGetImage can generate .BR BadDrawable , .BR BadMatch , and .B BadValue errors. .LP The .B XGetSubImage function updates dest_image with the specified subimage in the same manner as .BR XGetImage . If the format argument is .BR XYPixmap , the image contains only the bit planes you passed to the plane_mask argument. If the format argument is .BR ZPixmap , .B XGetSubImage returns as zero the bits in all planes not specified in the plane_mask argument. The function performs no range checking on the values in plane_mask and ignores extraneous bits. As a convenience, .B XGetSubImage returns a pointer to the same .B XImage structure specified by dest_image. .LP The depth of the destination .B XImage structure must be the same as that of the drawable. If the specified subimage does not fit at the specified location on the destination image, the right and bottom edges are clipped. If the drawable is a pixmap, the given rectangle must be wholly contained within the pixmap, or a .B BadMatch error results. If the drawable is a window, the window must be viewable, and it must be the case that if there were no inferiors or overlapping windows, the specified rectangle of the window would be fully visible on the screen and wholly contained within the outside edges of the window, or a .B BadMatch error results. If the window has backing-store, then the backing-store contents are returned for regions of the window that are obscured by noninferior windows. If the window does not have backing-store, the returned contents of such obscured regions are undefined. The returned contents of visible regions of inferiors of a different depth than the specified window's depth are also undefined. If a problem occurs, .B XGetSubImage returns NULL. .LP .B XGetSubImage can generate .BR BadDrawable , .BR BadGC , .BR BadMatch , and .B BadValue errors. .SH DIAGNOSTICS .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XCheckTypedWindowEvent.man0000644014310600000120000000006414763154126014142 .so man__libmansuffix__/XNextEvent.__libmansuffix__ libX11-1.8.12/man/XFreeFontInfo.man0000644014310600000120000000006414763154126012251 .so man__libmansuffix__/XListFonts.__libmansuffix__ libX11-1.8.12/man/XrmStringToBindingQuarkList.man0000644014310600000120000000007014763154126015165 .so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__ libX11-1.8.12/man/XMoveWindow.man0000644014310600000120000000007214763154126012022 .so man__libmansuffix__/XConfigureWindow.__libmansuffix__ libX11-1.8.12/man/XrmGetResource.man0000644014310600000120000002220714763154126012516 '\" e .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual '\" e .TH XrmGetResource __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmGetResource, XrmQGetResource, XrmQGetSearchList, XrmQGetSearchResource \- retrieve database resources and search lists .SH SYNTAX .HP #include .HP Bool XrmGetResource\^(\^XrmDatabase \fIdatabase\fP\^, char *\fIstr_name\fP\^, char *\fIstr_class\fP\^, char **\fIstr_type_return\fP\^, XrmValue *\fIvalue_return\fP\^); .HP Bool XrmQGetResource\^(\^XrmDatabase \fIdatabase\fP\^, XrmNameList \fIquark_name\fP\^, XrmClassList \fIquark_class\fP\^, XrmRepresentation *\fIquark_type_return\fP\^, XrmValue *\fIvalue_return\fP\^); .HP typedef XrmHashTable *XrmSearchList; .sp Bool XrmQGetSearchList\^(\^XrmDatabase \fIdatabase\fP\^, XrmNameList \fInames\fP\^, XrmClassList \fIclasses\fP\^, XrmSearchList \fIlist_return\fP\^, int \fIlist_length\fP\^); .HP Bool XrmQGetSearchResource\^(\^XrmSearchList \fIlist\fP\^, XrmName \fIname\fP\^, XrmClass \fIclass\fP\^, XrmRepresentation *\fItype_return\fP\^, XrmValue *\fIvalue_return\fP\^); .SH ARGUMENTS .IP \fIclass\fP 1i Specifies the resource class. .IP \fIclasses\fP 1i Specifies a list of resource classes. .IP \fIdatabase\fP 1i Specifies the database that is to be used. .IP \fIlist\fP 1i Specifies the search list returned by .BR XrmQGetSearchList . .IP \fIlist_length\fP 1i Specifies the number of entries (not the byte size) allocated for list_return. .IP \fIlist_return\fP 1i Returns a search list for further use. .IP \fIname\fP 1i Specifies the resource name. .IP \fInames\fP 1i Specifies a list of resource names. .IP \fIquark_class\fP 1i Specifies the fully qualified class of the value being retrieved (as a quark). .IP \fIquark_name\fP 1i Specifies the fully qualified name of the value being retrieved (as a quark). .IP \fIquark_type_return\fP 1i Returns the representation type of the destination (as a quark). .IP \fIstr_class\fP 1i Specifies the fully qualified class of the value being retrieved (as a string). .IP \fIstr_name\fP 1i Specifies the fully qualified name of the value being retrieved (as a string). .IP \fIstr_type_return\fP 1i Returns the representation type of the destination (as a string). .IP \fItype_return\fP 1i Returns data representation type. .IP \fIvalue_return\fP 1i Returns the value in the database. .SH DESCRIPTION The .B XrmGetResource and .B XrmQGetResource functions retrieve a resource from the specified database. Both take a fully qualified name/class pair, a destination resource representation, and the address of a value (size/address pair). The value and returned type point into database memory; therefore, you must not modify the data. .LP The database only frees or overwrites entries on .BR XrmPutResource , .BR XrmQPutResource , or .BR XrmMergeDatabases . A client that is not storing new values into the database or is not merging the database should be safe using the address passed back at any time until it exits. If a resource was found, both .B XrmGetResource and .B XrmQGetResource return .BR True ; otherwise, they return .BR False . .LP The .B XrmQGetSearchList function takes a list of names and classes and returns a list of database levels where a match might occur. The returned list is in best-to-worst order and uses the same algorithm as .B XrmGetResource for determining precedence. If list_return was large enough for the search list, .B XrmQGetSearchList returns .BR True ; otherwise, it returns .BR False . .LP The size of the search list that the caller must allocate is dependent upon the number of levels and wildcards in the resource specifiers that are stored in the database. The worst case length is %3 sup n%, where \fIn\fP is the number of name or class components in names or classes. .LP When using .B XrmQGetSearchList followed by multiple probes for resources with a common name and class prefix, only the common prefix should be specified in the name and class list to .BR XrmQGetSearchList . .LP The .B XrmQGetSearchResource function searches the specified database levels for the resource that is fully identified by the specified name and class. The search stops with the first match. .B XrmQGetSearchResource returns .B True if the resource was found; otherwise, it returns .BR False . .LP A call to .B XrmQGetSearchList with a name and class list containing all but the last component of a resource name followed by a call to .B XrmQGetSearchResource with the last component name and class returns the same database entry as .B XrmGetResource and .B XrmQGetResource with the fully qualified name and class. .SH "MATCHING RULES" The algorithm for determining which resource database entry matches a given query is the heart of the resource manager. All queries must fully specify the name and class of the desired resource (use of the characters \*(lq*\*(rq and \*(lq?\*(rq are not permitted). The library supports up to 100 components in a full name or class. Resources are stored in the database with only partially specified names and classes, using pattern matching constructs. An asterisk (*) is a loose binding and is used to represent any number of intervening components, including none. A period (.) is a tight binding and is used to separate immediately adjacent components. A question mark (?) is used to match any single component name or class. A database entry cannot end in a loose binding; the final component (which cannot be the character \*(lq?\*(rq) must be specified. The lookup algorithm searches the database for the entry that most closely matches (is most specific for) the full name and class being queried. When more than one database entry matches the full name and class, precedence rules are used to select just one. .LP The full name and class are scanned from left to right (from highest level in the hierarchy to lowest), one component at a time. At each level, the corresponding component and/or binding of each matching entry is determined, and these matching components and bindings are compared according to precedence rules. Each of the rules is applied at each level before moving to the next level, until a rule selects a single entry over all others. The rules, in order of precedence, are: .IP 1. 5 An entry that contains a matching component (whether name, class, or the character \*(lq?\*(rq) takes precedence over entries that elide the level (that is, entries that match the level in a loose binding). .IP 2. 5 An entry with a matching name takes precedence over both entries with a matching class and entries that match using the character \*(lq?\*(rq. An entry with a matching class takes precedence over entries that match using the character \*(lq?\*(rq. .IP 3. 5 An entry preceded by a tight binding takes precedence over entries preceded by a loose binding. .SH "SEE ALSO" XrmInitialize(__libmansuffix__), XrmMergeDatabases(__libmansuffix__), XrmPutResource(__libmansuffix__), XrmUniqueQuark(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/IsFunctionKey.man0000644014310600000120000000006514763154126012330 .so man__libmansuffix__/IsCursorKey.__libmansuffix__ libX11-1.8.12/man/XQueryTextExtents16.man0000644014310600000120000000006614763154126013423 .so man__libmansuffix__/XTextExtents.__libmansuffix__ libX11-1.8.12/man/XrmInitialize.man0000644014310600000120000001562114763154126012372 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XrmInitialize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmInitialize, XrmParseCommand, XrmValue, XrmOptionKind, XrmOptionDescRec \- initialize the Resource Manager, Resource Manager structures, and parse the command line .SH SYNTAX .HP #include .HP void XrmInitialize\^(void\^); .HP void XrmParseCommand\^(\^XrmDatabase *\fIdatabase\fP\^, XrmOptionDescList \fItable\fP\^, int \fItable_count\fP\^, _Xconst char *\fIname\fP\^, int *\fIargc_in_out\fP\^, char **\fIargv_in_out\fP\^); .SH ARGUMENTS .IP \fIargc_in_out\fP 1i Specifies the number of arguments and returns the number of remaining arguments. .IP \fIargv_in_out\fP 1i Specifies the command line arguments and returns the remaining arguments. .IP \fIdatabase\fP 1i Specifies the resource database. .IP \fIname\fP 1i Specifies the application name. .IP \fItable\fP 1i Specifies the table of command line arguments to be parsed. .IP \fItable_count\fP 1i Specifies the number of entries in the table. .SH DESCRIPTION The .B XrmInitialize function initialize the resource manager. It must be called before any other Xrm functions are used. .LP The .B XrmParseCommand function parses an (argc, argv) pair according to the specified option table, loads recognized options into the specified database with type \*(lqString,\*(rq and modifies the (argc, argv) pair to remove all recognized options. If database contains NULL, .B XrmParseCommand creates a new database and returns a pointer to it. Otherwise, entries are added to the database specified. If a database is created, it is created in the current locale. .LP The specified table is used to parse the command line. Recognized options in the table are removed from argv, and entries are added to the specified resource database in the order they occur in argv. The table entries contain information on the option string, the option name, the style of option, and a value to provide if the option kind is .BR XrmoptionNoArg . The option names are compared byte-for-byte to arguments in argv, independent of any locale. The resource values given in the table are stored in the resource database without modification. All resource database entries are created using a \*(lqString\*(rq representation type. The argc argument specifies the number of arguments in argv and is set on return to the remaining number of arguments that were not parsed. The name argument should be the name of your application for use in building the database entry. The name argument is prefixed to the resourceName in the option table before storing a database entry. The name argument is treated as a single component, even if it has embedded periods. No separating (binding) character is inserted, so the table must contain either a period (.) or an asterisk (*) as the first character in each resourceName entry. To specify a more completely qualified resource name, the resourceName entry can contain multiple components. If the name argument and the resourceNames are not in the Host Portable Character Encoding, the result is implementation-dependent. .SH STRUCTURES The .BR XrmValue , .BR XrmOptionKind , and .B XrmOptionDescRec structures contain: .LP .EX typedef struct { unsigned int size; XPointer addr; } XrmValue, *XrmValuePtr; .EE .LP .EX typedef enum { XrmoptionNoArg, /\&* Value is specified in XrmOptionDescRec.value */ XrmoptionIsArg, /\&* Value is the option string itself */ XrmoptionStickyArg, /\&* Value is characters immediately following option */ XrmoptionSepArg, /\&* Value is next argument in argv */ XrmoptionResArg, /\&* Resource and value in next argument in argv */ XrmoptionSkipArg, /\&* Ignore this option and the next argument in argv */ XrmoptionSkipLine, /\&* Ignore this option and the rest of argv */ XrmoptionSkipNArgs /\&* Ignore this option and the next \ \ \ XrmOptionDescRec.value arguments in argv */ } XrmOptionKind; .EE .LP .EX typedef struct { char *option; /\&* Option specification string in argv */ char *specifier; /\&* Binding and resource name (sans application name) */ XrmOptionKind argKind; /\&* Which style of option it is */ XPointer value; /\&* Value to provide if XrmoptionNoArg or \ \ \ XrmoptionSkipNArgs */ } XrmOptionDescRec, *XrmOptionDescList; .EE .SH "SEE ALSO" XrmGetResource(__libmansuffix__), XrmMergeDatabases(__libmansuffix__), XrmPutResource(__libmansuffix__), XrmUniqueQuark(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/BlackPixelOfScreen.man0000644014310600000120000001431514763154126013244 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH BlackPixelOfScreen __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME BlackPixelOfScreen, WhitePixelOfScreen, CellsOfScreen, DefaultColormapOfScreen, DefaultDepthOfScreen, DefaultGCOfScreen, DefaultVisualOfScreen, DoesBackingStore, DoesSaveUnders, DisplayOfScreen, XScreenNumberOfScreen, EventMaskOfScreen, HeightOfScreen, HeightMMOfScreen, MaxCmapsOfScreen, MinCmapsOfScreen, PlanesOfScreen, RootWindowOfScreen, WidthOfScreen, WidthMMOfScreen \- screen information functions and macros .SH SYNTAX .HP unsigned long BlackPixelOfScreen\^(\^Screen *\fIscreen\fP\^); .HP unsigned long WhitePixelOfScreen\^(\^Screen *\fIscreen\fP\^); .HP int CellsOfScreen\^(\^Screen *\fIscreen\fP\^); .HP Colormap DefaultColormapOfScreen\^(\^Screen *\fIscreen\fP\^); .HP int DefaultDepthOfScreen\^(\^Screen *\fIscreen\fP\^); .HP GC DefaultGCOfScreen\^(\^Screen *\fIscreen\fP\^); .HP Visual *DefaultVisualOfScreen\^(\^Screen *\fIscreen\fP\^); .HP int DoesBackingStore\^(\^Screen *\fIscreen\fP\^); .HP Bool DoesSaveUnders\^(\^Screen *\fIscreen\fP\^); .HP Display *DisplayOfScreen\^(\^Screen *\fIscreen\fP\^); .HP int XScreenNumberOfScreen\^(\^Screen *\fIscreen\fP\^); .HP long EventMaskOfScreen\^(\^Screen *\fIscreen\fP\^); .HP int HeightOfScreen\^(\^Screen *\fIscreen\fP\^); .HP int HeightMMOfScreen\^(\^Screen *\fIscreen\fP\^); .HP int MaxCmapsOfScreen\^(\^Screen *\fIscreen\fP\^); .HP int MinCmapsOfScreen\^(\^Screen *\fIscreen\fP\^); .HP int PlanesOfScreen\^(\^Screen *\fIscreen\fP\^); .HP Window RootWindowOfScreen\^(\^Screen *\fIscreen\fP\^); .HP int WidthOfScreen\^(\^Screen *\fIscreen\fP\^); .HP int WidthMMOfScreen\^(\^Screen *\fIscreen\fP\^); .SH ARGUMENTS .IP \fIscreen\fP 1i Specifies the appropriate .B Screen structure. .SH DESCRIPTION The .B BlackPixelOfScreen macro returns the black pixel value of the specified screen. .LP The .B WhitePixelOfScreen macro returns the white pixel value of the specified screen. .LP The .B CellsOfScreen macro returns the number of colormap cells in the default colormap of the specified screen. .LP The .B DefaultColormapOfScreen macro returns the default colormap of the specified screen. .LP The .B DefaultDepthOfScreen macro returns the default depth of the root window of the specified screen. .LP The .B DefaultGCOfScreen macro returns the default GC of the specified screen, which has the same depth as the root window of the screen. .LP The .B DefaultVisualOfScreen macro returns the default visual of the specified screen. .LP The .B DoesBackingStore macro returns .BR WhenMapped , .BR NotUseful , or .BR Always , which indicate whether the screen supports backing stores. .LP The .B DoesSaveUnders macro returns a Boolean value indicating whether the screen supports save unders. .LP The .B DisplayOfScreen macro returns the display of the specified screen. .LP The .B XScreenNumberOfScreen function returns the screen index number of the specified screen. .LP The .B EventMaskOfScreen macro returns the root event mask of the root window for the specified screen at connection setup. .LP The .B HeightOfScreen macro returns the height of the specified screen. .LP The .B HeightMMOfScreen macro returns the height of the specified screen in millimeters. .LP The .B MaxCmapsOfScreen macro returns the maximum number of installed colormaps supported by the specified screen. .LP The .B MinCmapsOfScreen macro returns the minimum number of installed colormaps supported by the specified screen. .LP The .B PlanesOfScreen macro returns the number of planes in the root window of the specified screen. .LP The .B RootWindowOfScreen macro returns the root window of the specified screen. .LP The .B WidthOfScreen macro returns the width of the specified screen. .LP The .B WidthMMOfScreen macro returns the width of the specified screen in millimeters. .SH "SEE ALSO" AllPlanes(__libmansuffix__), ImageByteOrder(__libmansuffix__), IsCursorKey(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XInitImage.man0000644014310600000120000002026114763154126011574 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCreateImage __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XInitImage, XCreateImage, XGetPixel, XPutPixel, XSubImage, XAddPixel, XDestroyImage \- image utilities .SH SYNTAX .HP Status XInitImage\^(\^XImage *\fIimage\fP\^); .HP XImage *XCreateImage\^(\^Display *\fIdisplay\fP\^, Visual *\fIvisual\fP\^, unsigned int \fIdepth\fP\^, int \fIformat\fP\^, int \fIoffset\fP\^, char *\fIdata\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, int \fIbitmap_pad\fP\^, int \fIbytes_per_line\fP\^); .HP unsigned long XGetPixel\^(\^XImage *\fIximage\fP\^, int \fIx\fP\^, int \fIy\fP\^); .HP int XPutPixel\^(\^XImage *\fIximage\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned long \fIpixel\fP\^); .HP XImage *XSubImage\^(\^XImage *\fIximage\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIsubimage_width\fP\^, unsigned int \fIsubimage_height\fP\^); .HP int XAddPixel\^(\^XImage *\fIximage\fP\^, long \fIvalue\fP\^); .HP int XDestroyImage\^(\^XImage *\^\fIximage\fP\^); .SH ARGUMENTS .IP \fIbitmap_pad\fP 1i Specifies the quantum of a scanline (8, 16, or 32). In other words, the start of one scanline is separated in client memory from the start of the next scanline by an integer multiple of this many bits. .IP \fIbytes_per_line\fP 1i Specifies the number of bytes in the client image between the start of one scanline and the start of the next. .IP \fIdata\fP 1i Specifies the image data. .IP \fIdepth\fP 1i Specifies the depth of the image. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIformat\fP 1i Specifies the format for the image. You can pass .BR XYBitmap , .BR XYPixmap , or .BR ZPixmap . .IP \fIheight\fP 1i Specifies the height of the image, in pixels. .IP \fIoffset\fP 1i Specifies the number of pixels to ignore at the beginning of the scanline. .IP \fIpixel\fP 1i Specifies the new pixel value. .IP \fIsubimage_height\fP 1i Specifies the height of the new subimage, in pixels. .IP \fIsubimage_width\fP 1i Specifies the width of the new subimage, in pixels. .IP \fIvalue\fP 1i Specifies the constant value that is to be added. .IP \fIvisual\fP 1i Specifies the .B Visual structure. .IP \fIwidth\fP 1i Specifies the width of the image, in pixels. .IP \fIximage\fP 1i Specifies the image. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates. .SH DESCRIPTION The .B XInitImage function initializes the internal image manipulation routines of an image structure, based on the values of the various structure members. All fields other than the manipulation routines must already be initialized. If the bytes_per_line member is zero, .B XInitImage will assume the image data is contiguous in memory and set the bytes_per_line member to an appropriate value based on the other members; otherwise, the value of bytes_per_line is not changed. All of the manipulation routines are initialized to functions that other Xlib image manipulation functions need to operate on the type of image specified by the rest of the structure. .LP This function must be called for any image constructed by the client before passing it to any other Xlib function. Image structures created or returned by Xlib do not need to be initialized in this fashion. .LP This function returns a nonzero status if initialization of the structure is successful. It returns zero if it detected some error or inconsistency in the structure, in which case the image is not changed. .LP The .B XCreateImage function allocates the memory needed for an .B XImage structure for the specified display but does not allocate space for the image itself. Rather, it initializes the structure byte-order, bit-order, and bitmap-unit values from the display and returns a pointer to the .B XImage structure. The red, green, and blue mask values are defined for Z format images only and are derived from the .B Visual structure passed in. Other values also are passed in. The offset permits the rapid displaying of the image without requiring each scanline to be shifted into position. If you pass a zero value in bytes_per_line, Xlib assumes that the scanlines are contiguous in memory and calculates the value of bytes_per_line itself. .LP Note that when the image is created using .BR XCreateImage , .BR XGetImage , or .BR XSubImage , the destroy procedure that the .B XDestroyImage function calls frees both the image structure and the data pointed to by the image structure. .LP The basic functions used to get a pixel, set a pixel, create a subimage, and add a constant value to an image are defined in the image object. The functions in this section are really macro invocations of the functions in the image object and are defined in .BR X11/Xutil.h . .LP The .B XGetPixel function returns the specified pixel from the named image. The pixel value is returned in normalized format (that is, the least significant byte of the long is the least significant byte of the pixel). The image must contain the x and y coordinates. .LP The .B XPutPixel function overwrites the pixel in the named image with the specified pixel value. The input pixel value must be in normalized format (that is, the least significant byte of the long is the least significant byte of the pixel). The image must contain the x and y coordinates. .LP The .B XSubImage function creates a new image that is a subsection of an existing one. It allocates the memory necessary for the new .B XImage structure and returns a pointer to the new image. The data is copied from the source image, and the image must contain the rectangle defined by x, y, subimage_width, and subimage_height. .LP The .B XAddPixel function adds a constant value to every pixel in an image. It is useful when you have a base pixel value from allocating color resources and need to manipulate the image to that form. .LP The .B XDestroyImage function deallocates the memory associated with the .B XImage structure. .SH "SEE ALSO" XPutImage(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XDefaultString.man0000644014310600000120000000010314763154126012472 .so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ libX11-1.8.12/man/XFontStruct.man0000644014310600000120000000006314763154126012037 .so man__libmansuffix__/XLoadFont.__libmansuffix__ libX11-1.8.12/man/XGetOCValues.man0000644014310600000120000000006314763154126012045 .so man__libmansuffix__/XCreateOC.__libmansuffix__ libX11-1.8.12/man/XCreateOC.man0000644014310600000120000001125614763154126011357 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCreateOC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateOC, XDestroyOC, XSetOCValues, XGetOCValues, XOMOfOC \- create output contexts .SH SYNTAX .HP XOC XCreateOC\^(\^XOM \fIom\fP\^, ...); .HP void XDestroyOC\^(\^XOC \fIoc\fP\^); .HP char * XSetOCValues\^(\^XOC \fIoc\fP\^, ...); .HP char * XGetOCValues\^(\^XOC \fIoc\fP\^, ...); .HP XOM XOMOfOC\^(\^XOC \fIoc\fP\^); .SH ARGUMENTS .IP \fIoc\fP 1i Specifies the output context. .IP \fIom\fP 1i Specifies the output method. .IP ... 1i Specifies the variable length argument list to set or get XOC values. .SH DESCRIPTION The .B XCreateOC function creates an output context within the specified output method. .LP The base font names argument is mandatory at creation time, and the output context will not be created unless it is provided. All other output context values can be set later. .LP .B XCreateOC returns NULL if no output context could be created. NULL can be returned for any of the following reasons: .IP \(bu 5 A required argument was not set. .IP \(bu 5 A read-only argument was set. .IP \(bu 5 An argument name is not recognized. .IP \(bu 5 The output method encountered an output method implementation-dependent error. .LP The .B XDestroyOC function destroys the specified output context. .LP The .B XSetOCValues function returns NULL if no error occurred; otherwise, it returns the name of the first argument that could not be set. An argument might not be set for any of the following reasons: .IP \(bu 5 The argument is read-only. .IP \(bu 5 The argument name is not recognized. .IP \(bu 5 An implementation-dependent error occurs. .LP Each value to be set must be an appropriate datum, matching the data type imposed by the semantics of the argument. .LP The .B XGetOCValues function returns NULL if no error occurred; otherwise, it returns the name of the first argument that could not be obtained. An argument might not be obtained for any of the following reasons: .IP \(bu 5 The argument name is not recognized. .IP \(bu 5 An implementation-dependent error occurs. .LP Each argument value following a name must point to a location where the value is to be stored. .LP The .B XOMOfOC function returns the output method associated with the specified output context. .SH "SEE ALSO" XCreateOM(__libmansuffix__), XCreateFontSet(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XCreateRegion.man0000644014310600000120000000654114763154126012302 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCreateRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateRegion, XSetRegion, XDestroyRegion \- create or destroy regions .SH SYNTAX .HP Region XCreateRegion\^(void\^); .HP int XSetRegion\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Region \fIr\fP\^); .HP int XDestroyRegion\^(\^Region \fIr\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fIr\fP 1i Specifies the region. .SH DESCRIPTION The .B XCreateRegion function creates a new empty region. .LP The .B XSetRegion function sets the clip-mask in the GC to the specified region. The region is specified relative to the drawable's origin. The resulting GC clip origin is implementation-dependent. Once it is set in the GC, the region can be destroyed. .LP The .B XDestroyRegion function deallocates the storage associated with a specified region. .SH "SEE ALSO" XEmptyRegion(__libmansuffix__), XIntersectRegion(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XAddPixel.man0000644014310600000120000000006414763154126011417 .so man__libmansuffix__/XInitImage.__libmansuffix__ libX11-1.8.12/man/XcmsCIELuv.man0000644014310600000120000000006314763154126011516 .so man__libmansuffix__/XcmsColor.__libmansuffix__ libX11-1.8.12/man/XClassHint.man0000644014310600000120000000007114763154126011613 .so man__libmansuffix__/XAllocClassHint.__libmansuffix__ libX11-1.8.12/man/XConfigureRequestEvent.man0000644014310600000120000001253314763154126014225 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XConfigureRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XConfigureRequestEvent \- ConfigureRequest event structure .SH STRUCTURES The structure for .B ConfigureRequest events contains: .LP .EX typedef struct { int type; /\&* ConfigureRequest */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window parent; Window window; int x, y; int width, height; int border_width; Window above; int detail; /\&* Above, Below, TopIf, BottomIf, Opposite */ unsigned long value_mask; } XConfigureRequestEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The parent member is set to the parent window. The window member is set to the window whose size, position, border width, and/or stacking order is to be reconfigured. The value_mask member indicates which components were specified in the .B ConfigureWindow protocol request. The corresponding values are reported as given in the request. The remaining values are filled in from the current geometry of the window, except in the case of above (sibling) and detail (stack-mode), which are reported as .B None and .BR Above , respectively, if they are not given in the request. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XEmptyRegion.man0000644014310600000120000000761414763154126012177 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XEmptyRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XEmptyRegion, XEqualRegion, XPointInRegion, XRectInRegion \- determine if regions are empty or equal .SH SYNTAX .HP Bool XEmptyRegion\^(\^Region \fIr\fP\^); .HP Bool XEqualRegion\^(\^Region \fIr1\fP\^, Region \fIr2\fP\^); .HP Bool XPointInRegion\^(\^Region \fIr\fP\^, int \fIx\fP\^, int \fIy\fP\^); .HP int XRectInRegion\^(\^Region \fIr\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^); .SH ARGUMENTS .IP \fIr\fP 1i Specifies the region. .IP \fIr1\fP 1i .br .ns .IP \fIr2\fP 1i Specify the two regions. .ds Wh .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height, which define the rectangle. .ds Xy .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates, which define the point or the coordinates of the upper-left corner of the rectangle. .SH DESCRIPTION The .B XEmptyRegion function returns .B True if the region is empty. .LP The .B XEqualRegion function returns .B True if the two regions have the same offset, size, and shape. .LP The .B XPointInRegion function returns .B True if the point (x, y) is contained in the region r. .LP The .B XRectInRegion function returns .B RectangleIn if the rectangle is entirely in the specified region, .B RectangleOut if the rectangle is entirely out of the specified region, and .B RectanglePart if the rectangle is partially in the specified region. .SH "SEE ALSO" XCreateRegion(__libmansuffix__), XIntersectRegion(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XFillPolygon.man0000644014310600000120000000007014763154126012160 .so man__libmansuffix__/XFillRectangle.__libmansuffix__ libX11-1.8.12/man/XcmsAllocNamedColor.man0000644014310600000120000000007014763154126013423 .so man__libmansuffix__/XcmsAllocColor.__libmansuffix__ libX11-1.8.12/man/XrmSetDatabase.man0000644014310600000120000000007414763154126012445 .so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__ libX11-1.8.12/man/XcmsCIELuvQueryMaxLC.man0000644014310600000120000000007514763154126013434 .so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__ libX11-1.8.12/man/XAllocStandardColormap.man0000644014310600000120000002265014763154126014142 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual '\" t .TH XAllocStandardColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllocStandardColormap, XSetRGBColormaps, XGetRGBColormaps, XStandardColormap \- allocate, set, or read a standard colormap structure .SH SYNTAX .HP XStandardColormap *XAllocStandardColormap\^(void\^); .HP void XSetRGBColormaps\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XStandardColormap *\fIstd_colormap\fP, int \fIcount\fP, Atom \fIproperty\fP\^); .HP Status XGetRGBColormaps\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XStandardColormap **\fIstd_colormap_return\fP, int *\fIcount_return\fP, Atom \fIproperty\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIcount\fP 1i Specifies the number of colormaps. .IP \fIcount_return\fP 1i Returns the number of colormaps. .IP \fIproperty\fP 1i Specifies the property name. .IP \fIstd_colormap\fP 1i Specifies the .B XStandardColormap structure to be used. .IP \fIstd_colormap_return\fP 1i Returns the .B XStandardColormap structure. .SH DESCRIPTION The .B XAllocStandardColormap function allocates and returns a pointer to a .B XStandardColormap structure. Note that all fields in the .B XStandardColormap structure are initially set to zero. If insufficient memory is available, .B XAllocStandardColormap returns NULL. To free the memory allocated to this structure, use .BR XFree . .LP The .B XSetRGBColormaps function replaces the RGB colormap definition in the specified property on the named window. If the property does not already exist, .B XSetRGBColormaps sets the RGB colormap definition in the specified property on the named window. The property is stored with a type of RGB_COLOR_MAP and a format of 32. Note that it is the caller's responsibility to honor the ICCCM restriction that only RGB_DEFAULT_MAP contain more than one definition. .LP The .B XSetRGBColormaps function usually is only used by window or session managers. To create a standard colormap, follow this procedure: .IP 1. 5 Open a new connection to the same server. .IP 2. 5 Grab the server. .IP 3. 5 See if the property is on the property list of the root window for the screen. .IP 4. 5 If the desired property is not present: .RS .IP \(bu 5 Create a colormap (unless you are using the default colormap of the screen). .IP \(bu 5 Determine the color characteristics of the visual. .IP \(bu 5 Allocate cells in the colormap (or create it with .BR AllocAll ). .IP \(bu 5 Call .B XStoreColors to store appropriate color values in the colormap. .IP \(bu 5 Fill in the descriptive members in the .B XStandardColormap structure. .IP \(bu 5 Attach the property to the root window. .IP \(bu 5 Use .B XSetCloseDownMode to make the resource permanent. .RE .IP 5. 5 Ungrab the server. .LP .B XSetRGBColormaps can generate .BR BadAlloc , .BR BadAtom , and .B BadWindow errors. .LP The .B XGetRGBColormaps function returns the RGB colormap definitions stored in the specified property on the named window. If the property exists, is of type RGB_COLOR_MAP, is of format 32, and is long enough to contain a colormap definition, .B XGetRGBColormaps allocates and fills in space for the returned colormaps and returns a nonzero status. If the visualid is not present, .B XGetRGBColormaps assumes the default visual for the screen on which the window is located; if the killid is not present, .B None is assumed, which indicates that the resources cannot be released. Otherwise, none of the fields are set, and .B XGetRGBColormaps returns a zero status. Note that it is the caller's responsibility to honor the ICCCM restriction that only RGB_DEFAULT_MAP contain more than one definition. .LP .B XGetRGBColormaps can generate .B BadAtom and .B BadWindow errors. .SH STRUCTURES The .B XStandardColormap structure contains: .LP /\&* Hints */ .TS lw(.5i) lw(2i) lw(1i). T{ \&#define T} T{ .B ReleaseByFreeingColormap T} T{ ( (XID) 1L) T} .TE /\&* Values */ .EX typedef struct { Colormap colormap; unsigned long red_max; unsigned long red_mult; unsigned long green_max; unsigned long green_mult; unsigned long blue_max; unsigned long blue_mult; unsigned long base_pixel; VisualID visualid; XID killid; } XStandardColormap; .EE .LP The colormap member is the colormap created by the .B XCreateColormap function. The red_max, green_max, and blue_max members give the maximum red, green, and blue values, respectively. Each color coefficient ranges from zero to its max, inclusive. For example, a common colormap allocation is 3/3/2 (3 planes for red, 3 planes for green, and 2 planes for blue). This colormap would have red_max = 7, green_max = 7, and blue_max = 3. An alternate allocation that uses only 216 colors is red_max = 5, green_max = 5, and blue_max = 5. .LP The red_mult, green_mult, and blue_mult members give the scale factors used to compose a full pixel value. (See the discussion of the base_pixel members for further information.) For a 3/3/2 allocation, red_mult might be 32, green_mult might be 4, and blue_mult might be 1. For a 6-colors-each allocation, red_mult might be 36, green_mult might be 6, and blue_mult might be 1. .LP The base_pixel member gives the base pixel value used to compose a full pixel value. Usually, the base_pixel is obtained from a call to the .B XAllocColorPlanes function. Given integer red, green, and blue coefficients in their appropriate ranges, one then can compute a corresponding pixel value by using the following expression: .LP .EX (r * red_mult + g * green_mult + b * blue_mult + base_pixel) & 0xFFFFFFFF .EE .LP For .B GrayScale colormaps, only the colormap, red_max, red_mult, and base_pixel members are defined. The other members are ignored. To compute a .B GrayScale pixel value, use the following expression: .LP .EX (gray * red_mult + base_pixel) & 0xFFFFFFFF .EE .LP Negative multipliers can be represented by converting the 2's complement representation of the multiplier into an unsigned long and storing the result in the appropriate _mult field. The step of masking by 0xFFFFFFFF effectively converts the resulting positive multiplier into a negative one. The masking step will take place automatically on many machine architectures, depending on the size of the integer type used to do the computation, .LP The visualid member gives the ID number of the visual from which the colormap was created. The killid member gives a resource ID that indicates whether the cells held by this standard colormap are to be released by freeing the colormap ID or by calling the .B XKillClient function on the indicated resource. (Note that this method is necessary for allocating out of an existing colormap.) .LP The properties containing the .B XStandardColormap information have the type RGB_COLOR_MAP. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadAtom A value for an Atom argument does not name a defined Atom. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocColor(__libmansuffix__), XCreateColormap(__libmansuffix__), XFree(__libmansuffix__), XSetCloseDownMode(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/Xutf8DrawText.man0000644014310600000120000000006514763154126012277 .so man__libmansuffix__/XmbDrawText.__libmansuffix__ libX11-1.8.12/man/IsMiscFunctionKey.man0000644014310600000120000000006514763154126013144 .so man__libmansuffix__/IsCursorKey.__libmansuffix__ libX11-1.8.12/man/DisplayHeightMM.man0000644014310600000120000000007014763154126012562 .so man__libmansuffix__/ImageByteOrder.__libmansuffix__ libX11-1.8.12/man/XInternAtom.man0000644014310600000120000001445614763154126012017 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XInternAtom __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XInternAtom, XInternAtoms, XGetAtomName, XGetAtomNames \- create or return atom names .SH SYNTAX .HP Atom XInternAtom\^(\^Display *\fIdisplay\fP\^, _Xconst char *\fIatom_name\fP\^, Bool \fIonly_if_exists\fP\^); .HP Status XInternAtoms\^(\^Display *\fIdisplay\fP\^, char **\fInames\fP\^, int \fIcount\fP\^, Bool \fIonly_if_exists\fP\^, Atom *\fIatoms_return\fP\^); .HP char *XGetAtomName\^(\^Display *\fIdisplay\fP\^, Atom \fIatom\fP\^); .HP Status XGetAtomNames\^(\^Display *\fIdisplay\fP\^, Atom *\fIatoms\fP\^, int \fIcount\fP\^, char **\fInames_return\fP\^); .SH ARGUMENTS .IP \fIatom\fP 1i Specifies the atom for the property name you want returned. .IP \fIatoms\fP 1i Specifies the array of atoms. .IP \fIatom_name\fP 1i Specifies the name associated with the atom you want returned. .IP \fIatoms_return\fP 1i Returns the atoms. .IP \fIcount\fP 1i Specifies the number of atom names in the array. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fInames\fP 1i Specifies the array of atom names. .IP \fInames_return\fP 1i Returns the atom names. .IP \fIonly_if_exists\fP 1i Specifies a Boolean value that indicates whether the atom must be created. .SH DESCRIPTION The .B XInternAtom function returns the atom identifier associated with the specified atom_name string. If only_if_exists is .BR False , the atom is created if it does not exist. Therefore, .B XInternAtom can return .BR None . If the atom name is not in the Host Portable Character Encoding, the result is implementation-dependent. Uppercase and lowercase matter; the strings \*(lqthing\*(rq, \*(lqThing\*(rq, and \*(lqthinG\*(rq all designate different atoms. The atom will remain defined even after the client's connection closes. It will become undefined only when the last connection to the X server closes. .LP .B XInternAtom can generate .B BadAlloc and .B BadValue errors. .LP The .B XInternAtoms function returns the atom identifiers associated with the specified names. The atoms are stored in the atoms_return array supplied by the caller. Calling this function is equivalent to calling .B XInternAtom for each of the names in turn with the specified value of only_if_exists, but this function minimizes the number of round-trip protocol exchanges between the client and the X server. .LP This function returns a nonzero status if atoms are returned for all of the names; otherwise, it returns zero. .LP .B XInternAtoms can generate .B BadAlloc and .B BadValue errors. .LP The .B XGetAtomName function returns the name associated with the specified atom. If the data returned by the server is in the Latin Portable Character Encoding, then the returned string is in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. To free the resulting string, call .BR XFree . .LP .B XGetAtomName can generate a .B BadAtom error. .LP The .B XGetAtomNames function returns the names associated with the specified atoms. The names are stored in the names_return array supplied by the caller. Calling this function is equivalent to calling .B XGetAtomName for each of the atoms in turn, but this function minimizes the number of round-trip protocol exchanges between the client and the X server. .LP This function returns a nonzero status if names are returned for all of the atoms; otherwise, it returns zero. .LP .B XGetAtomNames can generate a .B BadAtom error. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadAtom A value for an Atom argument does not name a defined Atom. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XFree(__libmansuffix__), XGetWindowProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetModifierMapping.man0000644014310600000120000000010014763154126013442 .so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ libX11-1.8.12/man/XWindowChanges.man0000644014310600000120000000007214763154126012464 .so man__libmansuffix__/XConfigureWindow.__libmansuffix__ libX11-1.8.12/man/XRegisterIMInstantiateCallback.man0000644014310600000120000000006114763154126015555 .so man__libmansuffix__/XOpenIM.__libmansuffix__ libX11-1.8.12/man/XcmsAllocColor.man0000644014310600000120000001402114763154126012457 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XcmsAllocColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsAllocColor, XcmsAllocNamedColor \- allocate colors .SH SYNTAX .HP Status XcmsAllocColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, XcmsColor *\fIcolor_in_out\fP\^, XcmsColorFormat \fIresult_format\fP\^); .HP Status XcmsAllocNamedColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, _Xconst char *\fIcolor_string\fP\^, XcmsColor *\fIcolor_screen_return\fP\^, XcmsColor *\fIcolor_exact_return\fP\^, XcmsColorFormat \fIresult_format\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIcolormap\fP 1i Specifies the colormap. .IP \fIcolor_exact_return\fP 1i Returns the color specification parsed from the color string or parsed from the corresponding string found in a color-name database. .IP \fIcolor_in_out\fP 1i Specifies the color to allocate and returns the pixel and color that is actually used in the colormap. .IP \fIcolor_screen_return\fP 1i Returns the pixel value of the color cell and color specification that actually is stored for that cell. .ds St \ .IP \fIcolor_string\fP 1i Specifies the color string whose color definition structure is to be returned. .IP \fIresult_format\fP 1i Specifies the color format for the returned color specification. .SH DESCRIPTION The .B XcmsAllocColor function is similar to .B XAllocColor except the color can be specified in any format. The .B XcmsAllocColor function ultimately calls .B XAllocColor to allocate a read-only color cell (colormap entry) with the specified color. .B XcmsAllocColor first converts the color specified to an RGB value and then passes this to .BR XAllocColor . .B XcmsAllocColor returns the pixel value of the color cell and the color specification actually allocated. This returned color specification is the result of converting the RGB value returned by .B XAllocColor into the format specified with the result_format argument. If there is no interest in a returned color specification, unnecessary computation can be bypassed if result_format is set to .BR XcmsRGBFormat . The corresponding colormap cell is read-only. If this routine returns .BR XcmsFailure , the color_in_out color specification is left unchanged. .LP .B XcmsAllocColor can generate a .B BadColor errors. .LP The .B XcmsAllocNamedColor function is similar to .B XAllocNamedColor except that the color returned can be in any format specified. This function ultimately calls .B XAllocColor to allocate a read-only color cell with the color specified by a color string. The color string is parsed into an .B XcmsColor structure (see .BR XcmsLookupColor ), converted to an RGB value, and finally passed to .BR XAllocColor . If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. .LP This function returns both the color specification as a result of parsing (exact specification) and the actual color specification stored (screen specification). This screen specification is the result of converting the RGB value returned by .B XAllocColor into the format specified in result_format. If there is no interest in a returned color specification, unnecessary computation can be bypassed if result_format is set to .BR XcmsRGBFormat . If color_screen_return and color_exact_return point to the same structure, the pixel field will be set correctly, but the color values are undefined. .LP .LP .B XcmsAllocNamedColor can generate a .B BadColor errors. .SH DIAGNOSTICS .TP 1i .B BadColor A value for a Colormap argument does not name a defined Colormap. .SH "SEE ALSO" XcmsQueryColor(__libmansuffix__), XcmsStoreColor(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XGetInputFocus.man0000644014310600000120000000007014763154126012461 .so man__libmansuffix__/XSetInputFocus.__libmansuffix__ libX11-1.8.12/man/XrmPutLineResource.man0000644014310600000120000000007014763154126013351 .so man__libmansuffix__/XrmPutResource.__libmansuffix__ libX11-1.8.12/man/XLowerWindow.man0000644014310600000120000000006614763154126012207 .so man__libmansuffix__/XRaiseWindow.__libmansuffix__ libX11-1.8.12/man/XMoveResizeWindow.man0000644014310600000120000000007214763154126013204 .so man__libmansuffix__/XConfigureWindow.__libmansuffix__ libX11-1.8.12/man/XcmsTekHVC.man0000644014310600000120000000006314763154126011513 .so man__libmansuffix__/XcmsColor.__libmansuffix__ libX11-1.8.12/man/XGetSubImage.man0000644014310600000120000000006314763154126012060 .so man__libmansuffix__/XPutImage.__libmansuffix__ libX11-1.8.12/man/XcmsCIELab.man0000644014310600000120000000006314763154126011446 .so man__libmansuffix__/XcmsColor.__libmansuffix__ libX11-1.8.12/man/XDestroyWindowEvent.man0000644014310600000120000001142714763154126013555 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XDestroyWindowEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDestroyWindowEvent \- DestroyNotify event structure .SH STRUCTURES The structure for .B DestroyNotify events contains: .LP .EX typedef struct { int type; /\&* DestroyNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window event; Window window; } XDestroyWindowEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The event member is set either to the destroyed window or to its parent, depending on whether .B StructureNotify or .B SubstructureNotify was selected. The window member is set to the window that is destroyed. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XcmsCCCOfColormap.man0000644014310600000120000000755414763154126013015 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XcmsCCCOfColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsCCCOfColormap, XcmsSetCCCOfColormap \- query and modify CCC of a colormap .SH SYNTAX .HP XcmsCCC XcmsCCCOfColormap\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^); .HP XcmsCCC XcmsSetCCCOfColormap\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, XcmsCCC \fIccc\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIccc\fP 1i Specifies the CCC. .IP \fIcolormap\fP 1i Specifies the colormap. .SH DESCRIPTION The .B XcmsCCCOfColormap function returns the CCC associated with the specified colormap. Once obtained, the CCC attributes can be queried or modified. Unless the CCC associated with the specified colormap is changed with .BR XcmsSetCCCOfColormap , this CCC is used when the specified colormap is used as an argument to color functions. .LP The .B XcmsSetCCCOfColormap function changes the CCC associated with the specified colormap. It returns the CCC previously associated with the colormap. If they are not used again in the application, CCCs should be freed by calling .BR XcmsFreeCCC . Several colormaps may share the same CCC without restriction; this includes the CCCs generated by Xlib with each colormap. Xlib, however, creates a new CCC with each new colormap. .SH "SEE ALSO" DisplayOfCCC(__libmansuffix__), XcmsConvertColors(__libmansuffix__), XcmsCreateCCC(__libmansuffix__), XcmsDefaultCCC(__libmansuffix__), XcmsSetWhitePoint(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetForeground.man0000644014310600000120000000006314763154126012512 .so man__libmansuffix__/XSetState.__libmansuffix__ libX11-1.8.12/man/RootWindow.man0000644014310600000120000000006314763154126011707 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XFreeFontPath.man0000644014310600000120000000006614763154126012254 .so man__libmansuffix__/XSetFontPath.__libmansuffix__ libX11-1.8.12/man/XcmsQueryColor.man0000644014310600000120000001455114763154126012542 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XcmsQueryColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsQueryColor, XcmsQueryColors, XcmsLookupColor \- obtain color values .SH SYNTAX .HP Status XcmsQueryColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, XcmsColor *\fIcolor_in_out\fP\^, XcmsColorFormat \fIresult_format\fP\^); .HP Status XcmsQueryColors\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, XcmsColor \fIcolors_in_out\fP\^[\^]\^, unsigned int \fIncolors\fP\^, XcmsColorFormat \fIresult_format\fP\^); .HP Status XcmsLookupColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, _Xconst char *\fIcolor_string\fP\^, XcmsColor *\fIcolor_exact_return\fP\^, XcmsColor *\fIcolor_screen_return\fP\^, XcmsColorFormat \fIresult_format\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIcolormap\fP 1i Specifies the colormap. .IP \fIcolor_exact_return\fP 1i Returns the color specification parsed from the color string or parsed from the corresponding string found in a color-name database. .IP \fIcolor_in_out\fP 1i Specifies the pixel member that indicates the color cell to query. The color specification stored for the color cell is returned in this .B XcmsColor structure. .IP \fIcolor_screen_return\fP 1i Returns the color that can be reproduced on the screen. .IP \fIcolor_string\fP 1i Specifies the color string. .IP \fIresult_format\fP 1i Specifies the color format for the returned color specifications (color_screen_return and color_exact_return arguments). If the format is .B XcmsUndefinedFormat and the color string contains a numerical color specification, the specification is returned in the format used in that numerical color specification. If the format is .B XcmsUndefinedFormat and the color string contains a color name, the specification is returned in the format used to store the color in the database. .IP \fIncolors\fP 1i Specifies the number of .B XcmsColor structures in the color-specification array. .SH DESCRIPTION The .B XcmsQueryColor function obtains the RGB value for the pixel value in the pixel member of the specified .B XcmsColor structure and then converts the value to the target format as specified by the result_format argument. If the pixel is not a valid index in the specified colormap, a .B BadValue error results. The .B XcmsQueryColors function obtains the RGB values for pixel values in the pixel members of .B XcmsColor structures and then converts the values to the target format as specified by the result_format argument. If a pixel is not a valid index into the specified colormap, a .B BadValue error results. If more than one pixel is in error, the one that gets reported is arbitrary. .LP .B XcmsQueryColor and .B XcmsQueryColors can generate .B BadColor and .B BadValue errors. .LP The .B XcmsLookupColor function looks up the string name of a color with respect to the screen associated with the specified colormap. It returns both the exact color values and the closest values provided by the screen with respect to the visual type of the specified colormap. The values are returned in the format specified by result_format. If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. .B XcmsLookupColor returns .B XcmsSuccess or .B XcmsSuccessWithCompression if the name is resolved; otherwise, it returns .BR XcmsFailure . If .B XcmsSuccessWithCompression is returned, the color specification returned in color_screen_return is the result of gamut compression. .SH DIAGNOSTICS .TP 1i .B BadColor A value for a Colormap argument does not name a defined Colormap. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XcmsAllocColor(__libmansuffix__), XcmsStoreColor(__libmansuffix__), XQueryColor(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XrmUniqueQuark.man0000644014310600000120000001732514763154126012546 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XrmUniqueQuark __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmUniqueQuark, XrmStringToQuark, XrmPermStringToQuark, XrmQuarkToString, XrmStringToQuarkList, XrmStringToBindingQuarkList \- manipulate resource quarks .SH SYNOPSIS .HP #include .HP XrmQuark XrmUniqueQuark\^(void); .LP \&#define XrmStringToName(string) XrmStringToQuark(string) .br \&#define XrmStringToClass(string) XrmStringToQuark(string) .br \&#define XrmStringToRepresentation(string) XrmStringToQuark(string) .HP XrmQuark XrmStringToQuark\^(\^char *\fIstring\fP\^); .HP XrmQuark XrmPermStringToQuark\^(\^_Xconst char *\fIstring\fP\^); .LP \&#define XrmStringToName(string) XrmStringToQuark(string) .br \&#define XrmStringToClass(string) XrmStringToQuark(string) .br \&#define XrmStringToRepresentation(string) XrmStringToQuark(string) .HP XrmQuark XrmStringToQuark\^(\^char *\fIstring\fP\^); .HP XrmQuark XrmPermStringToQuark\^(\^_Xconst char *\fIstring\fP\^); .LP \&#define XrmNameToString(name) XrmQuarkToString(name) .br \&#define XrmClassToString(class) XrmQuarkToString(class) .br \&#define XrmRepresentationToString(type) XrmQuarkToString(type) .HP char *XrmQuarkToString\^(\^XrmQuark \fIquark\fP\^); .LP \&#define XrmStringToNameList(str, name) XrmStringToQuarkList((str), (name)) .br \&#define XrmStringToClassList(str,class) XrmStringToQuarkList((str), (class)) .sp .HP void XrmStringToQuarkList\^(\^char *\fIstring\fP\^, XrmQuarkList \fIquarks_return\fP\^); .HP void XrmStringToBindingQuarkList\^(\^_Xconst char *\fIstring\fP\^, XrmBindingList \fIbindings_return\fP\^, XrmQuarkList \fIquarks_return\fP\^); .SH ARGUMENTS .IP \fIbindings_return\fP 1i Returns the binding list. .IP \fIquark\fP 1i Specifies the quark for which the equivalent string is desired. .IP \fIquarks_return\fP 1i Returns the list of quarks. .IP \fIstring\fP 1i Specifies the string for which a quark or quark list is to be allocated. .SH DESCRIPTION The .B XrmUniqueQuark function allocates a quark that is guaranteed not to represent any string that is known to the resource manager. .LP These functions can be used to convert from string to quark representation. If the string is not in the Host Portable Character Encoding, the conversion is implementation-dependent. The string argument to .B XrmStringToQuark need not be permanently allocated storage. .B XrmPermStringToQuark is just like .BR XrmStringToQuark , except that Xlib is permitted to assume the string argument is permanently allocated, and, hence, that it can be used as the value to be returned by .BR XrmQuarkToString . .LP For any given quark, if .B XrmStringToQuark returns a non-NULL value, all future calls will return the same value (identical address). .LP These functions can be used to convert from quark representation to string. The string pointed to by the return value must not be modified or freed. The returned string is byte-for-byte equal to the original string passed to one of the string-to-quark routines. If no string exists for that quark, .B XrmQuarkToString returns NULL. For any given quark, if .B XrmQuarkToString returns a non-NULL value, all future calls will return the same value (identical address). .LP These functions can be used to convert from string to quark representation. If the string is not in the Host Portable Character Encoding, the conversion is implementation-dependent. The string argument to .B XrmStringToQuark need not be permanently allocated storage. .B XrmPermStringToQuark is just like .BR XrmStringToQuark , except that Xlib is permitted to assume the string argument is permanently allocated, and, hence, that it can be used as the value to be returned by .BR XrmQuarkToString . .LP For any given quark, if .B XrmStringToQuark returns a non-NULL value, all future calls will return the same value (identical address). .LP The .B XrmStringToQuarkList function converts the null-terminated string (generally a fully qualified name) to a list of quarks. The caller must allocate sufficient space for the quarks list before calling .BR XrmStringToQuarkList . Note that the string must be in the valid ResourceName format (see section 15.1). If the string is not in the Host Portable Character Encoding, the conversion is implementation-dependent. .LP A binding list is a list of type .B XrmBindingList and indicates if components of name or class lists are bound tightly or loosely (that is, if wildcarding of intermediate components is specified). .LP .EX typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList; .EE .LP .B XrmBindTightly indicates that a period separates the components, and .B XrmBindLoosely indicates that an asterisk separates the components. .LP The .B XrmStringToBindingQuarkList function converts the specified string to a binding list and a quark list. The caller must allocate sufficient space for the quarks list and the binding list before calling .BR XrmStringToBindingQuarkList . If the string is not in the Host Portable Character Encoding the conversion is implementation-dependent. Component names in the list are separated by a period or an asterisk character. If the string does not start with period or asterisk, a period is assumed. For example, \*(lq*a.b*c\*(rq becomes: .LP .TS L l l l. quarks a b c bindings loose tight loose .TE .SH "SEE ALSO" XrmGetResource(__libmansuffix__), XrmInitialize(__libmansuffix__), XrmMergeDatabases(__libmansuffix__), XrmPutResource(__libmansuffix__) .LP \fI\*(xL\fP libX11-1.8.12/man/XCreateBitmapFromData.man0000644014310600000120000000007114763154126013701 .so man__libmansuffix__/XReadBitmapFile.__libmansuffix__ libX11-1.8.12/man/Xutf8TextPerCharExtents.man0000644014310600000120000000007714763154126014304 .so man__libmansuffix__/XmbTextPerCharExtents.__libmansuffix__ libX11-1.8.12/man/XSetWindowBorderWidth.man0000644014310600000120000000007214763154126014005 .so man__libmansuffix__/XConfigureWindow.__libmansuffix__ libX11-1.8.12/man/XcmsQueryColors.man0000644014310600000120000000007014763154126012714 .so man__libmansuffix__/XcmsQueryColor.__libmansuffix__ libX11-1.8.12/man/XGetWMNormalHints.man0000644014310600000120000000007114763154126013065 .so man__libmansuffix__/XAllocSizeHints.__libmansuffix__ libX11-1.8.12/man/XGrabKeyboard.man0000644014310600000120000001541714763154126012271 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XGrabKeyboard __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGrabKeyboard, XUngrabKeyboard \- grab the keyboard .SH SYNTAX .HP int XGrabKeyboard\^(\^Display *\fIdisplay\fP\^, Window \fIgrab_window\fP\^, Bool \fIowner_events\fP\^, int \fIpointer_mode\fP\^, int \fIkeyboard_mode\fP\^, Time \fItime\fP\^); .HP int XUngrabKeyboard\^(\^Display *\fIdisplay\fP\^, Time \fItime\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgrab_window\fP 1i Specifies the grab window. .IP \fIkeyboard_mode\fP 1i Specifies further processing of keyboard events. You can pass .B GrabModeSync or .BR GrabModeAsync . .IP \fIowner_events\fP 1i Specifies a Boolean value that indicates whether the keyboard events are to be reported as usual. .IP \fIpointer_mode\fP 1i Specifies further processing of pointer events. You can pass .B GrabModeSync or .BR GrabModeAsync . .IP \fItime\fP 1i Specifies the time. You can pass either a timestamp or .BR CurrentTime . .SH DESCRIPTION The .B XGrabKeyboard function actively grabs control of the keyboard and generates .B FocusIn and .B FocusOut events. Further key events are reported only to the grabbing client. .B XGrabKeyboard overrides any active keyboard grab by this client. If owner_events is .BR False , all generated key events are reported with respect to grab_window. If owner_events is .B True and if a generated key event would normally be reported to this client, it is reported normally; otherwise, the event is reported with respect to the grab_window. Both .B KeyPress and .B KeyRelease events are always reported, independent of any event selection made by the client. .LP If the keyboard_mode argument is .BR GrabModeAsync , keyboard event processing continues as usual. If the keyboard is currently frozen by this client, then processing of keyboard events is resumed. If the keyboard_mode argument is .BR GrabModeSync , the state of the keyboard (as seen by client applications) appears to freeze, and the X server generates no further keyboard events until the grabbing client issues a releasing .B XAllowEvents call or until the keyboard grab is released. Actual keyboard changes are not lost while the keyboard is frozen; they are simply queued in the server for later processing. .LP If pointer_mode is .BR GrabModeAsync , pointer event processing is unaffected by activation of the grab. If pointer_mode is .BR GrabModeSync , the state of the pointer (as seen by client applications) appears to freeze, and the X server generates no further pointer events until the grabbing client issues a releasing .B XAllowEvents call or until the keyboard grab is released. Actual pointer changes are not lost while the pointer is frozen; they are simply queued in the server for later processing. .LP If the keyboard is actively grabbed by some other client, .B XGrabKeyboard fails and returns .BR AlreadyGrabbed . If grab_window is not viewable, it fails and returns .BR GrabNotViewable . If the keyboard is frozen by an active grab of another client, it fails and returns .BR GrabFrozen . If the specified time is earlier than the last-keyboard-grab time or later than the current X server time, it fails and returns .BR GrabInvalidTime . Otherwise, the last-keyboard-grab time is set to the specified time .RB ( CurrentTime is replaced by the current X server time). .LP .B XGrabKeyboard can generate .B BadValue and .B BadWindow errors. .LP The .B XUngrabKeyboard function releases the keyboard and any queued events if this client has it actively grabbed from either .B XGrabKeyboard or .BR XGrabKey . .B XUngrabKeyboard does not release the keyboard and any queued events if the specified time is earlier than the last-keyboard-grab time or is later than the current X server time. It also generates .B FocusIn and .B FocusOut events. The X server automatically performs an .B UngrabKeyboard request if the event window for an active keyboard grab becomes not viewable. .SH DIAGNOSTICS .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllowEvents(__libmansuffix__), XGrabButton(__libmansuffix__), XGrabKey(__libmansuffix__), XGrabPointer(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetPointerMapping.man0000644014310600000120000001112514763154126013335 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetPointerMapping __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetPointerMapping, XGetPointerMapping \- manipulate pointer settings .SH SYNTAX .HP int XSetPointerMapping\^(\^Display *\fIdisplay\fP\^, _Xconst unsigned char \fImap\fP\^[]\^, int \fInmap\fP\^); .HP int XGetPointerMapping\^(\^Display *\fIdisplay\fP\^, unsigned char \fImap_return\fP\^[]\^, int \fInmap\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fImap\fP 1i Specifies the mapping list. .IP \fImap_return\fP 1i Returns the mapping list. .IP \fInmap\fP 1i Specifies the number of items in the mapping list. .SH DESCRIPTION The .B XSetPointerMapping function sets the mapping of the pointer. If it succeeds, the X server generates a .B MappingNotify event, and .B XSetPointerMapping returns .BR MappingSuccess . Element map[i] defines the logical button number for the physical button i+1. The length of the list must be the same as .B XGetPointerMapping would return, or a .B BadValue error results. A zero element disables a button, and elements are not restricted in value by the number of physical buttons. However, no two elements can have the same nonzero value, or a .B BadValue error results. If any of the buttons to be altered are logically in the down state, .B XSetPointerMapping returns .BR MappingBusy , and the mapping is not changed. .LP .B XSetPointerMapping can generate a .B BadValue error. .LP The .B XGetPointerMapping function returns the current mapping of the pointer. Pointer buttons are numbered starting from one. .B XGetPointerMapping returns the number of physical buttons actually on the pointer. The nominal mapping for a pointer is map[i]=i+1. The nmap argument specifies the length of the array where the pointer mapping is returned, and only the first nmap elements are returned in map_return. .SH DIAGNOSTICS .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XChangeKeyboardControl(__libmansuffix__), XChangeKeyboardMapping(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XQueryTextExtents.man0000644014310600000120000000006614763154126013254 .so man__libmansuffix__/XTextExtents.__libmansuffix__ libX11-1.8.12/man/XcmsStoreColors.man0000644014310600000120000000007014763154126012703 .so man__libmansuffix__/XcmsStoreColor.__libmansuffix__ libX11-1.8.12/man/DoesBackingStore.man0000644014310600000120000000007414763154126012764 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XcmsSetCCCOfColormap.man0000644014310600000120000000007314763154126013456 .so man__libmansuffix__/XcmsCCCOfColormap.__libmansuffix__ libX11-1.8.12/man/XStoreBuffer.man0000644014310600000120000000006514763154126012154 .so man__libmansuffix__/XStoreBytes.__libmansuffix__ libX11-1.8.12/man/NextRequest.man0000644014310600000120000000006314763154126012063 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XUndefineCursor.man0000644014310600000120000000006714763154126012663 .so man__libmansuffix__/XDefineCursor.__libmansuffix__ libX11-1.8.12/man/XSetCommand.man0000644014310600000120000001164214763154126011763 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetCommand __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetCommand, XGetCommand \- set or read a window's WM_COMMAND property .SH SYNTAX .HP int XSetCommand\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char **\fIargv\fP\^, int \fIargc\fP\^); .HP Status XGetCommand\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char ***\fIargv_return\fP\^, int *\fIargc_return\fP\^); .SH ARGUMENTS .IP \fIargc\fP 1i Specifies the number of arguments. .IP \fIargc_return\fP 1i Returns the number of arguments returned. .IP \fIargv\fP 1i Specifies the application's argument list. .IP \fIargv_return\fP 1i Returns the application's argument list. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIw\fP 1i Specifies the window. .SH DESCRIPTION The .B XSetCommand function sets the command and arguments used to invoke the application. (Typically, argv is the argv array of your main program.) If the strings are not in the Host Portable Character Encoding, the result is implementation-dependent. .LP .B XSetCommand can generate .B BadAlloc and .B BadWindow errors. .LP The .B XGetCommand function reads the WM_COMMAND property from the specified window and returns a string list. If the WM_COMMAND property exists, it is of type STRING and format 8. If sufficient memory can be allocated to contain the string list, .B XGetCommand fills in the argv_return and argc_return arguments and returns a nonzero status. Otherwise, or if any other error is encountered, it returns a zero status. If the data returned by the server is in the Latin Portable Character Encoding, then the returned strings are in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. To free the memory allocated to the string list, use .BR XFreeStringList . .SH PROPERTIES .TP 1i \s-1WM_COMMAND\s+1 The command and arguments, null-separated, used to invoke the application. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocIconSize(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XAllocWMHints(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XSetWMProtocols(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XDirectionalDependentDrawing.man0000644014310600000120000000007114763154126015323 .so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__ libX11-1.8.12/man/DefaultRootWindow.man0000644014310600000120000000006314763154126013214 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XDestroyOC.man0000644014310600000120000000006314763154126011577 .so man__libmansuffix__/XCreateOC.__libmansuffix__ libX11-1.8.12/man/XStoreBytes.man0000644014310600000120000001271214763154126012033 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XStoreBytes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XStoreBytes, XStoreBuffer, XFetchBytes, XFetchBuffer, XRotateBuffers \- manipulate cut and paste buffers .SH SYNTAX .HP int XStoreBytes\^(\^Display *\fIdisplay\fP\^, _Xconst char *\fIbytes\fP\^, int \^\fInbytes\fP\^); .HP int XStoreBuffer\^(\^Display *\fIdisplay\fP\^, _Xconst char *\fIbytes\fP\^, int \^\fInbytes\fP\^, int \fIbuffer\fP\^); .HP char *XFetchBytes\^(\^Display *\fIdisplay\fP\^, int *\fInbytes_return\fP\^); .HP char *XFetchBuffer\^(\^Display *\fIdisplay\fP\^, int *\fInbytes_return\fP\^, int \fIbuffer\fP\^); .HP int XRotateBuffers\^(\^Display *\fIdisplay\fP\^, int \fIrotate\fP\^); .SH ARGUMENTS .IP \fIbuffer\fP 1i Specifies the buffer in which you want to store the bytes or from which you want the stored data returned. .IP \fIbytes\fP 1i Specifies the bytes, which are not necessarily ASCII or null-terminated. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fInbytes\fP 1i Specifies the number of bytes to be stored. .IP \fInbytes_return\fP 1i Returns the number of bytes in the buffer. .IP \fIrotate\fP 1i Specifies how much to rotate the cut buffers. .SH DESCRIPTION The data can have embedded null characters and need not be null-terminated. The cut buffer's contents can be retrieved later by any client calling .BR XFetchBytes . .LP .B XStoreBytes can generate a .B BadAlloc error. .LP If an invalid buffer is specified, the call has no effect. The data can have embedded null characters and need not be null-terminated. .LP .B XStoreBuffer can generate a .B BadAlloc error. .LP The .B XFetchBytes function returns the number of bytes in the nbytes_return argument, if the buffer contains data. Otherwise, the function returns NULL and sets nbytes to 0. The appropriate amount of storage is allocated and the pointer returned. The client must free this storage when finished with it by calling .BR XFree . .LP The .B XFetchBuffer function returns zero to the nbytes_return argument if there is no data in the buffer or if an invalid buffer is specified. .LP .B XFetchBuffer can generate a .B BadValue error. .LP The .B XRotateBuffers function rotates the cut buffers, such that buffer 0 becomes buffer n, buffer 1 becomes n + 1 mod 8, and so on. This cut buffer numbering is global to the display. Note that .B XRotateBuffers generates .B BadMatch errors if any of the eight buffers have not been created. .LP .B XRotateBuffers can generate a .B BadMatch error. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadAtom A value for an Atom argument does not name a defined Atom. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XFree(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetIOErrorHandler.man0000644014310600000120000000007214763154126013217 .so man__libmansuffix__/XSetErrorHandler.__libmansuffix__ libX11-1.8.12/man/AllPlanes.man0000644014310600000120000002225114763154126011452 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH AllPlanes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME AllPlanes, BlackPixel, WhitePixel, ConnectionNumber, DefaultColormap, DefaultDepth, XListDepths, DefaultGC, DefaultRootWindow, DefaultScreenOfDisplay, DefaultScreen, DefaultVisual, DisplayCells, DisplayPlanes, DisplayString, XMaxRequestSize, XExtendedMaxRequestSize, LastKnownRequestProcessed, NextRequest, ProtocolVersion, ProtocolRevision, QLength, RootWindow, ScreenCount, ScreenOfDisplay, ServerVendor, VendorRelease \- Display macros and functions .SH SYNTAX unsigned long AllPlanes; .HP unsigned long BlackPixel\^(\^Display *\fIdisplay\fP\^, int \^\fIscreen_number\fP\^); .HP unsigned long WhitePixel\^(\^Display *\fIdisplay\fP\^, int \^\fIscreen_number\fP\^); .HP int ConnectionNumber\^(\^Display *\fIdisplay\fP\^); .HP Colormap DefaultColormap\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^); .HP int DefaultDepth\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^); .HP int *XListDepths\^(\^Display *\fIdisplay\fP, int \fIscreen_number\fP, int *\fIcount_return\fP\^); .HP GC DefaultGC\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^); .HP Window DefaultRootWindow\^(\^Display *\fIdisplay\fP\^); .HP Screen *DefaultScreenOfDisplay\^(\^Display *\fIdisplay\fP\^); .HP int DefaultScreen\^(\^Display *\fIdisplay\fP\^); .HP Visual *DefaultVisual\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^); .HP int DisplayCells\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^); .HP int DisplayPlanes\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^); .HP char *DisplayString\^(\^Display *\fIdisplay\fP\^); .HP long XMaxRequestSize(\^Display *\fIdisplay\fP\^); .HP long XExtendedMaxRequestSize(\^Display *\fIdisplay\fP\^); .HP unsigned long LastKnownRequestProcessed\^(\^Display *\fIdisplay\fP\^); .HP unsigned long NextRequest\^(\^Display *\fIdisplay\fP\^); .HP int ProtocolVersion\^(\^Display *\fIdisplay\fP\^); .HP int ProtocolRevision\^(\^Display *\fIdisplay\fP\^); .HP int QLength\^(\^Display *\fIdisplay\fP\^); .HP Window RootWindow\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^); .HP int ScreenCount\^(\^Display *\fIdisplay\fP\^); .HP Screen *ScreenOfDisplay\^(\^Display *\fIdisplay\fP, int \fIscreen_number\fP\^); .HP char *ServerVendor\^(\^Display *\fIdisplay\fP\^); .HP int VendorRelease\^(\^Display *\fIdisplay\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIscreen_number\fP 1i Specifies the appropriate screen number on the host server. .IP \fIcount_return\fP 1i Returns the number of depths. .SH DESCRIPTION The .B AllPlanes macro returns a value with all bits set to 1 suitable for use in a plane argument to a procedure. .LP The .B BlackPixel macro returns the black pixel value for the specified screen. .LP The .B WhitePixel macro returns the white pixel value for the specified screen. .LP The .B ConnectionNumber macro returns a connection number for the specified display. .LP The .B DefaultColormap macro returns the default colormap ID for allocation on the specified screen. .LP The .B DefaultDepth macro returns the depth (number of planes) of the default root window for the specified screen. .LP The .B XListDepths function returns the array of depths that are available on the specified screen. If the specified screen_number is valid and sufficient memory for the array can be allocated, .B XListDepths sets count_return to the number of available depths. Otherwise, it does not set count_return and returns NULL. To release the memory allocated for the array of depths, use .BR XFree . .LP The .B DefaultGC macro returns the default GC for the root window of the specified screen. .LP The .B DefaultRootWindow macro returns the root window for the default screen. .LP The .B DefaultScreenOfDisplay macro returns the default screen of the specified display. .LP The .B DefaultScreen macro returns the default screen number referenced in the .B XOpenDisplay routine. .LP The .B DefaultVisual macro returns the default visual type for the specified screen. .LP The .B DisplayCells macro returns the number of entries in the default colormap. .LP The .B DisplayPlanes macro returns the depth of the root window of the specified screen. .LP The .B DisplayString macro returns the string that was passed to .B XOpenDisplay when the current display was opened. .LP The .B XMaxRequestSize function returns the maximum request size (in 4-byte units) supported by the server without using an extended-length protocol encoding. Single protocol requests to the server can be no larger than this size unless an extended-length protocol encoding is supported by the server. The protocol guarantees the size to be no smaller than 4096 units (16384 bytes). Xlib automatically breaks data up into multiple protocol requests as necessary for the following functions: .BR XDrawPoints , .BR XDrawRectangles , .BR XDrawSegments , .BR XFillArcs , .BR XFillRectangles , and .BR XPutImage . .LP The .B XExtendedMaxRequestSize function returns zero if the specified display does not support an extended-length protocol encoding; otherwise, it returns the maximum request size (in 4-byte units) supported by the server using the extended-length encoding. The Xlib functions .BR XDrawLines , .BR XDrawArcs , .BR XFillPolygon , .BR XChangeProperty , .BR XSetClipRectangles , and .B XSetRegion will use the extended-length encoding as necessary, if supported by the server. Use of the extended-length encoding in other Xlib functions (for example, .BR XDrawPoints , .BR XDrawRectangles , .BR XDrawSegments , .BR XFillArcs , .BR XFillRectangles , .BR XPutImage ) is permitted but not required; an Xlib implementation may choose to split the data across multiple smaller requests instead. .LP The .B LastKnownRequestProcessed macro extracts the full serial number of the last request known by Xlib to have been processed by the X server. .LP The .B NextRequest macro extracts the full serial number that is to be used for the next request. .LP The .B ProtocolVersion macro returns the major version number (11) of the X protocol associated with the connected display. .LP The .B ProtocolRevision macro returns the minor protocol revision number of the X server. .LP The .B QLength macro returns the length of the event queue for the connected display. .LP The .B RootWindow macro returns the root window. .LP The .B ScreenCount macro returns the number of available screens. .LP The .B ScreenOfDisplay macro returns a pointer to the screen of the specified display. .LP The .B ServerVendor macro returns a pointer to a null-terminated string that provides some identification of the owner of the X server implementation. .LP The .B VendorRelease macro returns a number related to a vendor's release of the X server. .SH "SEE ALSO" BlackPixelOfScreen(__libmansuffix__), ImageByteOrder(__libmansuffix__), IsCursorKey(__libmansuffix__), XOpenDisplay(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XStoreNamedColor.man0000644014310600000120000000006614763154126012767 .so man__libmansuffix__/XStoreColors.__libmansuffix__ libX11-1.8.12/man/XRectangle.man0000644014310600000120000000007014763154126011626 .so man__libmansuffix__/XDrawRectangle.__libmansuffix__ libX11-1.8.12/man/XGetOMValues.man0000644014310600000120000000006114763154126012055 .so man__libmansuffix__/XOpenOM.__libmansuffix__ libX11-1.8.12/man/XDisplayOfIM.man0000644014310600000120000000006114763154126012042 .so man__libmansuffix__/XOpenIM.__libmansuffix__ libX11-1.8.12/man/XIMOfIC.man0000644014310600000120000000006314763154126010732 .so man__libmansuffix__/XCreateIC.__libmansuffix__ libX11-1.8.12/man/XcmsCreateCCC.man0000644014310600000120000001113014763154126012140 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XcmsCreateCCC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsCreateCCC, XcmsFreeCCC \- creating and destroying CCCs .SH SYNTAX .HP XcmsCCC XcmsCreateCCC\^(\^Display *\fIdisplay\fP\^, int \fIscreen_number\fP\^, Visual *\fIvisual\fP\^, XcmsColor *\fIclient_white_point\fP\^, XcmsCompressionProc \fIcompression_proc\fP\^, XPointer \fIcompression_client_data\fP\^, XcmsWhiteAdjustProc \fIwhite_adjust_proc\fP\^, XPointer \fIwhite_adjust_client_data\fP\^); .LP void XcmsFreeCCC\^(\^XcmsCCC \fIccc\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIccc\fP 1i Specifies the CCC. .IP \fIclient_white_point\fP 1i Specifies the Client White Point. If NULL is specified, the Client White Point is to be assumed to be the same as the Screen White Point. Note that the pixel member is ignored. .IP \fIcompression_client_data\fP 1i Specifies client data for use by the gamut compression procedure or NULL. .IP \fIcompression_proc\fP 1i Specifies the gamut compression procedure that is to be applied when a color lies outside the screen's color gamut. If NULL is specified and a function using this CCC must convert a color specification to a device-dependent format and encounters a color that lies outside the screen's color gamut, that function will return .BR XcmsFailure . .IP \fIscreen_number\fP 1i Specifies the appropriate screen number on the host server. .IP \fIvisual\fP 1i Specifies the visual type. .IP \fIwhite_adjust_client_data\fP 1i Specifies client data for use with the white point adjustment procedure or NULL. .IP \fIwhite_adjust_proc\fP 1i Specifies the white adjustment procedure that is to be applied when the Client White Point differs from the Screen White Point. NULL indicates that no white point adjustment is desired. .SH DESCRIPTION The .B XcmsCreateCCC function creates a CCC for the specified display, screen, and visual. .LP The .B XcmsFreeCCC function frees the memory used for the specified CCC. Note that default CCCs and those currently associated with colormaps are ignored. .SH "SEE ALSO" DisplayOfCCC(__libmansuffix__), XcmsCCCOfColormap(__libmansuffix__), XcmsConvertColors(__libmansuffix__), XcmsDefaultCCC(__libmansuffix__), XcmsSetWhitePoint(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XActivateScreenSaver.man0000644014310600000120000000007114763154126013624 .so man__libmansuffix__/XSetScreenSaver.__libmansuffix__ libX11-1.8.12/man/XInitThreads.man0000644014310600000120000001110514763154126012141 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XInitThreads __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XInitThreads, XLockDisplay, XUnlockDisplay \- multi-threading support .SH SYNTAX .HP Status XInitThreads\^(void); .HP Status XFreeThreads\^(void); .HP void XLockDisplay\^(\^Display *\fIdisplay\fP\^); .HP void XUnlockDisplay\^(\^Display *\fIdisplay\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .SH DESCRIPTION The .B XInitThreads function initializes Xlib support for concurrent threads. This function must be the first Xlib function a multi-threaded program calls, and it must complete before any other Xlib call is made. This function returns a nonzero status if initialization was successful; otherwise, it returns zero. On systems that do not support threads, this function always returns zero. .LP It is only necessary to call this function if multiple threads might use Xlib concurrently. If all calls to Xlib functions are protected by some other access mechanism (for example, a mutual exclusion lock in a toolkit or through explicit client programming), Xlib thread initialization is not required. It is recommended that single-threaded programs not call this function. .LP The .B XFreeThreads function frees the memory allocated by .BR XInitThreads . .LP The .B XLockDisplay function locks out all other threads from using the specified display. Other threads attempting to use the display will block until the display is unlocked by this thread. Nested calls to .B XLockDisplay work correctly; the display will not actually be unlocked until .B XUnlockDisplay has been called the same number of times as .BR XLockDisplay . This function has no effect unless Xlib was successfully initialized for threads using .BR XInitThreads . .LP The .B XUnlockDisplay function allows other threads to use the specified display again. Any threads that have blocked on the display are allowed to continue. Nested locking works correctly; if .B XLockDisplay has been called multiple times by a thread, then .B XUnlockDisplay must be called an equal number of times before the display is actually unlocked. This function has no effect unless Xlib was successfully initialized for threads using .BR XInitThreads . .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XDrawPoints.man0000644014310600000120000000006414763154126012017 .so man__libmansuffix__/XDrawPoint.__libmansuffix__ libX11-1.8.12/man/XReadBitmapFile.man0000644014310600000120000002025514763154126012541 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XReadBitmapFile __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XReadBitmapFile, XReadBitmapFileData, XWriteBitmapFile, XCreatePixmapFromBitmapData, XCreateBitmapFromData \- manipulate bitmaps .SH SYNTAX .HP int XReadBitmapFile(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, _Xconst char *\fIfilename\fP\^, unsigned int *\fIwidth_return\fP, unsigned int *\fIheight_return\fP\^, Pixmap *\fIbitmap_return\fP\^, int *\fIx_hot_return\fP, int *\fIy_hot_return\fP\^); .HP int XReadBitmapFileData(\^_Xconst char *\fIfilename\fP\^, unsigned int *\fIwidth_return\fP, unsigned int *\fIheight_return\fP\^, unsigned char **\fIdata_return\fP\^, int *\fIx_hot_return\fP, int *\fIy_hot_return\fP\^); .HP int XWriteBitmapFile(\^Display *\fIdisplay\fP\^, _Xconst char *\fIfilename\fP\^, Pixmap \fIbitmap\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^, int \fIx_hot\fP, int \fIy_hot\fP\^); .HP Pixmap XCreatePixmapFromBitmapData\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, char *\fIdata\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^, unsigned long \fIfg\fP, unsigned long \fIbg\fP\^, unsigned int \fIdepth\fP\^); .HP Pixmap XCreateBitmapFromData(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, _Xconst char *\fIdata\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^); .SH ARGUMENTS .IP \fIbitmap\fP 1i Specifies the bitmap. .IP \fIbitmap_return\fP 1i Returns the bitmap that is created. .IP \fId\fP 1i Specifies the drawable that indicates the screen. .IP \fIdata\fP 1i Specifies the data in bitmap format. .IP \fIdata\fP 1i Specifies the location of the bitmap data. .IP \fIdata_return\fP 1i Returns the bitmap data. .IP \fIdepth\fP 1i Specifies the depth of the pixmap. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIfg\fP 1i .br .ns .IP \fIbg\fP 1i Specify the foreground and background pixel values to use. .IP \fIfilename\fP 1i Specifies the file name to use. The format of the file name is operating-system dependent. .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height. .IP \fIwidth_return\fP 1i .br .ns .IP \fIheight_return\fP 1i Return the width and height values of the read in bitmap file. .IP \fIx_hot\fP 1i .br .ns .IP \fIy_hot\fP 1i Specify where to place the hotspot coordinates (or \-1,\-1 if none are present) in the file. .IP \fIx_hot_return\fP 1i .br .ns .IP \fIy_hot_return\fP 1i Return the hotspot coordinates. .SH DESCRIPTION The .B XReadBitmapFile function reads in a file containing a bitmap. The file is parsed in the encoding of the current locale. The ability to read other than the standard format is implementation-dependent. If the file cannot be opened, .B XReadBitmapFile returns .BR BitmapOpenFailed . If the file can be opened but does not contain valid bitmap data, it returns .BR BitmapFileInvalid . If insufficient working storage is allocated, it returns .BR BitmapNoMemory . If the file is readable and valid, it returns .BR BitmapSuccess . .LP .B XReadBitmapFile returns the bitmap's height and width, as read from the file, to width_return and height_return. It then creates a pixmap of the appropriate size, reads the bitmap data from the file into the pixmap, and assigns the pixmap to the caller's variable bitmap. The caller must free the bitmap using .B XFreePixmap when finished. If \fIname\fP_x_hot and \fIname\fP_y_hot exist, .B XReadBitmapFile returns them to x_hot_return and y_hot_return; otherwise, it returns \-1,\-1. .LP .B XReadBitmapFile can generate .B BadAlloc and .B BadDrawable errors. .LP The .B XReadBitmapFileData function reads in a file containing a bitmap, in the same manner as .BR XReadBitmapFile , but returns the data directly rather than creating a pixmap in the server. The bitmap data is returned in data_return; the client must free this storage when finished with it by calling .BR XFree . The status and other return values are the same as for .BR XReadBitmapFile . .LP The .B XWriteBitmapFile function writes a bitmap out to a file in the X Version 11 format. The name used in the output file is derived from the file name by deleting the directory prefix. The file is written in the encoding of the current locale. If the file cannot be opened for writing, it returns .BR BitmapOpenFailed . If insufficient memory is allocated, .B XWriteBitmapFile returns .BR BitmapNoMemory ; otherwise, on no error, it returns .BR BitmapSuccess . If x_hot and y_hot are not \-1, \-1, .B XWriteBitmapFile writes them out as the hotspot coordinates for the bitmap. .LP .B XWriteBitmapFile can generate .B BadDrawable and .B BadMatch errors. .LP The .B XCreatePixmapFromBitmapData function creates a pixmap of the given depth and then does a bitmap-format .B XPutImage of the data into it. The depth must be supported by the screen of the specified drawable, or a .B BadMatch error results. .LP .B XCreatePixmapFromBitmapData can generate .B BadAlloc and .B BadMatch errors. .LP The .B XCreateBitmapFromData function allows you to include in your C program (using .BR #include ) a bitmap file that was written out by .B XWriteBitmapFile (X version 11 format only) without reading in the bitmap file. The following example creates a gray bitmap: .LP .EX \&#include "gray.bitmap" .sp 6p Pixmap bitmap; bitmap = XCreateBitmapFromData(display, window, gray_bits, gray_width, gray_height); .EE .LP If insufficient working storage was allocated, .B XCreateBitmapFromData returns .BR None . It is your responsibility to free the bitmap using .B XFreePixmap when finished. .LP .B XCreateBitmapFromData can generate a .B BadAlloc error. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .SH "SEE ALSO" XCreatePixmap(__libmansuffix__), XPutImage(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XGetIconName.man0000644014310600000120000000007014763154126012053 .so man__libmansuffix__/XSetWMIconName.__libmansuffix__ libX11-1.8.12/man/XStoreColor.man0000644014310600000120000000006614763154126012022 .so man__libmansuffix__/XStoreColors.__libmansuffix__ libX11-1.8.12/man/PlanesOfScreen.man0000644014310600000120000000007414763154126012445 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XCheckIfEvent.man0000644014310600000120000000006214763154126012221 .so man__libmansuffix__/XIfEvent.__libmansuffix__ libX11-1.8.12/man/XcmsQueryBlue.man0000644014310600000120000000007014763154126012342 .so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__ libX11-1.8.12/man/XReparentEvent.man0000644014310600000120000001245214763154126012513 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XReparentEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XReparentEvent \- ReparentNotify event structure .SH STRUCTURES The structure for .B ReparentNotify events contains: .LP .EX typedef struct { int type; /\&* ReparentNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window event; Window window; Window parent; int x, y; Bool override_redirect; } XReparentEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The event member is set either to the reparented window or to the old or the new parent, depending on whether .B StructureNotify or .B SubstructureNotify was selected. The window member is set to the window that was reparented. The parent member is set to the new parent window. The x and y members are set to the reparented window's coordinates relative to the new parent window's origin and define the upper-left outer corner of the reparented window. The override_redirect member is set to the override-redirect attribute of the window specified by the window member. Window manager clients normally should ignore this window if the override_redirect member is .BR True . .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/DefaultColormapOfScreen.man0000644014310600000120000000007414763154126014304 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XcmsSetWhiteAdjustProc.man0000644014310600000120000000007314763154126014163 .so man__libmansuffix__/XcmsSetWhitePoint.__libmansuffix__ libX11-1.8.12/man/XrmQPutStringResource.man0000644014310600000120000000007014763154126014051 .so man__libmansuffix__/XrmPutResource.__libmansuffix__ libX11-1.8.12/man/XListInstalledColormaps.man0000644014310600000120000000007214763154126014357 .so man__libmansuffix__/XInstallColormap.__libmansuffix__ libX11-1.8.12/man/XGetRGBColormaps.man0000644014310600000120000000010014763154126012646 .so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__ libX11-1.8.12/man/XDisplayName.man0000644014310600000120000000007214763154126012132 .so man__libmansuffix__/XSetErrorHandler.__libmansuffix__ libX11-1.8.12/man/XGetErrorText.man0000644014310600000120000000007214763154126012322 .so man__libmansuffix__/XSetErrorHandler.__libmansuffix__ libX11-1.8.12/man/XcmsSetWhitePoint.man0000644014310600000120000001017314763154126013200 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XcmsSetWhitePoint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsSetWhitePoint, XcmsSetWhiteAdjustProc \- modifying CCC attributes .SH SYNTAX .HP Status XcmsSetWhitePoint\^(\^XcmsCCC \fIccc\fP\^, XcmsColor *\fIcolor\fP\^); .HP XcmsWhiteAdjustProc XcmsSetWhiteAdjustProc\^(\^XcmsCCC \fIccc\fP\^, XcmsWhiteAdjustProc \fIwhite_adjust_proc\fP\^, XPointer \fIclient_data\fP\^); .SH ARGUMENTS .IP \fIccc\fP 1i Specifies the CCC. .IP \fIclient_data\fP 1i Specifies client data for the white point adjustment procedure or NULL. .IP \fIcolor\fP 1i Specifies the new Client White Point. .IP \fIwhite_adjust_proc\fP 1i Specifies the white point adjustment procedure. .SH DESCRIPTION The .B XcmsSetWhitePoint function changes the Client White Point in the specified CCC. Note that the pixel member is ignored and that the color specification is left unchanged upon return. The format for the new white point must be .BR XcmsCIEXYZFormat , .BR XcmsCIEuvYFormat , .BR XcmsCIExyYFormat , or .BR XcmsUndefinedFormat . If the color argument is NULL, this function sets the format component of the Client White Point specification to .BR XcmsUndefinedFormat , indicating that the Client White Point is assumed to be the same as the Screen White Point. .LP This function returns nonzero status if the format for the new white point is valid; otherwise, it returns zero. .LP The .B XcmsSetWhiteAdjustProc function first sets the white point adjustment procedure and client data in the specified CCC with the newly specified procedure and client data and then returns the old procedure. .SH "SEE ALSO" DisplayOfCCC(__libmansuffix__), XcmsCCCOfColormap(__libmansuffix__), XcmsConvertColors(__libmansuffix__), XcmsCreateCCC(__libmansuffix__), XcmsDefaultCCC(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/DoesSaveUnders.man0000644014310600000120000000007414763154126012470 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XResizeWindow.man0000644014310600000120000000007214763154126012355 .so man__libmansuffix__/XConfigureWindow.__libmansuffix__ libX11-1.8.12/man/XcmsCIELabQueryMaxC.man0000644014310600000120000001223114763154126013245 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XcmsCIELabQueryMax __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsCIELabQueryMaxC, XcmsCIELabQueryMaxL, XcmsCIELabQueryMaxLC, XcmsCIELabQueryMinL \- obtain the CIE L*a*b* coordinates .SH SYNTAX .HP Status XcmsCIELabQueryMaxC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue_angle\fP\^, XcmsFloat \fIL_star\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsCIELabQueryMaxL\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue_angle\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsCIELabQueryMaxLC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue_angle\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsCIELabQueryMinL\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue_angle\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^); .SH ARGUMENTS .IP \fIccc\fP 1i Specifies the CCC. Note that the CCC's Client White Point and White Point Adjustment procedures are ignored. .IP \fIchroma\fP 1i Specifies the chroma at which to find maximum lightness (MaxL) or minimum lightness (MinL). .IP \fIcolor_return\fP 1i Returns the CIE L*a*b* coordinates of maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), or minimum lightness (MinL) displayable by the screen for the given hue angle and lightness (MaxC), hue angle and chroma (MaxL and MinL), or hue angle (MaxLC). The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. .IP \fIhue_angle\fP 1i Specifies the hue angle (in degrees) at which to find maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), or minimum lightness (MinL). .IP \fIL_star\fP 1i Specifies the lightness (L*) at which to find maximum chroma (MaxC). .SH DESCRIPTION The .B XcmsCIELabQueryMaxC function, given a hue angle and lightness, finds the point of maximum chroma displayable by the screen. It returns this point in CIE L*a*b* coordinates. .LP The .B XcmsCIELabQueryMaxL function, given a hue angle and chroma, finds the point in CIE L*a*b* color space of maximum lightness (L*) displayable by the screen. It returns this point in CIE L*a*b* coordinates. An .B XcmsFailure return value usually indicates that the given chroma is beyond maximum for the given hue angle. .LP The .B XcmsCIELabQueryMaxLC function, given a hue angle, finds the point of maximum chroma displayable by the screen. It returns this point in CIE L*a*b* coordinates. .LP The .B XcmsCIELabQueryMinL function, given a hue angle and chroma, finds the point of minimum lightness (L*) displayable by the screen. It returns this point in CIE L*a*b* coordinates. An .B XcmsFailure return value usually indicates that the given chroma is beyond maximum for the given hue angle. .SH "SEE ALSO" XcmsCIELuvQueryMaxC(__libmansuffix__), XcmsTekHVCQueryMaxC(__libmansuffix__), XcmsQueryBlack(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XDrawArc.man0000644014310600000120000002064314763154126011255 '\" e .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .de EX .sp .nf .ft CW .. .de EE .ft R .fi .sp .. '\" e .TH XDrawArc __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawArc, XDrawArcs, XArc \- draw arcs and arc structure .SH SYNTAX .HP int XDrawArc\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, int \fIangle1\fP\^, int \fIangle2\fP\^); .HP int XDrawArcs\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, XArc *\fIarcs\fP\^, int \fInarcs\fP\^); .SH ARGUMENTS .IP \fIangle1\fP 1i Specifies the start of the arc relative to the three-o'clock position from the center, in units of degrees * 64. .IP \fIangle2\fP 1i Specifies the path and extent of the arc relative to the start of the arc, in units of degrees * 64. .IP \fIarcs\fP 1i Specifies an array of arcs. .IP \fId\fP 1i Specifies the drawable. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fInarcs\fP 1i Specifies the number of arcs in the array. .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height, which are the major and minor axes of the arc. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates, which are relative to the origin of the drawable and specify the upper-left corner of the bounding rectangle. .SH DESCRIPTION .EQ delim %% .EN .B XDrawArc draws a single circular or elliptical arc, and .B XDrawArcs draws multiple circular or elliptical arcs. Each arc is specified by a rectangle and two angles. The center of the circle or ellipse is the center of the rectangle, and the major and minor axes are specified by the width and height. Positive angles indicate counterclockwise motion, and negative angles indicate clockwise motion. If the magnitude of angle2 is greater than 360 degrees, .B XDrawArc or .B XDrawArcs truncates it to 360 degrees. .LP For an arc specified as %[ ~x, ~y, ~width , ~height, ~angle1, ~angle2 ]%, the origin of the major and minor axes is at % [ x +^ {width over 2} , ~y +^ {height over 2} ]%, and the infinitely thin path describing the entire circle or ellipse intersects the horizontal axis at % [ x, ~y +^ {height over 2} ]% and % [ x +^ width , ~y +^ { height over 2 }] % and intersects the vertical axis at % [ x +^ { width over 2 } , ~y ]% and % [ x +^ { width over 2 }, ~y +^ height ]%. These coordinates can be fractional and so are not truncated to discrete coordinates. The path should be defined by the ideal mathematical path. For a wide line with line-width lw, the bounding outlines for filling are given by the two infinitely thin paths consisting of all points whose perpendicular distance from the path of the circle/ellipse is equal to lw/2 (which may be a fractional value). The cap-style and join-style are applied the same as for a line corresponding to the tangent of the circle/ellipse at the endpoint. .LP For an arc specified as % [ ~x, ~y, ~width, ~height, ~angle1, ~angle2 ]%, the angles must be specified in the effectively skewed coordinate system of the ellipse (for a circle, the angles and coordinate systems are identical). The relationship between these angles and angles expressed in the normal coordinate system of the screen (as measured with a protractor) is as follows: .LP .EX % roman "skewed-angle" ~ = ~ atan left ( tan ( roman "normal-angle" ) * width over height right ) +^ adjust% .EE .LP The skewed-angle and normal-angle are expressed in radians (rather than in degrees scaled by 64) in the range % [ 0 , ~2 pi ]% and where atan returns a value in the range % [ - pi over 2 , ~pi over 2 ] % and adjust is: .LP .TS l l. %0% for normal-angle in the range % [ 0 , ~pi over 2 ]% %pi% for normal-angle in the range % [ pi over 2 , ~{3 pi} over 2 ]% %2 pi% for normal-angle in the range % [ {3 pi} over 2 , ~2 pi ]% .TE .LP For any given arc, .B XDrawArc and .B XDrawArcs do not draw a pixel more than once. If two arcs join correctly and if the line-width is greater than zero and the arcs intersect, .B XDrawArc and .B XDrawArcs do not draw a pixel more than once. Otherwise, the intersecting pixels of intersecting arcs are drawn multiple times. Specifying an arc with one endpoint and a clockwise extent draws the same pixels as specifying the other endpoint and an equivalent counterclockwise extent, except as it affects joins. .LP If the last point in one arc coincides with the first point in the following arc, the two arcs will join correctly. If the first point in the first arc coincides with the last point in the last arc, the two arcs will join correctly. By specifying one axis to be zero, a horizontal or vertical line can be drawn. Angles are computed based solely on the coordinate system and ignore the aspect ratio. .LP Both functions use these GC components: function, plane-mask, line-width, line-style, cap-style, join-style, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, and dash-list. .LP .B XDrawArc and .B XDrawArcs can generate .BR BadDrawable , .BR BadGC , and .B BadMatch errors. .SH STRUCTURES The .B XArc structure contains: .LP .EX typedef struct { short x, y; unsigned short width, height; short angle1, angle2; /\&* Degrees * 64 */ } XArc; .EE .LP All x and y members are signed integers. The width and height members are 16-bit unsigned integers. You should be careful not to generate coordinates and sizes out of the 16-bit ranges, because the protocol only has 16-bit fields for these values. .SH DIAGNOSTICS .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .SH "SEE ALSO" XDrawLine(__libmansuffix__), XDrawPoint(__libmansuffix__), XDrawRectangle(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XCopyGC.man0000644014310600000120000000006314763154126011050 .so man__libmansuffix__/XCreateGC.__libmansuffix__ libX11-1.8.12/man/XPointInRegion.man0000644014310600000120000000006614763154126012453 .so man__libmansuffix__/XEmptyRegion.__libmansuffix__ libX11-1.8.12/man/XCreateSimpleWindow.man0000644014310600000120000000006714763154126013475 .so man__libmansuffix__/XCreateWindow.__libmansuffix__ libX11-1.8.12/man/XPeekEvent.man0000644014310600000120000000006414763154126011613 .so man__libmansuffix__/XNextEvent.__libmansuffix__ libX11-1.8.12/man/XGravityEvent.man0000644014310600000120000001171114763154126012355 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XGravityEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGravityEvent \- GravityNotify event structure .SH STRUCTURES The structure for .B GravityNotify events contains: .LP .EX typedef struct { int type; /\&* GravityNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window event; Window window; int x, y; } XGravityEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The event member is set either to the window that was moved or to its parent, depending on whether .B StructureNotify or .B SubstructureNotify was selected. The window member is set to the child window that was moved. The x and y members are set to the coordinates relative to the new parent window's origin and indicate the position of the upper-left outside corner of the window. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/ConnectionNumber.man0000644014310600000120000000006314763154126013044 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XFreePixmap.man0000644014310600000120000000006714763154126011770 .so man__libmansuffix__/XCreatePixmap.__libmansuffix__ libX11-1.8.12/man/XwcTextPerCharExtents.man0000644014310600000120000000007714763154126014027 .so man__libmansuffix__/XmbTextPerCharExtents.__libmansuffix__ libX11-1.8.12/man/ClientWhitePointOfCCC.man0000644014310600000120000000006614763154126013626 .so man__libmansuffix__/DisplayOfCCC.__libmansuffix__ libX11-1.8.12/man/XAddHost.man0000644014310600000120000002266514763154126011266 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" All rights reserved. .\" .\" Permission is hereby granted, free of charge, to any person obtaining a .\" copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, and/or sell copies of the Software, and to permit persons .\" to whom the Software is furnished to do so, provided that the above .\" copyright notice(s) and this permission notice appear in all copies of .\" the Software and that both the above copyright notice(s) and this .\" permission notice appear in supporting documentation. .\" .\" 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 .\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR .\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL .\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING .\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, .\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION .\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .\" Except as contained in this notice, the name of a copyright holder .\" shall not be used in advertising or otherwise to promote the sale, use .\" or other dealings in this Software without prior written authorization .\" of the copyright holder. .\" .\" X Window System is a trademark of The Open Group. .\" .\" Copyright (c) 2004, Oracle and/or its affiliates. .\" .\" Permission is hereby granted, free of charge, to any person obtaining a .\" copy of this software and associated documentation files (the "Software"), .\" to deal in the Software without restriction, including without limitation .\" the rights to use, copy, modify, merge, publish, distribute, sublicense, .\" and/or sell copies of the Software, and to permit persons to whom the .\" Software is furnished to do so, subject to the following conditions: .\" .\" The above copyright notice and this permission notice (including the next .\" paragraph) shall be included in all copies or substantial portions of the .\" Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR .\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, .\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL .\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER .\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING .\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER .\" DEALINGS IN THE SOFTWARE. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XAddHost __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAddHost, XAddHosts, XListHosts, XRemoveHost, XRemoveHosts, XSetAccessControl, XEnableAccessControl, XDisableAccessControl, XHostAddress, XServerInterpretedAddress \- control host access and host control structure .SH SYNTAX .HP int XAddHost\^(\^Display *\fIdisplay\fP, XHostAddress *\fIhost\fP\^); .HP int XAddHosts\^(\^Display *\fIdisplay\fP, XHostAddress *\fIhosts\fP, int \fInum_hosts\fP\^); .HP XHostAddress *XListHosts\^(\^Display *\fIdisplay\fP, int *\fInhosts_return\fP, Bool *\fIstate_return\fP\^); .HP int XRemoveHost\^(\^Display *\fIdisplay\fP, XHostAddress *\fIhost\fP\^); .HP int XRemoveHosts\^(\^Display *\fIdisplay\fP, XHostAddress *\fIhosts\fP, int \fInum_hosts\fP\^); .HP int XSetAccessControl\^(\^Display *\fIdisplay\fP, int \fImode\fP\^); .HP int XEnableAccessControl\^(\^Display *\fIdisplay\fP\^); .HP int XDisableAccessControl\^(\^Display *\fIdisplay\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIhost\fP 1i Specifies the host that is to be added or removed. .IP \fIhosts\fP 1i Specifies each host that is to be added or removed. .IP \fImode\fP 1i Specifies the mode. You can pass .B EnableAccess or .BR DisableAccess . .IP \fInhosts_return\fP 1i Returns the number of hosts currently in the access control list. .IP \fInum_hosts\fP 1i Specifies the number of hosts. .IP \fIstate_return\fP 1i Returns the state of the access control. .SH DESCRIPTION The .B XAddHost function adds the specified host to the access control list for that display. The server must be on the same host as the client issuing the command, or a .B BadAccess error results. .LP .B XAddHost can generate .B BadAccess and .B BadValue errors. .LP The .B XAddHosts function adds each specified host to the access control list for that display. The server must be on the same host as the client issuing the command, or a .B BadAccess error results. .LP .B XAddHosts can generate .B BadAccess and .B BadValue errors. .LP The .B XListHosts function returns the current access control list as well as whether the use of the list at connection setup was enabled or disabled. .B XListHosts allows a program to find out what machines can make connections. It also returns a pointer to a list of host structures that were allocated by the function. When no longer needed, this memory should be freed by calling .BR XFree . .LP The .B XRemoveHost function removes the specified host from the access control list for that display. The server must be on the same host as the client process, or a .B BadAccess error results. If you remove your machine from the access list, you can no longer connect to that server, and this operation cannot be reversed unless you reset the server. .LP .B XRemoveHost can generate .B BadAccess and .B BadValue errors. .LP The .B XRemoveHosts function removes each specified host from the access control list for that display. The X server must be on the same host as the client process, or a .B BadAccess error results. If you remove your machine from the access list, you can no longer connect to that server, and this operation cannot be reversed unless you reset the server. .LP .B XRemoveHosts can generate .B BadAccess and .B BadValue errors. .LP The .B XSetAccessControl function either enables or disables the use of the access control list at each connection setup. .LP .B XSetAccessControl can generate .B BadAccess and .B BadValue errors. .LP The .B XEnableAccessControl function enables the use of the access control list at each connection setup. .LP .B XEnableAccessControl can generate a .B BadAccess error. .LP The .B XDisableAccessControl function disables the use of the access control list at each connection setup. .LP .B XDisableAccessControl can generate a .B BadAccess error. .SH STRUCTURES The .B XHostAddress structure contains: .LP .EX typedef struct { int family; /\&* for example FamilyInternet */ int length; /\&* length of address, in bytes */ char *address; /\&* pointer to where to find the address */ } XHostAddress; .EE .LP The family member specifies which protocol address family to use (for example, TCP/IP or DECnet) and can be .BR FamilyInternet , .BR FamilyInternet6 , .BR FamilyServerInterpreted , .BR FamilyDECnet , or .BR FamilyChaos . The length member specifies the length of the address in bytes. The address member specifies a pointer to the address. .LP For the ServerInterpreted family, the length is ignored and the address member is a pointer to a .B XServerInterpretedAddress structure which contains: .LP .EX typedef struct { int typelength; /\&* length of type string, in bytes */ int valuelength; /\&* length of value string, in bytes */ char *type; /\&* pointer to where to find the type string */ char *value; /\&* pointer to where to find the address */ } XServerInterpretedAddress; .EE .LP The type and value members point to strings representing the type and value of the server interpreted entry. These strings may not be NULL-terminated so care should be used when accessing them. The typelength and valuelength members specify the length in byte of the type and value strings. .SH DIAGNOSTICS .TP 1i .B BadAccess A client attempted to modify the access control list from other than the local (or otherwise authorized) host. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XFree(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSaveContext.man0000644014310600000120000001026014763154126012167 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSaveContext __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSaveContext, XFindContext, XDeleteContext, XUniqueContext \- associative look-up routines .SH SYNTAX .HP int XSaveContext(\^Display *\fIdisplay\fP\^, XID \fIrid\fP\^, XContext \fIcontext\fP\^, _Xconst char *\fIdata\fP\^); .HP int XFindContext(\^Display *\fIdisplay\fP\^, XID \fIrid\fP\^, XContext \fIcontext\fP\^, XPointer *\fIdata_return\fP\^); .HP int XDeleteContext(\^Display *\fIdisplay\fP\^, XID \fIrid\fP, XContext \fIcontext\fP); .LP XContext XUniqueContext(void); .SH ARGUMENTS .IP \fIcontext\fP 1i Specifies the context type to which the data belongs. .IP \fIdata\fP 1i Specifies the data to be associated with the window and type. .IP \fIdata_return\fP 1i Returns the data. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIrid\fP 1i Specifies the resource ID with which the data is associated. .SH DESCRIPTION If an entry with the specified resource ID and type already exists, .B XSaveContext overrides it with the specified context. The .B XSaveContext function returns a nonzero error code if an error has occurred and zero otherwise. Possible errors are .B XCNOMEM (out of memory). .LP Because it is a return value, the data is a pointer. The .B XFindContext function returns a nonzero error code if an error has occurred and zero otherwise. Possible errors are .B XCNOENT (context-not-found). .LP The .B XDeleteContext function deletes the entry for the given resource ID and type from the data structure. This function returns the same error codes that .B XFindContext returns if called with the same arguments. .B XDeleteContext does not free the data whose address was saved. .LP The .B XUniqueContext function creates a unique context type that may be used in subsequent calls to .BR XSaveContext . .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XExtendedMaxRequestSize.man0000644014310600000120000000006314763154126014336 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XGetWMHints.man0000644014310600000120000000006714763154126011721 .so man__libmansuffix__/XAllocWMHints.__libmansuffix__ libX11-1.8.12/man/XrmLocaleOfDatabase.man0000644014310600000120000000007414763154126013376 .so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__ libX11-1.8.12/man/XcmsQueryWhite.man0000644014310600000120000000007014763154126012533 .so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__ libX11-1.8.12/man/XmbTextListToTextProperty.man0000644014310600000120000002663614763154126014756 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Copyright \(co 2000 The XFree86 Project, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual '\" t .TH XmbTextListToTextProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbTextListToTextProperty, XwcTextListToTextProperty, Xutf8TextListToTextProperty, XmbTextPropertyToTextList, XwcTextPropertyToTextList, Xutf8TextPropertyToTextList, XwcFreeStringList, XDefaultString \- convert text lists and text property structures .SH SYNTAX .HP int XmbTextListToTextProperty\^(\^Display *\fIdisplay\fP\^, char **\fIlist\fP\^, int \fIcount\fP\^, XICCEncodingStyle \fIstyle\fP\^, XTextProperty *\fItext_prop_return\fP\^); .HP int XwcTextListToTextProperty\^(\^Display *\fIdisplay\fP\^, wchar_t **\fIlist\fP\^, int \fIcount\fP\^, XICCEncodingStyle \fIstyle\fP\^, XTextProperty *\fItext_prop_return\fP\^); .HP int Xutf8TextListToTextProperty\^(\^Display *\fIdisplay\fP\^, char **\fIlist\fP\^, int \fIcount\fP\^, XICCEncodingStyle \fIstyle\fP\^, XTextProperty *\fItext_prop_return\fP\^); .HP int XmbTextPropertyToTextList\^(\^Display *\fIdisplay\fP\^, _Xconst XTextProperty *\fItext_prop\fP\^, char ***\fIlist_return\fP\^, int *\fIcount_return\fP\^); .HP int XwcTextPropertyToTextList\^(\^Display *\fIdisplay\fP\^, _Xconst XTextProperty *\fItext_prop\fP\^, wchar_t ***\fIlist_return\fP\^, int *\fIcount_return\fP\^); .HP int Xutf8TextPropertyToTextList\^(\^Display *\fIdisplay\fP\^, _Xconst XTextProperty *\fItext_prop\fP\^, char ***\fIlist_return\fP\^, int *\fIcount_return\fP\^); .HP void XwcFreeStringList\^(\^wchar_t **\fIlist\fP\^); .HP char *XDefaultString\^(void) .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIlist\fP 1i Specifies a list of null-terminated character strings. .IP \fIcount\fP 1i Specifies the number of strings specified. .IP \fIstyle\fP 1i Specifies the manner in which the property is encoded. .IP \fItext_prop_return\fP 1i Returns the .B XTextProperty structure. .IP \fItext_prop\fP 1i Specifies the .B XTextProperty structure to be used. .IP \fIlist_return\fP 1i Returns a list of null-terminated character strings. .IP \fIcount_return\fP 1i Returns the number of strings. .IP \fIlist\fP 1i Specifies the list of strings to be freed. .SH DESCRIPTION The .BR XmbTextListToTextProperty , .B XwcTextListToTextProperty and .B Xutf8TextListToTextProperty functions set the specified .B XTextProperty value to a set of null-separated elements representing the concatenation of the specified list of null-terminated text strings. The input text strings must be given in the current locale encoding (for .B XmbTextListToTextProperty and .BR XwcTextListToTextProperty ), or in UTF-8 encoding (for .BR Xutf8TextListToTextProperty ). .LP The functions set the encoding field of text_prop_return to an .B Atom for the specified display naming the encoding determined by the specified style and convert the specified text list to this encoding for storage in the text_prop_return value field. If the style .B XStringStyle or .B XCompoundTextStyle is specified, this encoding is \*(lqSTRING\*(rq or \*(lqCOMPOUND_TEXT\*(rq, respectively. If the style .B XUTF8StringStyle is specified, this encoding is \*(lqUTF8_STRING\*(rq. (This is an extension introduced by The XFree86 Project, Inc., in their 4.0.2 release. Its presence is indicated by the macro .BR X_HAVE_UTF8_STRING .) If the style .B XTextStyle is specified, this encoding is the encoding of the current locale. If the style .B XStdICCTextStyle is specified, this encoding is \*(lqSTRING\*(rq if the text is fully convertible to STRING, else \*(lqCOMPOUND_TEXT\*(rq. A final terminating null byte is stored at the end of the value field of text_prop_return but is not included in the nitems member. .LP If insufficient memory is available for the new value string, the functions return .BR XNoMemory . If the current locale is not supported, the functions return .BR XLocaleNotSupported . In both of these error cases, the functions do not set text_prop_return. .LP To determine if the functions are guaranteed not to return .BR XLocaleNotSupported , use .BR XSupportsLocale . .LP If the supplied text is not fully convertible to the specified encoding, the functions return the number of unconvertible characters. Each unconvertible character is converted to an implementation-defined and encoding-specific default string. Otherwise, the functions return .BR Success . Note that full convertibility to all styles except .B XStringStyle is guaranteed. .LP To free the storage for the value field, use .BR XFree . .LP The .BR XmbTextPropertyToTextList , .B XwcTextPropertyToTextList and .B Xutf8TextPropertyToTextList functions return a list of text strings representing the null-separated elements of the specified .B XTextProperty structure. The returned strings are encoded using the current locale encoding (for .B XmbTextPropertyToTextList and .BR XwcTextPropertyToTextList ) or in UTF-8 (for .BR Xutf8TextPropertyToTextList ). The data in text_prop must be format 8. .LP Multiple elements of the property (for example, the strings in a disjoint text selection) are separated by a null byte. The contents of the property are not required to be null-terminated; any terminating null should not be included in text_prop.nitems. .LP If insufficient memory is available for the list and its elements, .BR XmbTextPropertyToTextList , .B XwcTextPropertyToTextList and .B Xutf8TextPropertyToTextList return .BR XNoMemory . If the current locale is not supported, the functions return .BR XLocaleNotSupported . Otherwise, if the encoding field of text_prop is not convertible to the encoding of the current locale, the functions return .BR XConverterNotFound . For supported locales, existence of a converter from COMPOUND_TEXT, STRING, UTF8_STRING or the encoding of the current locale is guaranteed if .B XSupportsLocale returns .B True for the current locale (but the actual text may contain unconvertible characters). Conversion of other encodings is implementation-dependent. In all of these error cases, the functions do not set any return values. .LP Otherwise, .BR XmbTextPropertyToTextList , .B XwcTextPropertyToTextList and .B Xutf8TextPropertyToTextList return the list of null-terminated text strings to list_return and the number of text strings to count_return. .LP If the value field of text_prop is not fully convertible to the encoding of the current locale, the functions return the number of unconvertible characters. Each unconvertible character is converted to a string in the current locale that is specific to the current locale. To obtain the value of this string, use .BR XDefaultString . Otherwise, .BR XmbTextPropertyToTextList , .B XwcTextPropertyToTextList and .B Xutf8TextPropertyToTextList return .BR Success . .LP To free the storage for the list and its contents returned by .B XmbTextPropertyToTextList or .BR Xutf8TextPropertyToTextList , use .BR XFreeStringList . To free the storage for the list and its contents returned by .BR XwcTextPropertyToTextList , use .BR XwcFreeStringList . .LP The .B XwcFreeStringList function frees memory allocated by .BR XwcTextPropertyToTextList . .LP The .B XDefaultString function returns the default string used by Xlib for text conversion (for example, in .BR XmbTextPropertyToTextList ). The default string is the string in the current locale that is output when an unconvertible character is found during text conversion. If the string returned by .B XDefaultString is the empty string ("\^"), no character is output in the converted text. .B XDefaultString does not return NULL. .LP The string returned by .B XDefaultString is independent of the default string for text drawing; see .B XCreateFontSet to obtain the default string for an .BR XFontSet . .LP The behavior when an invalid codepoint is supplied to any Xlib function is undefined. .LP The returned string is null-terminated. It is owned by Xlib and should not be modified or freed by the client. It may be freed after the current locale is changed. Until freed, it will not be modified by Xlib. .LP The functions .B Xutf8TextListToTextProperty and .B Xutf8TextPropertyToTextList are extensions introduced by The XFree86 Project, Inc., in their 4.0.2 release. Their presence is indicated by the macro .BR X_HAVE_UTF8_STRING . .SH STRUCTURES The .B XTextProperty structure contains: .LP .EX typedef struct { unsigned char *value; /\&* property data */ Atom encoding; /\&* type of property */ int format; /\&* 8, 16, or 32 */ unsigned long nitems; /\&* number of items in value */ } XTextProperty; .EE .LP The .B XICCEncodingStyle structure contains: .LP .TS lw(.5i) lw(2i) lw(2.5i). T{ \&#define T} T{ .B XNoMemory T} T{ \-1 T} T{ \&#define T} T{ .B XLocaleNotSupported T} T{ \-2 T} T{ \&#define T} T{ .B XConverterNotFound T} T{ \-3 T} .TE .EX typedef enum { XStringStyle, /\&* STRING */ XCompoundTextStyle, /\&* COMPOUND_TEXT */ XTextStyle, /\&* text in owner's encoding (current locale) */ XStdICCTextStyle, /\&* STRING, else COMPOUND_TEXT */ XUTF8StringStyle /\&* UTF8_STRING */ } XICCEncodingStyle; .EE .SH "SEE ALSO" XSetTextProperty(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/LastKnownRequestProcessed.man0000644014310600000120000000006314763154126014735 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XDestroySubwindows.man0000644014310600000120000000007014763154126013440 .so man__libmansuffix__/XDestroyWindow.__libmansuffix__ libX11-1.8.12/man/XSetArcMode.man0000644014310600000120000001116214763154126011714 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetArcMode __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetArcMode, XSetSubwindowMode, XSetGraphicsExposure \- GC convenience routines .SH SYNTAX .HP int XSetArcMode\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int \fIarc_mode\fP\^); .HP int XSetSubwindowMode\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int \fIsubwindow_mode\fP\^); .HP int XSetGraphicsExposures\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Bool \fIgraphics_exposures\fP\^); .SH ARGUMENTS .IP \fIarc_mode\fP 1i Specifies the arc mode. You can pass .B ArcChord or .BR ArcPieSlice . .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fIgraphics_exposures\fP 1i Specifies a Boolean value that indicates whether you want .B GraphicsExpose and .B NoExpose events to be reported when calling .B XCopyArea and .B XCopyPlane with this GC. .IP \fIsubwindow_mode\fP 1i Specifies the subwindow mode. You can pass .B ClipByChildren or .BR IncludeInferiors . .SH DESCRIPTION The .B XSetArcMode function sets the arc mode in the specified GC. .LP .B XSetArcMode can generate .BR BadAlloc , .BR BadGC , and .B BadValue errors. .LP The .B XSetSubwindowMode function sets the subwindow mode in the specified GC. .LP .B XSetSubwindowMode can generate .BR BadAlloc , .BR BadGC , and .B BadValue errors. .LP The .B XSetGraphicsExposures function sets the graphics-exposures flag in the specified GC. .LP .B XSetGraphicsExposures can generate .BR BadAlloc , .BR BadGC , and .B BadValue errors. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XCopyArea(__libmansuffix__), XCreateGC(__libmansuffix__), XQueryBestSize(__libmansuffix__), XSetClipOrigin(__libmansuffix__), XSetFillStyle(__libmansuffix__), XSetFont(__libmansuffix__), XSetLineAttributes(__libmansuffix__), XSetState(__libmansuffix__), XSetTile(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XFreeModifiermap.man0000644014310600000120000000010014763154126012752 .so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ libX11-1.8.12/man/XDrawRectangle.man0000644014310600000120000001240014763154126012444 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XDrawRectangle __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawRectangle, XDrawRectangles, XRectangle \- draw rectangles and rectangles structure .SH SYNTAX .HP int XDrawRectangle\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^); .HP int XDrawRectangles\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, XRectangle \fIrectangles\fP\^[\^]\^, int \fInrectangles\fP\^); .SH ARGUMENTS .IP \fId\fP 1i Specifies the drawable. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fInrectangles\fP 1i Specifies the number of rectangles in the array. .IP \fIrectangles\fP 1i Specifies an array of rectangles. .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height, which specify the dimensions of the rectangle. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates, which specify the upper-left corner of the rectangle. .SH DESCRIPTION The .B XDrawRectangle and .B XDrawRectangles functions draw the outlines of the specified rectangle or rectangles as if a five-point .B PolyLine protocol request were specified for each rectangle: .IP [x,y] [x+width,y] [x+width,y+height] [x,y+height] [x,y] .LP For the specified rectangle or rectangles, these functions do not draw a pixel more than once. .B XDrawRectangles draws the rectangles in the order listed in the array. If rectangles intersect, the intersecting pixels are drawn multiple times. .LP Both functions use these GC components: function, plane-mask, line-width, line-style, cap-style, join-style, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, and dash-list. .LP .B XDrawRectangle and .B XDrawRectangles can generate .BR BadDrawable , .BR BadGC , and .B BadMatch errors. .SH STRUCTURES The .B XRectangle structure contains: .LP .EX typedef struct { short x, y; unsigned short width, height; } XRectangle; .EE .LP All x and y members are signed integers. The width and height members are 16-bit unsigned integers. You should be careful not to generate coordinates and sizes out of the 16-bit ranges, because the protocol only has 16-bit fields for these values. .SH DIAGNOSTICS .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .SH "SEE ALSO" XDrawArc(__libmansuffix__), XDrawLine(__libmansuffix__), XDrawPoint(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XButtonEvent.man0000644014310600000120000002321714763154126012207 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XButtonEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XButtonEvent, XKeyEvent, XMotionEvent \- KeyPress, KeyRelease, ButtonPress, ButtonRelease, and MotionNotify event structures .SH STRUCTURES The structures for .BR KeyPress , .BR KeyRelease , .BR ButtonPress , .BR ButtonRelease , and .B MotionNotify events contain: .LP .EX typedef struct { int type; /\&* ButtonPress or ButtonRelease */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; /\&* \*(lqevent\*(rq window it is reported relative to */ Window root; /\&* root window that the event occurred on */ Window subwindow; /\&* child window */ Time time; /\&* milliseconds */ int x, y; /\&* pointer x, y coordinates in event window */ int x_root, y_root; /\&* coordinates relative to root */ unsigned int state; /\&* key or button mask */ unsigned int button; /\&* detail */ Bool same_screen; /\&* same screen flag */ } XButtonEvent; typedef XButtonEvent XButtonPressedEvent; typedef XButtonEvent XButtonReleasedEvent; .EE .LP .EX typedef struct { int type; /\&* KeyPress or KeyRelease */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; /\&* \*(lqevent\*(rq window it is reported relative to */ Window root; /\&* root window that the event occurred on */ Window subwindow; /\&* child window */ Time time; /\&* milliseconds */ int x, y; /\&* pointer x, y coordinates in event window */ int x_root, y_root; /\&* coordinates relative to root */ unsigned int state; /\&* key or button mask */ unsigned int keycode; /\&* detail */ Bool same_screen; /\&* same screen flag */ } XKeyEvent; typedef XKeyEvent XKeyPressedEvent; typedef XKeyEvent XKeyReleasedEvent; .EE .LP .EX typedef struct { int type; /\&* MotionNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; /\&* \*(lqevent\*(rq window reported relative to */ Window root; /\&* root window that the event occurred on */ Window subwindow; /\&* child window */ Time time; /\&* milliseconds */ int x, y; /\&* pointer x, y coordinates in event window */ int x_root, y_root; /\&* coordinates relative to root */ unsigned int state; /\&* key or button mask */ char is_hint; /\&* detail */ Bool same_screen; /\&* same screen flag */ } XMotionEvent; typedef XMotionEvent XPointerMovedEvent; .EE .LP When you receive these events, their structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP These structures have the following common members: window, root, subwindow, time, x, y, x_root, y_root, state, and same_screen. The window member is set to the window on which the event was generated and is referred to as the event window. As long as the conditions previously discussed are met, this is the window used by the X server to report the event. The root member is set to the source window's root window. The x_root and y_root members are set to the pointer's coordinates relative to the root window's origin at the time of the event. .LP The same_screen member is set to indicate whether the event window is on the same screen as the root window and can be either .B True or .BR False . If .BR True , the event and root windows are on the same screen. If .BR False , the event and root windows are not on the same screen. .LP If the source window is an inferior of the event window, the subwindow member of the structure is set to the child of the event window that is the source window or the child of the event window that is an ancestor of the source window. Otherwise, the X server sets the subwindow member to .BR None . The time member is set to the time when the event was generated and is expressed in milliseconds. .LP If the event window is on the same screen as the root window, the x and y members are set to the coordinates relative to the event window's origin. Otherwise, these members are set to zero. .LP The state member is set to indicate the logical state of the pointer buttons and modifier keys just prior to the event, which is the bitwise inclusive OR of one or more of the button or modifier key masks: .BR Button1Mask , .BR Button2Mask , .BR Button3Mask , .BR Button4Mask , .BR Button5Mask , .BR ShiftMask , .BR LockMask , .BR ControlMask , .BR Mod1Mask , .BR Mod2Mask , .BR Mod3Mask , .BR Mod4Mask , and .BR Mod5Mask . .LP Each of these structures also has a member that indicates the detail. For the .B XKeyPressedEvent and .B XKeyReleasedEvent structures, this member is called a keycode. It is set to a number that represents a physical key on the keyboard. The keycode is an arbitrary representation for any key on the keyboard (see sections 12.7 and 16.1). .LP For the .B XButtonPressedEvent and .B XButtonReleasedEvent structures, this member is called button. It represents the pointer button that changed state and can be the .BR Button1 , .BR Button2 , .BR Button3 , .BR Button4 , or .B Button5 value. For the .B XPointerMovedEvent structure, this member is called is_hint. It can be set to .B NotifyNormal or .BR NotifyHint . .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XColor.man0000644014310600000120000000007114763154126011001 .so man__libmansuffix__/XCreateColormap.__libmansuffix__ libX11-1.8.12/man/XSetFillStyle.man0000644014310600000120000001024114763154126012306 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetFillStyle __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetFillStyle, XSetFillRule \- GC convenience routines .SH SYNTAX .HP int XSetFillStyle\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int \fIfill_style\fP\^); .HP int XSetFillRule\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int \fIfill_rule\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIfill_rule\fP 1i Specifies the fill-rule you want to set for the specified GC. You can pass .B EvenOddRule or .BR WindingRule . .IP \fIfill_style\fP 1i Specifies the fill-style you want to set for the specified GC. You can pass .BR FillSolid , .BR FillTiled , .BR FillStippled , or .BR FillOpaqueStippled . .IP \fIgc\fP 1i Specifies the GC. .SH DESCRIPTION The .B XSetFillStyle function sets the fill-style in the specified GC. .LP .B XSetFillStyle can generate .BR BadAlloc , .BR BadGC , and .B BadValue errors. .LP The .B XSetFillRule function sets the fill-rule in the specified GC. .LP .B XSetFillRule can generate .BR BadAlloc , .BR BadGC , and .B BadValue errors. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XCreateGC(__libmansuffix__), XQueryBestSize(__libmansuffix__), XSetArcMode(__libmansuffix__), XSetClipOrigin(__libmansuffix__), XSetFont(__libmansuffix__), XSetLineAttributes(__libmansuffix__), XSetState(__libmansuffix__), XSetTile(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XCreateGlyphCursor.man0000644014310600000120000000007314763154126013332 .so man__libmansuffix__/XCreateFontCursor.__libmansuffix__ libX11-1.8.12/man/VendorRelease.man0000644014310600000120000000006314763154126012332 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/DefaultGC.man0000644014310600000120000000006314763154126011372 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XGrabPointer.man0000644014310600000120000002321114763154126012140 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XGrabPointer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGrabPointer, XUngrabPointer, XChangeActivePointerGrab \- grab the pointer .SH SYNTAX .HP int XGrabPointer\^(\^Display *\fIdisplay\fP\^, Window \fIgrab_window\fP\^, Bool \fIowner_events\fP\^, unsigned int \fIevent_mask\fP\^, int \fIpointer_mode\fP\^, int \fIkeyboard_mode\fP\^, Window \fIconfine_to\fP\^, Cursor \fIcursor\fP\^, Time \fItime\fP\^); .HP int XUngrabPointer\^(\^Display *\fIdisplay\fP\^, Time \fItime\fP\^); .HP int XChangeActivePointerGrab\^(\^Display *\fIdisplay\fP\^, unsigned int \fIevent_mask\fP\^, Cursor \fIcursor\fP\^, Time \fItime\fP\^); .SH ARGUMENTS .IP \fIconfine_to\fP 1i Specifies the window to confine the pointer in or .BR None . .IP \fIcursor\fP 1i Specifies the cursor that is to be displayed during the grab or .BR None . .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIevent_mask\fP 1i Specifies which pointer events are reported to the client. The mask is the bitwise inclusive OR of the valid pointer event mask bits. .IP \fIgrab_window\fP 1i Specifies the grab window. .IP \fIkeyboard_mode\fP 1i Specifies further processing of keyboard events. You can pass .B GrabModeSync or .BR GrabModeAsync . .IP \fIowner_events\fP 1i Specifies a Boolean value that indicates whether the pointer events are to be reported as usual or reported with respect to the grab window if selected by the event mask. .IP \fIpointer_mode\fP 1i Specifies further processing of pointer events. You can pass .B GrabModeSync or .BR GrabModeAsync . .IP \fItime\fP 1i Specifies the time. You can pass either a timestamp or .BR CurrentTime . .SH DESCRIPTION The .B XGrabPointer function actively grabs control of the pointer and returns .B GrabSuccess if the grab was successful. Further pointer events are reported only to the grabbing client. .B XGrabPointer overrides any active pointer grab by this client. If owner_events is .BR False , all generated pointer events are reported with respect to grab_window and are reported only if selected by event_mask. If owner_events is .B True and if a generated pointer event would normally be reported to this client, it is reported as usual. Otherwise, the event is reported with respect to the grab_window and is reported only if selected by event_mask. For either value of owner_events, unreported events are discarded. .LP If the pointer_mode is .BR GrabModeAsync , pointer event processing continues as usual. If the pointer is currently frozen by this client, the processing of events for the pointer is resumed. If the pointer_mode is .BR GrabModeSync , the state of the pointer, as seen by client applications, appears to freeze, and the X server generates no further pointer events until the grabbing client calls .B XAllowEvents or until the pointer grab is released. Actual pointer changes are not lost while the pointer is frozen; they are simply queued in the server for later processing. .LP If the keyboard_mode is .BR GrabModeAsync , keyboard event processing is unaffected by activation of the grab. If the keyboard_mode is .BR GrabModeSync , the state of the keyboard, as seen by client applications, appears to freeze, and the X server generates no further keyboard events until the grabbing client calls .B XAllowEvents or until the pointer grab is released. Actual keyboard changes are not lost while the pointer is frozen; they are simply queued in the server for later processing. .LP If a cursor is specified, it is displayed regardless of what window the pointer is in. If .B None is specified, the normal cursor for that window is displayed when the pointer is in grab_window or one of its subwindows; otherwise, the cursor for grab_window is displayed. .LP If a confine_to window is specified, the pointer is restricted to stay contained in that window. The confine_to window need have no relationship to the grab_window. If the pointer is not initially in the confine_to window, it is warped automatically to the closest edge just before the grab activates and enter/leave events are generated as usual. If the confine_to window is subsequently reconfigured, the pointer is warped automatically, as necessary, to keep it contained in the window. .LP The time argument allows you to avoid certain circumstances that come up if applications take a long time to respond or if there are long network delays. Consider a situation where you have two applications, both of which normally grab the pointer when clicked on. If both applications specify the timestamp from the event, the second application may wake up faster and successfully grab the pointer before the first application. The first application then will get an indication that the other application grabbed the pointer before its request was processed. .LP .B XGrabPointer generates .B EnterNotify and .B LeaveNotify events. .LP Either if grab_window or confine_to window is not viewable or if the confine_to window lies completely outside the boundaries of the root window, .B XGrabPointer fails and returns .BR GrabNotViewable . If the pointer is actively grabbed by some other client, it fails and returns .BR AlreadyGrabbed . If the pointer is frozen by an active grab of another client, it fails and returns .BR GrabFrozen . If the specified time is earlier than the last-pointer-grab time or later than the current X server time, it fails and returns .BR GrabInvalidTime . Otherwise, the last-pointer-grab time is set to the specified time .RB ( CurrentTime is replaced by the current X server time). .LP .B XGrabPointer can generate .BR BadCursor , .BR BadValue , and .B BadWindow errors. .LP The .B XUngrabPointer function releases the pointer and any queued events if this client has actively grabbed the pointer from .BR XGrabPointer , .BR XGrabButton , or from a normal button press. .B XUngrabPointer does not release the pointer if the specified time is earlier than the last-pointer-grab time or is later than the current X server time. It also generates .B EnterNotify and .B LeaveNotify events. The X server performs an .B UngrabPointer request automatically if the event window or confine_to window for an active pointer grab becomes not viewable or if window reconfiguration causes the confine_to window to lie completely outside the boundaries of the root window. .LP The .B XChangeActivePointerGrab function changes the specified dynamic parameters if the pointer is actively grabbed by the client and if the specified time is no earlier than the last-pointer-grab time and no later than the current X server time. This function has no effect on the passive parameters of a .BR XGrabButton . The interpretation of event_mask and cursor is the same as described in .BR XGrabPointer . .LP .B XChangeActivePointerGrab can generate a .B BadCursor and .B BadValue error. .SH DIAGNOSTICS .TP 1i .B BadCursor A value for a Cursor argument does not name a defined Cursor. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllowEvents(__libmansuffix__), XGrabButton(__libmansuffix__), XGrabKey(__libmansuffix__), XGrabKeyboard(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XCloseDisplay.man0000644014310600000120000000006614763154126012322 .so man__libmansuffix__/XOpenDisplay.__libmansuffix__ libX11-1.8.12/man/XSetOCValues.man0000644014310600000120000000006314763154126012061 .so man__libmansuffix__/XCreateOC.__libmansuffix__ libX11-1.8.12/man/XContextualDrawing.man0000644014310600000120000000007114763154126013365 .so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__ libX11-1.8.12/man/XDestroyRegion.man0000644014310600000120000000006714763154126012525 .so man__libmansuffix__/XCreateRegion.__libmansuffix__ libX11-1.8.12/man/XGetWMClientMachine.man0000644014310600000120000000007514763154126013336 .so man__libmansuffix__/XSetWMClientMachine.__libmansuffix__ libX11-1.8.12/man/XQueryBestStipple.man0000644014310600000120000000007014763154126013206 .so man__libmansuffix__/XQueryBestSize.__libmansuffix__ libX11-1.8.12/man/XSetPlaneMask.man0000644014310600000120000000006314763154126012253 .so man__libmansuffix__/XSetState.__libmansuffix__ libX11-1.8.12/man/XAllocColorPlanes.man0000644014310600000120000000006514763154126013122 .so man__libmansuffix__/XAllocColor.__libmansuffix__ libX11-1.8.12/man/XOffsetRegion.man0000644014310600000120000000007214763154126012316 .so man__libmansuffix__/XIntersectRegion.__libmansuffix__ libX11-1.8.12/man/XGetImage.man0000644014310600000120000000006314763154126011406 .so man__libmansuffix__/XPutImage.__libmansuffix__ libX11-1.8.12/man/XrmGetDatabase.man0000644014310600000120000000007414763154126012431 .so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__ libX11-1.8.12/man/EventMaskOfScreen.man0000644014310600000120000000007414763154126013120 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/VisualOfCCC.man0000644014310600000120000000006614763154126011640 .so man__libmansuffix__/DisplayOfCCC.__libmansuffix__ libX11-1.8.12/man/DefaultVisual.man0000644014310600000120000000006314763154126012344 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XLocaleOfFontSet.man0000644014310600000120000000007114763154126012712 .so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__ libX11-1.8.12/man/HeightMMOfScreen.man0000644014310600000120000000007414763154126012665 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XDrawArcs.man0000644014310600000120000000006214763154126011431 .so man__libmansuffix__/XDrawArc.__libmansuffix__ libX11-1.8.12/man/XDrawString16.man0000644014310600000120000000006514763154126012161 .so man__libmansuffix__/XDrawString.__libmansuffix__ libX11-1.8.12/man/XDrawText16.man0000644014310600000120000000006314763154126011635 .so man__libmansuffix__/XDrawText.__libmansuffix__ libX11-1.8.12/man/XWithdrawWindow.man0000644014310600000120000000007014763154126012703 .so man__libmansuffix__/XIconifyWindow.__libmansuffix__ libX11-1.8.12/man/XLoadQueryFont.man0000644014310600000120000000006314763154126012460 .so man__libmansuffix__/XLoadFont.__libmansuffix__ libX11-1.8.12/man/XFillArc.man0000644014310600000120000000007014763154126011236 .so man__libmansuffix__/XFillRectangle.__libmansuffix__ libX11-1.8.12/man/XFetchBytes.man0000644014310600000120000000006514763154126011766 .so man__libmansuffix__/XStoreBytes.__libmansuffix__ libX11-1.8.12/man/XFreeFont.man0000644014310600000120000000006314763154126011434 .so man__libmansuffix__/XLoadFont.__libmansuffix__ libX11-1.8.12/man/ScreenOfDisplay.man0000644014310600000120000000006314763154126012626 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XGetErrorDatabaseText.man0000644014310600000120000000007214763154126013747 .so man__libmansuffix__/XSetErrorHandler.__libmansuffix__ libX11-1.8.12/man/Xutf8DrawImageString.man0000644014310600000120000000007414763154126013564 .so man__libmansuffix__/XmbDrawImageString.__libmansuffix__ libX11-1.8.12/man/XUngrabPointer.man0000644014310600000120000000006614763154126012506 .so man__libmansuffix__/XGrabPointer.__libmansuffix__ libX11-1.8.12/man/XTextWidth.man0000644014310600000120000000622414763154126011655 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XTextWidth __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XTextWidth, XTextWidth16 \- compute text width .SH SYNTAX .HP int XTextWidth\^(\^XFontStruct *\fIfont_struct\fP\^, _Xconst char *\fIstring\fP\^, int \fIcount\fP\^); .HP int XTextWidth16\^(\^XFontStruct *\fIfont_struct\fP\^, _Xconst XChar2b *\fIstring\fP\^, int \fIcount\fP\^); .SH ARGUMENTS .IP \fIcount\fP 1i Specifies the character count in the specified string. .IP \fIfont_struct\fP 1i Specifies the font used for the width computation. .IP \fIstring\fP 1i Specifies the character string. .SH DESCRIPTION The .B XTextWidth and .B XTextWidth16 functions return the width of the specified 8-bit or 2-byte character strings. .SH "SEE ALSO" XLoadFont(__libmansuffix__), XTextExtents(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XTextItem16.man0000644014310600000120000000006314763154126011636 .so man__libmansuffix__/XDrawText.__libmansuffix__ libX11-1.8.12/man/DisplayPlanes.man0000644014310600000120000000006314763154126012344 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XFontsOfFontSet.man0000644014310600000120000001530714763154126012614 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XFontsOfFontSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFontsOfFontSet, XBaseFontNameListOfFontSet, XLocaleOfFontSet, XContextDependentDrawing, XContextualDrawing, XDirectionalDependentDrawing \- obtain fontset information .SH SYNTAX .HP int XFontsOfFontSet\^(\^XFontSet \fIfont_set\fP\^, XFontStruct ***\fIfont_struct_list_return\fP\^, char ***\fIfont_name_list_return\fP\^); .HP char *XBaseFontNameListOfFontSet\^(\^XFontSet \fIfont_set\fP\^); .HP char *XLocaleOfFontSet\^(\^XFontSet \fIfont_set\fP\^); .HP Bool XContextDependentDrawing\^(\^XFontSet \fIfont_set\fP\^); .HP Bool XContextualDrawing\^(\^XFontSet \fIfont_set\fP\^); .HP Bool XDirectionalDependentDrawing\^(\^XFontSet \fIfont_set\fP\^); .SH ARGUMENTS .IP \fIfont_set\fP 1i Specifies the font set. .IP \fIfont_name_list_return\fP 1i Returns the list of font names. .IP \fIfont_struct_list_return\fP 1i Returns the list of font structs. .SH DESCRIPTION The .B XFontsOfFontSet function returns a list of one or more .B XFontStructs and font names for the fonts used by the Xmb and Xwc layers for the given font set. A list of pointers to the .B XFontStruct structures is returned to font_struct_list_return. A list of pointers to null-terminated, fully specified font name strings in the locale of the font set is returned to font_name_list_return. The font_name_list order corresponds to the font_struct_list order. The number of .B XFontStruct structures and font names is returned as the value of the function. .LP Because it is not guaranteed that a given character will be imaged using a single font glyph, there is no provision for mapping a character or default string to the font properties, font ID, or direction hint for the font for the character. The client may access the .B XFontStruct list to obtain these values for all the fonts currently in use. .LP Xlib does not guarantee that fonts are loaded from the server at the creation of an .BR XFontSet . Xlib may choose to cache font data, loading it only as needed to draw text or compute text dimensions. Therefore, existence of the per_char metrics in the .B XFontStruct structures in the .B XFontStructSet is undefined. Also, note that all properties in the .B XFontStruct structures are in the STRING encoding. .LP The .B XFontStruct and font name lists are owned by Xlib and should not be modified or freed by the client. They will be freed by a call to .B XFreeFontSet with the associated .BR XFontSet . Until freed, their contents will not be modified by Xlib. .LP The .B XBaseFontNameListOfFontSet function returns the original base font name list supplied by the client when the .B XFontSet was created. A null-terminated string containing a list of comma-separated font names is returned as the value of the function. White space may appear immediately on either side of separating commas. .LP If .B XCreateFontSet obtained an XLFD name from the font properties for the font specified by a non-XLFD base name, the .B XBaseFontNameListOfFontSet function will return the XLFD name instead of the non-XLFD base name. .LP The base font name list is owned by Xlib and should not be modified or freed by the client. It will be freed by a call to .B XFreeFontSet with the associated .BR XFontSet . Until freed, its contents will not be modified by Xlib. .LP The .B XLocaleOfFontSet function returns the name of the locale bound to the specified .BR XFontSet , as a null-terminated string. .LP The returned locale name string is owned by Xlib and should not be modified or freed by the client. It may be freed by a call to .B XFreeFontSet with the associated .BR XFontSet . Until freed, it will not be modified by Xlib. .LP The .B XContextDependentDrawing function returns .B True if the drawing functions implement implicit text directionality or if text drawn with the font_set might include context-dependent drawing; otherwise, it returns .BR False . .LP The .B XContextualDrawing function returns .B True if text drawn with the font set might include context-dependent drawing; otherwise, it returns .BR False . .LP The .B XDirectionalDependentDrawing function returns .B True if the drawing functions implement implicit text directionality; otherwise, it returns .BR False . .SH "SEE ALSO" XCreateFontSet(__libmansuffix__), XCreateOM(__libmansuffix__), XCreateOC(__libmansuffix__), XExtentsOfFontSet(__libmansuffix__), XFontSetExtents(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XCreateFontSet.man0000644014310600000120000002462714763154126012446 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCreateFontSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateFontSet, XFreeFontSet \- create and free an international text drawing font set .SH SYNTAX .HP XFontSet XCreateFontSet\^(\^Display *\fIdisplay\fP\^, _Xconst char *\fIbase_font_name_list\fP\^, char ***\fImissing_charset_list_return\fP\^, int *\fImissing_charset_count_return\fP\^, char **\fIdef_string_return\fP\^); .HP void XFreeFontSet\^(\^Display *\fIdisplay\fP\^, XFontSet \fIfont_set\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIbase_font_name_list\fP 1i Specifies the base font names. .IP \fIdef_string_return\fP 1i Returns the string drawn for missing charsets. .IP \fIfont_set\fP 1i Specifies the font set. .IP \fImissing_charset_count_return\fP 1i Returns the number of missing charsets. .IP \fImissing_charset_list_return\fP 1i Returns the missing charsets. .SH DESCRIPTION The .B XCreateFontSet function creates a font set for the specified display. The font set is bound to the current locale when .B XCreateFontSet is called. The font set may be used in subsequent calls to obtain font and character information and to image text in the locale of the font set. .LP The base_font_name_list argument is a list of base font names that Xlib uses to load the fonts needed for the locale. The base font names are a comma-separated list. The string is null-terminated and is assumed to be in the Host Portable Character Encoding; otherwise, the result is implementation-dependent. White space immediately on either side of a separating comma is ignored. .LP Use of XLFD font names permits Xlib to obtain the fonts needed for a variety of locales from a single locale-independent base font name. The single base font name should name a family of fonts whose members are encoded in the various charsets needed by the locales of interest. .LP An XLFD base font name can explicitly name a charset needed for the locale. This allows the user to specify an exact font for use with a charset required by a locale, fully controlling the font selection. .LP If a base font name is not an XLFD name, Xlib will attempt to obtain an XLFD name from the font properties for the font. If this action is successful in obtaining an XLFD name, the .B XBaseFontNameListOfFontSet function will return this XLFD name instead of the client-supplied name. .LP Xlib uses the following algorithm to select the fonts that will be used to display text with the .BR XFontSet . .LP For each font charset required by the locale, the base font name list is searched for the first appearance of one of the following cases that names a set of fonts that exist at the server: .IP \(bu 5 The first XLFD-conforming base font name that specifies the required charset or a superset of the required charset in its .B CharSetRegistry and .B CharSetEncoding fields. The implementation may use a base font name whose specified charset is a superset of the required charset, for example, an ISO8859-1 font for an ASCII charset. .IP \(bu 5 The first set of one or more XLFD-conforming base font names that specify one or more charsets that can be remapped to support the required charset. The Xlib implementation may recognize various mappings from a required charset to one or more other charsets and use the fonts for those charsets. For example, JIS Roman is ASCII with tilde and backslash replaced by yen and overbar; Xlib may load an ISO8859-1 font to support this character set if a JIS Roman font is not available. .IP \(bu 5 The first XLFD-conforming font name or the first non-XLFD font name for which an XLFD font name can be obtained, combined with the required charset (replacing the .B CharSetRegistry and .B CharSetEncoding fields in the XLFD font name). As in case 1, the implementation may use a charset that is a superset of the required charset. .IP \(bu 5 The first font name that can be mapped in some implementation-dependent manner to one or more fonts that support imaging text in the charset. .LP For example, assume that a locale required the charsets: .LP .EX ISO8859-1 JISX0208.1983 JISX0201.1976 GB2312-1980.0 .EE .LP The user could supply a base_font_name_list that explicitly specifies the charsets, ensuring that specific fonts are used if they exist. For example: .LP .EX "-JIS-Fixed-Medium-R-Normal--26-180-100-100-C-240-JISX0208.1983-0,\\ -JIS-Fixed-Medium-R-Normal--26-180-100-100-C-120-JISX0201.1976-0,\\ -GB-Fixed-Medium-R-Normal--26-180-100-100-C-240-GB2312-1980.0,\\ -Adobe-Courier-Bold-R-Normal--25-180-75-75-M-150-ISO8859-1" .EE .LP Alternatively, the user could supply a base_font_name_list that omits the charsets, letting Xlib select font charsets required for the locale. For example: .LP .EX "-JIS-Fixed-Medium-R-Normal--26-180-100-100-C-240,\\ -JIS-Fixed-Medium-R-Normal--26-180-100-100-C-120,\\ -GB-Fixed-Medium-R-Normal--26-180-100-100-C-240,\\ -Adobe-Courier-Bold-R-Normal--25-180-100-100-M-150" .EE .LP Alternatively, the user could simply supply a single base font name that allows Xlib to select from all available fonts that meet certain minimum XLFD property requirements. For example: .LP .EX "-*-*-*-R-Normal--*-180-100-100-*-*" .EE .LP If .B XCreateFontSet is unable to create the font set, either because there is insufficient memory or because the current locale is not supported, .B XCreateFontSet returns NULL, missing_charset_list_return is set to NULL, and missing_charset_count_return is set to zero. If fonts exist for all of the charsets required by the current locale, .B XCreateFontSet returns a valid .BR XFontSet , missing_charset_list_return is set to NULL, and missing_charset_count_return is set to zero. .LP If no font exists for one or more of the required charsets, .B XCreateFontSet sets missing_charset_list_return to a list of one or more null-terminated charset names for which no font exists and sets missing_charset_count_return to the number of missing fonts. The charsets are from the list of the required charsets for the encoding of the locale and do not include any charsets to which Xlib may be able to remap a required charset. .LP If no font exists for any of the required charsets or if the locale definition in Xlib requires that a font exist for a particular charset and a font is not found for that charset, .B XCreateFontSet returns NULL. Otherwise, .B XCreateFontSet returns a valid .B XFontSet to font_set. .LP When an Xmb/wc drawing or measuring function is called with an .B XFontSet that has missing charsets, some characters in the locale will not be drawable. If def_string_return is non-NULL, .B XCreateFontSet returns a pointer to a string that represents the glyphs that are drawn with this .B XFontSet when the charsets of the available fonts do not include all font glyphs required to draw a codepoint. The string does not necessarily consist of valid characters in the current locale and is not necessarily drawn with the fonts loaded for the font set, but the client can draw and measure the default glyphs by including this string in a string being drawn or measured with the .BR XFontSet . .LP If the string returned to def_string_return is the empty string ("\^"), no glyphs are drawn, and the escapement is zero. The returned string is null-terminated. It is owned by Xlib and should not be modified or freed by the client. It will be freed by a call to .B XFreeFontSet with the associated .BR XFontSet . Until freed, its contents will not be modified by Xlib. .LP The client is responsible for constructing an error message from the missing charset and default string information and may choose to continue operation in the case that some fonts did not exist. .LP The returned .B XFontSet and missing charset list should be freed with .B XFreeFontSet and .BR XFreeStringList , respectively. The client-supplied base_font_name_list may be freed by the client after calling .BR XCreateFontSet . .LP The .B XFreeFontSet function frees the specified font set. The associated base font name list, font name list, .B XFontStruct list, and .BR XFontSetExtents , if any, are freed. .SH "SEE ALSO" XExtentsofFontSet(__libmansuffix__), XFontsOfFontSet(__libmansuffix__), XFontSetExtents(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XGrabServer.man0000644014310600000120000000632714763154126011777 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XGrabServer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGrabServer, XUngrabServer \- grab the server .SH SYNTAX .HP int XGrabServer\^(\^Display *\fIdisplay\fP\^); .HP int XUngrabServer\^(\^Display *\fIdisplay\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .SH DESCRIPTION The .B XGrabServer function disables processing of requests and close downs on all other connections than the one this request arrived on. You should not grab the X server any more than is absolutely necessary. .LP The .B XUngrabServer function restarts processing of requests and close downs on other connections. You should avoid grabbing the X server as much as possible. .SH "SEE ALSO" XGrabButton(__libmansuffix__), XGrabKey(__libmansuffix__), XGrabKeyboard(__libmansuffix__), XGrabPointer(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/DefaultColormap.man0000644014310600000120000000006314763154126012655 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/DisplayOfScreen.man0000644014310600000120000000007414763154126012630 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XSetWMProperties.man0000644014310600000120000002415614763154126013011 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Copyright \(co 2000 The XFree86 Project, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetWMProperties __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetWMProperties, XmbSetWMProperties, Xutf8SetWMProperties \- set standard window properties .SH SYNTAX .HP void XSetWMProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, XTextProperty *\fIwindow_name\fP\^, XTextProperty *\fIicon_name\fP\^, char **\fIargv\fP\^, int \fIargc\fP\^, XSizeHints *\fInormal_hints\fP\^, XWMHints *\fIwm_hints\fP\^, XClassHint *\fIclass_hints\fP\^); .HP void XmbSetWMProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, _Xconst char *\fIwindow_name\fP\^, _Xconst char *\fIicon_name\fP\^, char *\fIargv\fP\^[], int \fIargc\fP\^, XSizeHints *\fInormal_hints\fP\^, XWMHints *\fIwm_hints\fP\^, XClassHint *\fIclass_hints\fP\^); .HP void Xutf8SetWMProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, _Xconst char *\fIwindow_name\fP\^, _Xconst char *\fIicon_name\fP\^, char *\fIargv\fP\^[], int \fIargc\fP\^, XSizeHints *\fInormal_hints\fP\^, XWMHints *\fIwm_hints\fP\^, XClassHint *\fIclass_hints\fP\^); .SH ARGUMENTS .IP \fIargc\fP 1i Specifies the number of arguments. .IP \fIargv\fP 1i Specifies the application's argument list. .IP \fIclass_hints\fP 1i Specifies the .B XClassHint structure to be used. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIicon_name\fP 1i Specifies the icon name, which should be a null-terminated string. .IP \fInormal_hints\fP 1i Specifies the size hints for the window in its normal state. .IP \fIw\fP 1i Specifies the window. .IP \fIwindow_name\fP 1i Specifies the window name, which should be a null-terminated string. .IP \fIwm_hints\fP 1i Specifies the .B XWMHints structure to be used. .SH DESCRIPTION The .B XSetWMProperties convenience function provides a single programming interface for setting those essential window properties that are used for communicating with other clients (particularly window and session managers). .LP If the window_name argument is non-NULL, .B XSetWMProperties calls .BR XSetWMName , which in turn, sets the WM_NAME property (see section 14.1.4). If the icon_name argument is non-NULL, .B XSetWMProperties calls .BR XSetWMIconName , which sets the WM_ICON_NAME property (see section 14.1.5). If the argv argument is non-NULL, .B XSetWMProperties calls .BR XSetCommand , which sets the WM_COMMAND property (see section 14.2.1). Note that an argc of zero is allowed to indicate a zero-length command. Note also that the hostname of this machine is stored using .B XSetWMClientMachine (see section 14.2.2). .LP If the normal_hints argument is non-NULL, .B XSetWMProperties calls .BR XSetWMNormalHints , which sets the WM_NORMAL_HINTS property (see section 14.1.7). If the wm_hints argument is non-NULL, .B XSetWMProperties calls .BR XSetWMHints , which sets the WM_HINTS property (see section 14.1.6). .LP If the class_hints argument is non-NULL, .B XSetWMProperties calls .BR XSetClassHint , which sets the WM_CLASS property (see section 14.1.8). If the res_name member in the .B XClassHint structure is set to the NULL pointer and the RESOURCE_NAME environment variable is set, then the value of the environment variable is substituted for res_name. If the res_name member is NULL, the environment variable is not set, and argv and argv[0] are set, then the value of argv[0], stripped of any directory prefixes, is substituted for res_name. .LP The .B XmbSetWMProperties and .B Xutf8SetWMProperties convenience functions provide a simple programming interface for setting those essential window properties that are used for communicating with other clients (particularly window and session managers). .LP If the window_name argument is non-NULL, they set the WM_NAME property. If the icon_name argument is non-NULL, they set the WM_ICON_NAME property. The window_name and icon_name arguments are null-terminated strings, for .B XmbSetWMProperties in the encoding of the current locale, for .B Xutf8SetWMProperties in UTF-8 encoding. If the arguments can be fully converted to the STRING encoding, the properties are created with type \*(lqSTRING\*(rq; otherwise, the arguments are converted to Compound Text, and the properties are created with type \*(lqCOMPOUND_TEXT\*(rq. .LP If the normal_hints argument is non-NULL, .B XmbSetWMProperties and .B Xutf8SetWMProperties call .BR XSetWMNormalHints , which sets the WM_NORMAL_HINTS property (see section 14.1.7). If the wm_hints argument is non-NULL, .B XmbSetWMProperties and .B Xutf8SetWMProperties call .BR XSetWMHints , which sets the WM_HINTS property (see section 14.1.6). .LP If the argv argument is non-NULL, .B XmbSetWMProperties and .B Xutf8SetWMProperties set the WM_COMMAND property from argv and argc. An argc of zero indicates a zero-length command. .LP The hostname of the machine is stored using .B XSetWMClientMachine (see section 14.2.2). .LP If the class_hints argument is non-NULL, .B XmbSetWMProperties and .B Xutf8SetWMProperties set the WM_CLASS property. If the res_name member in the .B XClassHint structure is set to the NULL pointer and the RESOURCE_NAME environment variable is set, the value of the environment variable is substituted for res_name. If the res_name member is NULL, the environment variable is not set, and argv and argv[0] are set, then the value of argv[0], stripped of any directory prefixes, is substituted for res_name. .LP It is assumed that the supplied class_hints.res_name and argv, the RESOURCE_NAME environment variable, and the hostname of the machine are in the encoding of the current locale. The corresponding WM_CLASS, WM_COMMAND, and WM_CLIENT_MACHINE properties are typed according to the local host locale announcer. No encoding conversion is performed for these strings prior to storage in the properties. .LP For clients that need to process the property text in a locale, .B XmbSetWMProperties and .B Xutf8SetWMProperties set the WM_LOCALE_NAME property to be the name of the current locale. The name is assumed to be in the Host Portable Character Encoding and is converted to STRING for storage in the property. .LP .BR XSetWMProperties , .B XmbSetWMProperties and .B Xutf8SetWMProperties can generate .B BadAlloc and .B BadWindow errors. .LP The function .B Xutf8SetWMProperties is an extension introduced by The XFree86 Project, Inc., in their 4.0.2 release. Its presence is indicated by the macro .BR X_HAVE_UTF8_STRING . .SH PROPERTIES .TP 1i \s-1WM_CLASS\s+1 Set by application programs to allow window and session managers to obtain the application's resources from the resource database. .TP 1i \s-1WM_CLIENT_MACHINE\s+1 The string name of the machine on which the client application is running. .TP 1i \s-1WM_COMMAND\s+1 The command and arguments, null-separated, used to invoke the application. .TP 1i \s-1WM_HINTS\s+1 Additional hints set by the client for use by the window manager. The C type of this property is .BR XWMHints . .TP 1i \s-1WM_ICON_NAME\s+1 The name to be used in an icon. .TP 1i \s-1WM_NAME\s+1 The name of the application. .TP 1i \s-1WM_NORMAL_HINTS\s+1 Size hints for a window in its normal state. The C type of this property is .BR XSizeHints . .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocIconSize(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XAllocWMHints(__libmansuffix__), XParseGeometry(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProtocols(__libmansuffix__), XStringListToTextProperty(__libmansuffix__), XTextListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XXorRegion.man0000644014310600000120000000007214763154126011640 .so man__libmansuffix__/XIntersectRegion.__libmansuffix__ libX11-1.8.12/man/XPoint.man0000644014310600000120000000006414763154126011016 .so man__libmansuffix__/XDrawPoint.__libmansuffix__ libX11-1.8.12/man/XUnionRegion.man0000644014310600000120000000007214763154126012160 .so man__libmansuffix__/XIntersectRegion.__libmansuffix__ libX11-1.8.12/man/XContextDependentDrawing.man0000644014310600000120000000007114763154126014512 .so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__ libX11-1.8.12/man/XOpenOM.man0000644014310600000120000001400214763154126011057 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Copyright \(co 2000 The XFree86 Project, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XOpenOM __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XOpenOM, XCloseOM, XSetOMValues, XGetOMValues, XDisplayOfOM, XLocaleOfOM \- open output methods .SH SYNTAX .HP XOM XOpenOM\^(\^Display *\fIdisplay\fP\^, XrmDatabase \fIdb\fP\^, char *\fIres_name\fP\^, char *\fIres_class\fP\^); .HP Status XCloseOM\^(\^XOM \fIom\fP\^); .HP char *XSetOMValues\^(\^XOM \fIom\fP, ...\^); .HP char *XGetOMValues\^(\^XOM \fIom\fP, ...\^); .HP Display *XDisplayOfOM\^(\^XOM \fIom\fP\^); .HP char *XLocaleOfOM\^(\^XOM \fIom\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIdb\fP 1i Specifies a pointer to the resource database. .IP \fIres_name\fP 1i Specifies the full resource name of the application. .IP \fIres_class\fP 1i Specifies the full class name of the application. .IP \fIom\fP 1i Specifies the output method. .IP ... 1i Specifies the variable length argument list to set or get XOM values. .SH DESCRIPTION The .B XOpenOM function opens an output method matching the current locale and modifiers specification. The current locale and modifiers are bound to the output method when .B XOpenOM is called. The locale associated with an output method cannot be changed. .LP The specific output method to which this call will be routed is identified on the basis of the current locale and modifiers. .B XOpenOM will identify a default output method corresponding to the current locale. That default can be modified using .B XSetLocaleModifiers to set the output method modifier. .LP The db argument is the resource database to be used by the output method for looking up resources that are private to the output method. It is not intended that this database be used to look up values that can be set as OC values in an output context. If db is NULL, no database is passed to the output method. .LP The res_name and res_class arguments specify the resource name and class of the application. They are intended to be used as prefixes by the output method when looking up resources that are common to all output contexts that may be created for this output method. The characters used for resource names and classes must be in the X Portable Character Set. The resources looked up are not fully specified if res_name or res_class is NULL. .LP The res_name and res_class arguments are not assumed to exist beyond the call to .BR XOpenOM . The specified resource database is assumed to exist for the lifetime of the output method. .LP .B XOpenOM returns NULL if no output method could be opened. .LP The .B XCloseOM function closes the specified output method. .LP The .B XSetOMValues function presents a variable argument list programming interface for setting properties or features of the specified output method. This function returns NULL if it succeeds; otherwise, it returns the name of the first argument that could not be set. Xlib does not attempt to set arguments from the supplied list that follow the failed argument; all arguments in the list preceding the failed argument have been set correctly. .LP No standard arguments are currently defined by Xlib. .LP The .B XGetOMValues function presents a variable argument list programming interface for querying properties or features of the specified output method. This function returns NULL if it succeeds; otherwise, it returns the name of the first argument that could not be obtained. .LP The .B XDisplayOfOM function returns the display associated with the specified output method. .LP The .B XLocaleOfOM returns the locale associated with the specified output method. .SH "SEE ALSO" XCreateOC(__libmansuffix__), XCreateFontSet(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetWMNormalHints.man0000644014310600000120000000007114763154126013101 .so man__libmansuffix__/XAllocSizeHints.__libmansuffix__ libX11-1.8.12/man/XSetIconSizes.man0000644014310600000120000000007014763154126012304 .so man__libmansuffix__/XAllocIconSize.__libmansuffix__ libX11-1.8.12/man/XrmOptionKind.man0000644014310600000120000000006714763154126012345 .so man__libmansuffix__/XrmInitialize.__libmansuffix__ libX11-1.8.12/man/XChangeProperty.man0000644014310600000120000000007414763154126012660 .so man__libmansuffix__/XGetWindowProperty.__libmansuffix__ libX11-1.8.12/man/XClearWindow.man0000644014310600000120000000006414763154126012143 .so man__libmansuffix__/XClearArea.__libmansuffix__ libX11-1.8.12/man/XSetErrorHandler.man0000644014310600000120000001633514763154126013000 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetErrorHandler __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetErrorHandler, XGetErrorText, XDisplayName, XSetIOErrorHandler, XSetIOErrorExitHandler, XGetErrorDatabaseText \- default error handlers .SH SYNTAX .HP int (*XSetErrorHandler\^(\^int (\^*\^\fIhandler\fP\^)\^(Display *, XErrorEvent *)\^)\^)\^(\^); .HP int XGetErrorText\^(\^Display *\fIdisplay\fP\^, int \fIcode\fP\^, char *\fIbuffer_return\fP\^, int \fIlength\fP\^); .HP char *XDisplayName\^(\^_Xconst char *\fIstring\fP\^); .HP int (*XSetIOErrorHandler\^(\^int (\^*\^\fIhandler\fP\^)(Display *)\^)\^)\^(\^); .HP void (*XSetIOErrorExitHandler\^(Display *\fIdisplay\fP\^, void (\^*\^\fIhandler\fP\^)(Display *, void *)\^, void *\fIuser_data\fP)\^)\^(\^); .HP int XGetErrorDatabaseText\^(\^Display *\fIdisplay\fP\^, _Xconst char *\fIname\fP, _Xconst char *\fImessage\fP\^, _Xconst char *\fIdefault_string\fP\^, char *\fIbuffer_return\fP\^, int \fIlength\fP\^); .SH ARGUMENTS .IP \fIbuffer_return\fP 1i Returns the error description. .IP \fIcode\fP 1i Specifies the error code for which you want to obtain a description. .IP \fIdefault_string\fP 1i Specifies the default error message if none is found in the database. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIhandler\fP 1i Specifies the program's supplied error handler. .IP \fIlength\fP 1i Specifies the size of the buffer. .IP \fImessage\fP 1i Specifies the type of the error message. .IP \fIname\fP 1i Specifies the name of the application. .IP \fIstring\fP 1i Specifies the character string. .SH DESCRIPTION Xlib generally calls the program's supplied error handler whenever an error is received. It is not called on .B BadName errors from .BR OpenFont , .BR LookupColor , or .B AllocNamedColor protocol requests or on .B BadFont errors from a .B QueryFont protocol request. These errors generally are reflected back to the program through the procedural interface. Because this condition is not assumed to be fatal, it is acceptable for your error handler to return; the returned value is ignored. However, the error handler should not call any functions (directly or indirectly) on the display that will generate protocol requests or that will look for input events. The previous error handler is returned. .LP The .B XGetErrorText function copies a null-terminated string describing the specified error code into the specified buffer. The returned text is in the encoding of the current locale. It is recommended that you use this function to obtain an error description because extensions to Xlib may define their own error codes and error strings. .LP The .B XDisplayName function returns the name of the display that .B XOpenDisplay would attempt to use. If a NULL string is specified, .B XDisplayName looks in the environment for the display and returns the display name that .B XOpenDisplay would attempt to use. This makes it easier to report to the user precisely which display the program attempted to open when the initial connection attempt failed. .LP The .B XSetIOErrorHandler sets the fatal I/O error handler. Xlib calls the program's supplied error handler if any sort of system call error occurs (for example, the connection to the server was lost). This is assumed to be a fatal condition, and the called routine should normally not return. If the I/O error handler does return, the client process exits by default, this behavior may be altered with the .BR XSetIOErrorExitHandler function. .LP Note that the previous error handler is returned. .LP The .B XGetErrorDatabaseText function returns a null-terminated message (or the default message) from the error message database. Xlib uses this function internally to look up its error messages. The text in the default_string argument is assumed to be in the encoding of the current locale, and the text stored in the buffer_return argument is in the encoding of the current locale. .LP The name argument should generally be the name of your application. The message argument should indicate which type of error message you want. If the name and message are not in the Host Portable Character Encoding, the result is implementation-dependent. Xlib uses three predefined \*(lqapplication names\*(rq to report errors. In these names, uppercase and lowercase matter. .IP XProtoError 1i The protocol error number is used as a string for the message argument. .IP XlibMessage 1i These are the message strings that are used internally by the library. .IP XRequest 1i For a core protocol request, the major request protocol number is used for the message argument. For an extension request, the extension name (as given by .BR InitExtension ) followed by a period (\.) and the minor request protocol number is used for the message argument. If no string is found in the error database, the default_string is returned to the buffer argument. .SH "SEE ALSO" XOpenDisplay(__libmansuffix__), XSynchronize(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XGetWMIconName.man0000644014310600000120000000007014763154126012317 .so man__libmansuffix__/XSetWMIconName.__libmansuffix__ libX11-1.8.12/man/XSetLocaleModifiers.man0000644014310600000120000000007114763154126013440 .so man__libmansuffix__/XSupportsLocale.__libmansuffix__ libX11-1.8.12/man/XNewModifiermap.man0000644014310600000120000000010014763154126012622 .so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ libX11-1.8.12/man/XCreateWindow.man0000644014310600000120000002530414763154126012324 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual '\" t .TH XCreateWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateWindow, XCreateSimpleWindow, XSetWindowAttributes \- create windows and window attributes structure .SH SYNTAX .HP Window XCreateWindow\^(\^Display *\fIdisplay\fP\^, Window \fIparent\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned int \fIborder_width\fP\^, int \fIdepth\fP\^, unsigned int \fIclass\fP\^, Visual *\fIvisual\fP\^, unsigned long \fIvaluemask\fP\^, XSetWindowAttributes *\fIattributes\fP\^); .HP Window XCreateSimpleWindow\^(\^Display *\fIdisplay\fP\^, Window \fIparent\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned int \fIborder_width\fP\^, unsigned long \fIborder\fP\^, unsigned long \fIbackground\fP\^); .SH ARGUMENTS .IP \fIattributes\fP 1i Specifies the structure from which the values (as specified by the value mask) are to be taken. The value mask should have the appropriate bits set to indicate which attributes have been set in the structure. .IP \fIbackground\fP 1i Specifies the background pixel value of the window. .IP \fIborder\fP 1i Specifies the border pixel value of the window. .IP \fIborder_width\fP 1i Specifies the width of the created window's border in pixels. .IP \fIclass\fP 1i Specifies the created window's class. You can pass .BR InputOutput , .BR InputOnly , or .BR CopyFromParent . A class of .B CopyFromParent means the class is taken from the parent. .IP \fIdepth\fP 1i Specifies the window's depth. A depth of .B CopyFromParent means the depth is taken from the parent. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIparent\fP 1i Specifies the parent window. .IP \fIvaluemask\fP 1i Specifies which window attributes are defined in the attributes argument. This mask is the bitwise inclusive OR of the valid attribute mask bits. If valuemask is zero, the attributes are ignored and are not referenced. .IP \fIvisual\fP 1i Specifies the visual type. A visual of .B CopyFromParent means the visual type is taken from the parent. .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height, which are the created window's inside dimensions and do not include the created window's borders. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates, which are the top-left outside corner of the window's borders and are relative to the inside of the parent window's borders. .SH DESCRIPTION The .B XCreateWindow function creates an unmapped subwindow for a specified parent window, returns the window ID of the created window, and causes the X server to generate a .B CreateNotify event. The created window is placed on top in the stacking order with respect to siblings. .LP The coordinate system has the X axis horizontal and the Y axis vertical with the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms of pixels, and coincide with pixel centers. Each window and pixmap has its own coordinate system. For a window, the origin is inside the border at the inside, upper-left corner. .LP The border_width for an .B InputOnly window must be zero, or a .B BadMatch error results. For class .BR InputOutput , the visual type and depth must be a combination supported for the screen, or a .B BadMatch error results. The depth need not be the same as the parent, but the parent must not be a window of class .BR InputOnly , or a .B BadMatch error results. For an .B InputOnly window, the depth must be zero, and the visual must be one supported by the screen. If either condition is not met, a .B BadMatch error results. The parent window, however, may have any depth and class. If you specify any invalid window attribute for a window, a .B BadMatch error results. .LP The created window is not yet displayed (mapped) on the user's display. To display the window, call .BR XMapWindow . The new window initially uses the same cursor as its parent. A new cursor can be defined for the new window by calling .BR XDefineCursor . The window will not be visible on the screen unless it and all of its ancestors are mapped and it is not obscured by any of its ancestors. .LP .B XCreateWindow can generate .B BadAlloc .BR BadColor , .BR BadCursor , .BR BadMatch , .BR BadPixmap , .BR BadValue , and .B BadWindow errors. .LP The .B XCreateSimpleWindow function creates an unmapped .B InputOutput subwindow for a specified parent window, returns the window ID of the created window, and causes the X server to generate a .B CreateNotify event. The created window is placed on top in the stacking order with respect to siblings. Any part of the window that extends outside its parent window is clipped. The border_width for an .B InputOnly window must be zero, or a .B BadMatch error results. .B XCreateSimpleWindow inherits its depth, class, and visual from its parent. All other window attributes, except background and border, have their default values. .LP .B XCreateSimpleWindow can generate .BR BadAlloc , .BR BadMatch , .BR BadValue , and .B BadWindow errors. .SH STRUCTURES The .BR XSetWindow Attributes structure contains: .LP .LP /\&* Window attribute value mask bits */ .TS lw(.5i) lw(2.5i) lw(.8i). T{ \&#define T} T{ .B CWBackPixmap T} T{ (1L<<0) T} T{ \&#define T} T{ .B CWBackPixel T} T{ (1L<<1) T} T{ \&#define T} T{ .B CWBorderPixmap T} T{ (1L<<2) T} T{ \&#define T} T{ .B CWBorderPixel T} T{ (1L<<3) T} T{ \&#define T} T{ .B CWBitGravity T} T{ (1L<<4) T} T{ \&#define T} T{ .B CWWinGravity T} T{ (1L<<5) T} T{ \&#define T} T{ .B CWBackingStore T} T{ (1L<<6) T} T{ \&#define T} T{ .B CWBackingPlanes T} T{ (1L<<7) T} T{ \&#define T} T{ .B CWBackingPixel T} T{ (1L<<8) T} T{ \&#define T} T{ .B CWOverrideRedirect T} T{ (1L<<9) T} T{ \&#define T} T{ .B CWSaveUnder T} T{ (1L<<10) T} T{ \&#define T} T{ .B CWEventMask T} T{ (1L<<11) T} T{ \&#define T} T{ .B CWDontPropagate T} T{ (1L<<12) T} T{ \&#define T} T{ .B CWColormap T} T{ (1L<<13) T} T{ \&#define T} T{ .B CWCursor T} T{ (1L<<14) T} .TE .EX /\&* Values */ typedef struct { Pixmap background_pixmap; /\&* background, None, or ParentRelative */ unsigned long background_pixel; /\&* background pixel */ Pixmap border_pixmap; /\&* border of the window or CopyFromParent */ unsigned long border_pixel; /\&* border pixel value */ int bit_gravity; /\&* one of bit gravity values */ int win_gravity; /\&* one of the window gravity values */ int backing_store; /\&* NotUseful, WhenMapped, Always */ unsigned long backing_planes; /\&* planes to be preserved if possible */ unsigned long backing_pixel; /\&* value to use in restoring planes */ Bool save_under; /\&* should bits under be saved? (popups) */ long event_mask; /\&* set of events that should be saved */ long do_not_propagate_mask; /\&* set of events that should not propagate */ Bool override_redirect; /\&* boolean value for override_redirect */ Colormap colormap; /\&* color map to be associated with window */ Cursor cursor; /\&* cursor to be displayed (or None) */ } XSetWindowAttributes; .EE .LP For a detailed explanation of the members of this structure, see \fI\*(xL\fP\^. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadColor A value for a Colormap argument does not name a defined Colormap. .TP 1i .B BadCursor A value for a Cursor argument does not name a defined Cursor. .TP 1i .B BadMatch The values do not exist for an .B InputOnly window. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadPixmap A value for a Pixmap argument does not name a defined Pixmap. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XChangeWindowAttributes(__libmansuffix__), XConfigureWindow(__libmansuffix__), XDefineCursor(__libmansuffix__), XDestroyWindow(__libmansuffix__), XMapWindow(__libmansuffix__), XRaiseWindow(__libmansuffix__), XUnmapWindow(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/BlackPixel.man0000644014310600000120000000006314763154126011612 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XrmGetFileDatabase.man0000644014310600000120000002255714763154126013243 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .de EX .sp .nf .ft CW .. .de EE .ft R .fi .sp .. .TH XrmGetFileDatabase __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmGetFileDatabase, XrmPutFileDatabase, XrmGetStringDatabase, XrmLocaleOfDatabase, XrmGetDatabase, XrmSetDatabase, XrmDestroyDatabase \- retrieve and store resource databases .SH SYNTAX .HP #include .HP XrmDatabase XrmGetFileDatabase\^(\^char *\fIfilename\fP\^); .HP void XrmPutFileDatabase\^(\^XrmDatabase \fIdatabase\fP\^, _Xconst char *\fIstored_db\fP\^); .HP XrmDatabase XrmGetStringDatabase\^(\^_Xconst char *\fIdata\fP\^); .HP const char *XrmLocaleOfDatabase\^(\^XrmDatabase \fIdatabase\fP\^); .HP XrmDatabase XrmGetDatabase\^(\^Display *\fIdisplay\fP\^); .HP void XrmSetDatabase\^(\^Display *\fIdisplay\fP\^, XrmDatabase \fIdatabase\fP\^); .HP void XrmDestroyDatabase\^(\^XrmDatabase \fIdatabase\fP\^); .SH ARGUMENTS .IP \fIfilename\fP 1i Specifies the resource database file name. .IP \fIdatabase\fP 1i Specifies the database that is to be used. .IP \fIstored_db\fP 1i Specifies the file name for the stored database. .IP \fIdata\fP 1i Specifies the database contents using a string. .IP \fIdatabase\fP 1i Specifies the resource database. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .SH DESCRIPTION The .B XrmGetFileDatabase function opens the specified file, creates a new resource database, and loads it with the specifications read in from the specified file. The specified file should contain a sequence of entries in valid ResourceLine format (see section 15.1); the database that results from reading a file with incorrect syntax is implementation-dependent. The file is parsed in the current locale, and the database is created in the current locale. If it cannot open the specified file, .B XrmGetFileDatabase returns NULL. .LP The .B XrmPutFileDatabase function stores a copy of the specified database in the specified file. Text is written to the file as a sequence of entries in valid ResourceLine format (see section 15.1). The file is written in the locale of the database. Entries containing resource names that are not in the Host Portable Character Encoding or containing values that are not in the encoding of the database locale, are written in an implementation-dependent manner. The order in which entries are written is implementation-dependent. Entries with representation types other than \*(lqString\*(rq are ignored. .LP The .B XrmGetStringDatabase function creates a new database and stores the resources specified in the specified null-terminated string. .B XrmGetStringDatabase is similar to .B XrmGetFileDatabase except that it reads the information out of a string instead of out of a file. The string should contain a sequence of entries in valid ResourceLine format (see section 15.1) terminated by a null character; the database that results from using a string with incorrect syntax is implementation-dependent. The string is parsed in the current locale, and the database is created in the current locale. .LP If database is NULL, .B XrmDestroyDatabase returns immediately. .LP The .B XrmLocaleOfDatabase function returns the name of the locale bound to the specified database, as a null-terminated string. The returned locale name string is owned by Xlib and should not be modified or freed by the client. Xlib is not permitted to free the string until the database is destroyed. Until the string is freed, it will not be modified by Xlib. .LP The .B XrmGetDatabase function returns the database associated with the specified display. It returns NULL if a database has not yet been set. .LP The .B XrmSetDatabase function associates the specified resource database (or NULL) with the specified display. The database previously associated with the display (if any) is not destroyed. A client or toolkit may find this function convenient for retaining a database once it is constructed. .SH "FILE SYNTAX" The syntax of a resource file is a sequence of resource lines terminated by newline characters or the end of the file. The syntax of an individual resource line is: .LP .\" Start marker code here .EX ResourceLine = Comment | IncludeFile | ResourceSpec | Comment = "!" {} IncludeFile = "#" WhiteSpace "include" WhiteSpace FileName WhiteSpace FileName = ResourceSpec = WhiteSpace ResourceName WhiteSpace ":" WhiteSpace Value ResourceName = [Binding] {Component Binding} ComponentName Binding = "\&." | "*" WhiteSpace = { | } Component = "?" | ComponentName ComponentName = NameChar {NameChar} NameChar = "a"\-"z" | "A"\-"Z" | "0"\-"9" | "_" | "-" Value = {} .EE .LP Elements separated by vertical bar (|) are alternatives. Curly braces ({\&.\&.\&.}) indicate zero or more repetitions of the enclosed elements. Square brackets ([\&.\&.\&.]) indicate that the enclosed element is optional. Quotes ("\&.\&.\&.") are used around literal characters. .LP IncludeFile lines are interpreted by replacing the line with the contents of the specified file. The word \*(lqinclude\*(rq must be in lowercase. The file name is interpreted relative to the directory of the file in which the line occurs (for example, if the file name contains no directory or contains a relative directory specification). .LP If a ResourceName contains a contiguous sequence of two or more Binding characters, the sequence will be replaced with single \*(lq\&.\*(rq character if the sequence contains only \*(lq\&.\*(rq characters; otherwise, the sequence will be replaced with a single \*(lq*\*(rq character. .LP A resource database never contains more than one entry for a given ResourceName. If a resource file contains multiple lines with the same ResourceName, the last line in the file is used. .LP Any white space characters before or after the name or colon in a ResourceSpec are ignored. To allow a Value to begin with white space, the two-character sequence \*(lq\^\\\^\fIspace\fP\*(rq (backslash followed by space) is recognized and replaced by a space character, and the two-character sequence \*(lq\^\\\^\fItab\fP\*(rq (backslash followed by horizontal tab) is recognized and replaced by a horizontal tab character. To allow a Value to contain embedded newline characters, the two-character sequence \*(lq\^\\\^n\*(rq is recognized and replaced by a newline character. To allow a Value to be broken across multiple lines in a text file, the two-character sequence \*(lq\^\\\^\fInewline\fP\*(rq (backslash followed by newline) is recognized and removed from the value. To allow a Value to contain arbitrary character codes, the four-character sequence \*(lq\^\\\^\fInnn\fP\*(rq, where each \fIn\fP is a digit character in the range of \*(lq0\*(rq\^\-\*(lq7\*(rq, is recognized and replaced with a single byte that contains the octal value specified by the sequence. Finally, the two-character sequence \*(lq\^\\\\\*(rq is recognized and replaced with a single backslash. .SH "SEE ALSO" XrmGetResource(__libmansuffix__), XrmInitialize(__libmansuffix__), XrmPutResource(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/CellsOfScreen.man0000644014310600000120000000007414763154126012265 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XQueryColors.man0000644014310600000120000000006514763154126012215 .so man__libmansuffix__/XQueryColor.__libmansuffix__ libX11-1.8.12/man/XStoreColors.man0000644014310600000120000001533514763154126012212 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XStoreColors __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XStoreColors, XStoreColor, XStoreNamedColor \- set colors .SH SYNTAX .HP int XStoreColors\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, XColor \fIcolor\fP\^[\^]\^, int \fIncolors\fP\^); .HP int XStoreColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, XColor *\fIcolor\fP\^); .HP int XStoreNamedColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, _Xconst char *\^\fIcolor\fP\^, unsigned long \fIpixel\fP\^, int \fIflags\fP\^); .SH ARGUMENTS .IP \fIcolor\fP 1i Specifies the pixel and RGB values or the color name string (for example, red). .IP \fIcolor\fP 1i Specifies an array of color definition structures to be stored. .IP \fIcolormap\fP 1i Specifies the colormap. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIflags\fP 1i Specifies which red, green, and blue components are set. .IP \fIncolors\fP 1i .\"Specifies the number of color definition structures. Specifies the number of .B XColor structures in the color definition array. .IP \fIpixel\fP 1i Specifies the entry in the colormap. .SH DESCRIPTION The .B XStoreColors function changes the colormap entries of the pixel values specified in the pixel members of the .B XColor structures. You specify which color components are to be changed by setting .BR DoRed , .BR DoGreen , and/or .B DoBlue in the flags member of the .B XColor structures. If the colormap is an installed map for its screen, the changes are visible immediately. .B XStoreColors changes the specified pixels if they are allocated writable in the colormap by any client, even if one or more pixels generates an error. If a specified pixel is not a valid index into the colormap, a .B BadValue error results. If a specified pixel either is unallocated or is allocated read-only, a .B BadAccess error results. If more than one pixel is in error, the one that gets reported is arbitrary. .LP .B XStoreColors can generate .BR BadAccess , .BR BadColor , and .B BadValue errors. .LP The .B XStoreColor function changes the colormap entry of the pixel value specified in the pixel member of the .B XColor structure. You specified this value in the pixel member of the .B XColor structure. This pixel value must be a read/write cell and a valid index into the colormap. If a specified pixel is not a valid index into the colormap, a .B BadValue error results. .B XStoreColor also changes the red, green, and/or blue color components. You specify which color components are to be changed by setting .BR DoRed , .BR DoGreen , and/or .B DoBlue in the flags member of the .B XColor structure. If the colormap is an installed map for its screen, the changes are visible immediately. .LP .B XStoreColor can generate .BR BadAccess , .BR BadColor , and .B BadValue errors. .LP The .B XStoreNamedColor function looks up the named color with respect to the screen associated with the colormap and stores the result in the specified colormap. The pixel argument determines the entry in the colormap. The flags argument determines which of the red, green, and blue components are set. You can set this member to the bitwise inclusive OR of the bits .BR DoRed , .BR DoGreen , and .BR DoBlue . If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. If the specified pixel is not a valid index into the colormap, a .B BadValue error results. If the specified pixel either is unallocated or is allocated read-only, a .B BadAccess error results. .LP .B XStoreNamedColor can generate .BR BadAccess , .BR BadColor , .BR BadName , and .B BadValue errors. .SH DIAGNOSTICS .TP 1i .B BadAccess A client attempted to free a color map entry that it did not already allocate. .TP 1i .B BadAccess A client attempted to store into a read-only color map entry. .TP 1i .B BadColor A value for a Colormap argument does not name a defined Colormap. .TP 1i .B BadName A font or color of the specified name does not exist. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XAllocColor(__libmansuffix__), XCreateColormap(__libmansuffix__), XQueryColor(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetFont.man0000644014310600000120000000666014763154126011317 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetFont __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetFont \- GC convenience routines .SH SYNTAX .HP int XSetFont\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Font \fIfont\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIfont\fP 1i Specifies the font. .IP \fIgc\fP 1i Specifies the GC. .SH DESCRIPTION The .B XSetFont function sets the current font in the specified GC. .LP .B XSetFont can generate .BR BadAlloc , .BR BadFont , and .B BadGC errors. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadFont A value for a Font or GContext argument does not name a defined Font. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .SH "SEE ALSO" XCreateGC(__libmansuffix__), XQueryBestSize(__libmansuffix__), XSetArcMode(__libmansuffix__), XSetClipOrigin(__libmansuffix__), XSetFillStyle(__libmansuffix__), XSetLineAttributes(__libmansuffix__), XSetState(__libmansuffix__), XSetTile(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XArc.man0000644014310600000120000000006214763154126010430 .so man__libmansuffix__/XDrawArc.__libmansuffix__ libX11-1.8.12/man/XGetTextProperty.man0000644014310600000120000000007214763154126013055 .so man__libmansuffix__/XSetTextProperty.__libmansuffix__ libX11-1.8.12/man/XRemoveConnectionWatch.man0000644014310600000120000000007514763154126014173 .so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__ libX11-1.8.12/man/XKeyboardControl.man0000644014310600000120000000010014763154126013015 .so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__ libX11-1.8.12/man/XListProperties.man0000644014310600000120000000007414763154126012716 .so man__libmansuffix__/XGetWindowProperty.__libmansuffix__ libX11-1.8.12/man/MaxCmapsOfScreen.man0000644014310600000120000000007414763154126012734 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XQueryBestCursor.man0000644014310600000120000000007014763154126013043 .so man__libmansuffix__/XRecolorCursor.__libmansuffix__ libX11-1.8.12/man/XSetClipRectangles.man0000644014310600000120000000007014763154126013275 .so man__libmansuffix__/XSetClipOrigin.__libmansuffix__ libX11-1.8.12/man/XRectInRegion.man0000644014310600000120000000006614763154126012257 .so man__libmansuffix__/XEmptyRegion.__libmansuffix__ libX11-1.8.12/man/XSetClipMask.man0000644014310600000120000000007014763154126012101 .so man__libmansuffix__/XSetClipOrigin.__libmansuffix__ libX11-1.8.12/man/XReparentWindow.man0000644014310600000120000001101114763154126012667 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XReparentWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XReparentWindow \- reparent windows .SH SYNTAX .HP int XReparentWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window \fIparent\fP\^, int \fIx\fP\^, int \fIy\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIparent\fP 1i Specifies the parent window. .IP \fIw\fP 1i Specifies the window. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates of the position in the new parent window. .SH DESCRIPTION If the specified window is mapped, .B XReparentWindow automatically performs an .B UnmapWindow request on it, removes it from its current position in the hierarchy, and inserts it as the child of the specified parent. The window is placed in the stacking order on top with respect to sibling windows. .LP After reparenting the specified window, .B XReparentWindow causes the X server to generate a .B ReparentNotify event. The override_redirect member returned in this event is set to the window's corresponding attribute. Window manager clients usually should ignore this window if this member is set to .BR True . Finally, if the specified window was originally mapped, the X server automatically performs a .B MapWindow request on it. .LP The X server performs normal exposure processing on formerly obscured windows. The X server might not generate .B Expose events for regions from the initial .B UnmapWindow request that are immediately obscured by the final .B MapWindow request. A .B BadMatch error results if: .IP \(bu 5 The new parent window is not on the same screen as the old parent window. .IP \(bu 5 The new parent window is the specified window or an inferior of the specified window. .IP \(bu 5 The new parent is .BR InputOnly , and the window is not. .IP \(bu 5 The specified window has a .B ParentRelative background, and the new parent window is not the same depth as the specified window. .LP .B XReparentWindow can generate .B BadMatch and .B BadWindow errors. .SH DIAGNOSTICS .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XChangeSaveSet(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/HeightOfScreen.man0000644014310600000120000000007414763154126012433 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XwcTextPropertyToTextList.man0000644014310600000120000000010314763154126014746 .so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ libX11-1.8.12/man/QLength.man0000644014310600000120000000006314763154126011136 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XcmsPad.man0000644014310600000120000000006314763154126011133 .so man__libmansuffix__/XcmsColor.__libmansuffix__ libX11-1.8.12/man/XCloseIM.man0000644014310600000120000000006114763154126011215 .so man__libmansuffix__/XOpenIM.__libmansuffix__ libX11-1.8.12/man/XmbSetWMProperties.man0000644014310600000120000000007214763154126013317 .so man__libmansuffix__/XSetWMProperties.__libmansuffix__ libX11-1.8.12/man/XFreeColormap.man0000644014310600000120000000007114763154126012301 .so man__libmansuffix__/XCreateColormap.__libmansuffix__ libX11-1.8.12/man/XGetWMProtocols.man0000644014310600000120000000007114763154126012613 .so man__libmansuffix__/XSetWMProtocols.__libmansuffix__ libX11-1.8.12/man/Xutf8TextListToTextProperty.man0000644014310600000120000000010314763154126015223 .so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ libX11-1.8.12/man/XAutoRepeatOff.man0000644014310600000120000000010014763154126012420 .so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__ libX11-1.8.12/man/XAddHosts.man0000644014310600000120000000006214763154126011434 .so man__libmansuffix__/XAddHost.__libmansuffix__ libX11-1.8.12/man/XGetWindowProperty.man0000644014310600000120000003144414763154126013407 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XGetWindowProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGetWindowProperty, XListProperties, XChangeProperty, XRotateWindowProperties, XDeleteProperty \- obtain and change window properties .SH SYNTAX .HP int XGetWindowProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom \fIproperty\fP\^, long \fIlong_offset\fP\^, long \fIlong_length\fP\^, Bool \fIdelete\fP\^, Atom \fIreq_type\fP\^, Atom *\fIactual_type_return\fP\^, int *\fIactual_format_return\fP\^, unsigned long *\fInitems_return\fP\^, unsigned long *\fIbytes_after_return\fP\^, unsigned char **\fIprop_return\fP\^); .HP Atom *XListProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int *\fInum_prop_return\fP\^); .HP int XChangeProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom \fIproperty\fP\^, Atom \fItype\fP\^, int \fIformat\fP\^, int \fImode\fP\^, _Xconst unsigned char *\fIdata\fP\^, int \fInelements\fP\^); .HP int XRotateWindowProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom \fIproperties\fP\^[]\^, int \fInum_prop\fP\^, int \fInpositions\fP\^); .HP int XDeleteProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom \fIproperty\fP\^); .SH ARGUMENTS .IP \fIactual_format_return\fP 1i Returns the actual format of the property. .IP \fIactual_type_return\fP 1i Returns the atom identifier that defines the actual type of the property. .IP \fIbytes_after_return\fP 1i Returns the number of bytes remaining to be read in the property if a partial read was performed. .IP \fIdata\fP 1i Specifies the property data. .IP \fIdelete\fP 1i Specifies a Boolean value that determines whether the property is deleted. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIformat\fP 1i Specifies whether the data should be viewed as a list of 8-bit, 16-bit, or 32-bit quantities. Possible values are 8, 16, and 32. This information allows the X server to correctly perform byte-swap operations as necessary. If the format is 16-bit or 32-bit, you must explicitly cast your data pointer to an (unsigned char *) in the call to .BR XChangeProperty . .IP \fIlong_length\fP 1i Specifies the length in 32-bit multiples of the data to be retrieved. .IP \fIlong_offset\fP 1i Specifies the offset in the specified property (in 32-bit quantities) where the data is to be retrieved. .\" Changed name of this file to prop_mode.a on 1/13/87 .IP \fImode\fP 1i Specifies the mode of the operation. You can pass .BR PropModeReplace , .BR PropModePrepend , or .BR PropModeAppend . .IP \fInelements\fP 1i Specifies the number of elements of the specified data format. .IP \fInitems_return\fP 1i Returns the actual number of 8-bit, 16-bit, or 32-bit items stored in the prop_return data. .IP \fInum_prop\fP 1i Specifies the length of the properties array. .IP \fInum_prop_return\fP 1i Returns the length of the properties array. .IP \fInpositions\fP 1i Specifies the rotation amount. .IP \fIprop_return\fP 1i Returns the data in the specified format. If the returned format is 8, the returned data is represented as a char array. If the returned format is 16, the returned data is represented as a array of short int type and should be cast to that type to obtain the elements. If the returned format is 32, the property data will be stored as an array of longs (which in a 64-bit application will be 64-bit values that are padded in the upper 4 bytes). .IP \fIproperty\fP 1i Specifies the property name. .IP \fIproperties\fP 1i Specifies the array of properties that are to be rotated. .IP \fIreq_type\fP 1i Specifies the atom identifier associated with the property type or .BR AnyPropertyType . .IP \fItype\fP 1i Specifies the type of the property. The X server does not interpret the type but simply passes it back to an application that later calls .BR XGetWindowProperty . .IP \fIw\fP 1i Specifies the window whose property you want to obtain, change, rotate or delete. .SH DESCRIPTION The .B XGetWindowProperty function returns the actual type of the property; the actual format of the property; the number of 8-bit, 16-bit, or 32-bit items transferred; the number of bytes remaining to be read in the property; and a pointer to the data actually returned. .B XGetWindowProperty sets the return arguments as follows: .IP \(bu 5 If the specified property does not exist for the specified window, .B XGetWindowProperty returns .B None to actual_type_return and the value zero to actual_format_return and bytes_after_return. The nitems_return argument is empty. In this case, the delete argument is ignored. .IP \(bu 5 If the specified property exists but its type does not match the specified type, .B XGetWindowProperty returns the actual property type to actual_type_return, the actual property format (never zero) to actual_format_return, and the property length in bytes (even if the actual_format_return is 16 or 32) to bytes_after_return. It also ignores the delete argument. The nitems_return argument is empty. .IP \(bu 5 If the specified property exists and either you assign .B AnyPropertyType to the req_type argument or the specified type matches the actual property type, .B XGetWindowProperty returns the actual property type to actual_type_return and the actual property format (never zero) to actual_format_return. It also returns a value to bytes_after_return and nitems_return, by defining the following values: .IP .nf N = actual length of the stored property in bytes (even if the format is 16 or 32) I = 4 * long_offset T = N - I L = MINIMUM(T, 4 * long_length) A = N - (I + L) .fi .IP The returned value starts at byte index I in the property (indexing from zero), and its length in bytes is L. If the value for long_offset causes L to be negative, a .B BadValue error results. The value of bytes_after_return is A, giving the number of trailing unread bytes in the stored property. .LP If the returned format is 8, the returned data is represented as a .B char array. If the returned format is 16, the returned data is represented as a .B short array and should be cast to that type to obtain the elements. If the returned format is 32, the returned data is represented as a .B long array and should be cast to that type to obtain the elements. .LP .B XGetWindowProperty always allocates one extra byte in prop_return (even if the property is zero length) and sets it to zero so that simple properties consisting of characters do not have to be copied into yet another string before use. .LP If delete is .B True and bytes_after_return is zero, .B XGetWindowProperty deletes the property from the window and generates a .B PropertyNotify event on the window. .LP The function returns .B Success if it executes successfully. To free the resulting data, use .BR XFree . .LP .B XGetWindowProperty can generate .BR BadAtom , .BR BadValue , and .B BadWindow errors. .LP The .B XListProperties function returns a pointer to an array of atom properties that are defined for the specified window or returns NULL if no properties were found. To free the memory allocated by this function, use .BR XFree . .LP .B XListProperties can generate a .B BadWindow error. .LP The .B XChangeProperty function alters the property for the specified window and causes the X server to generate a .B PropertyNotify event on that window. .B XChangeProperty performs the following: .IP \(bu 5 If mode is .BR PropModeReplace , .B XChangeProperty discards the previous property value and stores the new data. .IP \(bu 5 If mode is .B PropModePrepend or .BR PropModeAppend , .B XChangeProperty inserts the specified data before the beginning of the existing data or onto the end of the existing data, respectively. The type and format must match the existing property value, or a .B BadMatch error results. If the property is undefined, it is treated as defined with the correct type and format with zero-length data. .LP If the specified format is 8, the property data must be a .B char array. If the specified format is 16, the property data must be a .B short array. If the specified format is 32, the property data must be a .B long array. .LP The lifetime of a property is not tied to the storing client. Properties remain until explicitly deleted, until the window is destroyed, or until the server resets. For a discussion of what happens when the connection to the X server is closed, see section 2.6. The maximum size of a property is server dependent and can vary dynamically depending on the amount of memory the server has available. (If there is insufficient space, a .B BadAlloc error results.) .LP .B XChangeProperty can generate .BR BadAlloc , .BR BadAtom , .BR BadMatch , .BR BadValue , and .B BadWindow errors. .LP The .B XRotateWindowProperties function allows you to rotate properties on a window and causes the X server to generate .B PropertyNotify events. If the property names in the properties array are viewed as being numbered starting from zero and if there are num_prop property names in the list, then the value associated with property name I becomes the value associated with property name (I + npositions) mod N for all I from zero to N \- 1. The effect is to rotate the states by npositions places around the virtual ring of property names (right for positive npositions, left for negative npositions). If npositions mod N is nonzero, the X server generates a .B PropertyNotify event for each property in the order that they are listed in the array. If an atom occurs more than once in the list or no property with that name is defined for the window, a .B BadMatch error results. If a .B BadAtom or .B BadMatch error results, no properties are changed. .LP .B XRotateWindowProperties can generate .BR BadAtom , .BR BadMatch , and .B BadWindow errors. .LP The .B XDeleteProperty function deletes the specified property only if the property was defined on the specified window and causes the X server to generate a .B PropertyNotify event on the window unless the property does not exist. .LP .B XDeleteProperty can generate .B BadAtom and .B BadWindow errors. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadAtom A value for an Atom argument does not name a defined Atom. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XFree(__libmansuffix__), XInternAtom(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XTextProperty.man0000644014310600000120000000010314763154126012410 .so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__ libX11-1.8.12/man/XBaseFontNameListOfFontSet.man0000644014310600000120000000007114763154126014651 .so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__ libX11-1.8.12/man/XWindowAttributes.man0000644014310600000120000000007614763154126013246 .so man__libmansuffix__/XGetWindowAttributes.__libmansuffix__ libX11-1.8.12/man/XGetWMColormapWindows.man0000644014310600000120000000007714763154126013764 .so man__libmansuffix__/XSetWMColormapWindows.__libmansuffix__ libX11-1.8.12/man/XTextItem.man0000644014310600000120000000006314763154126011467 .so man__libmansuffix__/XDrawText.__libmansuffix__ libX11-1.8.12/man/XcmsColor.man0000644014310600000120000001137014763154126011510 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .de EX .sp .nf .ft CW .. .de EE .ft R .fi .sp .. .TH XcmsColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsColor, XcmsRGB, XcmsRGBi, XcmsCIEXYZ, XcmsCIEuvY, XcmsCIExyY, XcmsCIELab, XcmsCIELuv, XcmsTekHVC, XcmsPad \- Xcms color structure .SH STRUCTURES The structure for .B XcmsColor contains: .LP .EX typedef unsigned long XcmsColorFormat; /\&* Color Specification Format */ typedef struct { union { XcmsRGB RGB; XcmsRGBi RGBi; XcmsCIEXYZ CIEXYZ; XcmsCIEuvY CIEuvY; XcmsCIExyY CIExyY; XcmsCIELab CIELab; XcmsCIELuv CIELuv; XcmsTekHVC TekHVC; XcmsPad Pad; } spec; unsigned long pixel; XcmsColorFormat format; } XcmsColor; /\&* Xcms Color Structure */ .EE .LP .EX typedef double XcmsFloat; typedef struct { unsigned short red; /\&* 0x0000 to 0xffff */ unsigned short green; /\&* 0x0000 to 0xffff */ unsigned short blue; /\&* 0x0000 to 0xffff */ } XcmsRGB; /\&* RGB Device */ .EE .LP .EX typedef struct { XcmsFloat red; /\&* 0.0 to 1.0 */ XcmsFloat green; /\&* 0.0 to 1.0 */ XcmsFloat blue; /\&* 0.0 to 1.0 */ } XcmsRGBi; /\&* RGB Intensity */ .EE .LP .EX typedef struct { XcmsFloat X; XcmsFloat Y; /\&* 0.0 to 1.0 */ XcmsFloat Z; } XcmsCIEXYZ; /\&* CIE XYZ */ .EE .LP .EX typedef struct { XcmsFloat u_prime; /\&* 0.0 to ~0.6 */ XcmsFloat v_prime; /\&* 0.0 to ~0.6 */ XcmsFloat Y; /\&* 0.0 to 1.0 */ } XcmsCIEuvY; /\&* CIE u'v'Y */ .EE .LP .EX typedef struct { XcmsFloat x; /\&* 0.0 to ~.75 */ XcmsFloat y; /\&* 0.0 to ~.85 */ XcmsFloat Y; /\&* 0.0 to 1.0 */ } XcmsCIExyY; /\&* CIE xyY */ .EE .LP .EX typedef struct { XcmsFloat L_star; /\&* 0.0 to 100.0 */ XcmsFloat a_star; XcmsFloat b_star; } XcmsCIELab; /\&* CIE L*a*b* */ .EE .LP .EX typedef struct { XcmsFloat L_star; /\&* 0.0 to 100.0 */ XcmsFloat u_star; XcmsFloat v_star; } XcmsCIELuv; /\&* CIE L*u*v* */ .EE .LP .EX typedef struct { XcmsFloat H; /\&* 0.0 to 360.0 */ XcmsFloat V; /\&* 0.0 to 100.0 */ XcmsFloat C; /\&* 0.0 to 100.0 */ } XcmsTekHVC; /\&* TekHVC */ .EE .LP .EX typedef struct { XcmsFloat pad0; XcmsFloat pad1; XcmsFloat pad2; XcmsFloat pad3; } XcmsPad; /\&* four doubles */ .EE .SH DESCRIPTION The .B XcmsColor structure contains a union of substructures, each supporting color specification encoding for a particular color space. .SH "SEE ALSO" XcmsAllocColor(__libmansuffix__), XcmsStoreColor(__libmansuffix__), XcmsConvertColors(__libmansuffix__), .LP \fI\*(xL\fP libX11-1.8.12/man/XCopyColormapAndFree.man0000644014310600000120000000007114763154126013557 .so man__libmansuffix__/XCreateColormap.__libmansuffix__ libX11-1.8.12/man/XListDepths.man0000644014310600000120000000006314763154126012007 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XVaCreateNestedList.man0000644014310600000120000000630314763154126013420 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XVaCreateNestedList __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XVaCreateNestedList \- allocate a nested variable argument list .SH SYNTAX typedef void * XVaNestedList; .HP XVaNestedList XVaCreateNestedList\^(\^int \fIdummy\fP\^, ...\^); .SH ARGUMENTS .IP \fIdummy\fP 1i Specifies an unused argument (required by ANSI C). .IP ... 1i Specifies the variable length argument list. .SH DESCRIPTION The .B XVaCreateNestedList function allocates memory and copies its arguments into a single list pointer, which may be used as a value for arguments requiring a list value. Any entries are copied as specified. Data passed by reference is not copied; the caller must ensure data remains valid for the lifetime of the nested list. The list should be freed using .B XFree when it is no longer needed. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/DefaultVisualOfScreen.man0000644014310600000120000000007414763154126013773 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XCreatePixmapFromBitmapData.man0000644014310600000120000000007114763154126015060 .so man__libmansuffix__/XReadBitmapFile.__libmansuffix__ libX11-1.8.12/man/DefaultScreenOfDisplay.man0000644014310600000120000000006314763154126014133 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XOpenDisplay.man0000644014310600000120000001250614763154126012160 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XOpenDisplay __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XOpenDisplay, XCloseDisplay \- connect or disconnect to X server .SH SYNTAX .HP Display *XOpenDisplay\^(\^_Xconst char *\fIdisplay_name\fP\^); .HP int XCloseDisplay\^(Display *\fIdisplay\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIdisplay_name\fP 1i Specifies the hardware display name, which determines the display and communications domain to be used. On a POSIX-conformant system, if the display_name is NULL, it defaults to the value of the DISPLAY environment variable. .SH DESCRIPTION The .B XOpenDisplay function returns a .B Display structure that serves as the connection to the X server and that contains all the information about that X server. .B XOpenDisplay connects your application to the X server through TCP or DECnet communications protocols, or through some local inter-process communication protocol. If the hostname is a host machine name and a single colon (:) separates the hostname and display number, .B XOpenDisplay connects using TCP streams. If the hostname is not specified, Xlib uses whatever it believes is the fastest transport. If the hostname is a host machine name and a double colon (::) separates the hostname and display number, .B XOpenDisplay connects using DECnet. A single X server can support any or all of these transport mechanisms simultaneously. A particular Xlib implementation can support many more of these transport mechanisms. .LP If successful, .B XOpenDisplay returns a pointer to a .B Display structure, which is defined in .BR X11/Xlib.h . If .B XOpenDisplay does not succeed, it returns NULL. After a successful call to .BR XOpenDisplay , all of the screens in the display can be used by the client. The screen number specified in the display_name argument is returned by the .B DefaultScreen macro (or the .B XDefaultScreen function). You can access elements of the .B Display and .B Screen structures only by using the information macros or functions. For information about using macros and functions to obtain information from the .B Display structure, see section 2.2.1. .LP The .B XCloseDisplay function closes the connection to the X server for the display specified in the .B Display structure and destroys all windows, resource IDs .RB ( Window , .BR Font , .BR Pixmap , .BR Colormap , .BR Cursor , and .BR GContext ), or other resources that the client has created on this display, unless the close-down mode of the resource has been changed (see .BR XSetCloseDownMode ). Therefore, these windows, resource IDs, and other resources should never be referenced again or an error will be generated. Before exiting, you should call .B XCloseDisplay explicitly so that any pending errors are reported as .B XCloseDisplay performs a final .B XSync operation. .LP .B XCloseDisplay can generate a .B BadGC error. .SH "SEE ALSO" AllPlanes(__libmansuffix__), XFlush(__libmansuffix__), XSetCloseDownMode(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XMappingEvent.man0000644014310600000120000000006314763154126012321 .so man__libmansuffix__/XMapEvent.__libmansuffix__ libX11-1.8.12/man/XDrawRectangles.man0000644014310600000120000000007014763154126012627 .so man__libmansuffix__/XDrawRectangle.__libmansuffix__ libX11-1.8.12/man/XrmPermStringToQuark.man0000644014310600000120000000007014763154126013662 .so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__ libX11-1.8.12/man/XFreeColors.man0000644014310600000120000000006514763154126011771 .so man__libmansuffix__/XAllocColor.__libmansuffix__ libX11-1.8.12/man/XcmsTekHVCQueryMinV.man0000644014310600000120000000007514763154126013336 .so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__ libX11-1.8.12/man/XGetGCValues.man0000644014310600000120000000006314763154126012035 .so man__libmansuffix__/XCreateGC.__libmansuffix__ libX11-1.8.12/man/ProtocolRevision.man0000644014310600000120000000006314763154126013114 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XQueryPointer.man0000644014310600000120000001104214763154126012371 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XQueryPointer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XQueryPointer \- get pointer coordinates .SH SYNTAX .HP Bool XQueryPointer\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window *\fIroot_return\fP\^, Window *\fIchild_return\fP\^, int *\fIroot_x_return\fP\^, int *\fIroot_y_return\fP\^, int *\fIwin_x_return\fP\^, int *\fIwin_y_return\fP\^, unsigned int *\fImask_return\fP\^); .SH ARGUMENTS .IP \fIchild_return\fP 1i Returns the child window that the pointer is located in, if any. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fImask_return\fP 1i Returns the current state of the modifier keys and pointer buttons. .IP \fIroot_return\fP 1i Returns the root window that the pointer is in. .IP \fIroot_x_return\fP 1i .br .ns .IP \fIroot_y_return\fP 1i Return the pointer coordinates relative to the root window's origin. .IP \fIw\fP 1i Specifies the window. .IP \fIwin_x_return\fP 1i .br .ns .IP \fIwin_y_return\fP 1i Return the pointer coordinates relative to the specified window. .SH DESCRIPTION The .B XQueryPointer function returns the root window the pointer is logically on and the pointer coordinates relative to the root window's origin. If .B XQueryPointer returns .BR False , the pointer is not on the same screen as the specified window, and .B XQueryPointer returns .B None to child_return and zero to win_x_return and win_y_return. If .B XQueryPointer returns .BR True , the pointer coordinates returned to win_x_return and win_y_return are relative to the origin of the specified window. In this case, .B XQueryPointer returns the child that contains the pointer, if any, or else .B None to child_return. .LP .B XQueryPointer returns the current logical state of the keyboard buttons and the modifier keys in mask_return. It sets mask_return to the bitwise inclusive OR of one or more of the button or modifier key bitmasks to match the current state of the mouse buttons and the modifier keys. .LP .B XQueryPointer can generate a .B BadWindow error. .SH DIAGNOSTICS .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XGetWindowAttributes(__libmansuffix__), XQueryTree(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XcmsTekHVCQueryMaxV.man0000644014310600000120000000007514763154126013340 .so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__ libX11-1.8.12/man/XSizeHints.man0000644014310600000120000000007114763154126011643 .so man__libmansuffix__/XAllocSizeHints.__libmansuffix__ libX11-1.8.12/man/XKeycodeToKeysym.man0000644014310600000120000000007114763154126013013 .so man__libmansuffix__/XStringToKeysym.__libmansuffix__ libX11-1.8.12/man/XSetSelectionOwner.man0000644014310600000120000001350714763154126013347 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetSelectionOwner __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetSelectionOwner, XGetSelectionOwner, XConvertSelection \- manipulate window selection .SH SYNTAX .HP int XSetSelectionOwner\^(\^Display *\fIdisplay\fP\^, Atom \fIselection\fP\^, Window \fIowner\fP\^, Time \fItime\fP\^); .HP Window XGetSelectionOwner\^(\^Display *\fIdisplay\fP\^, Atom \fIselection\fP\^); .HP int XConvertSelection\^(\^Display *\fIdisplay\fP\^, Atom \fIselection\fP\^, Atom \fItarget\fP\^, Atom \fIproperty\fP\^, Window \fIrequestor\fP\^, Time \fItime\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIowner\fP 1i Specifies the owner of the specified selection atom. You can pass a window or .BR None . .IP \fIproperty\fP 1i Specifies the property name. You also can pass .BR None . .IP \fIrequestor\fP 1i Specifies the requestor. .IP \fIselection\fP 1i Specifies the selection atom. .IP \fItarget\fP 1i Specifies the target atom. .IP \fItime\fP 1i Specifies the time. You can pass either a timestamp or .BR CurrentTime . .SH DESCRIPTION The .B XSetSelectionOwner function changes the owner and last-change time for the specified selection and has no effect if the specified time is earlier than the current last-change time of the specified selection or is later than the current X server time. Otherwise, the last-change time is set to the specified time, with .B CurrentTime replaced by the current server time. If the owner window is specified as .BR None , then the owner of the selection becomes .B None (that is, no owner). Otherwise, the owner of the selection becomes the client executing the request. .LP If the new owner (whether a client or .BR None ) is not the same as the current owner of the selection and the current owner is not .BR None , the current owner is sent a .B SelectionClear event. If the client that is the owner of a selection is later terminated (that is, its connection is closed) or if the owner window it has specified in the request is later destroyed, the owner of the selection automatically reverts to .BR None , but the last-change time is not affected. The selection atom is uninterpreted by the X server. .B XGetSelectionOwner returns the owner window, which is reported in .B SelectionRequest and .B SelectionClear events. Selections are global to the X server. .LP .B XSetSelectionOwner can generate .B BadAtom and .B BadWindow errors. .LP The .B XGetSelectionOwner function returns the window ID associated with the window that currently owns the specified selection. If no selection was specified, the function returns the constant .BR None . If .B None is returned, there is no owner for the selection. .LP .B XGetSelectionOwner can generate a .B BadAtom error. .LP .B XConvertSelection requests that the specified selection be converted to the specified target type: .IP \(bu 5 If the specified selection has an owner, the X server sends a .B SelectionRequest event to that owner. .IP \(bu 5 If no owner for the specified selection exists, the X server generates a .B SelectionNotify event to the requestor with property .BR None . .LP The arguments are passed on unchanged in either of the events. There are two predefined selection atoms: PRIMARY and SECONDARY. .LP .B XConvertSelection can generate .B BadAtom and .B BadWindow errors. .SH DIAGNOSTICS .TP 1i .B BadAtom A value for an Atom argument does not name a defined Atom. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/WhitePixel.man0000644014310600000120000000006314763154126011656 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XUngrabKey.man0000644014310600000120000000006214763154126011612 .so man__libmansuffix__/XGrabKey.__libmansuffix__ libX11-1.8.12/man/XResetScreenSaver.man0000644014310600000120000000007114763154126013146 .so man__libmansuffix__/XSetScreenSaver.__libmansuffix__ libX11-1.8.12/man/XKeysymToString.man0000644014310600000120000000007114763154126012676 .so man__libmansuffix__/XStringToKeysym.__libmansuffix__ libX11-1.8.12/man/XReadBitmapFileData.man0000644014310600000120000000007114763154126013325 .so man__libmansuffix__/XReadBitmapFile.__libmansuffix__ libX11-1.8.12/man/Xutf8LookupString.man0000644014310600000120000000007114763154126013172 .so man__libmansuffix__/XmbLookupString.__libmansuffix__ libX11-1.8.12/man/DefaultDepth.man0000644014310600000120000000006314763154126012145 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XFocusChangeEvent.man0000644014310600000120000001400114763154126013110 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XFocusChangeEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFocusChangeEvent \- FocusIn and FocusOut event structure .SH STRUCTURES The structure for .B FocusIn and .B FocusOut events contains: .LP .EX typedef struct { int type; /\&* FocusIn or FocusOut */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; /\&* window of event */ int mode; /\&* NotifyNormal, NotifyGrab, NotifyUngrab */ int detail; /\&* * NotifyAncestor, NotifyVirtual, NotifyInferior, * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer, * NotifyPointerRoot, NotifyDetailNone */ } XFocusChangeEvent; typedef XFocusChangeEvent XFocusInEvent; typedef XFocusChangeEvent XFocusOutEvent; .EE .LP When you receive these events, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The window member is set to the window on which the .B FocusIn or .B FocusOut event was generated. This is the window used by the X server to report the event. The mode member is set to indicate whether the focus events are normal focus events, focus events while grabbed, focus events when a grab activates, or focus events when a grab deactivates. The X server can set the mode member to .BR NotifyNormal , .BR NotifyWhileGrabbed , .BR NotifyGrab , or .BR NotifyUngrab . .LP All .B FocusOut events caused by a window unmap are generated after any .B UnmapNotify event; however, the X protocol does not constrain the ordering of .B FocusOut events with respect to generated .BR EnterNotify , .BR LeaveNotify , .BR VisibilityNotify , and .B Expose events. .LP Depending on the event mode, the detail member is set to indicate the notify detail and can be .BR NotifyAncestor , .BR NotifyVirtual , .BR NotifyInferior , .BR NotifyNonlinear , .BR NotifyNonlinearVirtual , .BR NotifyPointer , .BR NotifyPointerRoot , or .BR NotifyDetailNone . .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XMapEvent.man0000644014310600000120000001613014763154126011445 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XMapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XMapEvent, XMappingEvent \- MapNotify and MappingNotify event structures .SH STRUCTURES The structure for .B MapNotify events contains: .LP .EX typedef struct { int type; /\&* MapNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window event; Window window; Bool override_redirect; /\&* boolean, is override set... */ } XMapEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The event member is set either to the window that was mapped or to its parent, depending on whether .B StructureNotify or .B SubstructureNotify was selected. The window member is set to the window that was mapped. The override_redirect member is set to the override-redirect attribute of the window. Window manager clients normally should ignore this window if the override-redirect attribute is .BR True , because these events usually are generated from pop-ups, which override structure control. .LP The structure for .B MappingNotify events is: .LP .EX typedef struct { int type; /\&* MappingNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; /\&* unused */ int request; /\&* one of MappingModifier, MappingKeyboard, MappingPointer */ int first_keycode; /\&* first keycode */ int count; /\&* defines range of change with first_keycode*/ } XMappingEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The request member is set to indicate the kind of mapping change that occurred and can be .BR MappingModifier , .BR MappingKeyboard , .BR MappingPointer . If it is .BR MappingModifier , the modifier mapping was changed. If it is .BR MappingKeyboard , the keyboard mapping was changed. If it is .BR MappingPointer , the pointer button mapping was changed. The first_keycode and count members are set only if the request member was set to .BR MappingKeyboard . The number in first_keycode represents the first number in the range of the altered mapping, and count represents the number of keycodes altered. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XwcTextEscapement.man0000644014310600000120000000007314763154126013210 .so man__libmansuffix__/XmbTextEscapement.__libmansuffix__ libX11-1.8.12/man/XUnsetICFocus.man0000644014310600000120000000006514763154126012240 .so man__libmansuffix__/XSetICFocus.__libmansuffix__ libX11-1.8.12/man/XSelectionRequestEvent.man0000644014310600000120000001240414763154126014226 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSelectionRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSelectionRequestEvent \- SelectionRequest event structure .SH STRUCTURES The structure for .B SelectionRequest events contains: .LP .EX typedef struct { int type; /\&* SelectionRequest */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window owner; Window requestor; Atom selection; Atom target; Atom property; Time time; } XSelectionRequestEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The owner member is set to the window that was specified by the current owner in its .B XSetSelectionOwner call. The requestor member is set to the window requesting the selection. The selection member is set to the atom that names the selection. For example, PRIMARY is used to indicate the primary selection. The target member is set to the atom that indicates the type the selection is desired in. The property member can be a property name or .BR None . The time member is set to the timestamp or .B CurrentTime value from the .B ConvertSelection request. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSetSelectionOwner(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/ScreenNumberOfCCC.man0000644014310600000120000000006614763154126012765 .so man__libmansuffix__/DisplayOfCCC.__libmansuffix__ libX11-1.8.12/man/BitmapPad.man0000644014310600000120000000007014763154126011433 .so man__libmansuffix__/ImageByteOrder.__libmansuffix__ libX11-1.8.12/man/XcmsLookupColor.man0000644014310600000120000000007014763154126012675 .so man__libmansuffix__/XcmsQueryColor.__libmansuffix__ libX11-1.8.12/man/XListFontsWithInfo.man0000644014310600000120000000006414763154126013322 .so man__libmansuffix__/XListFonts.__libmansuffix__ libX11-1.8.12/man/XDestroyIC.man0000644014310600000120000000006314763154126011571 .so man__libmansuffix__/XCreateIC.__libmansuffix__ libX11-1.8.12/man/XSetAccessControl.man0000644014310600000120000000006214763154126013141 .so man__libmansuffix__/XAddHost.__libmansuffix__ libX11-1.8.12/man/DisplayOfCCC.man0000644014310600000120000000716514763154126012011 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH DisplayOfCCC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME DisplayOfCCC, VisualOfCCC, ScreenNumberOfCCC, ScreenWhitePointOfCCC, ClientWhitePointOfCCC \- Color Conversion Context macros .SH SYNTAX .HP Display *DisplayOfCCC\^(\^XcmsCCC \fIccc\fP\^); .HP Visual *VisualOfCCC\^(\^XcmsCCC \fIccc\fP\^); .HP int ScreenNumberOfCCC\^(\^XcmsCCC \fIccc\fP\^); .HP XcmsColor *ScreenWhitePointOfCCC\^(\^XcmsCCC \fIccc\fP\^); .HP XcmsColor *ClientWhitePointOfCCC\^(\^XcmsCCC \fIccc\fP\^); .SH ARGUMENTS .IP \fIccc\fP 1i Specifies the CCC. .SH DESCRIPTION The .B DisplayOfCCC macro returns the display associated with the specified CCC. .LP The .B VisualOfCCC macro returns the visual associated with the specified CCC. .LP The .B ScreenNumberOfCCC macro returns the number of the screen associated with the specified CCC. .LP The .B ScreenWhitePointOfCCC macro returns the screen white point of the screen associated with the specified CCC. .LP The .B ClientWhitePointOfCCC macro returns the client white point of the screen associated with the specified CCC. .SH "SEE ALSO" XcmsCCCOfColormap(__libmansuffix__), XcmsConvertColors(__libmansuffix__), XcmsCreateCCC(__libmansuffix__), XcmsDefaultCCC(__libmansuffix__), XcmsSetWhitePoint(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XcmsCIEuvY.man0000644014310600000120000000006314763154126011533 .so man__libmansuffix__/XcmsColor.__libmansuffix__ libX11-1.8.12/man/XLockDisplay.man0000644014310600000120000000006614763154126012145 .so man__libmansuffix__/XInitThreads.__libmansuffix__ libX11-1.8.12/man/XIfEvent.man0000644014310600000120000001370014763154126011266 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XIfEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XIfEvent, XCheckIfEvent, XPeekIfEvent \- check the event queue with a predicate procedure .SH SYNTAX .HP int XIfEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^, Bool (\^*\fIpredicate\fP\^)\^(\^)\^, XPointer \fIarg\fP\^); .HP Bool XCheckIfEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^, Bool (\^*\fIpredicate\fP\^)\^(\^)\^, XPointer \fIarg\fP\^); .HP int XPeekIfEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^, Bool (\^*\fIpredicate\fP\^)\^(\^)\^, XPointer \fIarg\fP\^); .SH ARGUMENTS .IP \fIarg\fP 1i Specifies the user-supplied argument that will be passed to the predicate procedure. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIevent_return\fP 1i Returns either a copy of or the matched event's associated structure. .IP \fIpredicate\fP 1i Specifies the procedure that is to be called to determine if the next event in the queue matches what you want. .SH DESCRIPTION The .B XIfEvent function completes only when the specified predicate procedure returns .B True for an event, which indicates an event in the queue matches. .B XIfEvent flushes the output buffer if it blocks waiting for additional events. .B XIfEvent removes the matching event from the queue and copies the structure into the client-supplied .B XEvent structure. .LP When the predicate procedure finds a match, .B XCheckIfEvent copies the matched event into the client-supplied .B XEvent structure and returns .BR True . (This event is removed from the queue.) If the predicate procedure finds no match, .B XCheckIfEvent returns .BR False , and the output buffer will have been flushed. All earlier events stored in the queue are not discarded. .LP The .B XPeekIfEvent function returns only when the specified predicate procedure returns .B True for an event. After the predicate procedure finds a match, .B XPeekIfEvent copies the matched event into the client-supplied .B XEvent structure without removing the event from the queue. .B XPeekIfEvent flushes the output buffer if it blocks waiting for additional events. .LP Each of these functions requires you to pass a predicate procedure that determines if an event matches what you want. Your predicate procedure must decide if the event is useful without calling any Xlib functions. If the predicate directly or indirectly causes the state of the event queue to change, the result is not defined. If Xlib has been initialized for threads, the predicate is called with the display locked and the result of a call by the predicate to any Xlib function that locks the display is not defined unless the caller has first called .BR XLockDisplay . .LP The predicate procedure and its associated arguments are: .HP Bool (\^*\fIpredicate\fP\^)\^(\^Display *\fIdisplay\fP, XEvent *\fIevent\fP, XPointer \fIarg\fP\^) .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIevent\fP 1i Specifies the .B XEvent structure. .IP \fIarg\fP 1i Specifies the argument passed in from the .BR XIfEvent , .BR XCheckIfEvent , or .B XPeekIfEvent function. .LP The predicate procedure is called once for each event in the queue until it finds a match. After finding a match, the predicate procedure must return .BR True . If it did not find a match, it must return .BR False . .LP Note that the predicate procedure is called with the display locked, and thus is not allowed to call any function that would take the display lock again. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XNextEvent(__libmansuffix__), XPutBackEvent(__libmansuffix__) XSendEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XInternAtoms.man0000644014310600000120000000006514763154126012171 .so man__libmansuffix__/XInternAtom.__libmansuffix__ libX11-1.8.12/man/XGetFontPath.man0000644014310600000120000000006614763154126012112 .so man__libmansuffix__/XSetFontPath.__libmansuffix__ libX11-1.8.12/man/XTextPropertyToStringList.man0000644014310600000120000000010314763154126014736 .so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__ libX11-1.8.12/man/ScreenCount.man0000644014310600000120000000006314763154126012024 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XPeekIfEvent.man0000644014310600000120000000006214763154126012070 .so man__libmansuffix__/XIfEvent.__libmansuffix__ libX11-1.8.12/man/XGetWMSizeHints.man0000644014310600000120000000007114763154126012547 .so man__libmansuffix__/XAllocSizeHints.__libmansuffix__ libX11-1.8.12/man/XGetIMValues.man0000644014310600000120000000006114763154126012047 .so man__libmansuffix__/XOpenIM.__libmansuffix__ libX11-1.8.12/man/XNoOp.man0000644014310600000120000000536614763154126010612 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XNoOp __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XNoOp \- No Operation .SH SYNTAX int XNoOp\^(\^Display *\fIdisplay\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .SH DESCRIPTION The .B XNoOp function sends a .B NoOperation protocol request to the X server, thereby exercising the connection. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XmbDrawString.man0000644014310600000120000001052614763154126012334 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Copyright \(co 2000 The XFree86 Project, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XmbDrawString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbDrawString, XwcDrawString, Xutf8DrawString \- draw text using a single font set .SH SYNTAX .HP void XmbDrawString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, _Xconst char *\fIstring\fP\^, int \fInum_bytes\fP\^); .HP void XwcDrawString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, _Xconst wchar_t *\fIstring\fP\^, int \fInum_wchars\fP\^); .HP void Xutf8DrawString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, _Xconst char *\fIstring\fP\^, int \fInum_bytes\fP\^); .SH ARGUMENTS .IP \fId\fP 1i Specifies the drawable. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIfont_set\fP 1i Specifies the font set. .IP \fIgc\fP 1i Specifies the GC. .IP \fInum_bytes\fP 1i Specifies the number of bytes in the string argument. .IP \fInum_wchars\fP 1i Specifies the number of characters in the string argument. .IP \fIstring\fP 1i Specifies the character string. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates. .SH DESCRIPTION The .BR XmbDrawString , .B XwcDrawString and .B Xutf8DrawString functions draw the specified text with the foreground pixel. When the .B XFontSet has missing charsets, each unavailable character is drawn with the default string returned by .BR XCreateFontSet . The behavior for an invalid codepoint is undefined. .LP The function .B Xutf8DrawString is an extension introduced by The XFree86 Project, Inc., in their 4.0.2 release. Its presence is indicated by the macro .BR X_HAVE_UTF8_STRING . .SH "SEE ALSO" XDrawImageString(__libmansuffix__), XDrawString(__libmansuffix__), XDrawText(__libmansuffix__), XmbDrawImageString(__libmansuffix__), XmbDrawText(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XGetWMName.man0000644014310600000120000000006414763154126011511 .so man__libmansuffix__/XSetWMName.__libmansuffix__ libX11-1.8.12/man/XUnmapEvent.man0000644014310600000120000001202114763154126012003 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XUnmapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XUnmapEvent \- UnmapNotify event structure .SH STRUCTURES The structure for .B UnmapNotify events contains: .LP .EX typedef struct { int type; /\&* UnmapNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window event; Window window; Bool from_configure; } XUnmapEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The event member is set either to the unmapped window or to its parent, depending on whether .B StructureNotify or .B SubstructureNotify was selected. This is the window used by the X server to report the event. The window member is set to the window that was unmapped. The from_configure member is set to .B True if the event was generated as a result of a resizing of the window's parent when the window itself had a win_gravity of .BR UnmapGravity . .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/Xutf8TextPropertyToTextList.man0000644014310600000120000000010314763154126015223 .so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ libX11-1.8.12/man/XSetWindowBackground.man0000644014310600000120000000010114763154126013640 .so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__ libX11-1.8.12/man/XMaskEvent.man0000644014310600000120000000006414763154126011622 .so man__libmansuffix__/XNextEvent.__libmansuffix__ libX11-1.8.12/man/XSetWindowAttributes.man0000644014310600000120000000006714763154126013722 .so man__libmansuffix__/XCreateWindow.__libmansuffix__ libX11-1.8.12/man/XQueryBestTile.man0000644014310600000120000000007014763154126012463 .so man__libmansuffix__/XQueryBestSize.__libmansuffix__ libX11-1.8.12/man/XRaiseWindow.man0000644014310600000120000002000414763154126012154 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XRaiseWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XRaiseWindow, XLowerWindow, XCirculateSubwindows, XCirculateSubwindowsUp, XCirculateSubwindowsDown, XRestackWindows \- change window stacking order .SH SYNTAX .HP int XRaiseWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .HP int XLowerWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .HP int XCirculateSubwindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIdirection\fP\^); .HP int XCirculateSubwindowsUp\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .HP int XCirculateSubwindowsDown\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .HP int XRestackWindows\^(\^Display *\fIdisplay\fP\^, Window \fIwindows\fP\^[], int \fInwindows\fP\^); .SH ARGUMENTS .IP \fIdirection\fP 1i Specifies the direction (up or down) that you want to circulate the window. You can pass .B RaiseLowest or .BR LowerHighest . .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fInwindows\fP 1i Specifies the number of windows to be restacked. .IP \fIw\fP 1i Specifies the window. .IP \fIwindows\fP 1i Specifies an array containing the windows to be restacked. .SH DESCRIPTION The .B XRaiseWindow function raises the specified window to the top of the stack so that no sibling window obscures it. If the windows are regarded as overlapping sheets of paper stacked on a desk, then raising a window is analogous to moving the sheet to the top of the stack but leaving its x and y location on the desk constant. Raising a mapped window may generate .B Expose events for the window and any mapped subwindows that were formerly obscured. .LP If the override-redirect attribute of the window is .B False and some other client has selected .B SubstructureRedirectMask on the parent, the X server generates a .B ConfigureRequest event, and no processing is performed. Otherwise, the window is raised. .LP .B XRaiseWindow can generate a .B BadWindow error. .LP The .B XLowerWindow function lowers the specified window to the bottom of the stack so that it does not obscure any sibling windows. If the windows are regarded as overlapping sheets of paper stacked on a desk, then lowering a window is analogous to moving the sheet to the bottom of the stack but leaving its x and y location on the desk constant. Lowering a mapped window will generate .B Expose events on any windows it formerly obscured. .LP If the override-redirect attribute of the window is .B False and some other client has selected .B SubstructureRedirectMask on the parent, the X server generates a .B ConfigureRequest event, and no processing is performed. Otherwise, the window is lowered to the bottom of the stack. .LP .B XLowerWindow can generate a .B BadWindow error. .LP The .B XCirculateSubwindows function circulates children of the specified window in the specified direction. If you specify .BR RaiseLowest , .B XCirculateSubwindows raises the lowest mapped child (if any) that is occluded by another child to the top of the stack. If you specify .BR LowerHighest , .B XCirculateSubwindows lowers the highest mapped child (if any) that occludes another child to the bottom of the stack. Exposure processing is then performed on formerly obscured windows. If some other client has selected .B SubstructureRedirectMask on the window, the X server generates a .B CirculateRequest event, and no further processing is performed. If a child is actually restacked, the X server generates a .B CirculateNotify event. .LP .B XCirculateSubwindows can generate .B BadValue and .B BadWindow errors. .LP The .B XCirculateSubwindowsUp function raises the lowest mapped child of the specified window that is partially or completely occluded by another child. Completely unobscured children are not affected. This is a convenience function equivalent to .B XCirculateSubwindows with .B RaiseLowest specified. .LP .B XCirculateSubwindowsUp can generate a .B BadWindow error. .LP The .B XCirculateSubwindowsDown function lowers the highest mapped child of the specified window that partially or completely occludes another child. Completely unobscured children are not affected. This is a convenience function equivalent to .B XCirculateSubwindows with .B LowerHighest specified. .LP .B XCirculateSubwindowsDown can generate a .B BadWindow error. .LP The .B XRestackWindows function restacks the windows in the order specified, from top to bottom. The stacking order of the first window in the windows array is unaffected, but the other windows in the array are stacked underneath the first window, in the order of the array. The stacking order of the other windows is not affected. For each window in the window array that is not a sibling of the first window, a .B BadMatch error results. .LP If the override-redirect attribute of a window is .B False and some other client has selected .B SubstructureRedirectMask on the parent, the X server generates .B ConfigureRequest events for each window whose override-redirect flag is not set, and no further processing is performed. Otherwise, the windows will be restacked in top-to-bottom order. .LP .B XRestackWindows can generate .B BadWindow error. .SH DIAGNOSTICS .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XChangeWindowAttributes(__libmansuffix__), XConfigureWindow(__libmansuffix__), XCreateWindow(__libmansuffix__), XDestroyWindow(__libmansuffix__), XMapWindow(__libmansuffix__), XUnmapWindow(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XBell.man0000644014310600000120000000010014763154126010572 .so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__ libX11-1.8.12/man/XSetClassHint.man0000644014310600000120000000007114763154126012267 .so man__libmansuffix__/XAllocClassHint.__libmansuffix__ libX11-1.8.12/man/XcmsTekHVCQueryMaxC.man0000644014310600000120000001433014763154126013314 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XcmsTekHVCQueryMaxC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsTekHVCQueryMaxC, XcmsTekHVCQueryMaxV, XcmsTekHVCQueryMaxVC, XcmsTekHVCQueryMaxVSamples, XcmsTekHVCQueryMinV \- obtain the TekHVC coordinates .SH SYNTAX .HP Status XcmsTekHVCQueryMaxC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^, XcmsFloat \fIvalue\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsTekHVCQueryMaxV\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsTekHVCQueryMaxVC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsTekHVCQueryMaxVSamples\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^, XcmsColor \fIcolors_return[]\fP\^, unsigned int \fInsamples\fP\^); .HP Status XcmsTekHVCQueryMinV\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^); .SH ARGUMENTS .IP \fIccc\fP 1i Specifies the CCC. Note that the CCC's Client White Point and White Point Adjustment procedures are ignored. .IP \fIchroma\fP 1i Specifies the chroma at which to find maximum Value (MaxV). .IP \fIcolors_return\fP 1i Returns nsamples of color specifications in XcmsTekHVC such that the Chroma is the maximum attainable for the Value and Hue. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. .ds Lc .ds lC .IP \fIcolor_return\fP 1i Returns the maximum Chroma along with the actual Hue and Value (MaxC), maximum Value along with the Hue and Chroma (MaxV), color specification in XcmsTekHVC for the maximum Chroma, the Value at which that maximum Chroma is reached and actual Hue (MaxVC) or minimum Value and the actual Hue and Chroma (MinL) at which the maximum Chroma (MaxC and MaxVC), maximum Value (MaxV), or minimum Value (MinL) was found. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. .IP \fIhue\fP 1i Specifies the Hue in which to find the maximum Chroma (MaxC and MaxVC), maximum Value (MaxV), the maximum Chroma/Value samples (MaxVSamples), or the minimum Value (MinL). .IP \fInsamples\fP 1i Specifies the number of samples. .IP \fIvalue\fP 1i Specifies the Value in which to find the maximum Chroma (MaxC) or minimum Value (MinL). .SH DESCRIPTION The .B XcmsTekHVCQueryMaxC function, given a Hue and Value, determines the maximum Chroma in TekHVC color space displayable by the screen. It returns the maximum Chroma along with the actual Hue and Value at which the maximum Chroma was found. .LP The .B XcmsTekHVCQueryMaxV function, given a Hue and Chroma, determines the maximum Value in TekHVC color space displayable by the screen. It returns the maximum Value and the actual Hue and Chroma at which the maximum Value was found. .LP The .B XcmsTekHVCQueryMaxVC function, given a Hue, determines the maximum Chroma in TekHVC color space displayable by the screen and the Value at which that maximum Chroma is reached. It returns the maximum Chroma, the Value at which that maximum Chroma is reached, and the actual Hue for which the maximum Chroma was found. .LP The .B XcmsTekHVCQueryMaxVSamples returns nsamples of maximum Value, the Chroma at which that maximum Value is reached, and the actual Hue for which the maximum Chroma was found. These sample points may then be used to plot the maximum Value/Chroma boundary of the screen's color gamut for the specified Hue in TekHVC color space. .LP The .B XcmsTekHVCQueryMinV function, given a Hue and Chroma, determines the minimum Value in TekHVC color space displayable by the screen. It returns the minimum Value and the actual Hue and Chroma at which the minimum Value was found. .SH "SEE ALSO" XcmsCIELabQueryMaxC(__libmansuffix__), XcmsCIELuvQueryMaxC(__libmansuffix__), XcmsQueryBlack(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XwcTextListToTextProperty.man0000644014310600000120000000010314763154126014746 .so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ libX11-1.8.12/man/XAllocColorCells.man0000644014310600000120000000006514763154126012742 .so man__libmansuffix__/XAllocColor.__libmansuffix__ libX11-1.8.12/man/XrmStringToQuarkList.man0000644014310600000120000000007014763154126013672 .so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__ libX11-1.8.12/man/XrmPutStringResource.man0000644014310600000120000000007014763154126013730 .so man__libmansuffix__/XrmPutResource.__libmansuffix__ libX11-1.8.12/man/XDisplayOfOM.man0000644014310600000120000000006114763154126012050 .so man__libmansuffix__/XOpenOM.__libmansuffix__ libX11-1.8.12/man/XSetWindowBorderPixmap.man0000644014310600000120000000010114763154126014155 .so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__ libX11-1.8.12/man/XWriteBitmapFile.man0000644014310600000120000000007114763154126012752 .so man__libmansuffix__/XReadBitmapFile.__libmansuffix__ libX11-1.8.12/man/XCheckWindowEvent.man0000644014310600000120000000006414763154126013134 .so man__libmansuffix__/XNextEvent.__libmansuffix__ libX11-1.8.12/man/DefaultDepthOfScreen.man0000644014310600000120000000007414763154126013574 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XFillRectangle.man0000644014310600000120000002216614763154126012447 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XFillRectangle __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFillRectangle, XFillRectangles, XFillPolygon, XFillArc, XFillArcs \- fill rectangles, polygons, or arcs .SH SYNTAX .HP int XFillRectangle\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^); .HP int XFillRectangles\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, XRectangle *\fIrectangles\fP\^, int \fInrectangles\fP\^); .HP int XFillPolygon\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, XPoint *\fIpoints\fP\^, int \fInpoints\fP\^, int \fIshape\fP\^, int \fImode\fP\^); .HP int XFillArc\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, int \fIangle1\fP\^, int \fIangle2\fP\^); .HP int XFillArcs\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, XArc *\fIarcs\fP\^, int \fInarcs\fP\^); .SH ARGUMENTS .IP \fIangle1\fP 1i Specifies the start of the arc relative to the three-o'clock position from the center, in units of degrees * 64. .IP \fIangle2\fP 1i Specifies the path and extent of the arc relative to the start of the arc, in units of degrees * 64. .IP \fIarcs\fP 1i Specifies an array of arcs. .IP \fId\fP 1i Specifies the drawable. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fImode\fP 1i Specifies the coordinate mode. You can pass .B CoordModeOrigin or .BR CoordModePrevious . .IP \fInarcs\fP 1i Specifies the number of arcs in the array. .IP \fInpoints\fP 1i Specifies the number of points in the array. .IP \fInrectangles\fP 1i Specifies the number of rectangles in the array. .IP \fIpoints\fP 1i Specifies an array of points. .IP \fIrectangles\fP 1i Specifies an array of rectangles. .IP \fIshape\fP 1i Specifies a shape that helps the server to improve performance. You can pass .BR Complex , .BR Convex , or .BR Nonconvex . .ds Wh .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height, which are the dimensions of the rectangle to be filled or the major and minor axes of the arc. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates, which are relative to the origin of the drawable \ and specify the upper-left corner of the rectangle. .SH DESCRIPTION The .B XFillRectangle and .B XFillRectangles functions fill the specified rectangle or rectangles as if a four-point .B FillPolygon protocol request were specified for each rectangle: .LP .EX [x,y] [x+width,y] [x+width,y+height] [x,y+height] .EE .LP Each function uses the x and y coordinates, width and height dimensions, and GC you specify. .LP .B XFillRectangles fills the rectangles in the order listed in the array. For any given rectangle, .B XFillRectangle and .B XFillRectangles do not draw a pixel more than once. If rectangles intersect, the intersecting pixels are drawn multiple times. .LP Both functions use these GC components: function, plane-mask, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, and tile-stipple-y-origin. .LP .B XFillRectangle and .B XFillRectangles can generate .BR BadDrawable , .BR BadGC , and .B BadMatch errors. .LP .B XFillPolygon fills the region closed by the specified path. The path is closed automatically if the last point in the list does not coincide with the first point. .B XFillPolygon does not draw a pixel of the region more than once. .B CoordModeOrigin treats all coordinates as relative to the origin, and .B CoordModePrevious treats all coordinates after the first as relative to the previous point. .LP Depending on the specified shape, the following occurs: .IP \(bu 5 If shape is .BR Complex , the path may self-intersect. Note that contiguous coincident points in the path are not treated as self-intersection. .IP \(bu 5 If shape is .BR Convex , for every pair of points inside the polygon, the line segment connecting them does not intersect the path. If known by the client, specifying .B Convex can improve performance. If you specify .B Convex for a path that is not convex, the graphics results are undefined. .IP \(bu 5 If shape is .BR Nonconvex , the path does not self-intersect, but the shape is not wholly convex. If known by the client, specifying .B Nonconvex instead of .B Complex may improve performance. If you specify .B Nonconvex for a self-intersecting path, the graphics results are undefined. .LP The fill-rule of the GC controls the filling behavior of self-intersecting polygons. .LP This function uses these GC components: function, plane-mask, fill-style, fill-rule, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. It also uses these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, and tile-stipple-y-origin. .LP .B XFillPolygon can generate .BR BadDrawable , .BR BadGC , .BR BadMatch , and .B BadValue errors. .LP For each arc, .B XFillArc or .B XFillArcs fills the region closed by the infinitely thin path described by the specified arc and, depending on the arc-mode specified in the GC, one or two line segments. For .BR ArcChord , the single line segment joining the endpoints of the arc is used. For .BR ArcPieSlice , the two line segments joining the endpoints of the arc with the center point are used. .B XFillArcs fills the arcs in the order listed in the array. For any given arc, .B XFillArc and .B XFillArcs do not draw a pixel more than once. If regions intersect, the intersecting pixels are drawn multiple times. .LP Both functions use these GC components: function, plane-mask, fill-style, arc-mode, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, and tile-stipple-y-origin. .LP .B XFillArc and .B XFillArcs can generate .BR BadDrawable , .BR BadGC , and .B BadMatch errors. .SH DIAGNOSTICS .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XDrawArc(__libmansuffix__), XDrawPoint(__libmansuffix__), XDrawRectangle(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XProcessInternalConnection.man0000644014310600000120000000007514763154126015062 .so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__ libX11-1.8.12/man/XCopyArea.man0000644014310600000120000001622014763154126011431 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCopyArea __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCopyArea, XCopyPlane \- copy areas .SH SYNTAX .HP int XCopyArea\^(\^Display *\fIdisplay\fP\^, Drawable \fIsrc\fP\^, Drawable \fIdest\fP\^, GC \fIgc\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, unsigned int \fIwidth\fP\^, unsigned \fIheight\fP\^, int \fIdest_x\fP\^, int \fIdest_y\fP\^); .HP int XCopyPlane\^(\^Display *\fIdisplay\fP\^, Drawable \fIsrc\fP\^, Drawable \fIdest\fP\^, GC \fIgc\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, unsigned \fIwidth\fP\^, unsigned \fIheight\fP\^, int \fIdest_x\fP\^, int \fIdest_y\fP\^, unsigned long \fIplane\fP\^); .SH ARGUMENTS .IP \fIdest_x\fP 1i .br .ns .IP \fIdest_y\fP 1i Specify the x and y coordinates, which are relative to the origin of the destination rectangle and specify its upper-left corner. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fIplane\fP 1i Specifies the bit plane. You must set exactly one bit to 1. .IP \fIsrc\fP 1i .br .ns .IP \fIdest\fP 1i Specify the source and destination rectangles to be combined. .IP \fIsrc_x\fP 1i .br .ns .IP \fIsrc_y\fP 1i Specify the x and y coordinates, which are relative to the origin of the source rectangle and specify its upper-left corner. .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height, which are the dimensions of both the source and destination rectangles. .SH DESCRIPTION The .B XCopyArea function combines the specified rectangle of src with the specified rectangle of dest. The drawables must have the same root and depth, or a .B BadMatch error results. .LP If regions of the source rectangle are obscured and have not been retained in backing store or if regions outside the boundaries of the source drawable are specified, those regions are not copied. Instead, the following occurs on all corresponding destination regions that are either visible or are retained in backing store. If the destination is a window with a background other than .BR None , corresponding regions of the destination are tiled with that background (with plane-mask of all ones and .B GXcopy function). Regardless of tiling or whether the destination is a window or a pixmap, if graphics-exposures is .BR True , then .B GraphicsExpose events for all corresponding destination regions are generated. If graphics-exposures is .B True but no .B GraphicsExpose events are generated, a .B NoExpose event is generated. Note that by default graphics-exposures is .B True in new GCs. .LP This function uses these GC components: function, plane-mask, subwindow-mode, graphics-exposures, clip-x-origin, clip-y-origin, and clip-mask. .LP .B XCopyArea can generate .BR BadDrawable , .BR BadGC , and .B BadMatch errors. .LP The .B XCopyPlane function uses a single bit plane of the specified source rectangle combined with the specified GC to modify the specified rectangle of dest. The drawables must have the same root but need not have the same depth. If the drawables do not have the same root, a .B BadMatch error results. If plane does not have exactly one bit set to 1 and the value of plane is not less than %2 sup n%, where \fIn\fP is the depth of src, a .B BadValue error results. .LP Effectively, .B XCopyPlane forms a pixmap of the same depth as the rectangle of dest and with a size specified by the source region. It uses the foreground/background pixels in the GC (foreground everywhere the bit plane in src contains a bit set to 1, background everywhere the bit plane in src contains a bit set to 0) and the equivalent of a .B CopyArea protocol request is performed with all the same exposure semantics. This can also be thought of as using the specified region of the source bit plane as a stipple with a fill-style of .B FillOpaqueStippled for filling a rectangular area of the destination. .LP This function uses these GC components: function, plane-mask, foreground, background, subwindow-mode, graphics-exposures, clip-x-origin, clip-y-origin, and clip-mask. .LP .B XCopyPlane can generate .BR BadDrawable , .BR BadGC , .BR BadMatch , and .B BadValue errors. .SH DIAGNOSTICS .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XClearArea(__libmansuffix__) .br \fIXlib \- C Language X Interface\fP libX11-1.8.12/man/XUnlockDisplay.man0000644014310600000120000000006614763154126012510 .so man__libmansuffix__/XInitThreads.__libmansuffix__ libX11-1.8.12/man/XSetBackground.man0000644014310600000120000000006314763154126012457 .so man__libmansuffix__/XSetState.__libmansuffix__ libX11-1.8.12/man/XSetWindowBorder.man0000644014310600000120000000010114763154126012776 .so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__ libX11-1.8.12/man/XGetXCBConnection.man0000644014310600000120000000357014763154126013026 .\" Copyright \(co 2006 Josh Triplett .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM 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. .\" .TH XGetXCBConnection __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGetXCBConnection \- get the XCB connection for an Xlib Display .SH SYNTAX .HP #include .HP xcb_connection_t *XGetXCBConnection(Display *\fIdpy\fP); .SH ARGUMENTS .IP \fIdpy\fP 1i Specifies the connection to the X server. .SH DESCRIPTION The \fIXGetXCBConnection\fP function returns the XCB connection associated with an Xlib Display. Clients can use this XCB connection with functions from the XCB library, just as they would with an XCB connection created with XCB. Callers of this function must link to libX11-xcb and a version of Xlib built with XCB support. .SH "SEE ALSO" XOpenDisplay(__libmansuffix__), XSetEventQueueOwner(__libmansuffix__), .br \fIXlib \- C Language X Interface\fP libX11-1.8.12/man/XDrawImageString.man0000644014310600000120000001266114763154126012762 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XDrawImageString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawImageString, XDrawImageString16 \- draw image text .SH SYNTAX .HP int XDrawImageString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, _Xconst char *\fIstring\fP\^, int \fIlength\fP\^); .HP int XDrawImageString16\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, _Xconst XChar2b *\fIstring\fP\^, int \fIlength\fP\^); .SH ARGUMENTS .IP \fId\fP 1i Specifies the drawable. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fIlength\fP 1i Specifies the number of characters in the string argument. .IP \fIstring\fP 1i Specifies the character string. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates, which are relative to the origin of the specified drawable and define the origin of the first character. .SH DESCRIPTION The .B XDrawImageString16 function is similar to .B XDrawImageString except that it uses 2-byte or 16-bit characters. Both functions also use both the foreground and background pixels of the GC in the destination. .LP The effect is first to fill a destination rectangle with the background pixel defined in the GC and then to paint the text with the foreground pixel. The upper-left corner of the filled rectangle is at: .LP .EX [x, y \- font-ascent] .EE .LP The width is: .LP .EX overall-width .EE .LP The height is: .LP .EX font-ascent + font-descent .EE .LP The overall-width, font-ascent, and font-descent are as would be returned by .B XQueryTextExtents using gc and string. The function and fill-style defined in the GC are ignored for these functions. The effective function is .BR GXcopy , and the effective fill-style is .BR FillSolid . .LP For fonts defined with 2-byte matrix indexing and used with .BR XDrawImageString , each byte is used as a byte2 with a byte1 of zero. .LP Both functions use these GC components: plane-mask, foreground, background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. .LP .B XDrawImageString and .B XDrawImageString16 can generate .BR BadDrawable , .BR BadGC , and .B BadMatch errors. .SH DIAGNOSTICS .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .SH NOTES Unlike XDrawString and XDrawString16, these functions send no more than 255 characters at a time to the server. When the total number of characters to be sent is larger than 255, these functions split the string into chunks up to 255 characters. After sending each chunk, these functions query the server to determine the actual text extent. .SH "SEE ALSO" XDrawString(__libmansuffix__), XDrawText(__libmansuffix__), XLoadFont(__libmansuffix__), XTextExtents(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XWarpPointer.man0000644014310600000120000001101114763154126012171 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XWarpPointer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XWarpPointer \- move pointer .SH SYNTAX .HP int XWarpPointer\^(\^Display *\fIdisplay\fP\^, Window \fIsrc_w\fP\^, Window \fIdest_w\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, unsigned int \fIsrc_width\fP\^, unsigned int \fIsrc_height\fP\^, int \fIdest_x\fP\^, int \fIdest_y\fP\^); .SH ARGUMENTS .IP \fIdest_w\fP 1i Specifies the destination window or .BR None . .IP \fIdest_x\fP 1i .br .ns .IP \fIdest_y\fP 1i Specify the x and y coordinates within the destination window. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIsrc_x\fP 1i .br .ns .IP \fIsrc_y\fP 1i .br .ns .IP \fIsrc_width\fP 1i .br .ns .IP \fIsrc_height\fP 1i Specify a rectangle in the source window. .IP \fIsrc_w\fP 1i Specifies the source window or .BR None . .SH DESCRIPTION If dest_w is .BR None , .B XWarpPointer moves the pointer by the offsets (dest_x, dest_y) relative to the current position of the pointer. If dest_w is a window, .B XWarpPointer moves the pointer to the offsets (dest_x, dest_y) relative to the origin of dest_w. However, if src_w is a window, the move only takes place if the window src_w contains the pointer and if the specified rectangle of src_w contains the pointer. .LP The src_x and src_y coordinates are relative to the origin of src_w. If src_height is zero, it is replaced with the current height of src_w minus src_y. If src_width is zero, it is replaced with the current width of src_w minus src_x. .LP There is seldom any reason for calling this function. The pointer should normally be left to the user. If you do use this function, however, it generates events just as if the user had instantaneously moved the pointer from one position to another. Note that you cannot use .B XWarpPointer to move the pointer outside the confine_to window of an active pointer grab. An attempt to do so will only move the pointer as far as the closest edge of the confine_to window. .LP .B XWarpPointer can generate a .B BadWindow error. .SH DIAGNOSTICS .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XSetInputFocus(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/WhitePixelOfScreen.man0000644014310600000120000000007414763154126013305 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XUnmapSubwindows.man0000644014310600000120000000006614763154126013074 .so man__libmansuffix__/XUnmapWindow.__libmansuffix__ libX11-1.8.12/man/XSubImage.man0000644014310600000120000000006414763154126011421 .so man__libmansuffix__/XInitImage.__libmansuffix__ libX11-1.8.12/man/DefaultGCOfScreen.man0000644014310600000120000000007414763154126013021 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XSelectionClearEvent.man0000644014310600000120000001161714763154126013631 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSelectionClearEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSelectionClearEvent \- SelectionClear event structure .SH STRUCTURES The structure for .B SelectionClear events contains: .LP .EX typedef struct { int type; /\&* SelectionClear */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; Atom selection; Time time; } XSelectionClearEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The selection member is set to the selection atom. The time member is set to the last change time recorded for the selection. The window member is the window that was specified by the current owner (the owner losing the selection) in its .B XSetSelectionOwner call. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XSetSelectionOwner(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/Xutf8SetWMProperties.man0000644014310600000120000000007214763154126013607 .so man__libmansuffix__/XSetWMProperties.__libmansuffix__ libX11-1.8.12/man/XChar2b.man0000644014310600000120000000006314763154126011025 .so man__libmansuffix__/XLoadFont.__libmansuffix__ libX11-1.8.12/man/Makefile.in0000644014310600000120000015465314763154146011165 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = man ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(filemandir)" "$(DESTDIR)$(libmandir)" DATA = $(fileman_DATA) $(libman_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ -e 's|__xlocaledir__|$(X11_LOCALEDATADIR)|g' MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = xkb libmandir = $(LIB_MAN_DIR) libman_PRE = \ $(all_shadows:=.man) \ $(file_shadows:=.man) \ AllPlanes.man \ BlackPixelOfScreen.man \ DisplayOfCCC.man \ ImageByteOrder.man \ IsCursorKey.man \ XAddConnectionWatch.man \ XAddHost.man \ XAllocClassHint.man \ XAllocColor.man \ XAllocIconSize.man \ XAllocSizeHints.man \ XAllocStandardColormap.man \ XAllocWMHints.man \ XAllowEvents.man \ XAnyEvent.man \ XButtonEvent.man \ XChangeKeyboardControl.man \ XChangeKeyboardMapping.man \ XChangePointerControl.man \ XChangeSaveSet.man \ XChangeWindowAttributes.man \ XCirculateEvent.man \ XCirculateRequestEvent.man \ XClearArea.man \ XClientMessageEvent.man \ XcmsAllocColor.man \ XcmsCCCOfColormap.man \ XcmsCIELabQueryMaxC.man \ XcmsCIELuvQueryMaxC.man \ XcmsColor.man \ XcmsConvertColors.man \ XcmsCreateCCC.man \ XcmsDefaultCCC.man \ XcmsQueryBlack.man \ XcmsQueryColor.man \ XcmsSetWhitePoint.man \ XcmsStoreColor.man \ XcmsTekHVCQueryMaxC.man \ XColormapEvent.man \ XConfigureEvent.man \ XConfigureRequestEvent.man \ XConfigureWindow.man \ XCopyArea.man \ XCreateColormap.man \ XCreateFontCursor.man \ XCreateFontSet.man \ XCreateGC.man \ XCreateIC.man \ XCreateOC.man \ XCreatePixmap.man \ XCreateRegion.man \ XCreateWindowEvent.man \ XCreateWindow.man \ XCrossingEvent.man \ XDefineCursor.man \ XDestroyWindowEvent.man \ XDestroyWindow.man \ XDrawArc.man \ XDrawImageString.man \ XDrawLine.man \ XDrawPoint.man \ XDrawRectangle.man \ XDrawString.man \ XDrawText.man \ XEmptyRegion.man \ XErrorEvent.man \ XExposeEvent.man \ XExtentsOfFontSet.man \ XFillRectangle.man \ XFilterEvent.man \ XFlush.man \ XFocusChangeEvent.man \ XFontSetExtents.man \ XFontsOfFontSet.man \ XFree.man \ XGetEventData.man \ XGetVisualInfo.man \ XGetWindowAttributes.man \ XGetWindowProperty.man \ XGetXCBConnection.man \ XGrabButton.man \ XGrabKeyboard.man \ XGrabKey.man \ XGrabPointer.man \ XGrabServer.man \ XGraphicsExposeEvent.man \ XGravityEvent.man \ XIconifyWindow.man \ XIfEvent.man \ XInitImage.man \ XInitThreads.man \ XInstallColormap.man \ XInternAtom.man \ XIntersectRegion.man \ XKeymapEvent.man \ XListFonts.man \ XLoadFont.man \ XLookupKeysym.man \ XMapEvent.man \ XMapRequestEvent.man \ XMapWindow.man \ XmbDrawImageString.man \ XmbDrawString.man \ XmbDrawText.man \ XmbLookupString.man \ XmbResetIC.man \ XmbTextEscapement.man \ XmbTextExtents.man \ XmbTextListToTextProperty.man \ XmbTextPerCharExtents.man \ XNextEvent.man \ XNoOp.man \ XOpenDisplay.man \ XOpenIM.man \ XOpenOM.man \ XParseGeometry.man \ XPolygonRegion.man \ XPropertyEvent.man \ XPutBackEvent.man \ XPutImage.man \ XQueryBestSize.man \ XQueryColor.man \ XQueryExtension.man \ XQueryPointer.man \ XQueryTree.man \ XRaiseWindow.man \ XReadBitmapFile.man \ XRecolorCursor.man \ XReparentEvent.man \ XReparentWindow.man \ XResizeRequestEvent.man \ XResourceManagerString.man \ XrmEnumerateDatabase.man \ XrmGetFileDatabase.man \ XrmGetResource.man \ XrmInitialize.man \ XrmMergeDatabases.man \ XrmPutResource.man \ XrmUniqueQuark.man \ XSaveContext.man \ XSelectInput.man \ XSelectionClearEvent.man \ XSelectionEvent.man \ XSelectionRequestEvent.man \ XSendEvent.man \ XSetArcMode.man \ XSetClipOrigin.man \ XSetCloseDownMode.man \ XSetCommand.man \ XSetErrorHandler.man \ XSetEventQueueOwner.man \ XSetFillStyle.man \ XSetFont.man \ XSetFontPath.man \ XSetICFocus.man \ XSetICValues.man \ XSetInputFocus.man \ XSetLineAttributes.man \ XSetPointerMapping.man \ XSetScreenSaver.man \ XSetSelectionOwner.man \ XSetState.man \ XSetTextProperty.man \ XSetTile.man \ XSetTransientForHint.man \ XSetWMClientMachine.man \ XSetWMColormapWindows.man \ XSetWMIconName.man \ XSetWMName.man \ XSetWMProperties.man \ XSetWMProtocols.man \ XStoreBytes.man \ XStoreColors.man \ XStringListToTextProperty.man \ XStringToKeysym.man \ XSupportsLocale.man \ XSynchronize.man \ XTextExtents.man \ XTextWidth.man \ XTranslateCoordinates.man \ XUnmapEvent.man \ XUnmapWindow.man \ XVaCreateNestedList.man \ XVisibilityEvent.man \ XWarpPointer.man filemandir = $(FILE_MAN_DIR) fileman_PRE = Compose.man libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) \ $(all_shadows:=.@LIB_MAN_SUFFIX@) fileman_DATA = $(fileman_PRE:man=@FILE_MAN_SUFFIX@) \ $(file_shadows:=.@FILE_MAN_SUFFIX@) EXTRA_DIST = $(libman_PRE) $(fileman_PRE) CLEANFILES = $(libman_DATA) $(fileman_DATA) SUFFIXES = .$(LIB_MAN_SUFFIX) .$(FILE_MAN_SUFFIX) .man # Generate man page shadow files (Replaces InstallManPageAliases from Imake) all_shadows = \ $(AllPlanes_shadows) \ $(BlackPixelOfScreen_shadows) \ $(DisplayOfCCC_shadows) \ $(ImageByteOrder_shadows) \ $(IsCursorKey_shadows) \ $(XAllocClassHint_shadows) \ $(XAllocIconSize_shadows) \ $(XAllocStandardColormap_shadows) \ $(XAllocSizeHints_shadows) \ $(XAllocWMHints_shadows) \ $(XAddHost_shadows) \ $(XAllocColor_shadows) \ $(XAnyEvent_shadows) \ $(XButtonEvent_shadows) \ $(XChangeKeyboardControl_shadows) \ $(XChangeKeyboardMapping_shadows) \ $(XChangePointerControl_shadows) \ $(XChangeSaveSet_shadows) \ $(XChangeWindowAttributes_shadows) \ $(XClearArea_shadows) \ $(XConfigureWindow_shadows) \ $(XCopyArea_shadows) \ $(XCreateColormap_shadows) \ $(XCreateFontCursor_shadows) \ $(XCreateFontSet_shadows) \ $(XCreateGC_shadows) \ $(XCreateIC_shadows) \ $(XInitImage_shadows) \ $(XCreateOC_shadows) \ $(XCreatePixmap_shadows) \ $(XCreateRegion_shadows) \ $(XCreateWindow_shadows) \ $(XDefineCursor_shadows) \ $(XDestroyWindow_shadows) \ $(XDrawArc_shadows) \ $(XDrawImageString_shadows) \ $(XDrawLine_shadows) \ $(XDrawPoint_shadows) \ $(XDrawRectangle_shadows) \ $(XDrawString_shadows) \ $(XDrawText_shadows) \ $(XEmptyRegion_shadows) \ $(XFillRectangle_shadows) \ $(XFlush_shadows) \ $(XFontsOfFontSet_shadows) \ $(XGraphicsExposeEvent_shadows) \ $(XrmGetFileDatabase_shadows) \ $(XrmGetResource_shadows) \ $(XGetEventData_shadows) \ $(XGetVisualInfo_shadows) \ $(XGetWindowAttributes_shadows) \ $(XGetWindowProperty_shadows) \ $(XGrabButton_shadows) \ $(XGrabKey_shadows) \ $(XGrabKeyboard_shadows) \ $(XGrabPointer_shadows) \ $(XGrabServer_shadows) \ $(XIconifyWindow_shadows) \ $(XIfEvent_shadows) \ $(XrmInitialize_shadows) \ $(XInstallColormap_shadows) \ $(XAddConnectionWatch_shadows) \ $(XIntersectRegion_shadows) \ $(XInternAtom_shadows) \ $(XListFonts_shadows) \ $(XLoadFont_shadows) \ $(XLookupKeysym_shadows) \ $(XrmMergeDatabases_shadows) \ $(XMapEvent_shadows) \ $(XMapWindow_shadows) \ $(XNextEvent_shadows) \ $(XOpenDisplay_shadows) \ $(XOpenIM_shadows) \ $(XOpenOM_shadows) \ $(XParseGeometry_shadows) \ $(XPolygonRegion_shadows) \ $(XPutImage_shadows) \ $(XrmPutResource_shadows) \ $(XQueryBestSize_shadows) \ $(XQueryColor_shadows) \ $(XQueryExtension_shadows) \ $(XResourceManagerString_shadows) \ $(XRaiseWindow_shadows) \ $(XReadBitmapFile_shadows) \ $(XRecolorCursor_shadows) \ $(XSaveContext_shadows) \ $(XSetICFocus_shadows) \ $(XSetICValues_shadows) \ $(XStringListToTextProperty_shadows) \ $(XSetArcMode_shadows) \ $(XSetClipOrigin_shadows) \ $(XSetCloseDownMode_shadows) \ $(XSetCommand_shadows) \ $(XSetErrorHandler_shadows) \ $(XSendEvent_shadows) \ $(XSetFillStyle_shadows) \ $(XSetFontPath_shadows) \ $(XSetInputFocus_shadows) \ $(XSetLineAttributes_shadows) \ $(XSetPointerMapping_shadows) \ $(XSetScreenSaver_shadows) \ $(XSetSelectionOwner_shadows) \ $(XSetState_shadows) \ $(XSetTransientForHint_shadows) \ $(XSetTextProperty_shadows) \ $(XSetTile_shadows) \ $(XSetWMClientMachine_shadows) \ $(XSetWMColormapWindows_shadows) \ $(XSetWMIconName_shadows) \ $(XSetWMName_shadows) \ $(XSetWMProperties_shadows) \ $(XSetWMProtocols_shadows) \ $(XStoreBytes_shadows) \ $(XStoreColors_shadows) \ $(XStringToKeysym_shadows) \ $(XSupportsLocale_shadows) \ $(XSynchronize_shadows) \ $(XmbTextListToTextProperty_shadows) \ $(XTextExtents_shadows) \ $(XTextWidth_shadows) \ $(XInitThreads_shadows) \ $(XrmUniqueQuark_shadows) \ $(XUnmapWindow_shadows) \ $(XcmsCCCOfColormap_shadows) \ $(XcmsAllocColor_shadows) \ $(XcmsColor_shadows) \ $(XcmsCreateCCC_shadows) \ $(XcmsCIELabQueryMaxC_shadows) \ $(XcmsCIELuvQueryMaxC_shadows) \ $(XcmsQueryBlack_shadows) \ $(XcmsQueryColor_shadows) \ $(XcmsStoreColor_shadows) \ $(XcmsSetWhitePoint_shadows) \ $(XcmsTekHVCQueryMaxC_shadows) \ $(XmbDrawImageString_shadows) \ $(XmbDrawString_shadows) \ $(XmbDrawText_shadows) \ $(XmbLookupString_shadows) \ $(XmbResetIC_shadows) \ $(XmbTextEscapement_shadows) \ $(XmbTextExtents_shadows) \ $(XmbTextPerCharExtents_shadows) AllPlanes_shadows = \ BlackPixel \ WhitePixel \ ConnectionNumber \ DefaultColormap \ DefaultDepth \ XListDepths \ DefaultGC \ DefaultRootWindow \ DefaultScreenOfDisplay \ DefaultScreen \ DefaultVisual \ DisplayCells \ DisplayPlanes \ DisplayString \ XMaxRequestSize \ XExtendedMaxRequestSize \ LastKnownRequestProcessed \ NextRequest \ ProtocolVersion \ ProtocolRevision \ QLength \ RootWindow \ ScreenCount \ ScreenOfDisplay \ ServerVendor \ VendorRelease BlackPixelOfScreen_shadows = \ WhitePixelOfScreen \ CellsOfScreen \ DefaultColormapOfScreen \ DefaultDepthOfScreen \ DefaultGCOfScreen \ DefaultVisualOfScreen \ DoesBackingStore \ DoesSaveUnders \ DisplayOfScreen \ XScreenNumberOfScreen \ EventMaskOfScreen \ HeightOfScreen \ HeightMMOfScreen \ MaxCmapsOfScreen \ MinCmapsOfScreen \ PlanesOfScreen \ RootWindowOfScreen \ WidthOfScreen \ WidthMMOfScreen DisplayOfCCC_shadows = \ VisualOfCCC \ ScreenNumberOfCCC \ ScreenWhitePointOfCCC \ ClientWhitePointOfCCC ImageByteOrder_shadows = \ BitmapBitOrder \ BitmapPad \ BitmapUnit \ DisplayHeight \ DisplayHeightMM \ DisplayWidth \ DisplayWidthMM \ XListPixmapFormats \ XPixmapFormatValues IsCursorKey_shadows = \ IsFunctionKey \ IsKeypadKey \ IsMiscFunctionKey \ IsModifierKey \ IsPFKey \ IsPrivateKeypadKey XAllocClassHint_shadows = \ XSetClassHint \ XGetClassHint \ XClassHint XAllocIconSize_shadows = \ XSetIconSizes \ XGetIconSizes \ XIconSize XAllocStandardColormap_shadows = \ XSetRGBColormaps \ XGetRGBColormaps \ XStandardColormap XAllocSizeHints_shadows = \ XSetWMNormalHints \ XGetWMNormalHints \ XSetWMSizeHints \ XGetWMSizeHints \ XSizeHints XAllocWMHints_shadows = \ XSetWMHints \ XGetWMHints \ XWMHints XAddHost_shadows = \ XAddHosts \ XListHosts \ XRemoveHost \ XRemoveHosts \ XSetAccessControl \ XEnableAccessControl \ XDisableAccessControl \ XHostAddress XAllocColor_shadows = \ XAllocNamedColor \ XAllocColorCells \ XAllocColorPlanes \ XFreeColors XAnyEvent_shadows = \ XEvent XButtonEvent_shadows = \ XKeyEvent \ XMotionEvent XChangeKeyboardControl_shadows = \ XGetKeyboardControl \ XAutoRepeatOn \ XAutoRepeatOff \ XBell \ XQueryKeymap \ XKeyboardControl XChangeKeyboardMapping_shadows = \ XGetKeyboardMapping \ XDisplayKeycodes \ XSetModifierMapping \ XGetModifierMapping \ XNewModifiermap \ XInsertModifiermapEntry \ XDeleteModifiermapEntry \ XFreeModifiermap \ XModifierKeymap XChangePointerControl_shadows = \ XGetPointerControl XChangeSaveSet_shadows = \ XAddToSaveSet \ XRemoveFromSaveSet XChangeWindowAttributes_shadows = \ XSetWindowBackground \ XSetWindowBackgroundPixmap \ XSetWindowBorder \ XSetWindowBorderPixmap \ XSetWindowColormap XClearArea_shadows = \ XClearWindow XConfigureWindow_shadows = \ XMoveWindow \ XResizeWindow \ XMoveResizeWindow \ XSetWindowBorderWidth \ XWindowChanges XCopyArea_shadows = \ XCopyPlane XCreateColormap_shadows = \ XCopyColormapAndFree \ XFreeColormap \ XColor XCreateFontCursor_shadows = \ XCreatePixmapCursor \ XCreateGlyphCursor XCreateFontSet_shadows = \ XFreeFontSet XCreateGC_shadows = \ XCopyGC \ XChangeGC \ XGetGCValues \ XFreeGC \ XGContextFromGC \ XGCValues XCreateIC_shadows = \ XDestroyIC \ XIMOfIC XInitImage_shadows = \ XCreateImage \ XGetPixel \ XPutPixel \ XSubImage \ XAddPixel \ XDestroyImage XCreateOC_shadows = \ XDestroyOC \ XSetOCValues \ XGetOCValues \ XOMOfOC XCreatePixmap_shadows = \ XFreePixmap XCreateRegion_shadows = \ XSetRegion \ XDestroyRegion XCreateWindow_shadows = \ XCreateSimpleWindow \ XSetWindowAttributes XDefineCursor_shadows = \ XUndefineCursor XDestroyWindow_shadows = \ XDestroySubwindows XDrawArc_shadows = \ XDrawArcs \ XArc XDrawImageString_shadows = \ XDrawImageString16 XDrawLine_shadows = \ XDrawLines \ XDrawSegments \ XSegment XDrawPoint_shadows = \ XDrawPoints \ XPoint XDrawRectangle_shadows = \ XDrawRectangles \ XRectangle XDrawString_shadows = \ XDrawString16 XDrawText_shadows = \ XDrawText16 \ XTextItem \ XTextItem16 XEmptyRegion_shadows = \ XEqualRegion \ XPointInRegion \ XRectInRegion XFillRectangle_shadows = \ XFillRectangles \ XFillPolygon \ XFillArc \ XFillArcs XFlush_shadows = \ XSync \ XEventsQueued \ XPending XFontsOfFontSet_shadows = \ XBaseFontNameListOfFontSet \ XLocaleOfFontSet \ XContextDependentDrawing \ XContextualDrawing \ XDirectionalDependentDrawing XGraphicsExposeEvent_shadows = \ XNoExposeEvent XrmGetFileDatabase_shadows = \ XrmPutFileDatabase \ XrmGetStringDatabase \ XrmLocaleOfDatabase \ XrmGetDatabase \ XrmSetDatabase \ XrmDestroyDatabase XrmGetResource_shadows = \ XrmQGetResource \ XrmQGetSearchList \ XrmQGetSearchResource XGetEventData_shadows = \ XFreeEventData \ XGenericEventCookie XGetVisualInfo_shadows = \ XMatchVisualInfo \ XVisualIDFromVisual \ XVisualInfo XGetWindowAttributes_shadows = \ XGetGeometry \ XWindowAttributes XGetWindowProperty_shadows = \ XListProperties \ XChangeProperty \ XRotateWindowProperties \ XDeleteProperty XGrabButton_shadows = \ XUngrabButton XGrabKey_shadows = \ XUngrabKey XGrabKeyboard_shadows = \ XUngrabKeyboard XGrabPointer_shadows = \ XUngrabPointer \ XChangeActivePointerGrab XGrabServer_shadows = \ XUngrabServer XIconifyWindow_shadows = \ XWithdrawWindow \ XReconfigureWMWindow XIfEvent_shadows = \ XCheckIfEvent \ XPeekIfEvent XrmInitialize_shadows = \ XrmParseCommand \ XrmValue \ XrmOptionKind \ XrmOptionDescRec XInstallColormap_shadows = \ XUninstallColormap \ XListInstalledColormaps XAddConnectionWatch_shadows = \ XRemoveConnectionWatch \ XProcessInternalConnection \ XInternalConnectionNumbers XIntersectRegion_shadows = \ XUnionRegion \ XUnionRectWithRegion \ XSubtractRegion \ XXorRegion \ XOffsetRegion \ XShrinkRegion XInternAtom_shadows = \ XInternAtoms \ XGetAtomName \ XGetAtomNames XListFonts_shadows = \ XFreeFontNames \ XListFontsWithInfo \ XFreeFontInfo XLoadFont_shadows = \ XQueryFont \ XLoadQueryFont \ XFreeFont \ XGetFontProperty \ XUnloadFont \ XCharStruct \ XFontProp \ XChar2b \ XFontStruct XLookupKeysym_shadows = \ XRefreshKeyboardMapping \ XLookupString \ XRebindKeysym XrmMergeDatabases_shadows = \ XrmCombineDatabase \ XrmCombineFileDatabase XMapEvent_shadows = \ XMappingEvent XMapWindow_shadows = \ XMapRaised \ XMapSubwindows XNextEvent_shadows = \ XPeekEvent \ XWindowEvent \ XCheckWindowEvent \ XMaskEvent \ XCheckMaskEvent \ XCheckTypedEvent \ XCheckTypedWindowEvent XOpenDisplay_shadows = \ XCloseDisplay XOpenIM_shadows = \ XCloseIM \ XSetIMValues \ XGetIMValues \ XDisplayOfIM \ XLocaleOfIM \ XRegisterIMInstantiateCallback \ XUnregisterIMInstantiateCallback XOpenOM_shadows = \ XCloseOM \ XSetOMValues \ XGetOMValues \ XDisplayOfOM \ XLocaleOfOM XParseGeometry_shadows = \ XWMGeometry XPolygonRegion_shadows = \ XClipBox XPutImage_shadows = \ XGetImage \ XGetSubImage XrmPutResource_shadows = \ XrmQPutResource \ XrmPutStringResource \ XrmQPutStringResource \ XrmPutLineResource XQueryBestSize_shadows = \ XQueryBestTile \ XQueryBestStipple XQueryColor_shadows = \ XQueryColors \ XLookupColor \ XParseColor XQueryExtension_shadows = \ XListExtensions \ XFreeExtensionList XResourceManagerString_shadows = \ XScreenResourceString XRaiseWindow_shadows = \ XLowerWindow \ XCirculateSubwindows \ XCirculateSubwindowsUp \ XCirculateSubwindowsDown \ XRestackWindows XReadBitmapFile_shadows = \ XReadBitmapFileData \ XWriteBitmapFile \ XCreatePixmapFromBitmapData \ XCreateBitmapFromData XRecolorCursor_shadows = \ XFreeCursor \ XQueryBestCursor XSaveContext_shadows = \ XFindContext \ XDeleteContext \ XUniqueContext XSetICFocus_shadows = \ XUnsetICFocus XSetICValues_shadows = \ XGetICValues XStringListToTextProperty_shadows = \ XTextPropertyToStringList \ XFreeStringList \ XTextProperty XSetArcMode_shadows = \ XSetSubwindowMode \ XSetGraphicsExposure XSetClipOrigin_shadows = \ XSetClipMask \ XSetClipRectangles XSetCloseDownMode_shadows = \ XKillClient XSetCommand_shadows = \ XGetCommand XSetErrorHandler_shadows = \ XGetErrorText \ XDisplayName \ XSetIOErrorHandler \ XGetErrorDatabaseText XSendEvent_shadows = \ XDisplayMotionBufferSize \ XGetMotionEvents \ XTimeCoord XSetFillStyle_shadows = \ XSetFillRule XSetFontPath_shadows = \ XGetFontPath \ XFreeFontPath XSetInputFocus_shadows = \ XGetInputFocus XSetLineAttributes_shadows = \ XSetDashes XSetPointerMapping_shadows = \ XGetPointerMapping XSetScreenSaver_shadows = \ XForceScreenSaver \ XActivateScreenSaver \ XResetScreenSaver \ XGetScreenSaver XSetSelectionOwner_shadows = \ XGetSelectionOwner \ XConvertSelection XSetState_shadows = \ XSetFunction \ XSetPlaneMask \ XSetForeground \ XSetBackground XSetTransientForHint_shadows = \ XGetTransientForHint XSetTextProperty_shadows = \ XGetTextProperty XSetTile_shadows = \ XSetStipple \ XSetTSOrigin XSetWMClientMachine_shadows = \ XGetWMClientMachine XSetWMColormapWindows_shadows = \ XGetWMColormapWindows XSetWMIconName_shadows = \ XGetWMIconName \ XSetIconName \ XGetIconName XSetWMName_shadows = \ XGetWMName \ XStoreName \ XFetchName XSetWMProperties_shadows = \ XmbSetWMProperties \ Xutf8SetWMProperties XSetWMProtocols_shadows = \ XGetWMProtocols XStoreBytes_shadows = \ XStoreBuffer \ XFetchBytes \ XFetchBuffer \ XRotateBuffers XStoreColors_shadows = \ XStoreColor \ XStoreNamedColor XStringToKeysym_shadows = \ XKeysymToString \ XKeycodeToKeysym \ XKeysymToKeycode \ XConvertCase XSupportsLocale_shadows = \ XSetLocaleModifiers XSynchronize_shadows = \ XSetAfterFunction XmbTextListToTextProperty_shadows = \ XwcTextListToTextProperty \ Xutf8TextListToTextProperty \ XmbTextPropertyToTextList \ XwcTextPropertyToTextList \ Xutf8TextPropertyToTextList \ XwcFreeStringList \ XDefaultString XTextExtents_shadows = \ XTextExtents16 \ XQueryTextExtents \ XQueryTextExtents16 XTextWidth_shadows = \ XTextWidth16 XInitThreads_shadows = \ XLockDisplay \ XUnlockDisplay XrmUniqueQuark_shadows = \ XrmStringToQuark \ XrmPermStringToQuark \ XrmQuarkToString \ XrmStringToQuarkList \ XrmStringToBindingQuarkList XUnmapWindow_shadows = \ XUnmapSubwindows XcmsCCCOfColormap_shadows = \ XcmsSetCCCOfColormap XcmsAllocColor_shadows = \ XcmsAllocNamedColor XcmsColor_shadows = \ XcmsRGB \ XcmsRGBi \ XcmsCIEXYZ \ XcmsCIEuvY \ XcmsCIExyY \ XcmsCIELab \ XcmsCIELuv \ XcmsTekHVC \ XcmsPad XcmsCreateCCC_shadows = \ XcmsFreeCCC XcmsCIELabQueryMaxC_shadows = \ XcmsCIELabQueryMaxL \ XcmsCIELabQueryMaxLC \ XcmsCIELabQueryMinL XcmsCIELuvQueryMaxC_shadows = \ XcmsCIELuvQueryMaxL \ XcmsCIELuvQueryMaxLC \ XcmsCIELuvQueryMinL XcmsQueryBlack_shadows = \ XcmsQueryBlue \ XcmsQueryGreen \ XcmsQueryRed \ XcmsQueryWhite XcmsQueryColor_shadows = \ XcmsQueryColors \ XcmsLookupColor XcmsStoreColor_shadows = \ XcmsStoreColors XcmsSetWhitePoint_shadows = \ XcmsSetWhiteAdjustProc XcmsTekHVCQueryMaxC_shadows = \ XcmsTekHVCQueryMaxV \ XcmsTekHVCQueryMaxVC \ XcmsTekHVCQueryMaxVSamples \ XcmsTekHVCQueryMinV XmbDrawImageString_shadows = \ XwcDrawImageString \ Xutf8DrawImageString XmbDrawString_shadows = \ XwcDrawString \ Xutf8DrawString XmbDrawText_shadows = \ XwcDrawText \ Xutf8DrawText XmbLookupString_shadows = \ XwcLookupString \ Xutf8LookupString XmbResetIC_shadows = \ XwcResetIC \ Xutf8ResetIC XmbTextEscapement_shadows = \ XwcTextEscapement \ Xutf8TextEscapement XmbTextExtents_shadows = \ XwcTextExtents \ Xutf8TextExtents XmbTextPerCharExtents_shadows = \ XwcTextPerCharExtents \ Xutf8TextPerCharExtents file_shadows = \ $(Compose_shadows) Compose_shadows = \ XCompose all: all-recursive .SUFFIXES: .SUFFIXES: .$(LIB_MAN_SUFFIX) .$(FILE_MAN_SUFFIX) .man $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign man/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-filemanDATA: $(fileman_DATA) @$(NORMAL_INSTALL) @list='$(fileman_DATA)'; test -n "$(filemandir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(filemandir)'"; \ $(MKDIR_P) "$(DESTDIR)$(filemandir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(filemandir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(filemandir)" || exit $$?; \ done uninstall-filemanDATA: @$(NORMAL_UNINSTALL) @list='$(fileman_DATA)'; test -n "$(filemandir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(filemandir)'; $(am__uninstall_files_from_dir) install-libmanDATA: $(libman_DATA) @$(NORMAL_INSTALL) @list='$(libman_DATA)'; test -n "$(libmandir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(libmandir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libmandir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libmandir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(libmandir)" || exit $$?; \ done uninstall-libmanDATA: @$(NORMAL_UNINSTALL) @list='$(libman_DATA)'; test -n "$(libmandir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(libmandir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(filemandir)" "$(DESTDIR)$(libmandir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-filemanDATA install-libmanDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-filemanDATA uninstall-libmanDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am \ install-filemanDATA install-html install-html-am install-info \ install-info-am install-libmanDATA install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-filemanDATA \ uninstall-libmanDATA .PRECIOUS: Makefile # String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure .man.$(LIB_MAN_SUFFIX) .man.$(FILE_MAN_SUFFIX): $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/man/XLookupColor.man0000644014310600000120000000006514763154126012176 .so man__libmansuffix__/XQueryColor.__libmansuffix__ libX11-1.8.12/man/XmbResetIC.man0000644014310600000120000001025014763154126011540 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Copyright \(co 2000 The XFree86 Project, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XmbResetIC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbResetIC, XwcResetIC, Xutf8ResetIC \- reset the state of an input context .SH SYNTAX .HP char *XmbResetIC\^(\^XIC \fIic\fP\^); .HP wchar_t *XwcResetIC\^(\^XIC \fIic\fP\^); .HP char *Xutf8ResetIC\^(\^XIC \fIic\fP\^); .SH ARGUMENTS .IP \fIic\fP 1i Specifies the input context. .SH DESCRIPTION When .B XNResetState is set to .BR XIMInitialState , .BR XmbResetIC , .B XwcResetIC and .B Xutf8ResetIC reset an input context to its initial state; when .B XNResetState is set to .BR XIMPreserveState , the current input context state is preserved. In both cases, any input pending on that context is deleted. The input method is required to clear the preedit area, if any, and update the status accordingly. Calling .BR XmbResetIC , .B XwcResetIC or .B Xutf8ResetIC does not change the focus. .LP The return value of .B XmbResetIC is its current preedit string as a multibyte string. The return value of .B XwcResetIC is its current preedit string as a wide character string. The return value of .B Xutf8ResetIC is its current preedit string as an UTF-8 string. If there is any preedit text drawn or visible to the user, then these procedures must return a non-NULL string. If there is no visible preedit text, then it is input method implementation-dependent whether these procedures return a non-NULL string or NULL. .LP The client should free the returned string by calling .BR XFree . .LP The function .B Xutf8ResetIC is an extension introduced by The XFree86 Project, Inc., in their 4.0.2 release. Its presence is indicated by the macro .BR X_HAVE_UTF8_STRING . .SH "SEE ALSO" XCreateIC(__libmansuffix__), XOpenIM(__libmansuffix__), XSetICFocus(__libmansuffix__), XSetICValues(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XDisplayKeycodes.man0000644014310600000120000000010014763154126013010 .so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ libX11-1.8.12/man/XGetCommand.man0000644014310600000120000000006514763154126011744 .so man__libmansuffix__/XSetCommand.__libmansuffix__ libX11-1.8.12/man/XClipBox.man0000644014310600000120000000007014763154126011262 .so man__libmansuffix__/XPolygonRegion.__libmansuffix__ libX11-1.8.12/man/WidthMMOfScreen.man0000644014310600000120000000007414763154126012534 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XRemoveHost.man0000644014310600000120000000006214763154126012016 .so man__libmansuffix__/XAddHost.__libmansuffix__ libX11-1.8.12/man/XmbTextEscapement.man0000644014310600000120000001000414763154126013170 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Copyright \(co 2000 The XFree86 Project, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XmbTextEscapement __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbTextEscapement, XwcTextEscapement, Xutf8TextEscapement \- obtain the escapement of text .SH SYNTAX .HP int XmbTextEscapement\^(\^XFontSet \fIfont_set\fP\^, _Xconst char *\fIstring\fP\^, int \fInum_bytes\fP\^); .HP int XwcTextEscapement\^(\^XFontSet \fIfont_set\fP\^, _Xconst wchar_t *\fIstring\fP\^, int \fInum_wchars\fP\^); .HP int Xutf8TextEscapement\^(\^XFontSet \fIfont_set\fP\^, _Xconst char *\fIstring\fP\^, int \fInum_bytes\fP\^); .SH ARGUMENTS .IP \fIfont_set\fP 1i Specifies the font set. .IP \fInum_bytes\fP 1i Specifies the number of bytes in the string argument. .IP \fInum_wchars\fP 1i Specifies the number of characters in the string argument. .IP \fIstring\fP 1i Specifies the character string. .SH DESCRIPTION The .BR XmbTextEscapement , .B XwcTextEscapement and .B Xutf8TextEscapement functions return the escapement in pixels of the specified string as a value, using the fonts loaded for the specified font set. The escapement is the distance in pixels in the primary draw direction from the drawing origin to the origin of the next character to be drawn, assuming that the rendering of the next character is not dependent on the supplied string. .LP Regardless of the character rendering order, the escapement is always positive. .LP The function .B Xutf8TextEscapement is an extension introduced by The XFree86 Project, Inc., in their 4.0.2 release. Its presence is indicated by the macro .BR X_HAVE_UTF8_STRING . .SH "SEE ALSO" XmbTextExtents(__libmansuffix__), XmbTextPerCharExtents(__libmansuffix__) \fI\*(xL\fP libX11-1.8.12/man/XScreenResourceString.man0000644014310600000120000000010014763154126014032 .so man__libmansuffix__/XResourceManagerString.__libmansuffix__ libX11-1.8.12/man/XCloseOM.man0000644014310600000120000000006114763154126011223 .so man__libmansuffix__/XOpenOM.__libmansuffix__ libX11-1.8.12/man/XQueryBestSize.man0000644014310600000120000001371414763154126012511 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XQueryBestSize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XQueryBestSize, XQueryBestTile, XQueryBestStipple \- determine efficient sizes .SH SYNTAX .HP Status XQueryBestSize\^(\^Display *\fIdisplay\fP\^, int \fIclass\fP\^, Drawable \fIwhich_screen\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^, unsigned int *\fIwidth_return\fP, unsigned int *\fIheight_return\fP\^); .HP Status XQueryBestTile\^(\^Display *\fIdisplay\fP\^, Drawable \fIwhich_screen\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^, unsigned int *\fIwidth_return\fP, unsigned int *\fIheight_return\fP\^); .HP Status XQueryBestStipple\^(\^Display *\fIdisplay\fP\^, Drawable \fIwhich_screen\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^, unsigned int *\fIwidth_return\fP, unsigned int *\fIheight_return\fP\^); .SH ARGUMENTS .IP \fIclass\fP 1i Specifies the class that you are interested in. You can pass .BR TileShape , .BR CursorShape , or .BR StippleShape . .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height. .IP \fIwhich_screen\fP 1i Specifies any drawable on the screen. .IP \fIwidth_return\fP 1i .br .ns .IP \fIheight_return\fP 1i Return the width and height of the object best supported by the display hardware. .SH DESCRIPTION The .B XQueryBestSize function returns the best or closest size to the specified size. For .BR CursorShape , this is the largest size that can be fully displayed on the screen specified by which_screen. For .BR TileShape , this is the size that can be tiled fastest. For .BR StippleShape , this is the size that can be stippled fastest. For .BR CursorShape , the drawable indicates the desired screen. For .B TileShape and .BR StippleShape , the drawable indicates the screen and possibly the window class and depth. An .B InputOnly window cannot be used as the drawable for .B TileShape or .BR StippleShape , or a .B BadMatch error results. .LP .B XQueryBestSize can generate .BR BadDrawable , .BR BadMatch , and .B BadValue errors. .LP The .B XQueryBestTile function returns the best or closest size, that is, the size that can be tiled fastest on the screen specified by which_screen. The drawable indicates the screen and possibly the window class and depth. If an .B InputOnly window is used as the drawable, a .B BadMatch error results. .LP .B XQueryBestTile can generate .B BadDrawable and .B BadMatch errors. .LP The .B XQueryBestStipple function returns the best or closest size, that is, the size that can be stippled fastest on the screen specified by which_screen. The drawable indicates the screen and possibly the window class and depth. If an .B InputOnly window is used as the drawable, a .B BadMatch error results. .LP .B XQueryBestStipple can generate .B BadDrawable and .B BadMatch errors. .SH DIAGNOSTICS .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadMatch The values do not exist for an .B InputOnly window. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XCreateGC(__libmansuffix__), XSetArcMode(__libmansuffix__), XSetClipOrigin(__libmansuffix__), XSetFillStyle(__libmansuffix__), XSetFont(__libmansuffix__), XSetLineAttributes(__libmansuffix__), XSetState(__libmansuffix__), XSetTile(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XcmsStoreColor.man0000644014310600000120000001554114763154126012531 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XcmsStoreColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsStoreColor, XcmsStoreColors \- set colors .SH SYNTAX .HP Status XcmsStoreColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, XcmsColor *\fIcolor\fP\^); .HP Status XcmsStoreColors\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, XcmsColor *\fIcolors\fP\^, unsigned \fIncolors\fP\^, Bool *\fIcompression_flags_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIcolor\fP 1i Specifies the color cell and the color to store. Values specified in this .B XcmsColor structure remain unchanged on return. .IP \fIcolors\fP 1i Specifies the color specification array of .B XcmsColor structures, each specifying a color cell and the color to store in that cell. Values specified in the array remain unchanged upon return. .IP \fIcolormap\fP 1i Specifies the colormap. .IP \fIcompression_flags_return\fP 1i Returns an array of Boolean values indicating compression status. If a non-NULL pointer is supplied, each element of the array is set to .B True if the corresponding color was compressed and .B False otherwise. Pass NULL if the compression status is not useful. .IP \fIncolors\fP 1i Specifies the number of .B XcmsColor structures in the color-specification array. .SH DESCRIPTION The .B XcmsStoreColor function converts the color specified in the .B XcmsColor structure into RGB values. It then uses this RGB specification in an .B XColor structure, whose three flags .RB ( DoRed , .BR DoGreen , and .BR DoBlue ) are set, in a call to .B XStoreColor to change the color cell specified by the pixel member of the .B XcmsColor structure. This pixel value must be a valid index for the specified colormap, and the color cell specified by the pixel value must be a read/write cell. If the pixel value is not a valid index, a .B BadValue error results. If the color cell is unallocated or is allocated read-only, a .B BadAccess error results. If the colormap is an installed map for its screen, the changes are visible immediately. .LP Note that .B XStoreColor has no return value; therefore, an .B XcmsSuccess return value from this function indicates that the conversion to RGB succeeded and the call to .B XStoreColor was made. To obtain the actual color stored, use .BR XcmsQueryColor . Because of the screen's hardware limitations or gamut compression, the color stored in the colormap may not be identical to the color specified. .LP .B XcmsStoreColor can generate .BR BadAccess , .BR BadColor , and .B BadValue errors. .LP The .B XcmsStoreColors function converts the colors specified in the array of .B XcmsColor structures into RGB values and then uses these RGB specifications in .B XColor structures, whose three flags .RB ( DoRed , .BR DoGreen , and .BR DoBlue ) are set, in a call to .B XStoreColors to change the color cells specified by the pixel member of the corresponding .B XcmsColor structure. Each pixel value must be a valid index for the specified colormap, and the color cell specified by each pixel value must be a read/write cell. If a pixel value is not a valid index, a .B BadValue error results. If a color cell is unallocated or is allocated read-only, a .B BadAccess error results. If more than one pixel is in error, the one that gets reported is arbitrary. If the colormap is an installed map for its screen, the changes are visible immediately. .LP Note that .B XStoreColors has no return value; therefore, an .B XcmsSuccess return value from this function indicates that conversions to RGB succeeded and the call to .B XStoreColors was made. To obtain the actual colors stored, use .BR XcmsQueryColors . Because of the screen's hardware limitations or gamut compression, the colors stored in the colormap may not be identical to the colors specified. .LP .LP .B XcmsStoreColors can generate .BR BadAccess , .BR BadColor , and .B BadValue errors. .SH DIAGNOSTICS .TP 1i .B BadAccess A client attempted to free a color map entry that it did not already allocate. .TP 1i .B BadAccess A client attempted to store into a read-only color map entry. .TP 1i .B BadColor A value for a Colormap argument does not name a defined Colormap. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XcmsAllocColor(__libmansuffix__), XcmsQueryColor(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XrmGetStringDatabase.man0000644014310600000120000000007414763154126013620 .so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__ libX11-1.8.12/man/XwcLookupString.man0000644014310600000120000000007114763154126012715 .so man__libmansuffix__/XmbLookupString.__libmansuffix__ libX11-1.8.12/man/XPutBackEvent.man0000644014310600000120000000624514763154126012267 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XPutBackEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XPutBackEvent \- put events back on the queue .SH SYNTAX .HP XPutBackEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIevent\fP 1i Specifies the event. .SH DESCRIPTION The .B XPutBackEvent function pushes an event back onto the head of the display's event queue by copying the event into the queue. This can be useful if you read an event and then decide that you would rather deal with it later. There is no limit to the number of times in succession that you can call .BR XPutBackEvent . .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XIfEvent(__libmansuffix__), XNextEvent(__libmansuffix__), XSendEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/BitmapUnit.man0000644014310600000120000000007014763154126011646 .so man__libmansuffix__/ImageByteOrder.__libmansuffix__ libX11-1.8.12/man/XMaxRequestSize.man0000644014310600000120000000006314763154126012655 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XSetWMIconName.man0000644014310600000120000001242214763154126012337 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetWMIconName __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetWMIconName, XGetWMIconName, XSetIconName, XGetIconName \- set or read a window's WM_ICON_NAME property .SH SYNTAX .HP void XSetWMIconName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, XTextProperty *\fItext_prop\fP\^); .HP Status XGetWMIconName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, XTextProperty *\fItext_prop_return\fP\^); .HP int XSetIconName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, _Xconst char *\fIicon_name\fP\^); .HP Status XGetIconName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char **\fIicon_name_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIicon_name\fP 1i Specifies the icon name, which should be a null-terminated string. .IP \fIicon_name_return\fP 1i Returns the window's icon name, which is a null-terminated string. .IP \fItext_prop\fP 1i Specifies the .B XTextProperty structure to be used. .IP \fItext_prop_return\fP 1i Returns the .B XTextProperty structure. .IP \fIw\fP 1i Specifies the window. .SH DESCRIPTION The .B XSetWMIconName convenience function calls .B XSetTextProperty to set the WM_ICON_NAME property. .LP The .B XGetWMIconName convenience function calls .B XGetTextProperty to obtain the WM_ICON_NAME property. It returns a nonzero status on success; otherwise, it returns a zero status. .LP The .B XSetIconName function sets the name to be displayed in a window's icon. .LP .B XSetIconName can generate .B BadAlloc and .B BadWindow errors. .LP The .B XGetIconName function returns the name to be displayed in the specified window's icon. If it succeeds, it returns a nonzero status; otherwise, if no icon name has been set for the window, it returns zero. If you never assigned a name to the window, .B XGetIconName sets icon_name_return to NULL. If the data returned by the server is in the Latin Portable Character Encoding, then the returned string is in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. When finished with it, a client must free the icon name string using .BR XFree . .LP .B XGetIconName can generate a .B BadWindow error. .SH PROPERTIES .TP 1i \s-1WM_ICON_NAME\s+1 The name to be used in an icon. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocIconSize(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XAllocWMHints(__libmansuffix__), XFree(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XSetWMProtocols(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetWMHints.man0000644014310600000120000000006714763154126011735 .so man__libmansuffix__/XAllocWMHints.__libmansuffix__ libX11-1.8.12/man/XcmsFreeCCC.man0000644014310600000120000000006714763154126011625 .so man__libmansuffix__/XcmsCreateCCC.__libmansuffix__ libX11-1.8.12/man/XGenericEventCookie.man0000644014310600000120000000006714763154126013440 .so man__libmansuffix__/XGetEventData.__libmansuffix__ libX11-1.8.12/man/XStringListToTextProperty.man0000644014310600000120000001344014763154126014746 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Copyright \(co 2000 The XFree86 Project, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XStringListToTextProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XStringListToTextProperty, XTextPropertyToStringList, XFreeStringList, XTextProperty \- convert string lists and text property structure .SH SYNTAX .HP Status XStringListToTextProperty\^(\^char **\fIlist\fP\^, int \fIcount\fP\^, XTextProperty *\fItext_prop_return\fP\^); .HP Status XTextPropertyToStringList\^(\^XTextProperty *\fItext_prop\fP\^, char ***\fIlist_return\fP\^, int *\fIcount_return\fP\^); .HP void XFreeStringList\^(\^char **\fIlist\fP\^); .SH ARGUMENTS .IP \fIcount\fP 1i Specifies the number of strings. .IP \fIcount_return\fP 1i Returns the number of strings. .IP \fIlist\fP 1i Specifies the list of strings to be freed. .IP \fIlist\fP 1i Specifies a list of null-terminated character strings. .IP \fIlist_return\fP 1i Returns a list of null-terminated character strings. .IP \fItext_prop\fP 1i Specifies the .B XTextProperty structure to be used. .IP \fItext_prop_return\fP 1i Returns the .B XTextProperty structure. .SH DESCRIPTION The .B XStringListToTextProperty function sets the specified .B XTextProperty to be of type STRING (format 8) with a value representing the concatenation of the specified list of null-separated character strings. An extra null byte (which is not included in the nitems member) is stored at the end of the value field of text_prop_return. The strings are assumed (without verification) to be in the STRING encoding. If insufficient memory is available for the new value string, .B XStringListToTextProperty does not set any fields in the .B XTextProperty structure and returns a zero status. Otherwise, it returns a nonzero status. To free the storage for the value field, use .BR XFree . .LP The .B XTextPropertyToStringList function returns a list of strings representing the null-separated elements of the specified .B XTextProperty structure. The data in text_prop must be of type STRING and format 8. Multiple elements of the property (for example, the strings in a disjoint text selection) are separated by NULL (encoding 0). The contents of the property are not null-terminated. If insufficient memory is available for the list and its elements, .B XTextPropertyToStringList sets no return values and returns a zero status. Otherwise, it returns a nonzero status. To free the storage for the list and its contents, use .BR XFreeStringList . .LP The .B XFreeStringList function releases memory allocated by .BR XmbTextPropertyToTextList , .B Xutf8TextPropertyToTextList and .B XTextPropertyToStringList and the missing charset list allocated by .BR XCreateFontSet . .SH STRUCTURES The .B XTextProperty structure contains: .LP .EX typedef struct { unsigned char *value; /\&* property data */ Atom encoding; /\&* type of property */ int format; /\&* 8, 16, or 32 */ unsigned long nitems; /\&* number of items in value */ } XTextProperty; .EE .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocIconSize(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XAllocWMHints(__libmansuffix__), XFree(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XSetWMProtocols(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XCreatePixmapCursor.man0000644014310600000120000000007314763154126013505 .so man__libmansuffix__/XCreateFontCursor.__libmansuffix__ libX11-1.8.12/man/XwcDrawText.man0000644014310600000120000000006514763154126012022 .so man__libmansuffix__/XmbDrawText.__libmansuffix__ libX11-1.8.12/man/XmbTextPerCharExtents.man0000644014310600000120000001550014763154126014011 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Copyright \(co 2000 The XFree86 Project, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XmbTextPerCharExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbTextPerCharExtents, XwcTextPerCharExtents, Xutf8TextPerCharExtents \- obtain per-character information for a text string .SH SYNTAX .HP Status XmbTextPerCharExtents\^(\^XFontSet \fIfont_set\fP\^, _Xconst char *\fIstring\fP\^, int \fInum_bytes\fP\^, XRectangle *\fIink_array_return\fP\^, XRectangle *\fIlogical_array_return\fP\^, int \fIarray_size\fP\^, int *\fInum_chars_return\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle *\fIoverall_logical_return\fP\^); .HP Status XwcTextPerCharExtents\^(\^XFontSet \fIfont_set\fP\^, _Xconst wchar_t *\fIstring\fP\^, int \fInum_wchars\fP\^, XRectangle *\fIink_array_return\fP\^, XRectangle *\fIlogical_array_return\fP, int \fIarray_size\fP\^, int *\fInum_chars_return\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle *\fIoverall_logical_return\fP\^); .HP Status Xutf8TextPerCharExtents\^(\^XFontSet \fIfont_set\fP\^, _Xconst char *\fIstring\fP\^, int \fInum_bytes\fP\^, XRectangle *\fIink_array_return\fP\^, XRectangle *\fIlogical_array_return\fP\^, int \fIarray_size\fP\^, int *\fInum_chars_return\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle *\fIoverall_logical_return\fP\^); .SH ARGUMENTS .IP \fIarray_size\fP 1i Specifies the size of ink_array_return and logical_array_return. The caller must pass in arrays of this size. .IP \fIfont_set\fP 1i Specifies the font set. .IP \fIink_array_return\fP 1i Returns the ink dimensions for each character. .IP \fIlogical_array_return\fP 1i Returns the logical dimensions for each character. .IP \fInum_bytes\fP 1i Specifies the number of bytes in the string argument. .IP \fInum_chars_return\fP 1i Returns the number of characters in the string argument. .IP \fInum_wchars\fP 1i Specifies the number of characters in the string argument. .IP \fIoverall_ink_return\fP 1i Returns the overall ink extents of the entire string. .IP \fIoverall_logical_return\fP 1i Returns the overall logical extents of the entire string. .IP \fIstring\fP 1i Specifies the character string. .SH DESCRIPTION The .BR XmbTextPerCharExtents , .B XwcTextPerCharExtents and .B Xutf8TextPerCharExtents functions return the text dimensions of each character of the specified text, using the fonts loaded for the specified font set. Each successive element of ink_array_return and logical_array_return is set to the successive character's drawn metrics, relative to the drawing origin of the string and one rectangle for each character in the supplied text string. The number of elements of ink_array_return and logical_array_return that have been set is returned to num_chars_return. .LP Each element of ink_array_return is set to the bounding box of the corresponding character's drawn foreground color. Each element of logical_array_return is set to the bounding box that provides minimum spacing to other graphical features for the corresponding character. Other graphical features should not intersect any of the logical_array_return rectangles. .LP Note that an .B XRectangle represents the effective drawing dimensions of the character, regardless of the number of font glyphs that are used to draw the character or the direction in which the character is drawn. If multiple characters map to a single character glyph, the dimensions of all the .B XRectangles of those characters are the same. .LP When the .B XFontSet has missing charsets, metrics for each unavailable character are taken from the default string returned by .B XCreateFontSet so that the metrics represent the text as it will actually be drawn. The behavior for an invalid codepoint is undefined. .LP If the array_size is too small for the number of characters in the supplied text, the functions return zero and num_chars_return is set to the number of rectangles required. Otherwise, the functions return a nonzero value. .LP If the overall_ink_return or overall_logical_return argument is non-NULL, .BR XmbTextPerCharExtents , .B XwcTextPerCharExtents and .B Xutf8TextPerCharExtents return the maximum extent of the string's metrics to overall_ink_return or overall_logical_return, as returned by .BR XmbTextExtents , .B XwcTextExtents or .BR Xutf8TextExtents . .LP The function .B Xutf8TextPerCharExtents is an extension introduced by The XFree86 Project, Inc., in their 4.0.2 release. Its presence is indicated by the macro .BR X_HAVE_UTF8_STRING . .SH "SEE ALSO" XmbTextEscapement(__libmansuffix__), XmbTextExtents(__libmansuffix__) \fI\*(xL\fP libX11-1.8.12/man/XmbDrawImageString.man0000644014310600000120000001120614763154126013273 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Copyright \(co 2000 The XFree86 Project, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XmbDrawImageString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbDrawImageString, XwcDrawImageString, Xutf8DrawImageString \- draw image text using a single font set .SH SYNTAX .HP void XmbDrawImageString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, _Xconst char *\fIstring\fP\^, int \fInum_bytes\fP\^); .HP void XwcDrawImageString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, _Xconst wchar_t *\fIstring\fP\^, int \fInum_wchars\fP\^); .HP void Xutf8DrawImageString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, _Xconst char *\fIstring\fP\^, int \fInum_bytes\fP\^); .SH ARGUMENTS .IP \fId\fP 1i Specifies the drawable. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIfont_set\fP 1i Specifies the font set. .IP \fIgc\fP 1i Specifies the GC. .IP \fInum_bytes\fP 1i Specifies the number of bytes in the string argument. .IP \fInum_wchars\fP 1i Specifies the number of characters in the string argument. .IP \fIstring\fP 1i Specifies the character string. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates. .SH DESCRIPTION The .BR XmbDrawImageString , .B XwcDrawImageString and .B Xutf8DrawImageString functions fill a destination rectangle with the background pixel defined in the GC and then paint the text with the foreground pixel. The filled rectangle is the rectangle returned to overall_logical_return by .BR XmbTextExtents , .B XwcTextExtents or .B Xutf8TextExtents for the same text and .BR XFontSet . .LP When the .B XFontSet has missing charsets, each unavailable character is drawn with the default string returned by .BR XCreateFontSet . The behavior for an invalid codepoint is undefined. .LP The function .B Xutf8TextExtents is an extension introduced by The XFree86 Project, Inc., in their 4.0.2 release. Its presence is indicated by the macro .BR X_HAVE_UTF8_STRING . .SH "SEE ALSO" XDrawImageString(__libmansuffix__), XDrawString(__libmansuffix__), XDrawText(__libmansuffix__), XmbDrawString(__libmansuffix__), XmbDrawText(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XGetModifierMapping.man0000644014310600000120000000010014763154126013426 .so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ libX11-1.8.12/man/WidthOfScreen.man0000644014310600000120000000007414763154126012302 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XGetWindowAttributes.man0000644014310600000120000002314614763154126013711 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual '\" t .TH XGetWindowAttributes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGetWindowAttributes, XGetGeometry, XWindowAttributes \- get current window attribute or geometry and current window attributes structure .SH SYNTAX .HP Status XGetWindowAttributes\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, XWindowAttributes *\fIwindow_attributes_return\fP\^); .HP Status XGetGeometry\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, Window *\fIroot_return\fP\^, int *\fIx_return\fP\^, int *\fIy_return\fP\^, unsigned int *\fIwidth_return\fP\^, unsigned int *\fIheight_return\fP\^, unsigned int *\fIborder_width_return\fP\^, unsigned int *\fIdepth_return\fP\^); .SH ARGUMENTS .IP \fIborder_width_return\fP 1i Returns the border width in pixels. .IP \fId\fP 1i Specifies the drawable, which can be a window or a pixmap. .IP \fIdepth_return\fP 1i Returns the depth of the drawable (bits per pixel for the object). .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIroot_return\fP 1i Returns the root window. .ds Wi .IP \fIw\fP 1i Specifies the window whose current attributes you want to obtain. .IP \fIwidth_return\fP 1i .br .ns .IP \fIheight_return\fP 1i Return the drawable's dimensions (width and height). .IP \fIwindow_attributes_return\fP 1i Returns the specified window's attributes in the .B XWindowAttributes structure. .IP \fIx_return\fP 1i .br .ns .IP \fIy_return\fP 1i Return the x and y coordinates that define the location of the drawable. For a window, these coordinates specify the upper-left outer corner relative to its parent's origin. For pixmaps, these coordinates are always zero. .SH DESCRIPTION The .B XGetWindowAttributes function returns the current attributes for the specified window to an .B XWindowAttributes structure. It returns a nonzero status on success; otherwise, it returns a zero status. .LP .B XGetWindowAttributes can generate .B BadDrawable and .B BadWindow errors. .LP The .B XGetGeometry function returns the root window and the current geometry of the drawable. The geometry of the drawable includes the x and y coordinates, width and height, border width, and depth. These are described in the argument list. It is legal to pass to this function a window whose class is .BR InputOnly . It returns a nonzero status on success; otherwise, it returns a zero status. .SH STRUCTURES The .B XWindowAttributes structure contains: .LP .EX typedef struct { int x, y; /\&* location of window */ int width, height; /\&* width and height of window */ int border_width; /\&* border width of window */ int depth; /\&* depth of window */ Visual *visual; /\&* the associated visual structure */ Window root; /\&* root of screen containing window */ int class; /\&* InputOutput, InputOnly*/ int bit_gravity; /\&* one of the bit gravity values */ int win_gravity; /\&* one of the window gravity values */ int backing_store; /\&* NotUseful, WhenMapped, Always */ unsigned long backing_planes; /\&* planes to be preserved if possible */ unsigned long backing_pixel; /\&* value to be used when restoring planes */ Bool save_under; /\&* boolean, should bits under be saved? */ Colormap colormap; /\&* color map to be associated with window */ Bool map_installed; /\&* boolean, is color map currently installed*/ int map_state; /\&* IsUnmapped, IsUnviewable, IsViewable */ long all_event_masks; /\&* set of events all people have interest in*/ long your_event_mask; /\&* my event mask */ long do_not_propagate_mask; /\&* set of events that should not propagate */ Bool override_redirect; /\&* boolean value for override-redirect */ Screen *screen; /\&* back pointer to correct screen */ } XWindowAttributes; .EE .LP The x and y members are set to the upper-left outer corner relative to the parent window's origin. The width and height members are set to the inside size of the window, not including the border. The border_width member is set to the window's border width in pixels. The depth member is set to the depth of the window (that is, bits per pixel for the object). The visual member is a pointer to the screen's associated .B Visual structure. The root member is set to the root window of the screen containing the window. The class member is set to the window's class and can be either .B InputOutput or .BR InputOnly . .LP The bit_gravity member is set to the window's bit gravity and can be one of the following: .LP .TS lw(1.5i) lw(1.5i). T{ .B ForgetGravity T} T{ .B EastGravity T} T{ .B NorthWestGravity T} T{ .B SouthWestGravity T} T{ .B NorthGravity T} T{ .B SouthGravity T} T{ .B NorthEastGravity T} T{ .B SouthEastGravity T} T{ .B WestGravity T} T{ .B StaticGravity T} .B CenterGravity .TE .LP The win_gravity member is set to the window's window gravity and can be one of the following: .LP .TS lw(1.5i) lw(1.5i). T{ .B UnmapGravity T} T{ .B EastGravity T} T{ .B NorthWestGravity T} T{ .B SouthWestGravity T} T{ .B NorthGravity T} T{ .B SouthGravity T} T{ .B NorthEastGravity T} T{ .B SouthEastGravity T} T{ .B WestGravity T} T{ .B StaticGravity T} .B CenterGravity .TE .LP For additional information on gravity, see section 3.3. .LP The backing_store member is set to indicate how the X server should maintain the contents of a window and can be .BR WhenMapped , .BR Always , or .BR NotUseful . The backing_planes member is set to indicate (with bits set to 1) which bit planes of the window hold dynamic data that must be preserved in backing_stores and during save_unders. The backing_pixel member is set to indicate what values to use for planes not set in backing_planes. .LP The save_under member is set to .B True or .BR False . The colormap member is set to the colormap for the specified window and can be a colormap ID or .BR None . The map_installed member is set to indicate whether the colormap is currently installed and can be .B True or .BR False . The map_state member is set to indicate the state of the window and can be .BR IsUnmapped , .BR IsUnviewable , or .BR IsViewable . .B IsUnviewable is used if the window is mapped but some ancestor is unmapped. .LP The all_event_masks member is set to the bitwise inclusive OR of all event masks selected on the window by all clients. The your_event_mask member is set to the bitwise inclusive OR of all event masks selected by the querying client. The do_not_propagate_mask member is set to the bitwise inclusive OR of the set of events that should not propagate. .LP The override_redirect member is set to indicate whether this window overrides structure control facilities and can be .B True or .BR False . Window manager clients should ignore the window if this member is .BR True . .LP The screen member is set to a screen pointer that gives you a back pointer to the correct screen. This makes it easier to obtain the screen information without having to loop over the root window fields to see which field matches. .SH DIAGNOSTICS .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XQueryPointer(__libmansuffix__), XQueryTree(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XrmEnumerateDatabase.man0000644014310600000120000001177614763154126013652 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual '\" t .TH XrmEnumerateDatabase __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmEnumerateDatabase \- enumerate resource database entries .SH SYNTAX .HP #include .TS lw(.5i) lw(2i) lw(2.5i). T{ \&#define T} T{ .B XrmEnumAllLevels T} T{ 0 T} T{ \&#define T} T{ .B XrmEnumOneLevel T} T{ 1 T} .TE .HP Bool XrmEnumerateDatabase\^(\^XrmDatabase \fIdatabase\fP\^, XrmNameList \fIname_prefix\fP\^, XrmClassList \fIclass_prefix\fP\^, int \fImode\fP\^, Bool (\^*\fIproc\fP\^)\^(\^)\^, XPointer \fIarg\fP\^); .SH ARGUMENTS .IP \fIdatabase\fP 1i Specifies the resource database. .IP \fIname_prefix\fP 1i Specifies the resource name prefix. .IP \fIclass_prefix\fP 1i Specifies the resource class prefix. .IP \fImode\fP 1i Specifies the number of levels to enumerate. .IP \fIproc\fP 1i Specifies the procedure that is to be called for each matching entry. .IP \fIarg\fP 1i Specifies the user-supplied argument that will be passed to the procedure. .SH DESCRIPTION The .B XrmEnumerateDatabase function calls the specified procedure for each resource in the database that would match some completion of the given name/class resource prefix. The order in which resources are found is implementation-dependent. If mode is .BR XrmEnumOneLevel , a resource must match the given name/class prefix with just a single name and class appended. If mode is .BR XrmEnumAllLevels , the resource must match the given name/class prefix with one or more names and classes appended. If the procedure returns .BR True , the enumeration terminates and the function returns .BR True . If the procedure always returns .BR False , all matching resources are enumerated and the function returns .BR False . .LP The procedure is called with the following arguments: .LP .\" Start marker code here .EX (*\fIproc\fP\^)(\^\fIdatabase\fP, \fIbindings\fP, \fIquarks\fP, \fItype\fP, \fIvalue\fP, \fIarg\fP\^) XrmDatabase *\fIdatabase\fP\^; XrmBindingList \fIbindings\fP\^; XrmQuarkList \fIquarks\fP\^; XrmRepresentation *\fItype\fP\^; XrmValue *\fIvalue\fP\^; XPointer \fIarg\fP\^; .EE .\" End marker code here .LP The bindings and quarks lists are terminated by .BR NULLQUARK . Note that pointers to the database and type are passed, but these values should not be modified. .LP The procedure must not modify the database. If Xlib has been initialized for threads, the procedure is called with the database locked and the result of a call by the procedure to any Xlib function using the same database is not defined. .SH "SEE ALSO" XrmGetResource(__libmansuffix__), XrmInitialize(__libmansuffix__), XrmPutResource(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XMatchVisualInfo.man0000644014310600000120000000007014763154126012756 .so man__libmansuffix__/XGetVisualInfo.__libmansuffix__ libX11-1.8.12/man/XGetPixel.man0000644014310600000120000000006414763154126011446 .so man__libmansuffix__/XInitImage.__libmansuffix__ libX11-1.8.12/man/XrmQGetResource.man0000644014310600000120000000007014763154126012631 .so man__libmansuffix__/XrmGetResource.__libmansuffix__ libX11-1.8.12/man/XPropertyEvent.man0000644014310600000120000001310114763154126012547 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XPropertyEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XPropertyEvent \- PropertyNotify event structure .SH STRUCTURES The structure for .B PropertyNotify events contains: .LP .EX typedef struct { int type; /\&* PropertyNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; Atom atom; Time time; int state; /\&* PropertyNewValue or PropertyDelete */ } XPropertyEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The window member is set to the window whose associated property was changed. The atom member is set to the property's atom and indicates which property was changed or desired. The time member is set to the server time when the property was changed. The state member is set to indicate whether the property was changed to a new value or deleted and can be .B PropertyNewValue or .BR PropertyDelete . The state member is set to .B PropertyNewValue when a property of the window is changed using .B XChangeProperty or .B XRotateWindowProperties (even when adding zero-length data using .BR XChangeProperty ) and when replacing all or part of a property with identical data using .B XChangeProperty or .BR XRotateWindowProperties . The state member is set to .B PropertyDelete when a property of the window is deleted using .B XDeleteProperty or, if the delete argument is .BR True , .BR XGetWindowProperty . .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGetWindowProperty(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XRotateWindowProperties.man0000644014310600000120000000007414763154126014431 .so man__libmansuffix__/XGetWindowProperty.__libmansuffix__ libX11-1.8.12/man/XQueryTree.man0000644014310600000120000000763714763154126011667 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XQueryTree __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XQueryTree \- query window tree information .SH SYNTAX .HP Status XQueryTree\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window *\fIroot_return\fP\^, Window *\fIparent_return\fP\^, Window **\fIchildren_return\fP\^, unsigned int *\fInchildren_return\fP\^); .SH ARGUMENTS .IP \fIchildren_return\fP 1i Returns the list of children. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fInchildren_return\fP 1i Returns the number of children. .IP \fIparent_return\fP 1i Returns the parent window. .IP \fIroot_return\fP 1i Returns the root window. .IP \fIw\fP 1i Specifies the window whose list of children, root, parent, and number of children you want to obtain. .SH DESCRIPTION The .B XQueryTree function returns the root ID, the parent window ID, a pointer to the list of children windows (NULL when there are no children), and the number of children in the list for the specified window. The children are listed in current stacking order, from bottom-most (first) to top-most (last). .B XQueryTree returns zero if it fails and nonzero if it succeeds. To free a non-NULL children list when it is no longer needed, use .BR XFree . .LP .B XQueryTree can generate a .B BadWindow error. .SH BUGS This really should return a screen *, not a root window ID. .SH DIAGNOSTICS .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XFree(__libmansuffix__), XGetWindowAttributes(__libmansuffix__), XQueryPointer(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XRotateBuffers.man0000644014310600000120000000006514763154126012501 .so man__libmansuffix__/XStoreBytes.__libmansuffix__ libX11-1.8.12/man/XWMHints.man0000644014310600000120000000006714763154126011261 .so man__libmansuffix__/XAllocWMHints.__libmansuffix__ libX11-1.8.12/man/XChangeWindowAttributes.man0000644014310600000120000002310214763154126014347 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XChangeWindowAttributes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XChangeWindowAttributes, XSetWindowBackground, XSetWindowBackgroundPixmap, XSetWindowBorder, XSetWindowBorderPixmap, XSetWindowColormap \- change window attributes .SH SYNTAX .HP int XChangeWindowAttributes\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned long \fIvaluemask\fP\^, XSetWindowAttributes *\fIattributes\fP\^); .HP int XSetWindowBackground\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned long \fIbackground_pixel\fP\^); .HP int XSetWindowBackgroundPixmap\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Pixmap \fIbackground_pixmap\fP\^); .HP int XSetWindowBorder\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned long \fIborder_pixel\fP\^); .HP int XSetWindowBorderPixmap\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Pixmap \fIborder_pixmap\fP\^); .HP int XSetWindowColormap\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Colormap \fIcolormap\fP\^); .SH ARGUMENTS .IP \fIattributes\fP 1i Specifies the structure from which the values (as specified by the value mask) are to be taken. The value mask should have the appropriate bits set to indicate which attributes have been set in the structure. .IP \fIbackground_pixel\fP 1i Specifies the pixel that is to be used for the background. .IP \fIbackground_pixmap\fP 1i Specifies the background pixmap, .BR ParentRelative , or .BR None . .IP \fIborder_pixel\fP 1i Specifies the entry in the colormap. .IP \fIborder_pixmap\fP 1i Specifies the border pixmap or .BR CopyFromParent . .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIvaluemask\fP 1i Specifies which window attributes are defined in the attributes argument. This mask is the bitwise inclusive OR of the valid attribute mask bits. If valuemask is zero, the attributes are ignored and are not referenced. .IP \fIw\fP 1i Specifies the window. .IP \fIcolormap\fP 1i Specifies the colormap. .SH DESCRIPTION Depending on the valuemask, the .B XChangeWindowAttributes function uses the window attributes in the .B XSetWindowAttributes structure to change the specified window attributes. Changing the background does not cause the window contents to be changed. To repaint the window and its background, use .BR XClearWindow . Setting the border or changing the background such that the border tile origin changes causes the border to be repainted. Changing the background of a root window to .B None or .B ParentRelative restores the default background pixmap. Changing the border of a root window to .B CopyFromParent restores the default border pixmap. Changing the win-gravity does not affect the current position of the window. Changing the backing-store of an obscured window to .B WhenMapped or .BR Always , or changing the backing-planes, backing-pixel, or save-under of a mapped window may have no immediate effect. Changing the colormap of a window (that is, defining a new map, not changing the contents of the existing map) generates a .B ColormapNotify event. Changing the colormap of a visible window may have no immediate effect on the screen because the map may not be installed (see .BR XInstallColormap ). Changing the cursor of a root window to .B None restores the default cursor. Whenever possible, you are encouraged to share colormaps. .LP Multiple clients can select input on the same window. Their event masks are maintained separately. When an event is generated, it is reported to all interested clients. However, only one client at a time can select for .BR SubstructureRedirectMask , .BR ResizeRedirectMask , and .BR ButtonPressMask . If a client attempts to select any of these event masks and some other client has already selected one, a .B BadAccess error results. There is only one do-not-propagate-mask for a window, not one per client. .LP .B XChangeWindowAttributes can generate .BR BadAccess , .BR BadColor , .BR BadCursor , .BR BadMatch , .BR BadPixmap , .BR BadValue , and .B BadWindow errors. .LP The .B XSetWindowBackground function sets the background of the window to the specified pixel value. Changing the background does not cause the window contents to be changed. .B XSetWindowBackground uses a pixmap of undefined size filled with the pixel value you passed. If you try to change the background of an .B InputOnly window, a .B BadMatch error results. .LP .B XSetWindowBackground can generate .B BadMatch and .B BadWindow errors. .LP The .B XSetWindowBackgroundPixmap function sets the background pixmap of the window to the specified pixmap. The background pixmap can immediately be freed if no further explicit references to it are to be made. If .B ParentRelative is specified, the background pixmap of the window's parent is used, or on the root window, the default background is restored. If you try to change the background of an .B InputOnly window, a .B BadMatch error results. If the background is set to .BR None , the window has no defined background. .LP .B XSetWindowBackgroundPixmap can generate .BR BadMatch , .BR BadPixmap , and .B BadWindow errors. .LP The .B XSetWindowBorder function sets the border of the window to the pixel value you specify. If you attempt to perform this on an .B InputOnly window, a .B BadMatch error results. .LP .B XSetWindowBorder can generate .B BadMatch and .B BadWindow errors. .LP The .B XSetWindowBorderPixmap function sets the border pixmap of the window to the pixmap you specify. The border pixmap can be freed immediately if no further explicit references to it are to be made. If you specify .BR CopyFromParent , a copy of the parent window's border pixmap is used. If you attempt to perform this on an .B InputOnly window, a .B BadMatch error results. .LP .B XSetWindowBorderPixmap can generate .BR BadMatch , .BR BadPixmap , and .B BadWindow errors. .LP The .B XSetWindowColormap function sets the specified colormap of the specified window. The colormap must have the same visual type as the window, or a .B BadMatch error results. .LP .B XSetWindowColormap can generate .BR BadColor , .BR BadMatch , and .B BadWindow errors. .SH DIAGNOSTICS .TP 1i .B BadAccess A client attempted to free a color map entry that it did not already allocate. .TP 1i .B BadAccess A client attempted to store into a read-only color map entry. .TP 1i .B BadColor A value for a Colormap argument does not name a defined Colormap. .TP 1i .B BadCursor A value for a Cursor argument does not name a defined Cursor. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadMatch An .B InputOnly window locks this attribute. .TP 1i .B BadPixmap A value for a Pixmap argument does not name a defined Pixmap. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XConfigureWindow(__libmansuffix__), XCreateWindow(__libmansuffix__), XDestroyWindow(__libmansuffix__), XInstallColormap(__libmansuffix__), XMapWindow(__libmansuffix__), XRaiseWindow(__libmansuffix__), XUnmapWindow(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XListFonts.man0000644014310600000120000001505214763154126011655 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XListFonts __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XListFonts, XFreeFontNames, XListFontsWithInfo, XFreeFontInfo \- obtain or free font names and information .SH SYNTAX .HP char **XListFonts\^(\^Display *\^\fIdisplay\fP\^, _Xconst char *\^\fIpattern\fP\^, int \fImaxnames\fP\^, int *\^\fIactual_count_return\fP\^); .HP int XFreeFontNames\^(\^char *\fIlist\fP\^[\^]\^); .HP char **XListFontsWithInfo\^(\^Display *\fIdisplay\fP\^, _Xconst char *\fIpattern\fP\^, int \fImaxnames\fP\^, int *\fIcount_return\fP\^, XFontStruct **\fIinfo_return\fP\^); .HP int XFreeFontInfo(\^char **\fInames\fP\^, XFontStruct *\fIfree_info\fP, int \fIactual_count\fP\^); .SH ARGUMENTS .IP \fIactual_count\fP 1i Specifies the actual number of font names. .IP \fIactual_count_return\fP 1i Returns the actual number of font names. .IP \fIcount_return\fP 1i Returns the actual number of matched font names. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIinfo_return\fP 1i Returns the font information. .IP \fIfree_info\fP 1i Specifies the font information. .IP \fIlist\fP 1i Specifies the array of strings you want to free. .IP \fImaxnames\fP 1i Specifies the maximum number of names to be returned. .IP \fInames\fP 1i Specifies the list of font names. .IP \fIpattern\fP 1i Specifies the null-terminated pattern string that can contain wildcard characters. .SH DESCRIPTION The .B XListFonts function returns an array of available font names (as controlled by the font search path; see .BR XSetFontPath ) that match the string you passed to the pattern argument. The pattern string can contain any characters, but each asterisk (*) is a wildcard for any number of characters, and each question mark (?) is a wildcard for a single character. If the pattern string is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. Each returned string is null-terminated. If the data returned by the server is in the Latin Portable Character Encoding, then the returned strings are in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. If there are no matching font names, .B XListFonts returns NULL. The client should call .B XFreeFontNames when finished with the result to free the memory. .LP The .B XFreeFontNames function frees the array and strings returned by .B XListFonts or .BR XListFontsWithInfo . .LP The .B XListFontsWithInfo function returns a list of font names that match the specified pattern and their associated font information. The list of names is limited to size specified by maxnames. The information returned for each font is identical to what .B XLoadQueryFont would return except that the per-character metrics are not returned. The pattern string can contain any characters, but each asterisk (*) is a wildcard for any number of characters, and each question mark (?) is a wildcard for a single character. If the pattern string is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. Each returned string is null-terminated. If the data returned by the server is in the Latin Portable Character Encoding, then the returned strings are in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. If there are no matching font names, .B XListFontsWithInfo returns NULL. .LP To free only the allocated name array, the client should call .BR XFreeFontNames . To free both the name array and the font information array or to free just the font information array, the client should call .BR XFreeFontInfo . .LP The .B XFreeFontInfo function frees a font structure or an array of font structures and optionally an array of font names. If NULL is passed for names, no font names are freed. If a font structure for an open font (returned by .BR XLoadQueryFont ) is passed, the structure is freed, but the font is not closed; use .B XUnloadFont to close the font. .LP Note that .B XListFontsWithInfo is not thread-safe. If other threads make X requests on the same .BR Display , then this function's behavior is undefined. .SH "SEE ALSO" XLoadFont(__libmansuffix__), XSetFontPath(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XAnyEvent.man0000644014310600000120000001510414763154126011457 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XAnyEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAnyEvent, XEvent \- generic X event structures .SH STRUCTURES All the event structures declared in .RB < X11/Xlib.h > have the following common members: .EX typedef struct { int type; unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; } XAnyEvent; .EE .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The .B XEvent structure is a union of the individual structures declared for each event type: .EX typedef union _XEvent { int type; /\&* must not be changed */ XAnyEvent xany; XKeyEvent xkey; XButtonEvent xbutton; XMotionEvent xmotion; XCrossingEvent xcrossing; XFocusChangeEvent xfocus; XExposeEvent xexpose; XGraphicsExposeEvent xgraphicsexpose; XNoExposeEvent xnoexpose; XVisibilityEvent xvisibility; XCreateWindowEvent xcreatewindow; XDestroyWindowEvent xdestroywindow; XUnmapEvent xunmap; XMapEvent xmap; XMapRequestEvent xmaprequest; XReparentEvent xreparent; XConfigureEvent xconfigure; XGravityEvent xgravity; XResizeRequestEvent xresizerequest; XConfigureRequestEvent xconfigurerequest; XCirculateEvent xcirculate; XCirculateRequestEvent xcirculaterequest; XPropertyEvent xproperty; XSelectionClearEvent xselectionclear; XSelectionRequestEvent xselectionrequest; XSelectionEvent xselection; XColormapEvent xcolormap; XClientMessageEvent xclient; XMappingEvent xmapping; XErrorEvent xerror; XKeymapEvent xkeymap; long pad[24]; } XEvent; .EE .LP An .B XEvent structure's first entry always is the type member, which is set to the event type. The second member always is the serial number of the protocol request that generated the event. The third member always is send_event, which is a .B Bool that indicates if the event was sent by a different client. The fourth member always is a display, which is the display that the event was read from. Except for keymap events, the fifth member always is a window, which has been carefully selected to be useful to toolkit dispatchers. To avoid breaking toolkits, the order of these first five entries is not to change. Most events also contain a time member, which is the time at which an event occurred. In addition, a pointer to the generic event must be cast before it is used to access any other information in the structure. .SH "SEE ALSO" XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XcmsCIELuvQueryMinL.man0000644014310600000120000000007514763154126013327 .so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__ libX11-1.8.12/man/XFreeExtensionList.man0000644014310600000120000000007114763154126013335 .so man__libmansuffix__/XQueryExtension.__libmansuffix__ libX11-1.8.12/man/XUnionRectWithRegion.man0000644014310600000120000000007214763154126013632 .so man__libmansuffix__/XIntersectRegion.__libmansuffix__ libX11-1.8.12/man/XConfigureWindow.man0000644014310600000120000002343514763154126013045 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual '\" t .TH XConfigureWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XConfigureWindow, XMoveWindow, XResizeWindow, XMoveResizeWindow, XSetWindowBorderWidth, XWindowChanges \- configure windows and window changes structure .SH SYNTAX .HP int XConfigureWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned \fIvalue_mask\fP\^, \^XWindowChanges *\fIchanges\fP\^); .HP int XMoveWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIx\fP\^, \fIy\fP\^); .HP int XResizeWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned \fIwidth\fP\^, unsigned \fIheight\fP\^); .HP int XMoveResizeWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned \fIwidth\fP\^, unsigned \fIheight\fP\^); .HP int XSetWindowBorderWidth\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned \fIwidth\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIvalue_mask\fP 1i Specifies which values are to be set using information in the values structure. This mask is the bitwise inclusive OR of the valid configure window values bits. .IP \fIvalues\fP 1i Specifies the .B XWindowChanges structure. .IP \fIw\fP 1i Specifies the window to be reconfigured, moved, or resized.. .IP \fIwidth\fP 1i Specifies the width of the window border. .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height, which are the interior dimensions of the window. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates, which define the new location of the top-left pixel of the window's border or the window itself if it has no border or define the new position of the window relative to its parent. .SH DESCRIPTION The .B XConfigureWindow function uses the values specified in the .B XWindowChanges structure to reconfigure a window's size, position, border, and stacking order. Values not specified are taken from the existing geometry of the window. .LP If a sibling is specified without a stack_mode or if the window is not actually a sibling, a .B BadMatch error results. Note that the computations for .BR BottomIf , .BR TopIf , and .B Opposite are performed with respect to the window's final geometry (as controlled by the other arguments passed to .BR XConfigureWindow ), not its initial geometry. Any backing store contents of the window, its inferiors, and other newly visible windows are either discarded or changed to reflect the current screen contents (depending on the implementation). .LP .B XConfigureWindow can generate .BR BadMatch , .BR BadValue , and .B BadWindow errors. .LP The .B XMoveWindow function moves the specified window to the specified x and y coordinates, but it does not change the window's size, raise the window, or change the mapping state of the window. Moving a mapped window may or may not lose the window's contents depending on if the window is obscured by nonchildren and if no backing store exists. If the contents of the window are lost, the X server generates .B Expose events. Moving a mapped window generates .B Expose events on any formerly obscured windows. .LP If the override-redirect flag of the window is .B False and some other client has selected .B SubstructureRedirectMask on the parent, the X server generates a .B ConfigureRequest event, and no further processing is performed. Otherwise, the window is moved. .LP .B XMoveWindow can generate a .B BadWindow error. .LP The .B XResizeWindow function changes the inside dimensions of the specified window, not including its borders. This function does not change the window's upper-left coordinate or the origin and does not restack the window. Changing the size of a mapped window may lose its contents and generate .B Expose events. If a mapped window is made smaller, changing its size generates .B Expose events on windows that the mapped window formerly obscured. .LP If the override-redirect flag of the window is .B False and some other client has selected .B SubstructureRedirectMask on the parent, the X server generates a .B ConfigureRequest event, and no further processing is performed. If either width or height is zero, a .B BadValue error results. .LP .B XResizeWindow can generate .B BadValue and .B BadWindow errors. .LP The .B XMoveResizeWindow function changes the size and location of the specified window without raising it. Moving and resizing a mapped window may generate an .B Expose event on the window. Depending on the new size and location parameters, moving and resizing a window may generate .B Expose events on windows that the window formerly obscured. .LP If the override-redirect flag of the window is .B False and some other client has selected .B SubstructureRedirectMask on the parent, the X server generates a .B ConfigureRequest event, and no further processing is performed. Otherwise, the window size and location are changed. .LP .B XMoveResizeWindow can generate .B BadValue and .B BadWindow errors. .LP The .B XSetWindowBorderWidth function sets the specified window's border width to the specified width. .LP .B XSetWindowBorderWidth can generate a .B BadWindow error. .SH STRUCTURES The .B XWindowChanges structure contains: .LP .LP /\&* Configure window value mask bits */ .TS lw(.5i) lw(2.5i) lw(.8i). T{ \&#define T} T{ .B CWX T} T{ (1<<0) T} T{ \&#define T} T{ .B CWY T} T{ (1<<1) T} T{ \&#define T} T{ .B CWWidth T} T{ (1<<2) T} T{ \&#define T} T{ .B CWHeight T} T{ (1<<3) T} T{ \&#define T} T{ .B CWBorderWidth T} T{ (1<<4) T} T{ \&#define T} T{ .B CWSibling T} T{ (1<<5) T} T{ \&#define T} T{ .B CWStackMode T} T{ (1<<6) T} .TE .EX /\&* Values */ typedef struct { int x, y; int width, height; int border_width; Window sibling; int stack_mode; } XWindowChanges; .EE .LP The x and y members are used to set the window's x and y coordinates, which are relative to the parent's origin and indicate the position of the upper-left outer corner of the window. The width and height members are used to set the inside size of the window, not including the border, and must be nonzero, or a .B BadValue error results. Attempts to configure a root window have no effect. .LP The border_width member is used to set the width of the border in pixels. Note that setting just the border width leaves the outer-left corner of the window in a fixed position but moves the absolute position of the window's origin. If you attempt to set the border-width attribute of an .B InputOnly window nonzero, a .B BadMatch error results. .LP The sibling member is used to set the sibling window for stacking operations. The stack_mode member is used to set how the window is to be restacked and can be set to .BR Above , .BR Below , .BR TopIf , .BR BottomIf , or .BR Opposite . .SH DIAGNOSTICS .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XChangeWindowAttributes(__libmansuffix__), XCreateWindow(__libmansuffix__), XDestroyWindow(__libmansuffix__), XMapWindow(__libmansuffix__), XRaiseWindow(__libmansuffix__), XUnmapWindow(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XOpenIM.man0000644014310600000120000001723014763154126011057 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XOpenIM __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XOpenIM, XCloseIM, XSetIMValues, XGetIMValues, XDisplayOfIM, XLocaleOfIM, XRegisterIMInstantiateCallback, XUnregisterIMInstantiateCallback \- open, close, and obtain input method information .SH SYNTAX .HP XIM XOpenIM\^(\^Display *\fIdisplay\fP\^, XrmDatabase \fIdb\fP\^, char *\fIres_name\fP\^, char *\fIres_class\fP\^); .HP Status XCloseIM\^(\^XIM \fIim\fP\^); .HP char *XSetIMValues\^(\^XIM \fIim\fP\^, ...); .HP char *XGetIMValues\^(\^XIM \fIim\fP\^, ...); .HP Display *XDisplayOfIM\^(\^XIM \fIim\fP\^); .HP char *XLocaleOfIM\^(\^XIM \fIim\fP\^); .HP Bool XRegisterIMInstantiateCallback\^(\^Display *\fIdisplay\fP\^, XrmDatabase \fIdb\fP\^, char *\fIres_name\fP\^, char *\fIres_class\fP\^, XIDProc \fIcallback\fP\^, XPointer \fIclient_data\fP\^); .HP Bool XUnregisterIMInstantiateCallback\^(\^Display *\fIdisplay\fP\^, XrmDatabase \fIdb\fP\^, char *\fIres_name\fP\^, char *\fIres_class\fP\^, XIDProc \fIcallback\fP\^, XPointer \fIclient_data\fP\^); .LP .SH ARGUMENTS .IP \fIcallback\fP 1i Specifies a pointer to the input method instantiate callback. .IP \fIclient_data\fP 1i Specifies the additional client data. .IP \fIdb\fP 1i Specifies a pointer to the resource database. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIim\fP 1i Specifies the input method. .IP \fIres_class\fP 1i Specifies the full class name of the application. .IP \fIres_name\fP 1i Specifies the full resource name of the application. .IP ... 1i Specifies the variable length argument list to set or get XIM values. .SH DESCRIPTION The .B XOpenIM function opens an input method, matching the current locale and modifiers specification. Current locale and modifiers are bound to the input method at opening time. The locale associated with an input method cannot be changed dynamically. This implies that the strings returned by .B XmbLookupString or .BR XwcLookupString , for any input context affiliated with a given input method will be encoded in the locale current at the time the input method is opened. .LP The specific input method to which this call will be routed is identified on the basis of the current locale. .B XOpenIM will identify a default input method corresponding to the current locale. That default can be modified using .B XSetLocaleModifiers for the input method modifier. .LP The db argument is the resource database to be used by the input method for looking up resources that are private to the input method. It is not intended that this database be used to look up values that can be set as IC values in an input context. If db is NULL, no database is passed to the input method. .LP The res_name and res_class arguments specify the resource name and class of the application. They are intended to be used as prefixes by the input method when looking up resources that are common to all input contexts that may be created for this input method. The characters used for resource names and classes must be in the X Portable Character Set. The resources looked up are not fully specified if res_name or res_class is NULL. .LP The res_name and res_class arguments are not assumed to exist beyond the call to .BR XOpenIM . The specified resource database is assumed to exist for the lifetime of the input method. .LP .B XOpenIM returns NULL if no input method could be opened. .LP The .B XCloseIM function closes the specified input method and frees the memory pointed to by the im argument. .LP The .B XSetIMValues function presents a variable argument list programming interface for setting attributes of the specified input method. It returns NULL if it succeeds; otherwise, it returns the name of the first argument that could not be set. Xlib does not attempt to set arguments from the supplied list that follow the failed argument; all arguments in the list preceding the failed argument have been set correctly. .LP The .B XGetIMValues function presents a variable argument list programming interface for querying properties or features of the specified input method. This function returns NULL if it succeeds; otherwise, it returns the name of the first argument that could not be obtained. .LP Each XIM value argument (following a name) must point to a location where the XIM value is to be stored. That is, if the XIM value is of type T, the argument must be of type T*. If T itself is a pointer type, then .B XGetIMValues allocates memory to store the actual data, and the client is responsible for freeing this data by calling .B XFree with the returned pointer. .LP The .B XDisplayOfIM function returns the display associated with the specified input method. .LP The .B XLocaleOfIM function returns the locale associated with the specified input method. .LP The .B XRegisterIMInstantiateCallback function registers a callback to be invoked whenever a new input method becomes available for the specified display that matches the current locale and modifiers. .LP The function returns .B True if it succeeds; otherwise, it returns .BR False . .LP The .B XUnregisterIMInstantiateCallback function removes an input method instantiation callback previously registered. The function returns .B True if it succeeds; otherwise, it returns .BR False . .SH "SEE ALSO" XCreateIC(__libmansuffix__), XSetICFocus(__libmansuffix__), XSetICValues(__libmansuffix__), XmbResetIC(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XrmStringToQuark.man0000644014310600000120000000007014763154126013036 .so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__ libX11-1.8.12/man/XcmsCIELuvQueryMaxL.man0000644014310600000120000000007514763154126013331 .so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__ libX11-1.8.12/man/XSegment.man0000644014310600000120000000006314763154126011326 .so man__libmansuffix__/XDrawLine.__libmansuffix__ libX11-1.8.12/man/DisplayWidthMM.man0000644014310600000120000000007014763154126012431 .so man__libmansuffix__/ImageByteOrder.__libmansuffix__ libX11-1.8.12/man/XrmQPutResource.man0000644014310600000120000000007014763154126012662 .so man__libmansuffix__/XrmPutResource.__libmansuffix__ libX11-1.8.12/man/XFreeEventData.man0000644014310600000120000000006714763154126012405 .so man__libmansuffix__/XGetEventData.__libmansuffix__ libX11-1.8.12/man/XShrinkRegion.man0000644014310600000120000000007214763154126012326 .so man__libmansuffix__/XIntersectRegion.__libmansuffix__ libX11-1.8.12/man/XAllocSizeHints.man0000644014310600000120000002553014763154126012625 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface, \fRO'Reilly and Associates, .ds xC Inter-Client Communication Conventions Manual '\" t .TH XAllocSizeHints __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllocSizeHints, XSetWMNormalHints, XGetWMNormalHints, XSetWMSizeHints, XGetWMSizeHints, XSizeHints \- allocate size hints structure and set or read a window's WM_NORMAL_HINTS property .SH SYNTAX .HP XSizeHints *XAllocSizeHints\^(void\^); .HP void XSetWMNormalHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XSizeHints *\fIhints\fP\^); .HP Status XGetWMNormalHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XSizeHints *\fIhints_return\fP, long *\fIsupplied_return\fP\^); .HP void XSetWMSizeHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XSizeHints *\fIhints\fP, Atom \fIproperty\fP\^); .HP Status XGetWMSizeHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XSizeHints *\fIhints_return\fP, long *\fIsupplied_return\fP, Atom \fIproperty\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIhints\fP 1i Specifies the size hints for the window in its normal state. .IP \fIhints\fP 1i Specifies the .B XSizeHints structure to be used. .IP \fIhints_return\fP 1i Returns the size hints for the window in its normal state. .IP \fIproperty\fP 1i Specifies the property name. .IP \fIsupplied_return\fP 1i Returns the hints that were supplied by the user. .IP \fIw\fP 1i Specifies the window. .SH DESCRIPTION The .B XAllocSizeHints function allocates and returns a pointer to a .B XSizeHints structure. Note that all fields in the .B XSizeHints structure are initially set to zero. If insufficient memory is available, .B XAllocSizeHints returns NULL. To free the memory allocated to this structure, use .BR XFree . .LP The .B XSetWMNormalHints function replaces the size hints for the WM_NORMAL_HINTS property on the specified window. If the property does not already exist, .B XSetWMNormalHints sets the size hints for the WM_NORMAL_HINTS property on the specified window. The property is stored with a type of WM_SIZE_HINTS and a format of 32. .LP .B XSetWMNormalHints can generate .B BadAlloc and .B BadWindow errors. .LP The .B XGetWMNormalHints function returns the size hints stored in the WM_NORMAL_HINTS property on the specified window. If the property is of type WM_SIZE_HINTS, is of format 32, and is long enough to contain either an old (pre-ICCCM) or new size hints structure, .B XGetWMNormalHints sets the various fields of the .B XSizeHints structure, sets the supplied_return argument to the list of fields that were supplied by the user (whether or not they contained defined values), and returns a nonzero status. Otherwise, it returns a zero status. .LP If .B XGetWMNormalHints returns successfully and a pre-ICCCM size hints property is read, the supplied_return argument will contain the following bits: .LP .EX (USPosition|USSize|PPosition|PSize|PMinSize| PMaxSize|PResizeInc|PAspect) .EE .LP If the property is large enough to contain the base size and window gravity fields as well, the supplied_return argument will also contain the following bits: .LP .EX PBaseSize|PWinGravity .EE .LP .B XGetWMNormalHints can generate a PN BadWindow error. .LP The .B XSetWMSizeHints function replaces the size hints for the specified property on the named window. If the specified property does not already exist, .B XSetWMSizeHints sets the size hints for the specified property on the named window. The property is stored with a type of WM_SIZE_HINTS and a format of 32. To set a window's normal size hints, you can use the .B XSetWMNormalHints function. .LP .B XSetWMSizeHints can generate .BR BadAlloc , .BR BadAtom , and .B BadWindow errors. .LP The .B XGetWMSizeHints function returns the size hints stored in the specified property on the named window. If the property is of type WM_SIZE_HINTS, is of format 32, and is long enough to contain either an old (pre-ICCCM) or new size hints structure, .B XGetWMSizeHints sets the various fields of the .B XSizeHints structure, sets the supplied_return argument to the list of fields that were supplied by the user (whether or not they contained defined values), and returns a nonzero status. Otherwise, it returns a zero status. To get a window's normal size hints, you can use the .B XGetWMNormalHints function. .LP If .B XGetWMSizeHints returns successfully and a pre-ICCCM size hints property is read, the supplied_return argument will contain the following bits: .LP .EX (USPosition|USSize|PPosition|PSize|PMinSize| PMaxSize|PResizeInc|PAspect) .EE .LP If the property is large enough to contain the base size and window gravity fields as well, the supplied_return argument will also contain the following bits: .LP .EX PBaseSize|PWinGravity .EE .LP .B XGetWMSizeHints can generate .B BadAtom and .B BadWindow errors. .SH PROPERTIES .TP 1i \s-1WM_NORMAL_HINTS\s+1 Size hints for a window in its normal state. The C type of this property is .BR XSizeHints . .SH STRUCTURES The .B XSizeHints structure contains: .LP .na /\&* Size hints mask bits */ .TS lw(.4i) lw(1.0i) lw(1.1i) lw(2.8i). T{ \&#define T} T{ .B USPosition T} T{ (1L << 0) T} T{ /\&* user specified x, y */ T} T{ \&#define T} T{ .B USSize T} T{ (1L << 1) T} T{ /\&* user specified width, height */ T} T{ \&#define T} T{ .B PPosition T} T{ (1L << 2) T} T{ /\&* program specified position */ T} T{ \&#define T} T{ .B PSize T} T{ (1L << 3) T} T{ /\&* program specified size */ T} T{ \&#define T} T{ .B PMinSize T} T{ (1L << 4) T} T{ /\&* program specified minimum size */ T} T{ \&#define T} T{ .B PMaxSize T} T{ (1L << 5) T} T{ /\&* program specified maximum size */ T} T{ \&#define T} T{ .B PResizeInc T} T{ (1L << 6) T} T{ /\&* program specified resize increments */ T} T{ \&#define T} T{ .B PAspect T} T{ (1L << 7) T} T{ /\&* program specified min and max aspect ratios */ T} T{ \&#define T} T{ .B PBaseSize T} T{ (1L << 8) T} T{ \&#define T} T{ .B PWinGravity T} T{ (1L << 9) T} T{ \&#define T} T{ .B PAllHints T} T{ (PPosition| .br PSize| .br PMinSize| .br PMaxSize| .br PResizeInc| .br PAspect) T} T{ T} .TE .ad .EX /\&* Values */ typedef struct { long flags; /\&* marks which fields in this structure are defined */ int x, y; /\&* Obsolete */ int width, height; /\&* Obsolete */ int min_width, min_height; int max_width, max_height; int width_inc, height_inc; struct { int x; /\&* numerator */ int y; /\&* denominator */ } min_aspect, max_aspect; int base_width, base_height; int win_gravity; /\&* this structure may be extended in the future */ } XSizeHints; .EE .LP The x, y, width, and height members are now obsolete and are left solely for compatibility reasons. The min_width and min_height members specify the minimum window size that still allows the application to be useful. The max_width and max_height members specify the maximum window size. The width_inc and height_inc members define an arithmetic progression of sizes (minimum to maximum) into which the window prefers to be resized. The min_aspect and max_aspect members are expressed as ratios of x and y, and they allow an application to specify the range of aspect ratios it prefers. The base_width and base_height members define the desired size of the window. The window manager will interpret the position of the window and its border width to position the point of the outer rectangle of the overall window specified by the win_gravity member. The outer rectangle of the window includes any borders or decorations supplied by the window manager. In other words, if the window manager decides to place the window where the client asked, the position on the parent window's border named by the win_gravity will be placed where the client window would have been placed in the absence of a window manager. .LP Note that use of the .B PAllHints macro is highly discouraged. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadAtom A value for an Atom argument does not name a defined Atom. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocIconSize(__libmansuffix__), XAllocWMHints(__libmansuffix__), XFree(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XSetWMProtocols(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/ScreenWhitePointOfCCC.man0000644014310600000120000000006614763154126013627 .so man__libmansuffix__/DisplayOfCCC.__libmansuffix__ libX11-1.8.12/man/XGetScreenSaver.man0000644014310600000120000000007114763154126012603 .so man__libmansuffix__/XSetScreenSaver.__libmansuffix__ libX11-1.8.12/man/XInternalConnectionNumbers.man0000644014310600000120000000007514763154126015057 .so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__ libX11-1.8.12/man/XCheckTypedEvent.man0000644014310600000120000000006414763154126012752 .so man__libmansuffix__/XNextEvent.__libmansuffix__ libX11-1.8.12/man/XSetTSOrigin.man0000644014310600000120000000006214763154126012075 .so man__libmansuffix__/XSetTile.__libmansuffix__ libX11-1.8.12/man/XDrawLine.man0000644014310600000120000001570014763154126011435 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XDrawLine __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawLine, XDrawLines, XDrawSegments, XSegment \- draw lines, polygons, and line structure .SH SYNTAX .HP int XDrawLine\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx1\fP\^, int \fIy1\fP\^, int \fIx2\fP\^, int \fIy2\fP\^); .HP int XDrawLines\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, XPoint *\fIpoints\fP\^, int \fInpoints\fP\^, int \fImode\fP\^); .HP int XDrawSegments\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, XSegment *\fIsegments\fP\^, int \fInsegments\fP\^); .SH ARGUMENTS .IP \fId\fP 1i Specifies the drawable. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fImode\fP 1i Specifies the coordinate mode. You can pass .B CoordModeOrigin or .BR CoordModePrevious . .IP \fInpoints\fP 1i Specifies the number of points in the array. .IP \fInsegments\fP 1i Specifies the number of segments in the array. .IP \fIpoints\fP 1i Specifies an array of points. .IP \fIsegments\fP 1i Specifies an array of segments. .IP \fIx1\fP 1i .br .ns .IP \fIy1\fP 1i .br .ns .IP \fIx2\fP 1i .br .ns .IP \fIy2\fP 1i Specify the points (x1, y1) and (x2, y2) to be connected. .SH DESCRIPTION The .B XDrawLine function uses the components of the specified GC to draw a line between the specified set of points (x1, y1) and (x2, y2). It does not perform joining at coincident endpoints. For any given line, .B XDrawLine does not draw a pixel more than once. If lines intersect, the intersecting pixels are drawn multiple times. .LP The .B XDrawLines function uses the components of the specified GC to draw npoints\-1 lines between each pair of points (point[i], point[i+1]) in the array of .B XPoint structures. It draws the lines in the order listed in the array. The lines join correctly at all intermediate points, and if the first and last points coincide, the first and last lines also join correctly. For any given line, .B XDrawLines does not draw a pixel more than once. If thin (zero line-width) lines intersect, the intersecting pixels are drawn multiple times. If wide lines intersect, the intersecting pixels are drawn only once, as though the entire .B PolyLine protocol request were a single, filled shape. .B CoordModeOrigin treats all coordinates as relative to the origin, and .B CoordModePrevious treats all coordinates after the first as relative to the previous point. .LP The .B XDrawSegments function draws multiple, unconnected lines. For each segment, .B XDrawSegments draws a line between (x1, y1) and (x2, y2). It draws the lines in the order listed in the array of .B XSegment structures and does not perform joining at coincident endpoints. For any given line, .B XDrawSegments does not draw a pixel more than once. If lines intersect, the intersecting pixels are drawn multiple times. .LP All three functions use these GC components: function, plane-mask, line-width, line-style, cap-style, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. The .B XDrawLines function also uses the join-style GC component. All three functions also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, and dash-list. .LP .BR XDrawLine , .BR XDrawLines , and .B XDrawSegments can generate .BR BadDrawable , .BR BadGC , and .B BadMatch errors. .B XDrawLines can also generate a .B BadValue error. .SH STRUCTURES The .B XSegment structure contains: .LP .EX typedef struct { short x1, y1, x2, y2; } XSegment; .EE .LP All x and y members are signed integers. The width and height members are 16-bit unsigned integers. You should be careful not to generate coordinates and sizes out of the 16-bit ranges, because the protocol only has 16-bit fields for these values. .SH DIAGNOSTICS .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XDrawArc(__libmansuffix__), XDrawPoint(__libmansuffix__), XDrawRectangle(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XGetMotionEvents.man0000644014310600000120000000006414763154126013017 .so man__libmansuffix__/XSendEvent.__libmansuffix__ libX11-1.8.12/man/ServerVendor.man0000644014310600000120000000006314763154126012220 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XGrabButton.man0000644014310600000120000001653014763154126012001 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XGrabButton __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGrabButton, XUngrabButton \- grab pointer buttons .SH SYNTAX .HP int XGrabButton\^(\^Display *\fIdisplay\fP\^, unsigned int \fIbutton\fP\^, unsigned int \fImodifiers\fP\^, Window \fIgrab_window\fP\^, Bool \fIowner_events\fP\^, unsigned int \fIevent_mask\fP\^, int \fIpointer_mode\fP\^, \fIkeyboard_mode\fP\^, Window \fIconfine_to\fP\^, Cursor \fIcursor\fP\^); .HP int XUngrabButton\^(\^Display *\fIdisplay\fP\^, unsigned int \fIbutton\fP\^, unsigned int \fImodifiers\fP\^, Window \fIgrab_window\fP\^); .SH ARGUMENTS .IP \fIbutton\fP 1i Specifies the pointer button that is to be grabbed or released or .BR AnyButton . .IP \fIconfine_to\fP 1i Specifies the window to confine the pointer in or .BR None . .IP \fIcursor\fP 1i Specifies the cursor that is to be displayed or .BR None . .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIevent_mask\fP 1i Specifies which pointer events are reported to the client. The mask is the bitwise inclusive OR of the valid pointer event mask bits. .IP \fIgrab_window\fP 1i Specifies the grab window. .IP \fIkeyboard_mode\fP 1i Specifies further processing of keyboard events. You can pass .B GrabModeSync or .BR GrabModeAsync . .IP \fImodifiers\fP 1i Specifies the set of keymasks or .BR AnyModifier . The mask is the bitwise inclusive OR of the valid keymask bits. .IP \fIowner_events\fP 1i Specifies a Boolean value that indicates whether the pointer events are to be reported as usual or reported with respect to the grab window if selected by the event mask. .IP \fIpointer_mode\fP 1i Specifies further processing of pointer events. You can pass .B GrabModeSync or .BR GrabModeAsync . .SH DESCRIPTION The .B XGrabButton function establishes a passive grab. In the future, the pointer is actively grabbed (as for .BR XGrabPointer ), the last-pointer-grab time is set to the time at which the button was pressed (as transmitted in the .B ButtonPress event), and the .B ButtonPress event is reported if all of the following conditions are true: .IP \(bu 5 The pointer is not grabbed, and the specified button is logically pressed when the specified modifier keys are logically down, and no other buttons or modifier keys are logically down. .IP \(bu 5 The grab_window contains the pointer. .IP \(bu 5 The confine_to window (if any) is viewable. .IP \(bu 5 A passive grab on the same button/key combination does not exist on any ancestor of grab_window. .LP The interpretation of the remaining arguments is as for .BR XGrabPointer . The active grab is terminated automatically when the logical state of the pointer has all buttons released (independent of the state of the logical modifier keys), at which point a .B ButtonRelease event is reported to the grabbing window. .LP Note that the logical state of a device (as seen by client applications) may lag the physical state if device event processing is frozen. .LP This request overrides all previous grabs by the same client on the same button/key combinations on the same window. A modifiers of .B AnyModifier is equivalent to issuing the grab request for all possible modifier combinations (including the combination of no modifiers). It is not required that all modifiers specified have currently assigned KeyCodes. A button of .B AnyButton is equivalent to issuing the request for all possible buttons. Otherwise, it is not required that the specified button currently be assigned to a physical button. .LP If some other client has already issued a .B XGrabButton with the same button/key combination on the same window, a .B BadAccess error results. When using .B AnyModifier or .BR AnyButton , the request fails completely, and a .B BadAccess error results (no grabs are established) if there is a conflicting grab for any combination. .B XGrabButton has no effect on an active grab. .LP .B XGrabButton can generate .BR BadCursor , .BR BadValue , and .B BadWindow errors. .LP The .B XUngrabButton function releases the passive button/key combination on the specified window if it was grabbed by this client. A modifiers of .B AnyModifier is equivalent to issuing the ungrab request for all possible modifier combinations, including the combination of no modifiers. A button of .B AnyButton is equivalent to issuing the request for all possible buttons. .B XUngrabButton has no effect on an active grab. .LP .B XUngrabButton can generate .B BadValue and .B BadWindow errors. .SH DIAGNOSTICS .TP 1i .B BadCursor A value for a Cursor argument does not name a defined Cursor. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllowEvents(__libmansuffix__), XGrabPointer(__libmansuffix__), XGrabKey(__libmansuffix__), XGrabKeyboard(__libmansuffix__), .br \fI\*(xL\fP libX11-1.8.12/man/XFilterEvent.man0000644014310600000120000000660414763154126012162 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XFilterEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFilterEvent \- filter X events for an input method .SH SYNTAX .HP Bool XFilterEvent\^(\^XEvent *\fIevent\fP\^, Window \fIw\fP\^); .SH ARGUMENTS .IP \fIevent\fP 1i Specifies the event to filter. .IP \fIw\fP 1i Specifies the window for which the filter is to be applied. .SH DESCRIPTION If the window argument is .BR None , .B XFilterEvent applies the filter to the window specified in the .B XEvent structure. The window argument is provided so that layers above Xlib that do event redirection can indicate to which window an event has been redirected. .LP If .B XFilterEvent returns .BR True , then some input method has filtered the event, and the client should discard the event. If .B XFilterEvent returns .BR False , then the client should continue processing the event. .LP If a grab has occurred in the client and .B XFilterEvent returns .BR True , the client should ungrab the keyboard. .SH "SEE ALSO" XNextEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetDashes.man0000644014310600000120000000007414763154126011611 .so man__libmansuffix__/XSetLineAttributes.__libmansuffix__ libX11-1.8.12/man/XFillRectangles.man0000644014310600000120000000007014763154126012620 .so man__libmansuffix__/XFillRectangle.__libmansuffix__ libX11-1.8.12/man/XmbTextPropertyToTextList.man0000644014310600000120000000010314763154126014733 .so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ libX11-1.8.12/man/XUnregisterIMInstantiateCallback.man0000644014310600000120000000006114763154126016120 .so man__libmansuffix__/XOpenIM.__libmansuffix__ libX11-1.8.12/man/XSetICValues.man0000644014310600000120000001165314763154126012062 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetICValues __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetICValues, XGetICValues \- set and obtain XIC values .SH SYNTAX .HP char * XSetICValues\^(\^XIC \fIic\fP, ...\^); .HP char * XGetICValues\^(\^XIC \fIic\fP, ...\^); .SH ARGUMENTS .IP \fIic\fP 1i Specifies the input context. .IP ... 1i Specifies the variable length argument list to set or get XIC values. .SH DESCRIPTION The .B XSetICValues function returns NULL if no error occurred; otherwise, it returns the name of the first argument that could not be set. An argument might not be set for any of the following reasons: .IP \(bu 5 The argument is read-only (for example, .BR XNFilterEvents ). .IP \(bu 5 The argument name is not recognized. .IP \(bu 5 An implementation-dependent error occurs. .LP Each value to be set must be an appropriate datum, matching the data type imposed by the semantics of the argument. .LP The .B XSetICValues can generate .BR BadAtom , .BR BadColor , .BR BadCursor , .BR BadPixmap , and .B BadWindow errors. .LP The .B XGetICValues function returns NULL if no error occurred; otherwise, it returns the name of the first argument that could not be obtained. An argument could not be obtained for any of the following reasons: .IP \(bu 5 The argument name is not recognized. .IP \(bu 5 The input method encountered an implementation-dependent error. .LP Each IC attribute value argument (following a name) must point to a location where the IC value is to be stored. That is, if the IC value is of type T, the argument must be of type T*. If T itself is a pointer type, then .B XGetICValues allocates memory to store the actual data, and the client is responsible for freeing this data by calling .B XFree with the returned pointer. The exception to this rule is for an IC value of type .B XNVaNestedList (for preedit and status attributes). In this case, the argument must also be of type .BR XVaNestedList . Then, the rule of changing type T to T* and freeing the allocated data applies to each element of the nested list. .SH DIAGNOSTICS .TP 1i .B BadAtom A value for an Atom argument does not name a defined Atom. .TP 1i .B BadColor A value for a Colormap argument does not name a defined Colormap. .TP 1i .B BadCursor A value for a Cursor argument does not name a defined Cursor. .TP 1i .B BadPixmap A value for a Pixmap argument does not name a defined Pixmap. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XCreateIC(__libmansuffix__), XOpenIM(__libmansuffix__), XSetICFocus(__libmansuffix__), XmbResetIC(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XFontSetExtents.man0000644014310600000120000000777414763154126012701 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XFontSetExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFontSetExtents \- XFontSetExtents structure .SH STRUCTURES The .B XFontSetExtents structure contains: .LP .EX typedef struct { XRectangle max_ink_extent; /\&* over all drawable characters */ XRectangle max_logical_extent; /\&* over all drawable characters */ } XFontSetExtents; .EE .LP The .B XRectangle structures used to return font set metrics are the usual Xlib screen-oriented rectangles with x, y giving the upper left corner, and width and height always positive. .LP The max_ink_extent member gives the maximum extent, over all drawable characters, of the rectangles that bound the character glyph image drawn in the foreground color, relative to a constant origin. See .B XmbTextExtents and .B XwcTextExtents for detailed semantics. .LP The max_logical_extent member gives the maximum extent, over all drawable characters, of the rectangles that specify minimum spacing to other graphical features, relative to a constant origin. Other graphical features drawn by the client, for example, a border surrounding the text, should not intersect this rectangle. The max_logical_extent member should be used to compute minimum interline spacing and the minimum area that must be allowed in a text field to draw a given number of arbitrary characters. .LP Due to context-dependent rendering, appending a given character to a string may change the string's extent by an amount other than that character's individual extent. .SH "SEE ALSO" XCreateFontSet(__libmansuffix__), XExtentsOfFontSet(__libmansuffix__), XFontsOfFontSet(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XEventsQueued.man0000644014310600000120000000006014763154126012336 .so man__libmansuffix__/XFlush.__libmansuffix__ libX11-1.8.12/man/XChangeKeyboardMapping.man0000644014310600000120000002506614763154126014120 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XChangeKeyboardMapping __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XChangeKeyboardMapping, XGetKeyboardMapping, XDisplayKeycodes, XSetModifierMapping, XGetModifierMapping, XNewModifiermap, XInsertModifiermapEntry, XDeleteModifiermapEntry, XFreeModifiermap, XModifierKeymap \- manipulate keyboard encoding and keyboard encoding structure .SH SYNTAX .HP int XChangeKeyboardMapping(\^Display *\fIdisplay\fP, int \fIfirst_keycode\fP, int \fIkeysyms_per_keycode\fP, KeySym *\fIkeysyms\fP, int \fInum_codes\fP\^); .HP KeySym *XGetKeyboardMapping(\^Display *\fIdisplay\fP, KeyCode \fIfirst_keycode\fP, int \fIkeycode_count\fP, int *\fIkeysyms_per_keycode_return\fP\^); .HP int XDisplayKeycodes\^(\^Display *\fIdisplay\fP\^, int *\fImin_keycodes_return\fP\^, int *\fImax_keycodes_return\fP\^); .HP int XSetModifierMapping(\^Display *\fIdisplay\fP, XModifierKeymap *\fImodmap\fP\^); .HP XModifierKeymap *XGetModifierMapping(\^Display *\fIdisplay\fP\^); .HP XModifierKeymap *XNewModifiermap(\^int \fImax_keys_per_mod\fP\^); .HP XModifierKeymap *XInsertModifiermapEntry\^(\^XModifierKeymap *\fImodmap\fP, KeyCode \fIkeycode_entry\fP, int \fImodifier\fP\^); .HP XModifierKeymap *XDeleteModifiermapEntry\^(\^XModifierKeymap *\fImodmap\fP, KeyCode \fIkeycode_entry\fP, int \fImodifier\fP\^); .HP int XFreeModifiermap(\^XModifierKeymap *\fImodmap\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIfirst_keycode\fP 1i Specifies the first KeyCode that is to be changed or returned. .IP \fIkeycode_count\fP 1i Specifies the number of KeyCodes that are to be returned. .IP \fIkeycode_entry\fP 1i Specifies the KeyCode. .IP \fIkeysyms\fP 1i Specifies an array of KeySyms. .IP \fIkeysyms_per_keycode\fP 1i Specifies the number of KeySyms per KeyCode. .IP \fIkeysyms_per_keycode_return\fP 1i Returns the number of KeySyms per KeyCode. .IP \fImax_keys_per_mod\fP 1i Specifies the number of KeyCode entries preallocated to the modifiers in the map. .IP \fImax_keycodes_return\fP 1i Returns the maximum number of KeyCodes. .IP \fImin_keycodes_return\fP 1i Returns the minimum number of KeyCodes. .IP \fImodifier\fP 1i Specifies the modifier. .IP \fImodmap\fP 1i Specifies the .B XModifierKeymap structure. .IP \fInum_codes\fP 1i Specifies the number of KeyCodes that are to be changed. .SH DESCRIPTION The .B XChangeKeyboardMapping function defines the symbols for the specified number of KeyCodes starting with first_keycode. The symbols for KeyCodes outside this range remain unchanged. The number of elements in keysyms must be: .LP .EX num_codes * keysyms_per_keycode .EE .LP The specified first_keycode must be greater than or equal to min_keycode returned by .BR XDisplayKeycodes , or a .B BadValue error results. In addition, the following expression must be less than or equal to max_keycode as returned by .BR XDisplayKeycodes , or a .B BadValue error results: .LP .EX first_keycode + num_codes \- 1 .EE .LP KeySym number N, counting from zero, for KeyCode K has the following index in keysyms, counting from zero: .LP .EX (K \- first_keycode) * keysyms_per_keycode + N .EE .LP The specified keysyms_per_keycode can be chosen arbitrarily by the client to be large enough to hold all desired symbols. A special KeySym value of .B NoSymbol should be used to fill in unused elements for individual KeyCodes. It is legal for .B NoSymbol to appear in nontrailing positions of the effective list for a KeyCode. .B XChangeKeyboardMapping generates a .B MappingNotify event. .LP There is no requirement that the X server interpret this mapping. It is merely stored for reading and writing by clients. .LP .B XChangeKeyboardMapping can generate .B BadAlloc and .B BadValue errors. .LP The .B XGetKeyboardMapping function returns the symbols for the specified number of KeyCodes starting with first_keycode. The value specified in first_keycode must be greater than or equal to min_keycode as returned by .BR XDisplayKeycodes , or a .B BadValue error results. In addition, the following expression must be less than or equal to max_keycode as returned by .BR XDisplayKeycodes : .LP .EX first_keycode + keycode_count \- 1 .EE .LP If this is not the case, a .B BadValue error results. The number of elements in the KeySyms list is: .LP .EX keycode_count * keysyms_per_keycode_return .EE .LP KeySym number N, counting from zero, for KeyCode K has the following index in the list, counting from zero: .EX (K \- first_code) * keysyms_per_code_return + N .EE .LP The X server arbitrarily chooses the keysyms_per_keycode_return value to be large enough to report all requested symbols. A special KeySym value of .B NoSymbol is used to fill in unused elements for individual KeyCodes. To free the storage returned by .BR XGetKeyboardMapping , use .BR XFree . .LP .B XGetKeyboardMapping can generate a .B BadValue error. .LP The .B XDisplayKeycodes function returns the min-keycodes and max-keycodes supported by the specified display. The minimum number of KeyCodes returned is never less than 8, and the maximum number of KeyCodes returned is never greater than 255. Not all KeyCodes in this range are required to have corresponding keys. .LP The .B XSetModifierMapping function specifies the KeyCodes of the keys (if any) that are to be used as modifiers. If it succeeds, the X server generates a .B MappingNotify event, and .B XSetModifierMapping returns .BR MappingSuccess . X permits at most 8 modifier keys. If more than 8 are specified in the .B XModifierKeymap structure, a .B BadLength error results. .LP The modifiermap member of the .B XModifierKeymap structure contains 8 sets of max_keypermod KeyCodes, one for each modifier in the order .BR Shift , .BR Lock , .BR Control , .BR Mod1 , .BR Mod2 , .BR Mod3 , .BR Mod4 , and .BR Mod5 . Only nonzero KeyCodes have meaning in each set, and zero KeyCodes are ignored. In addition, all of the nonzero KeyCodes must be in the range specified by min_keycode and max_keycode in the .B Display structure, or a .B BadValue error results. .LP An X server can impose restrictions on how modifiers can be changed, for example, if certain keys do not generate up transitions in hardware, if auto-repeat cannot be disabled on certain keys, or if multiple modifier keys are not supported. If some such restriction is violated, the status reply is .BR MappingFailed , and none of the modifiers are changed. If the new KeyCodes specified for a modifier differ from those currently defined and any (current or new) keys for that modifier are in the logically down state, .B XSetModifierMapping returns .BR MappingBusy , and none of the modifiers is changed. .LP .B XSetModifierMapping can generate .B BadAlloc and .B BadValue errors. .LP The .B XGetModifierMapping function returns a pointer to a newly created .B XModifierKeymap structure that contains the keys being used as modifiers. The structure should be freed after use by calling .BR XFreeModifiermap . If only zero values appear in the set for any modifier, that modifier is disabled. .LP The .B XNewModifiermap function returns a pointer to .B XModifierKeymap structure for later use. .LP The .B XInsertModifiermapEntry function adds the specified KeyCode to the set that controls the specified modifier and returns the resulting .B XModifierKeymap structure (expanded as needed). .LP The .B XDeleteModifiermapEntry function deletes the specified KeyCode from the set that controls the specified modifier and returns a pointer to the resulting .B XModifierKeymap structure. .LP The .B XFreeModifiermap function frees the specified .B XModifierKeymap structure. .SH STRUCTURES The .B XModifierKeymap structure contains: .LP .EX typedef struct { int max_keypermod; /\&* This server's max number of keys per modifier */ KeyCode *modifiermap; /\&* An 8 by max_keypermod array of the modifiers */ } XModifierKeymap; .EE .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XFree(__libmansuffix__), XkbGetMap(__libmansuffix__), XSetPointerMapping(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XGetPointerControl.man0000644014310600000120000000007714763154126013352 .so man__libmansuffix__/XChangePointerControl.__libmansuffix__ libX11-1.8.12/man/XcmsDefaultCCC.man0000644014310600000120000000635314763154126012334 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XcmsDefaultCCC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsDefaultCCC \- obtain the default CCC for a screen .SH SYNTAX .HP XcmsCCC XcmsDefaultCCC\^(\^Display *\fIdisplay\fP\^, int \fIscreen_number\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIscreen_number\fP 1i Specifies the appropriate screen number on the host server. .SH DESCRIPTION The .B XcmsDefaultCCC function returns the default CCC for the specified screen. Its visual is the default visual of the screen. Its initial gamut compression and white point adjustment procedures as well as the associated client data are implementation specific. .SH "SEE ALSO" DisplayOfCCC(__libmansuffix__), XcmsCCCOfColormap(__libmansuffix__), XcmsConvertColors(__libmansuffix__), XcmsCreateCCC(__libmansuffix__), XcmsSetWhitePoint(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XTextExtents16.man0000644014310600000120000000006614763154126012375 .so man__libmansuffix__/XTextExtents.__libmansuffix__ libX11-1.8.12/man/XPending.man0000644014310600000120000000006014763154126011305 .so man__libmansuffix__/XFlush.__libmansuffix__ libX11-1.8.12/man/XCirculateEvent.man0000644014310600000120000001212414763154126012642 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCirculateEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCirculateEvent \- CirculateNotify event structure .SH STRUCTURES The structure for .B CirculateNotify events contains: .LP .EX typedef struct { int type; /\&* CirculateNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window event; Window window; int place; /\&* PlaceOnTop, PlaceOnBottom */ } XCirculateEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The event member is set either to the restacked window or to its parent, depending on whether .B StructureNotify or .B SubstructureNotify was selected. The window member is set to the window that was restacked. The place member is set to the window's position after the restack occurs and is either .B PlaceOnTop or .BR PlaceOnBottom . If it is .BR PlaceOnTop , the window is now on top of all siblings. If it is .BR PlaceOnBottom , the window is now below all siblings. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XwcDrawImageString.man0000644014310600000120000000007414763154126013307 .so man__libmansuffix__/XmbDrawImageString.__libmansuffix__ libX11-1.8.12/man/XConvertSelection.man0000644014310600000120000000007414763154126013214 .so man__libmansuffix__/XSetSelectionOwner.__libmansuffix__ libX11-1.8.12/man/DisplayWidth.man0000644014310600000120000000007014763154126012177 .so man__libmansuffix__/ImageByteOrder.__libmansuffix__ libX11-1.8.12/man/XUngrabButton.man0000644014310600000120000000006514763154126012340 .so man__libmansuffix__/XGrabButton.__libmansuffix__ libX11-1.8.12/man/XCreatePixmap.man0000644014310600000120000001141314763154126012307 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCreatePixmap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreatePixmap, XFreePixmap \- create or destroy pixmaps .SH SYNTAX .HP Pixmap XCreatePixmap\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned int \fIdepth\fP\^); .HP int XFreePixmap\^(\^Display *\fIdisplay\fP\^, Pixmap \fIpixmap\fP\^); .SH ARGUMENTS .IP \fId\fP 1i Specifies which screen the pixmap is created on. .IP \fIdepth\fP 1i Specifies the depth of the pixmap. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIpixmap\fP 1i Specifies the pixmap. .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height, which define the dimensions of the pixmap. .SH DESCRIPTION The .B XCreatePixmap function creates a pixmap of the width, height, and depth you specified and returns a pixmap ID that identifies it. It is valid to pass an .B InputOnly window to the drawable argument. The width and height arguments must be nonzero, or a .B BadValue error results. The depth argument must be one of the depths supported by the screen of the specified drawable, or a .B BadValue error results. .LP The server uses the specified drawable to determine on which screen to create the pixmap. The pixmap can be used only on this screen and only with other drawables of the same depth (see .B XCopyPlane for an exception to this rule). The initial contents of the pixmap are undefined. .LP .B XCreatePixmap can generate .BR BadAlloc , .BR BadDrawable , and .B BadValue errors. .LP The .B XFreePixmap function first deletes the association between the pixmap ID and the pixmap. Then, the X server frees the pixmap storage when there are no references to it. The pixmap should never be referenced again. .LP .B XFreePixmap can generate a .B BadPixmap error. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadPixmap A value for a Pixmap argument does not name a defined Pixmap. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XCopyArea(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XcmsCIEXYZ.man0000644014310600000120000000006314763154126011442 .so man__libmansuffix__/XcmsColor.__libmansuffix__ libX11-1.8.12/man/XSetFontPath.man0000644014310600000120000001147014763154126012127 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetFontPath __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetFontPath, XGetFontPath, XFreeFontPath \- set, get, or free the font search path .SH SYNTAX int XSetFontPath\^(\^Display *\fIdisplay\fP\^, char **\fIdirectories\fP\^, int \fIndirs\fP\^); .HP char **XGetFontPath\^(\^Display *\fIdisplay\fP\^, int *\fInpaths_return\fP\^); .HP int XFreeFontPath\^(\^char **\fIlist\fP\^); .SH ARGUMENTS .IP \fIdirectories\fP 1i Specifies the directory path used to look for a font. Setting the path to the empty list restores the default path defined for the X server. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIlist\fP 1i Specifies the array of strings you want to free. .IP \fIndirs\fP 1i Specifies the number of directories in the path. .IP \fInpaths_return\fP 1i Returns the number of strings in the font path array. .SH DESCRIPTION The .B XSetFontPath function defines the directory search path for font lookup. There is only one search path per X server, not one per client. The encoding and interpretation of the strings are implementation-dependent, but typically they specify directories or font servers to be searched in the order listed. An X server is permitted to cache font information internally; for example, it might cache an entire font from a file and not check on subsequent opens of that font to see if the underlying font file has changed. However, when the font path is changed, the X server is guaranteed to flush all cached information about fonts for which there currently are no explicit resource IDs allocated. The meaning of an error from this request is implementation-dependent. .LP .B XSetFontPath can generate a .B BadValue error. .LP The .B XGetFontPath function allocates and returns an array of strings containing the search path. The contents of these strings are implementation-dependent and are not intended to be interpreted by client applications. When it is no longer needed, the data in the font path should be freed by using .BR XFreeFontPath . .LP The .B XFreeFontPath function frees the data allocated by .BR XGetFontPath . .SH DIAGNOSTICS .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XListFont(__libmansuffix__), XLoadFonts(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XQueryExtension.man0000644014310600000120000000575414763154126012742 .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc .\" .\" Rewritten for X.org by Chris Lee .\" .\" Permission to use, copy, modify, distribute, and sell this documentation .\" for any purpose and without fee is hereby granted, provided that the above .\" copyright notice and this permission notice appear in all copies. .\" Chris Lee makes no representations about the suitability for any purpose .\" of the information in this document. It is provided \`\`as-is\*(rq without .\" express or implied warranty. .\" .ds xL Programming with Xlib .TH XQueryExtension __libmansuffix__ __xorgversion__ "X FUNCTIONS" .SH NAME XQueryExtension, XListExtensions, XFreeExtensionList \- list available extensions .SH SYNTAX .HP Bool XQueryExtension(\^\fIdisplay, \fIname\fP, \fImajor_opcode_return\fP, \fIfirst_event_return\fP, \fIfirst_error_return\fP\^) .HP char **XListExtensions(\^\fIdisplay\fP, \fInextensions_return\fP\^) .HP XFreeExtensionList(\^\fIlist\fP\^) .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIname\fP 1i Specifies the extension name. .IP \fImajor_opcode_return\fP 1i Returns the major opcode. .IP \fIfirst_event_return\fP 1i Returns the first event code, if any. .IP \fIfirst_error_return\fP 1i Returns the first error code, if any. .IP \fInextensions_return\fP 1i Returns the number of extensions listed. .IP \fIlist\fP 1i Specifies the list of extension names. .SH DESCRIPTION .LP The \fIXQueryExtension\fP function determines if the named extension is present. If the extension is not present, \fIXQueryExtension\fP returns \fIFalse\fP; otherwise, it returns \fITrue\fP. If the extension is present, \fIXQueryExtension\fP returns the major opcode for the extension to major_opcode_return; otherwise, it returns zero. Any minor opcode and the request formats are specific to the extension. If the extension involves additional event types, \fIXQueryExtension\fP returns the base event type code to first_event_return; otherwise, it returns zero. The format of the events is specific to the extension. If the extension involves additional error codes, \fIXQueryExtension\fP returns the base error code to first_error_return; otherwise, it returns zero. The format of additional data in the errors is specific to the extension. If the extension name is not in the Host Portable Character Encoding the result is implementation-dependent. Uppercase and lowercase matter; the strings \*(lqthing\*(rq, \*(lqThing\*(rq, and \*(lqthinG\*(rq are all considered different names. .LP The \fIXListExtensions\fP function returns a list of all extensions supported by the server. If the data returned by the server is in the Latin Portable Character Encoding, then the returned strings are in the Host Portable Character Encoding. Otherwise, the result is implementation-dependent. .LP The \fIXFreeExtensionList\fP function frees the memory allocated by \fIXListExtensions\fP. libX11-1.8.12/man/XDeleteModifiermapEntry.man0000644014310600000120000000010014763154126014315 .so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ libX11-1.8.12/man/XmbDrawText.man0000644014310600000120000001306314763154126012011 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Copyright \(co 2000 The XFree86 Project, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XmbDrawText __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbDrawText, XwcDrawText, Xutf8DrawText \- draw text using multiple font sets .SH SYNTAX .HP void XmbDrawText\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XmbTextItem *\fIitems\fP\^, int \fInitems\fP\^); .HP void XwcDrawText\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XwcTextItem *\fIitems\fP\^, int \fInitems\fP\^); .HP void Xutf8DrawText\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XmbTextItem *\fIitems\fP\^, int \fInitems\fP\^); .SH ARGUMENTS .IP \fId\fP 1i Specifies the drawable. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fIitems\fP 1i Specifies an array of text items. .IP \fInitems\fP 1i Specifies the number of text items in the array. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates. .SH DESCRIPTION The .BR XmbDrawText , .B XwcDrawText and .B Xutf8DrawText functions allow complex spacing and font set shifts between text strings. Each text item is processed in turn, with the origin of a text element advanced in the primary draw direction by the escapement of the previous text item. A text item delta specifies an additional escapement of the text item drawing origin in the primary draw direction. A font_set member other than .B None in an item causes the font set to be used for this and subsequent text items in the text_items list. Leading text items with a font_set member set to .B None will not be drawn. .LP .BR XmbDrawText , .B XwcDrawText and .B Xutf8DrawText do not perform any context-dependent rendering between text segments. Clients may compute the drawing metrics by passing each text segment to .BR XmbTextExtents , .BR XwcTextExtents , .B Xutf8TextExtents or .BR XmbTextPerCharExtents , .BR XwcTextPerCharExtents . .BR Xutf8TextPerCharExtents . When the .B XFontSet has missing charsets, each unavailable character is drawn with the default string returned by .BR XCreateFontSet . The behavior for an invalid codepoint is undefined. .LP The function .B Xutf8DrawText is an extension introduced by The XFree86 Project, Inc., in their 4.0.2 release. Its presence is indicated by the macro .BR X_HAVE_UTF8_STRING . .SH STRUCTURES The .B XmbTextItem structure contains: .EX typedef struct { char *chars; /\&* pointer to string */ int nchars; /\&* number of bytes */ int delta; /\&* pixel delta between strings */ XFontSet font_set; /\&* fonts, None means don't change */ } XmbTextItem; .EE The .B XwcTextItem structure contains: .EX typedef struct { wchar_t *chars; /\&* pointer to wide char string */ int nchars; /\&* number of wide characters */ int delta; /\&* pixel delta between strings */ XFontSet font_set; /\&* fonts, None means don't change */ } XwcTextItem; .EE .SH "SEE ALSO" XDrawImageString(__libmansuffix__), XDrawString(__libmansuffix__), XDrawText(__libmansuffix__), XmbDrawImageString(__libmansuffix__), XmbDrawString(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetIMValues.man0000644014310600000120000000006114763154126012063 .so man__libmansuffix__/XOpenIM.__libmansuffix__ libX11-1.8.12/man/XParseGeometry.man0000644014310600000120000001540714763154126012522 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XParseGeometry __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XParseGeometry, XWMGeometry \- parse window geometry .SH SYNTAX .HP int XParseGeometry\^(\^_Xconst char *\fIparsestring\fP\^, int *\fIx_return\fP\^, int *\fIy_return\fP\^, unsigned int *\fIwidth_return\fP\^, unsigned int *\fIheight_return\fP\^); .HP int XWMGeometry\^(\^Display *\fIdisplay\fP\^, int \fIscreen\fP\^, _Xconst char *\fIuser_geom\fP\^, _Xconst char *\fIdef_geom\fP\^, unsigned int \fIbwidth\fP\^, XSizeHints *\fIhints\fP\^, int *\fIx_return\fP, int *\fIy_return\fP\^, int *\fIwidth_return\fP\^, int *\fIheight_return\fP\^, int *\fIgravity_return\fP\^); .SH ARGUMENTS .IP \fIposition\fP 1i .br .ns .IP \fIdefault_position\fP 1i Specify the geometry specifications. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIfheight\fP 1i .br .ns .IP \fIfwidth\fP 1i Specify the font height and width in pixels (increment size). .IP \fIparsestring\fP 1i Specifies the string you want to parse. .IP \fIscreen\fP 1i Specifies the screen. .IP \fIwidth_return\fP 1i .br .ns .IP \fIheight_return\fP 1i Return the width and height determined. .IP \fIxadder\fP 1i .br .ns .IP \fIyadder\fP 1i Specify additional interior padding needed in the window. .IP \fIx_return\fP 1i .br .ns .IP \fIy_return\fP 1i Return the x and y offsets. .IP \fIbwidth\fP 1i Specifies the border width. .IP \fIhints\fP 1i Specifies the size hints for the window in its normal state. .IP \fIdef_geom\fP 1i Specifies the application's default geometry or NULL. .IP \fIgravity_return\fP 1i Returns the window gravity. .IP \fIuser_geom\fP 1i Specifies the user-specified geometry or NULL. .SH DESCRIPTION By convention, X applications use a standard string to indicate window size and placement. .B XParseGeometry makes it easier to conform to this standard because it allows you to parse the standard window geometry. Specifically, this function lets you parse strings of the form: .LP .\" Start marker code here .EX [=][<\fIwidth\fP>{xX}<\fIheight\fP>][{+-}<\fIxoffset\fP>{+-}<\fIyoffset\fP>] .EE .\" End marker code here .LP The fields map into the arguments associated with this function. (Items enclosed in <\^> are integers, items in [\^] are optional, and items enclosed in {\^} indicate \*(lqchoose one of.\*(rq Note that the brackets should not appear in the actual string.) If the string is not in the Host Portable Character Encoding, the result is implementation-dependent. .LP The .B XParseGeometry function returns a bitmask that indicates which of the four values (width, height, xoffset, and yoffset) were actually found in the string and whether the x and y values are negative. By convention, \-0 is not equal to +0, because the user needs to be able to say \*(lqposition the window relative to the right or bottom edge.\*(rq For each value found, the corresponding argument is updated. For each value not found, the argument is left unchanged. The bits are represented by .BR XValue , .BR YValue , .BR WidthValue , .BR HeightValue , .BR XNegative , or .B YNegative and are defined in .BR X11/Xutil.h . They will be set whenever one of the values is defined or one of the signs is set. .LP If the function returns either the .B XValue or .B YValue flag, you should place the window at the requested position. .LP The .B XWMGeometry function combines any geometry information (given in the format used by .BR XParseGeometry ) specified by the user and by the calling program with size hints (usually the ones to be stored in WM_NORMAL_HINTS) and returns the position, size, and gravity .RB ( NorthWestGravity , .BR NorthEastGravity , .BR SouthEastGravity , or .BR SouthWestGravity ) that describe the window. If the base size is not set in the .B XSizeHints structure, the minimum size is used if set. Otherwise, a base size of zero is assumed. If no minimum size is set in the hints structure, the base size is used. A mask (in the form returned by .BR XParseGeometry ) that describes which values came from the user specification and whether or not the position coordinates are relative to the right and bottom edges is returned. Note that these coordinates will have already been accounted for in the x_return and y_return values. .LP Note that invalid geometry specifications can cause a width or height of zero to be returned. The caller may pass the address of the hints win_gravity field as gravity_return to update the hints directly. .SH "SEE ALSO" XSetWMProperties(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XLocaleOfOM.man0000644014310600000120000000006114763154126011642 .so man__libmansuffix__/XOpenOM.__libmansuffix__ libX11-1.8.12/man/XCopyPlane.man0000644014310600000120000000006314763154126011616 .so man__libmansuffix__/XCopyArea.__libmansuffix__ libX11-1.8.12/man/Xutf8ResetIC.man0000644014310600000120000000006414763154126012032 .so man__libmansuffix__/XmbResetIC.__libmansuffix__ libX11-1.8.12/man/XKeysymToKeycode.man0000644014310600000120000000007114763154126013013 .so man__libmansuffix__/XStringToKeysym.__libmansuffix__ libX11-1.8.12/man/XwcDrawString.man0000644014310600000120000000006714763154126012346 .so man__libmansuffix__/XmbDrawString.__libmansuffix__ libX11-1.8.12/man/DefaultScreen.man0000644014310600000120000000006314763154126012320 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XAllocNamedColor.man0000644014310600000120000000006514763154126012724 .so man__libmansuffix__/XAllocColor.__libmansuffix__ libX11-1.8.12/man/XmbLookupString.man0000644014310600000120000001627414763154126012716 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" Copyright \(co 2000 The XFree86 Project, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual '\" t .TH XmbLookupString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbLookupString, XwcLookupString, Xutf8LookupString \- obtain composed input from an input method .SH SYNTAX .HP int XmbLookupString\^(\^XIC \fIic\fP\^, XKeyPressedEvent *\fIevent\fP, char *\fIbuffer_return\fP\^, int \fIbytes_buffer\fP\^, KeySym *\fIkeysym_return\fP\^, Status *\fIstatus_return\fP\^); .HP int XwcLookupString\^(\^XIC \fIic\fP\^, XKeyPressedEvent *\fIevent\fP\^, wchar_t *\fIbuffer_return\fP\^, int \fIwchars_buffer\fP\^, KeySym *\fIkeysym_return\fP\^, Status *\fIstatus_return\fP\^); .HP int Xutf8LookupString\^(\^XIC \fIic\fP\^, XKeyPressedEvent *\fIevent\fP, char *\fIbuffer_return\fP\^, int \fIbytes_buffer\fP\^, KeySym *\fIkeysym_return\fP\^, Status *\fIstatus_return\fP\^); .SH ARGUMENTS .IP \fIbuffer_return\fP 1i Returns a multibyte string or wide character string (if any) from the input method. .IP \fIbytes_buffer\fP 1i .br .ns .IP \fIwchars_buffer\fP 1i Specifies space available in the return buffer. .IP \fIevent\fP 1i Specifies the key event to be used. .IP \fIic\fP 1i Specifies the input context. .IP \fIkeysym_return\fP 1i Returns the KeySym computed from the event if this argument is not NULL. .IP \fIstatus_return\fP 1i Returns a value indicating what kind of data is returned. .SH DESCRIPTION The .BR XmbLookupString , .B XwcLookupString and .B Xutf8LookupString functions return the string from the input method specified in the buffer_return argument. If no string is returned, the buffer_return argument is unchanged. .LP The KeySym into which the KeyCode from the event was mapped is returned in the keysym_return argument if it is non-NULL and the status_return argument indicates that a KeySym was returned. If both a string and a KeySym are returned, the KeySym value does not necessarily correspond to the string returned. .LP .B XmbLookupString and .B Xutf8LookupString return the length of the string in bytes, and .B XwcLookupString returns the length of the string in characters. Both .B XmbLookupString and .B XwcLookupString return text in the encoding of the locale bound to the input method of the specified input context, and .B Xutf8LookupString returns text in UTF-8 encoding. .LP Each string returned by .B XmbLookupString and .B XwcLookupString begins in the initial state of the encoding of the locale (if the encoding of the locale is state-dependent). .LP Note: To ensure proper input processing, it is essential that the client pass only .B KeyPress events to .BR XmbLookupString , .B XwcLookupString and .BR Xutf8LookupString . Their behavior when a client passes a .B KeyRelease event is undefined. .LP Clients should check the status_return argument before using the other returned values. These three functions each return a value to status_return that indicates what has been returned in the other arguments. The possible values returned are: .TS lw(1.3i) lw(4.3i). T{ .B XBufferOverflow T} T{ The input string to be returned is too large for the supplied buffer_return. The required size (for .BR XmbLookupString , .B Xutf8LookupString in bytes; for .B XwcLookupString in characters) is returned as the value of the function, and the contents of buffer_return and keysym_return are not modified. The client should recall the function with the same event and a buffer of adequate size to obtain the string. T} T{ .B XLookupNone T} T{ No consistent input has been composed so far. The contents of buffer_return and keysym_return are not modified, and the function returns zero. T} T{ .B XLookupChars T} T{ Some input characters have been composed. They are placed in the buffer_return argument, using the encoding described above, and the string length is returned as the value of the function. The content of the keysym_return argument is not modified. T} T{ .B XLookupKeySym T} T{ A KeySym has been returned instead of a string and is returned in keysym_return. The content of the buffer_return argument is not modified, and the function returns zero. T} T{ .B XLookupBoth T} T{ Both a KeySym and a string are returned; .B XLookupChars and .B XLookupKeySym occur simultaneously. T} .TE .LP It does not make any difference if the input context passed as an argument to .BR XmbLookupString , .B XwcLookupString and .B Xutf8LookupString is the one currently in possession of the focus or not. Input may have been composed within an input context before it lost the focus, and that input may be returned on subsequent calls to .BR XmbLookupString , .B XwcLookupString or .B Xutf8LookupString even though it does not have any more keyboard focus. .LP The function .B Xutf8LookupString is an extension introduced by The XFree86 Project, Inc., in their 4.0.2 release. Its presence is indicated by the macro .BR X_HAVE_UTF8_STRING . .SH "SEE ALSO" XLookupKeysym(__libmansuffix__), Compose(__filemansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XChangeKeyboardControl.man0000644014310600000120000002377314763154126014150 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual '\" t .TH XChangeKeyboardControl __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XChangeKeyboardControl, XGetKeyboardControl, XAutoRepeatOn, XAutoRepeatOff, XBell, XQueryKeymap, XKeyboardControl \- manipulate keyboard settings and keyboard control structure .SH SYNTAX .HP int XChangeKeyboardControl\^(\^Display *\fIdisplay\fP, unsigned long \fIvalue_mask\fP\^, XKeyboardControl *\fIvalues\fP\^); .HP int XGetKeyboardControl\^(\^Display *\fIdisplay\fP, XKeyboardState *\fIvalues_return\fP\^); .HP int XAutoRepeatOn\^(\^Display *\fIdisplay\fP\^); .HP int XAutoRepeatOff\^(\^Display *\fIdisplay\fP\^); .HP int XBell\^(\^Display *\fIdisplay\fP, int \fIpercent\fP\^); .HP int XQueryKeymap\^(\^Display *\fIdisplay\fP, char \fIkeys_return\fP[32]\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIkeys_return\fP 1i Returns an array of bytes that identifies which keys are pressed down. Each bit represents one key of the keyboard. .IP \fIpercent\fP 1i Specifies the volume for the bell, which can range from \-100 to 100 inclusive. .IP \fIvalue_mask\fP 1i Specifies which controls to change. This mask is the bitwise inclusive OR of the valid control mask bits. .IP \fIvalues\fP 1i Specifies one value for each bit set to 1 in the mask. .IP \fIvalues_return\fP 1i Returns the current keyboard controls in the specified .B XKeyboardState structure. .SH DESCRIPTION The .B XChangeKeyboardControl function controls the keyboard characteristics defined by the .B XKeyboardControl structure. The value_mask argument specifies which values are to be changed. .LP .B XChangeKeyboardControl can generate .B BadMatch and .B BadValue errors. .LP The .B XGetKeyboardControl function returns the current control values for the keyboard to the .B XKeyboardState structure. .LP The .B XAutoRepeatOn function turns on auto-repeat for the keyboard on the specified display. .LP The .B XAutoRepeatOff function turns off auto-repeat for the keyboard on the specified display. .LP The .B XBell function rings the bell on the keyboard on the specified display, if possible. The specified volume is relative to the base volume for the keyboard. If the value for the percent argument is not in the range \-100 to 100 inclusive, a .B BadValue error results. The volume at which the bell rings when the percent argument is nonnegative is: .IP base \- [(base * percent) / 100] + percent .LP The volume at which the bell rings when the percent argument is negative is: .IP base + [(base * percent) / 100] .LP To change the base volume of the bell, use .BR XChangeKeyboardControl . .LP .B XBell can generate a .B BadValue error. .LP The .B XQueryKeymap function returns a bit vector for the logical state of the keyboard, where each bit set to 1 indicates that the corresponding key is currently pressed down. The vector is represented as 32 bytes. Byte N (from 0) contains the bits for keys 8N to 8N + 7 with the least significant bit in the byte representing key 8N. .LP Note that the logical state of a device (as seen by client applications) may lag the physical state if device event processing is frozen. .SH STRUCTURES The .B XKeyboardControl structure contains: .LP .LP /\&* Mask bits for ChangeKeyboardControl */ .TS lw(.5i) lw(2.5i) lw(.8i). T{ \&#define T} T{ .B KBKeyClickPercent T} T{ (1L<<0) T} T{ \&#define T} T{ .B KBBellPercent T} T{ (1L<<1) T} T{ \&#define T} T{ .B KBBellPitch T} T{ (1L<<2) T} T{ \&#define T} T{ .B KBBellDuration T} T{ (1L<<3) T} T{ \&#define T} T{ .B KBLed T} T{ (1L<<4) T} T{ \&#define T} T{ .B KBLedMode T} T{ (1L<<5) T} T{ \&#define T} T{ .B KBKey T} T{ (1L<<6) T} T{ \&#define T} T{ .B KBAutoRepeatMode T} T{ (1L<<7) T} .TE .EX /\&* Values */ typedef struct { int key_click_percent; int bell_percent; int bell_pitch; int bell_duration; int led; int led_mode; /\&* LedModeOn, LedModeOff */ int key; int auto_repeat_mode; /\&* AutoRepeatModeOff, AutoRepeatModeOn, AutoRepeatModeDefault */ } XKeyboardControl; .EE .LP The key_click_percent member sets the volume for key clicks between 0 (off) and 100 (loud) inclusive, if possible. A setting of \-1 restores the default. Other negative values generate a .B BadValue error. .LP The bell_percent sets the base volume for the bell between 0 (off) and 100 (loud) inclusive, if possible. A setting of \-1 restores the default. Other negative values generate a .B BadValue error. The bell_pitch member sets the pitch (specified in Hz) of the bell, if possible. A setting of \-1 restores the default. Other negative values generate a .B BadValue error. The bell_duration member sets the duration of the bell specified in milliseconds, if possible. A setting of \-1 restores the default. Other negative values generate a .B BadValue error. .LP If both the led_mode and led members are specified, the state of that LED is changed, if possible. The led_mode member can be set to .B LedModeOn or .BR LedModeOff . If only led_mode is specified, the state of all LEDs are changed, if possible. At most 32 LEDs numbered from one are supported. No standard interpretation of LEDs is defined. If led is specified without led_mode, a .B BadMatch error results. .LP If both the auto_repeat_mode and key members are specified, the auto_repeat_mode of that key is changed (according to .BR AutoRepeatModeOn , .BR AutoRepeatModeOff , or .BR AutoRepeatModeDefault ), if possible. If only auto_repeat_mode is specified, the global auto_repeat_mode for the entire keyboard is changed, if possible, and does not affect the per-key settings. If a key is specified without an auto_repeat_mode, a .B BadMatch error results. Each key has an individual mode of whether or not it should auto-repeat and a default setting for the mode. In addition, there is a global mode of whether auto-repeat should be enabled or not and a default setting for that mode. When global mode is .BR AutoRepeatModeOn , keys should obey their individual auto-repeat modes. When global mode is .BR AutoRepeatModeOff , no keys should auto-repeat. An auto-repeating key generates alternating .B KeyPress and .B KeyRelease events. When a key is used as a modifier, it is desirable for the key not to auto-repeat, regardless of its auto-repeat setting. .LP The .B XKeyboardState structure contains: .LP .EX typedef struct { int key_click_percent; int bell_percent; unsigned int bell_pitch, bell_duration; unsigned long led_mask; int global_auto_repeat; char auto_repeats[32]; } XKeyboardState; .EE .LP For the LEDs, the least significant bit of led_mask corresponds to LED one, and each bit set to 1 in led_mask indicates an LED that is lit. The global_auto_repeat member can be set to .B AutoRepeatModeOn or .BR AutoRepeatModeOff . The auto_repeats member is a bit vector. Each bit set to 1 indicates that auto-repeat is enabled for the corresponding key. The vector is represented as 32 bytes. Byte N (from 0) contains the bits for keys 8N to 8N + 7 with the least significant bit in the byte representing key 8N. .SH DIAGNOSTICS .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XChangeKeyboardMapping(__libmansuffix__), XkbChangeEnabledControls(__libmansuffix__), XkbBell(__libmansuffix__), XkbDeviceBell(__libmansuffix__), XkbGetMap(__libmansuffix__), XSetPointerMapping(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XGetPointerMapping.man0000644014310600000120000000007414763154126013322 .so man__libmansuffix__/XSetPointerMapping.__libmansuffix__ libX11-1.8.12/man/XSetState.man0000644014310600000120000001212214763154126011457 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetState __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetState, XSetFunction, XSetPlaneMask, XSetForeground, XSetBackground \- GC convenience routines .SH SYNTAX .HP int XSetState\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long \fIforeground\fP\^, unsigned long \fIbackground\fP\^, int \fIfunction\fP\^, unsigned long \fIplane_mask\fP\^); .HP int XSetFunction\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int \fIfunction\fP\^); .HP int XSetPlaneMask\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long \fIplane_mask\fP\^); .HP int XSetForeground\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long \fIforeground\fP\^); .HP int XSetBackground\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long \fIbackground\fP\^); .SH ARGUMENTS .IP \fIbackground\fP 1i Specifies the background you want to set for the specified GC. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIforeground\fP 1i Specifies the foreground you want to set for the specified GC. .IP \fIfunction\fP 1i Specifies the function you want to set for the specified GC. .IP \fIgc\fP 1i Specifies the GC. .IP \fIplane_mask\fP 1i Specifies the plane mask. .\" *** JIM: NEED MORE INFO FOR THIS. *** .SH DESCRIPTION The .B XSetState function sets the foreground, background, plane mask, and function components for the specified GC. .LP .B XSetState can generate .BR BadAlloc , .BR BadGC , and .B BadValue errors. .LP .B XSetFunction sets a specified value in the specified GC. .LP .B XSetFunction can generate .BR BadAlloc , .BR BadGC , and .B BadValue errors. .LP The .B XSetPlaneMask function sets the plane mask in the specified GC. .LP .B XSetPlaneMask can generate .B BadAlloc and .B BadGC errors. .LP The .B XSetForeground function sets the foreground in the specified GC. .LP .B XSetForeground can generate .B BadAlloc and .B BadGC errors. .LP The .B XSetBackground function sets the background in the specified GC. .LP .B XSetBackground can generate .B BadAlloc and .B BadGC errors. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XCreateGC(__libmansuffix__), XQueryBestSize(__libmansuffix__), XSetArcMode(__libmansuffix__), XSetClipOrigin(__libmansuffix__), XSetFillStyle(__libmansuffix__), XSetFont(__libmansuffix__), XSetLineAttributes(__libmansuffix__), XSetTile(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSupportsLocale.man0000644014310600000120000001335114763154126012707 .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSupportsLocale __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSupportsLocale, XSetLocaleModifiers \- determine locale support and configure locale modifiers .SH SYNTAX .HP Bool XSupportsLocale\^(void); .HP char *XSetLocaleModifiers\^(\^_Xconst char *\fImodifier_list\fP\^); .SH ARGUMENTS .IP \fImodifier_list\fP 1i Specifies the modifiers. .SH DESCRIPTION The .B XSupportsLocale function returns .B True if Xlib functions are capable of operating under the current locale. If it returns .BR False , Xlib locale-dependent functions for which the .B XLocaleNotSupported return status is defined will return .BR XLocaleNotSupported . Other Xlib locale-dependent routines will operate in the \*(lqC\*(rq locale. .LP The .B XSetLocaleModifiers function sets the X modifiers for the current locale setting. The modifier_list argument is a null-terminated string of the form \*(lq{@\^\fIcategory\fP\^=\^\fIvalue\fP\^}\*(rq, that is, having zero or more concatenated \*(lq@\^\fIcategory\fP\^=\^\fIvalue\fP\^\*(rq entries, where \fIcategory\fP is a category name and \fIvalue\fP is the (possibly empty) setting for that category. The values are encoded in the current locale. Category names are restricted to the POSIX Portable Filename Character Set. .LP The local host X locale modifiers announcer (on POSIX-compliant systems, the XMODIFIERS environment variable) is appended to the modifier_list to provide default values on the local host. If a given category appears more than once in the list, the first setting in the list is used. If a given category is not included in the full modifier list, the category is set to an implementation-dependent default for the current locale. An empty value for a category explicitly specifies the implementation-dependent default. .LP If the function is successful, it returns a pointer to a string. The contents of the string are such that a subsequent call with that string (in the same locale) will restore the modifiers to the same settings. If modifier_list is a NULL pointer, .B XSetLocaleModifiers also returns a pointer to such a string, and the current locale modifiers are not changed. .LP If invalid values are given for one or more modifier categories supported by the locale, a NULL pointer is returned, and none of the current modifiers are changed. .LP At program startup, the modifiers that are in effect are unspecified until the first successful call to set them. Whenever the locale is changed, the modifiers that are in effect become unspecified until the next successful call to set them. Clients should always call .B XSetLocaleModifiers with a non-NULL modifier_list after setting the locale before they call any locale-dependent Xlib routine. .LP The only standard modifier category currently defined is \*(lqim\*(rq, which identifies the desired input method. The values for input method are not standardized. A single locale may use multiple input methods, switching input method under user control. The modifier may specify the initial input method in effect or an ordered list of input methods. Multiple input methods may be specified in a single im value string in an implementation-dependent manner. .LP The returned modifiers string is owned by Xlib and should not be modified or freed by the client. It may be freed by Xlib after the current locale or modifiers are changed. Until freed, it will not be modified by Xlib. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XSetCloseDownMode.man0000644014310600000120000001066114763154126013107 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetCloseDownMode __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetCloseDownMode, XKillClient \- control clients .SH SYNTAX .HP int XSetCloseDownMode\^(\^Display *\fIdisplay\fP\^, int \fIclose_mode\fP\^); .HP int XKillClient\^(\^Display *\fIdisplay\fP\^, XID \fIresource\fP\^); .SH ARGUMENTS .IP \fIclose_mode\fP 1i Specifies the client close-down mode. You can pass .BR DestroyAll , .BR RetainPermanent , or .BR RetainTemporary . .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIresource\fP 1i Specifies any resource associated with the client that you want to destroy or .BR AllTemporary . .SH DESCRIPTION The .B XSetCloseDownMode defines what will happen to the client's resources at connection close. A connection starts in .B DestroyAll mode. For information on what happens to the client's resources when the close_mode argument is .B RetainPermanent or .BR RetainTemporary , see section 2.6. .LP .B XSetCloseDownMode can generate a .B BadValue error. .LP The .B XKillClient function forces a close down of the client that created the resource if a valid resource is specified. If the client has already terminated in either .B RetainPermanent or .B RetainTemporary mode, all of the client's resources are destroyed. If .B AllTemporary is specified, the resources of all clients that have terminated in .B RetainTemporary are destroyed (see section 2.5). This permits implementation of window manager facilities that aid debugging. A client can set its close-down mode to .BR RetainTemporary . If the client then crashes, its windows would not be destroyed. The programmer can then inspect the application's window tree and use the window manager to destroy the zombie windows. .LP .B XKillClient can generate a .B BadValue error. .SH DIAGNOSTICS .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XKeymapEvent.man0000644014310600000120000001176114763154126012163 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XKeymapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XKeymapEvent \- KeymapNotify event structure .SH STRUCTURES The structure for .B KeymapNotify events contains: .LP .EX /\&* generated on EnterWindow and FocusIn when KeymapState selected */ typedef struct { int type; /\&* KeymapNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; char key_vector[32]; } XKeymapEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The window member is not used but is present to aid some toolkits. The key_vector member is set to the bit vector of the keyboard. Each bit set to 1 indicates that the corresponding key is currently pressed. The vector is represented as 32 bytes. Byte N (from 0) contains the bits for keys 8N to 8N + 7 with the least significant bit in the byte representing key 8N. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XRemoveFromSaveSet.man0000644014310600000120000000007014763154126013276 .so man__libmansuffix__/XChangeSaveSet.__libmansuffix__ libX11-1.8.12/man/XIconifyWindow.man0000644014310600000120000001367114763154126012525 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XIconifyWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XIconifyWindow, XWithdrawWindow, XReconfigureWMWindow \- manipulate top-level windows .SH SYNTAX .HP Status XIconifyWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP, int \fIscreen_number\fP\^); .HP Status XWithdrawWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIscreen_number\fP\^); .HP Status XReconfigureWMWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIscreen_number\fP\^, unsigned int \fIvalue_mask\fP\^, XWindowChanges *\fIvalues\fP); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIscreen_number\fP 1i Specifies the appropriate screen number on the host server. .IP \fIvalue_mask\fP 1i Specifies which values are to be set using information in the values structure. This mask is the bitwise inclusive OR of the valid configure window values bits. .IP \fIvalues\fP 1i Specifies the .B XWindowChanges structure. .IP \fIw\fP 1i Specifies the window. .SH DESCRIPTION The .B XIconifyWindow function sends a WM_CHANGE_STATE .B ClientMessage event with a format of 32 and a first data element of .B IconicState (as described in section 4.1.4 of the \fIInter-Client Communication Conventions Manual\fP) and a window of w to the root window of the specified screen with an event mask set to .BR SubstructureNotifyMask | .BR SubstructureRedirectMask . Window managers may elect to receive this message and if the window is in its normal state, may treat it as a request to change the window's state from normal to iconic. If the WM_CHANGE_STATE property cannot be interned, .B XIconifyWindow does not send a message and returns a zero status. It returns a nonzero status if the client message is sent successfully; otherwise, it returns a zero status. .LP The .B XWithdrawWindow function unmaps the specified window and sends a synthetic .B UnmapNotify event to the root window of the specified screen. Window managers may elect to receive this message and may treat it as a request to change the window's state to withdrawn. When a window is in the withdrawn state, neither its normal nor its iconic representations is visible. It returns a nonzero status if the .B UnmapNotify event is successfully sent; otherwise, it returns a zero status. .LP .B XWithdrawWindow can generate a .B BadWindow error. .LP The .B XReconfigureWMWindow function issues a .B ConfigureWindow request on the specified top-level window. If the stacking mode is changed and the request fails with a .B BadMatch error, the error is trapped by Xlib and a synthetic .B ConfigureRequestEvent containing the same configuration parameters is sent to the root of the specified window. Window managers may elect to receive this event and treat it as a request to reconfigure the indicated window. It returns a nonzero status if the request or event is successfully sent; otherwise, it returns a zero status. .LP .B XReconfigureWMWindow can generate .B BadValue and .B BadWindow errors. .SH DIAGNOSTICS .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XChangeWindowAttributes(__libmansuffix__), XConfigureWindow(__libmansuffix__), XCreateWindow(__libmansuffix__), XDestroyWindow(__libmansuffix__), XRaiseWindow(__libmansuffix__), XMapWindow(__libmansuffix__), XUnmapWindow(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XrmOptionDescRec.man0000644014310600000120000000006714763154126012770 .so man__libmansuffix__/XrmInitialize.__libmansuffix__ libX11-1.8.12/man/XLookupString.man0000644014310600000120000000006714763154126012370 .so man__libmansuffix__/XLookupKeysym.__libmansuffix__ libX11-1.8.12/man/XFreeFontSet.man0000644014310600000120000000007014763154126012106 .so man__libmansuffix__/XCreateFontSet.__libmansuffix__ libX11-1.8.12/man/XGetVisualInfo.man0000644014310600000120000001265214763154126012452 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual '\" t .TH XGetVisualInfo __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGetVisualInfo, XMatchVisualInfo, XVisualIDFromVisual, XVisualInfo \- obtain visual information and visual structure .SH SYNTAX .HP XVisualInfo *XGetVisualInfo\^(\^Display *\fIdisplay\fP\^, long \fIvinfo_mask\fP\^, XVisualInfo *\fIvinfo_template\fP\^, int *\fInitems_return\fP\^); .HP Status XMatchVisualInfo\^(\^Display *\fIdisplay\fP\^, int \fIscreen\fP\^, int \fIdepth\fP\^, int \fIclass\fP\^, XVisualInfo *\fIvinfo_return\fP\^); .HP VisualID XVisualIDFromVisual\^(\^Visual *\^\fIvisual\fP\^); .SH ARGUMENTS .IP \fIclass\fP 1i Specifies the class of the screen. .IP \fIdepth\fP 1i Specifies the depth of the screen. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fInitems_return\fP 1i Returns the number of matching visual structures. .IP \fIscreen\fP 1i Specifies the screen. .IP \fIvisual\fP 1i Specifies the visual type. .IP \fIvinfo_mask\fP 1i Specifies the visual mask value. .IP \fIvinfo_return\fP 1i Returns the matched visual information. .IP \fIvinfo_template\fP 1i Specifies the visual attributes that are to be used in matching the visual structures. .SH DESCRIPTION The .B XGetVisualInfo function returns a list of visual structures that have attributes equal to the attributes specified by vinfo_template. If no visual structures match the template using the specified vinfo_mask, .B XGetVisualInfo returns a NULL. To free the data returned by this function, use .BR XFree . .LP The .B XMatchVisualInfo function returns the visual information for a visual that matches the specified depth and class for a screen. Because multiple visuals that match the specified depth and class can exist, the exact visual chosen is undefined. If a visual is found, .B XMatchVisualInfo returns nonzero and the information on the visual to vinfo_return. Otherwise, when a visual is not found, .B XMatchVisualInfo returns zero. .LP The .B XVisualIDFromVisual function returns the visual ID for the specified visual type. .SH STRUCTURES The .B XVisualInfo structure contains: .LP .LP /\&* Visual information mask bits */ .TS lw(10) lw(2.5i) lw(.8i). T{ \&#define T} T{ .B VisualNoMask T} T{ 0x0 T} T{ \&#define T} T{ .B VisualIDMask T} T{ 0x1 T} T{ \&#define T} T{ .B VisualScreenMask T} T{ 0x2 T} T{ \&#define T} T{ .B VisualDepthMask T} T{ 0x4 T} T{ \&#define T} T{ .B VisualClassMask T} T{ 0x8 T} T{ \&#define T} T{ .B VisualRedMaskMask T} T{ 0x10 T} T{ \&#define T} T{ .B VisualGreenMaskMask T} T{ 0x20 T} T{ \&#define T} T{ .B VisualBlueMaskMask T} T{ 0x40 T} T{ \&#define T} T{ .B VisualColormapSizeMask T} T{ 0x80 T} T{ \&#define T} T{ .B VisualBitsPerRGBMask T} T{ 0x100 T} T{ \&#define T} T{ .B VisualAllMask T} T{ 0x1FF T} .TE .EX /\&* Values */ typedef struct { Visual *visual; VisualID visualid; int screen; int depth; int class; unsigned long red_mask; unsigned long green_mask; unsigned long blue_mask; int colormap_size; int bits_per_rgb; } XVisualInfo; .EE .SH "SEE ALSO" XFree(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XListHosts.man0000644014310600000120000000006214763154126011657 .so man__libmansuffix__/XAddHost.__libmansuffix__ libX11-1.8.12/man/XDrawString.man0000644014310600000120000001102614763154126012011 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XDrawString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawString, XDrawString16 \- draw text characters .SH SYNTAX .HP int XDrawString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, _Xconst char *\fIstring\fP\^, int \fIlength\fP\^); .HP int XDrawString16\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, _Xconst XChar2b *\fIstring\fP\^, int \fIlength\fP\^); .SH ARGUMENTS .IP \fId\fP 1i Specifies the drawable. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fIlength\fP 1i Specifies the number of characters in the string argument. .IP \fIstring\fP 1i Specifies the character string. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates, which are relative to the origin of the specified drawable and define the origin of the first character. .SH DESCRIPTION Each character image, as defined by the font in the GC, is treated as an additional mask for a fill operation on the drawable. The drawable is modified only where the font character has a bit set to 1. For fonts defined with 2-byte matrix indexing and used with .BR XDrawString16 , each byte is used as a byte2 with a byte1 of zero. .LP Both functions use these GC components: function, plane-mask, fill-style, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, and tile-stipple-y-origin. .LP .B XDrawString and .B XDrawString16 can generate .BR BadDrawable , .BR BadGC , and .B BadMatch errors. .SH DIAGNOSTICS .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .SH "SEE ALSO" XDrawImageString(__libmansuffix__), XDrawText(__libmansuffix__), XLoadFont(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XcmsQueryGreen.man0000644014310600000120000000007014763154126012513 .so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__ libX11-1.8.12/man/XFreeStringList.man0000644014310600000120000000010314763154126012623 .so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__ libX11-1.8.12/man/XKillClient.man0000644014310600000120000000007314763154126011757 .so man__libmansuffix__/XSetCloseDownMode.__libmansuffix__ libX11-1.8.12/man/XRestackWindows.man0000644014310600000120000000006614763154126012676 .so man__libmansuffix__/XRaiseWindow.__libmansuffix__ libX11-1.8.12/man/XFetchBuffer.man0000644014310600000120000000006514763154126012111 .so man__libmansuffix__/XStoreBytes.__libmansuffix__ libX11-1.8.12/man/XSetSubwindowMode.man0000644014310600000120000000006514763154126013170 .so man__libmansuffix__/XSetArcMode.__libmansuffix__ libX11-1.8.12/man/XUnloadFont.man0000644014310600000120000000006314763154126011775 .so man__libmansuffix__/XLoadFont.__libmansuffix__ libX11-1.8.12/man/XDeleteContext.man0000644014310600000120000000006614763154126012476 .so man__libmansuffix__/XSaveContext.__libmansuffix__ libX11-1.8.12/man/XrmParseCommand.man0000644014310600000120000000006714763154126012640 .so man__libmansuffix__/XrmInitialize.__libmansuffix__ libX11-1.8.12/man/XFlush.man0000644014310600000120000001270614763154126011014 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XFlush __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFlush, XSync, XEventsQueued, XPending \- handle output buffer or event queue .SH SYNTAX .HP int XFlush\^(\^Display *\fIdisplay\fP\^); .HP int XSync\^(\^Display *\fIdisplay\fP\^, Bool \fIdiscard\fP\^); .HP int XEventsQueued\^(\^Display *\fIdisplay\fP\^, int \fImode\fP\^); .HP int XPending\^(\^Display *\fIdisplay\fP\^); .SH ARGUMENTS .IP \fIdiscard\fP 1i Specifies a Boolean value that indicates whether .B XSync discards all events on the event queue. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fImode\fP 1i Specifies the mode. You can pass .BR QueuedAlready , .BR QueuedAfterFlush , or .BR QueuedAfterReading . .SH DESCRIPTION The .B XFlush function flushes the output buffer. Most client applications need not use this function because the output buffer is automatically flushed as needed by calls to .BR XPending , .BR XNextEvent , and .BR XWindowEvent . Events generated by the server may be enqueued into the library's event queue. .LP The .B XSync function flushes the output buffer and then waits until all requests have been received and processed by the X server. Any errors generated must be handled by the error handler. For each protocol error received by Xlib, .B XSync calls the client application's error handling routine (see section 11.8.2). Any events generated by the server are enqueued into the library's event queue. .LP Finally, if you passed .BR False , .B XSync does not discard the events in the queue. If you passed .BR True , .B XSync discards all events in the queue, including those events that were on the queue before .B XSync was called. Client applications seldom need to call .BR XSync . .LP If mode is .BR QueuedAlready , .B XEventsQueued returns the number of events already in the event queue (and never performs a system call). If mode is .BR QueuedAfterFlush , .B XEventsQueued returns the number of events already in the queue if the number is nonzero. If there are no events in the queue, .B XEventsQueued flushes the output buffer, attempts to read more events out of the application's connection, and returns the number read. If mode is .BR QueuedAfterReading , .B XEventsQueued returns the number of events already in the queue if the number is nonzero. If there are no events in the queue, .B XEventsQueued attempts to read more events out of the application's connection without flushing the output buffer and returns the number read. .LP .B XEventsQueued always returns immediately without I/O if there are events already in the queue. .B XEventsQueued with mode .B QueuedAfterFlush is identical in behavior to .BR XPending . .B XEventsQueued with mode .B QueuedAlready is identical to the .B XQLength function. .LP The .B XPending function returns the number of events that have been received from the X server but have not been removed from the event queue. .B XPending is identical to .B XEventsQueued with the mode .B QueuedAfterFlush specified. .SH "SEE ALSO" AllPlanes(__libmansuffix__), XIfEvent(__libmansuffix__), XNextEvent(__libmansuffix__), XPutBackEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XFontProp.man0000644014310600000120000000006314763154126011473 .so man__libmansuffix__/XLoadFont.__libmansuffix__ libX11-1.8.12/man/XMapRequestEvent.man0000644014310600000120000001123314763154126013015 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XMapRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XMapRequestEvent \- MapRequest event structure .SH STRUCTURES The structure for .B MapRequest events contains: .LP .EX typedef struct { int type; /\&* MapRequest */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window parent; Window window; } XMapRequestEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The parent member is set to the parent window. The window member is set to the window to be mapped. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XInstallColormap.man0000644014310600000120000001246514763154126013040 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XInstallColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XInstallColormap, XUninstallColormap, XListInstalledColormaps \- control colormaps .SH SYNTAX .HP int XInstallColormap\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^); .HP int XUninstallColormap\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^); .HP Colormap *XListInstalledColormaps\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int *\fInum_return\fP\^); .SH ARGUMENTS .IP \fIcolormap\fP 1i Specifies the colormap. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fInum_return\fP 1i Returns the number of currently installed colormaps. .IP \fIw\fP 1i Specifies the window that determines the screen. .SH DESCRIPTION The .B XInstallColormap function installs the specified colormap for its associated screen. All windows associated with this colormap immediately display with true colors. You associated the windows with this colormap when you created them by calling .BR XCreateWindow , .BR XCreateSimpleWindow , .BR XChangeWindowAttributes , or .BR XSetWindowColormap . .LP If the specified colormap is not already an installed colormap, the X server generates a .B ColormapNotify event on each window that has that colormap. In addition, for every other colormap that is installed as a result of a call to .BR XInstallColormap , the X server generates a .B ColormapNotify event on each window that has that colormap. .LP .B XInstallColormap can generate a .B BadColor error. .LP The .B XUninstallColormap function removes the specified colormap from the required list for its screen. As a result, the specified colormap might be uninstalled, and the X server might implicitly install or uninstall additional colormaps. Which colormaps get installed or uninstalled is server dependent except that the required list must remain installed. .LP If the specified colormap becomes uninstalled, the X server generates a .B ColormapNotify event on each window that has that colormap. In addition, for every other colormap that is installed or uninstalled as a result of a call to .BR XUninstallColormap , the X server generates a .B ColormapNotify event on each window that has that colormap. .LP .B XUninstallColormap can generate a .B BadColor error. .LP The .B XListInstalledColormaps function returns a list of the currently installed colormaps for the screen of the specified window. The order of the colormaps in the list is not significant and is no explicit indication of the required list. When the allocated list is no longer needed, free it by using .BR XFree . .LP .B XListInstalledColormaps can generate a .B BadWindow error. .SH DIAGNOSTICS .TP 1i .B BadColor A value for a Colormap argument does not name a defined Colormap. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XChangeWindowAttributes(__libmansuffix__), XCreateColormap(__libmansuffix__), XCreateWindow(__libmansuffix__), XFree(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XRecolorCursor.man0000644014310600000120000001156414763154126012537 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XRecolorCursor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XRecolorCursor, XFreeCursor, XQueryBestCursor \- manipulate cursors .SH SYNTAX .HP int XRecolorCursor\^(\^Display *\fIdisplay\fP\^, Cursor \fIcursor\fP\^, XColor *\fIforeground_color\fP\^, XColor *\fIbackground_color\fP\^); .HP int XFreeCursor\^(\^Display *\fIdisplay\fP\^, Cursor \fIcursor\fP\^); .HP Status XQueryBestCursor\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned int *\fIwidth_return\fP\^, unsigned int *\fIheight_return\fP\^); .SH ARGUMENTS .IP \fIbackground_color\fP 1i Specifies the RGB values for the background of the source. .IP \fIcursor\fP 1i Specifies the cursor. .IP \fId\fP 1i Specifies the drawable, which indicates the screen. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIforeground_color\fP 1i Specifies the RGB values for the foreground of the source. .IP \fIwidth\fP 1i .br .ns .IP \fIheight\fP 1i Specify the width and height of the cursor that you want the size information for. .IP \fIwidth_return\fP 1i .br .ns .IP \fIheight_return\fP 1i Return the best width and height that is closest to the specified width and height. .SH DESCRIPTION The .B XRecolorCursor function changes the color of the specified cursor, and if the cursor is being displayed on a screen, the change is visible immediately. The pixel members of the .B XColor structures are ignored; only the RGB values are used. .LP .B XRecolorCursor can generate a .B BadCursor error. .LP The .B XFreeCursor function deletes the association between the cursor resource ID and the specified cursor. The cursor storage is freed when no other resource references it. The specified cursor ID should not be referred to again. .LP .B XFreeCursor can generate a .B BadCursor error. .LP Some displays allow larger cursors than other displays. The .B XQueryBestCursor function provides a way to find out what size cursors are actually possible on the display. It returns the largest size that can be displayed. Applications should be prepared to use smaller cursors on displays that cannot support large ones. .LP .B XQueryBestCursor can generate a .B BadDrawable error. .SH DIAGNOSTICS .TP 1i .B BadCursor A value for a Cursor argument does not name a defined Cursor. .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .SH "SEE ALSO" XCreateColormap(__libmansuffix__), XCreateFontCursor(__libmansuffix__), XDefineCursor(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetStipple.man0000644014310600000120000000006214763154126012017 .so man__libmansuffix__/XSetTile.__libmansuffix__ libX11-1.8.12/man/XFreeCursor.man0000644014310600000120000000007014763154126012001 .so man__libmansuffix__/XRecolorCursor.__libmansuffix__ libX11-1.8.12/man/XTextWidth16.man0000644014310600000120000000006414763154126012020 .so man__libmansuffix__/XTextWidth.__libmansuffix__ libX11-1.8.12/man/XAllocColor.man0000644014310600000120000002614414763154126011765 '\" e .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual '\" e .TH XAllocColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllocColor, XAllocNamedColor, XAllocColorCells, XAllocColorPlanes, XFreeColors \- allocate and free colors .SH SYNTAX .HP Status XAllocColor\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^, XColor *\fIscreen_in_out\fP\^); .HP Status XAllocNamedColor\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^, _Xconst char *\fIcolor_name\fP\^, XColor *\fIscreen_def_return\fP\^, XColor *\fIexact_def_return\fP\^); .HP Status XAllocColorCells\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^, Bool \fIcontig\fP\^, unsigned long \fIplane_masks_return\fP[\^]\^, unsigned int \fInplanes\fP\^, unsigned long \fIpixels_return\fP[\^]\^, unsigned int \fInpixels\fP\^); .HP Status XAllocColorPlanes\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^, Bool \fIcontig\fP\^, unsigned long \fIpixels_return\fP[\^]\^, int \fIncolors\fP\^, int \fInreds\fP\^, int \fIngreens\fP\^, int \fInblues\fP\^, unsigned long *\fIrmask_return\fP\^, unsigned long *\fIgmask_return\fP\^, unsigned long *\fIbmask_return\fP\^); .HP int XFreeColors\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^, unsigned long \fIpixels\fP\^[\^], int \fInpixels\fP\^, unsigned long \fIplanes\fP\^); .IP \fIcolor_name\fP 1i Specifies the color name string (for example, red) whose color definition structure you want returned. .IP \fIcolormap\fP 1i Specifies the colormap. .IP \fIcontig\fP 1i Specifies a Boolean value that indicates whether the planes must be contiguous. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIexact_def_return\fP 1i Returns the exact RGB values. .IP \fIncolors\fP 1i Specifies the number of pixel values that are to be returned in the pixels_return array. .IP \fInpixels\fP 1i Specifies the number of pixels. .IP \fInplanes\fP 1i Specifies the number of plane masks that are to be returned in the plane masks array. .IP \fInreds\fP 1i .br .ns .IP \fIngreens\fP 1i .br .ns .IP \fInblues\fP 1i .br .ns Specify the number of red, green, and blue planes. The value you pass must be nonnegative. .IP \fIpixels\fP 1i Specifies an array of pixel values. .IP \fIpixels_return\fP 1i Returns an array of pixel values. .IP \fIplane_mask_return\fP 1i Returns an array of plane masks. .\" *** JIM: NEED MORE INFO FOR THIS. *** .IP \fIplanes\fP 1i Specifies the planes you want to free. .IP \fIrmask_return\fP 1i .br .ns .IP \fIgmask_return\fP 1i .br .ns .IP \fIbmask_return\fP 1i Return bit masks for the red, green, and blue planes. .IP \fIscreen_def_return\fP 1i Returns the closest RGB values provided by the hardware. .IP \fIscreen_in_out\fP 1i Specifies and returns the values actually used in the colormap. .SH DESCRIPTION The .B XAllocColor function allocates a read-only colormap entry corresponding to the closest RGB value supported by the hardware. .B XAllocColor returns the pixel value of the color closest to the specified RGB elements supported by the hardware and returns the RGB value actually used. The corresponding colormap cell is read-only. In addition, .B XAllocColor returns nonzero if it succeeded or zero if it failed. Multiple clients that request the same effective RGB value can be assigned the same read-only entry, thus allowing entries to be shared. When the last client deallocates a shared cell, it is deallocated. .B XAllocColor does not use or affect the flags in the .B XColor structure. .LP .B XAllocColor can generate a .B BadColor error. .LP The .B XAllocNamedColor function looks up the named color with respect to the screen that is associated with the specified colormap. It returns both the exact database definition and the closest color supported by the screen. The allocated color cell is read-only. The pixel value is returned in screen_def_return. If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. If screen_def_return and exact_def_return point to the same structure, the pixel field will be set correctly, but the color values are undefined. .B XAllocNamedColor returns nonzero if a cell is allocated; otherwise, it returns zero. .LP .B XAllocNamedColor can generate a .B BadColor error. .LP .EQ delim %% .EN The .B XAllocColorCells function allocates read/write color cells. The number of colors must be positive and the number of planes nonnegative, or a .B BadValue error results. If ncolors and nplanes are requested, then ncolors pixels and nplane plane masks are returned. No mask will have any bits set to 1 in common with any other mask or with any of the pixels. By ORing together each pixel with zero or more masks, ncolors * %2 sup nplanes% distinct pixels can be produced. All of these are allocated writable by the request. For .B GrayScale or .BR PseudoColor , each mask has exactly one bit set to 1. For .BR DirectColor , each has exactly three bits set to 1. If contig is .B True and if all masks are ORed together, a single contiguous set of bits set to 1 will be formed for .B GrayScale or .B PseudoColor and three contiguous sets of bits set to 1 (one within each pixel subfield) for .BR DirectColor . The RGB values of the allocated entries are undefined. .B XAllocColorCells returns nonzero if it succeeded or zero if it failed. .LP .B XAllocColorCells can generate .B BadColor and .B BadValue errors. .LP .EQ delim %% .EN The specified ncolors must be positive; and nreds, ngreens, and nblues must be nonnegative, or a .B BadValue error results. If ncolors colors, nreds reds, ngreens greens, and nblues blues are requested, ncolors pixels are returned; and the masks have nreds, ngreens, and nblues bits set to 1, respectively. If contig is .BR True , each mask will have a contiguous set of bits set to 1. No mask will have any bits set to 1 in common with any other mask or with any of the pixels. For .BR DirectColor , each mask will lie within the corresponding pixel subfield. By ORing together subsets of masks with each pixel value, ncolors * %2 sup (nreds+ngreens+nblues)% distinct pixel values can be produced. All of these are allocated by the request. However, in the colormap, there are only ncolors * %2 sup nreds% independent red entries, ncolors * %2 sup ngreens% independent green entries, and ncolors * %2 sup nblues% independent blue entries. This is true even for .BR PseudoColor . When the colormap entry of a pixel value is changed (using .BR XStoreColors , .BR XStoreColor , or .BR XStoreNamedColor ), the pixel is decomposed according to the masks, and the corresponding independent entries are updated. .B XAllocColorPlanes returns nonzero if it succeeded or zero if it failed. .LP .B XAllocColorPlanes can generate .B BadColor and .B BadValue errors. .LP The .B XFreeColors function frees the cells represented by pixels whose values are in the pixels array. The planes argument should not have any bits set to 1 in common with any of the pixels. The set of all pixels is produced by ORing together subsets of the planes argument with the pixels. The request frees all of these pixels that were allocated by the client (using .BR XAllocColor , .BR XAllocNamedColor , .BR XAllocColorCells , and .BR XAllocColorPlanes ). Note that freeing an individual pixel obtained from .B XAllocColorPlanes may not actually allow it to be reused until all of its related pixels are also freed. Similarly, a read-only entry is not actually freed until it has been freed by all clients, and if a client allocates the same read-only entry multiple times, it must free the entry that many times before the entry is actually freed. .LP All specified pixels that are allocated by the client in the colormap are freed, even if one or more pixels produce an error. If a specified pixel is not a valid index into the colormap, a .B BadValue error results. If a specified pixel is not allocated by the client (that is, is unallocated or is only allocated by another client) or if the colormap was created with all entries writable (by passing .B AllocAll to .BR XCreateColormap ), a .B BadAccess error results. If more than one pixel is in error, the one that gets reported is arbitrary. .LP .B XFreeColors can generate .BR BadAccess , .BR BadColor , and .B BadValue errors. .SH DIAGNOSTICS .TP 1i .B BadAccess A client attempted to free a color map entry that it did not already allocate. .TP 1i .B BadAccess A client attempted to store into a read-only color map entry. .TP 1i .B BadColor A value for a Colormap argument does not name a defined Colormap. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XCreateColormap(__libmansuffix__), XQueryColor(__libmansuffix__), XStoreColors(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XcmsRGBi.man0000644014310600000120000000006314763154126011212 .so man__libmansuffix__/XcmsColor.__libmansuffix__ libX11-1.8.12/man/XGetFontProperty.man0000644014310600000120000000006314763154126013037 .so man__libmansuffix__/XLoadFont.__libmansuffix__ libX11-1.8.12/man/ImageByteOrder.man0000644014310600000120000001222414763154126012440 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH ImageByteOrder __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME ImageByteOrder, BitmapBitOrder, BitmapPad, BitmapUnit, DisplayHeight, DisplayHeightMM, DisplayWidth, DisplayWidthMM, XListPixmapFormats, XPixmapFormatValues \- image format functions and macros .SH SYNTAX .HP XPixmapFormatValues *XListPixmapFormats\^(\^Display *\fIdisplay\fP, int *\fIcount_return\fP\^); .HP int ImageByteOrder\^(\^Display *\fIdisplay\fP\^); .HP int BitmapBitOrder\^(\^Display *\fIdisplay\fP\^); .HP int BitmapPad\^(\^Display *\fIdisplay\fP\^); .HP int BitmapUnit\^(\^Display *\fIdisplay\fP\^); .HP int DisplayHeight\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^); .HP int DisplayHeightMM\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^); .HP int DisplayWidth\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^); .HP int DisplayWidthMM\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIcount_return\fP 1i Returns the number of pixmap formats that are supported by the display. .IP \fIscreen_number\fP 1i Specifies the appropriate screen number on the host server. .SH DESCRIPTION The .B XListPixmapFormats function returns an array of .B XPixmapFormatValues structures that describe the types of Z format images supported by the specified display. If insufficient memory is available, .B XListPixmapFormats returns NULL. To free the allocated storage for the .B XPixmapFormatValues structures, use .BR XFree . .LP The .B ImageByteOrder macro specifies the required byte order for images for each scanline unit in XY format (bitmap) or for each pixel value in Z format. .LP The .B BitmapBitOrder macro returns .B LSBFirst or .B MSBFirst to indicate whether the leftmost bit in the bitmap as displayed on the screen is the least or most significant bit in the unit. .LP The .B BitmapPad macro returns the number of bits that each scanline must be padded. .LP The .B BitmapUnit macro returns the size of a bitmap's scanline unit in bits. .LP The .B DisplayHeight macro returns the height of the specified screen in pixels. .LP The .B DisplayHeightMM macro returns the height of the specified screen in millimeters. .LP The .B DisplayWidth macro returns the width of the screen in pixels. .LP The .B DisplayWidthMM macro returns the width of the specified screen in millimeters. .SH STRUCTURES The .B XPixmapFormatValues structure provides an interface to the pixmap format information that is returned at the time of a connection setup. It contains: .EX typedef struct { int depth; int bits_per_pixel; int scanline_pad; } XPixmapFormatValues; .EE .SH "SEE ALSO" AllPlanes(__libmansuffix__), BlackPixelOfScreen(__libmansuffix__), IsCursorKey(__libmansuffix__), XFree(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XEnableAccessControl.man0000644014310600000120000000006214763154126013574 .so man__libmansuffix__/XAddHost.__libmansuffix__ libX11-1.8.12/man/Xutf8TextExtents.man0000644014310600000120000000007014763154126013030 .so man__libmansuffix__/XmbTextExtents.__libmansuffix__ libX11-1.8.12/man/XErrorEvent.man0000644014310600000120000001054714763154126012027 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XErrorEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XErrorEvent \- X error event structure .SH STRUCTURES The .B XErrorEvent structure contains: .LP .EX typedef struct { int type; Display *display; /\&* Display the event was read from */ XID resourceid; /\&* resource id */ unsigned long serial; /\&* serial number of failed request */ unsigned char error_code; /\&* error code of failed request */ unsigned char request_code; /\&* Major op-code of failed request */ unsigned char minor_code; /\&* Minor op-code of failed request */ } XErrorEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The serial member is the number of requests, starting from one, sent over the network connection since it was opened. It is the number that was the value of .B NextRequest immediately before the failing call was made. The request_code member is a protocol request of the procedure that failed, as defined in .BR X11/Xproto.h . .SH "SEE ALSO" AllPlanes(__libmansuffix__), XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XUniqueContext.man0000644014310600000120000000006614763154126012542 .so man__libmansuffix__/XSaveContext.__libmansuffix__ libX11-1.8.12/man/XChangeSaveSet.man0000644014310600000120000001071614763154126012412 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XChangeSaveSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XChangeSaveSet, XAddToSaveSet, XRemoveFromSaveSet \- change a client's save set .SH SYNTAX .HP int XChangeSaveSet\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIchange_mode\fP\^); .HP int XAddToSaveSet\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .HP int XRemoveFromSaveSet\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .SH ARGUMENTS .IP \fIchange_mode\fP 1i Specifies the mode. You can pass .B SetModeInsert or .BR SetModeDelete . .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIw\fP 1i Specifies the window that you want to add or delete from the client's save-set. .SH DESCRIPTION Depending on the specified mode, .B XChangeSaveSet either inserts or deletes the specified window from the client's save-set. The specified window must have been created by some other client, or a .B BadMatch error results. .LP .B XChangeSaveSet can generate .BR BadMatch , .BR BadValue , and .B BadWindow errors. .LP The .B XAddToSaveSet function adds the specified window to the client's save-set. The specified window must have been created by some other client, or a .B BadMatch error results. .LP .B XAddToSaveSet can generate .B BadMatch and .B BadWindow errors. .LP The .B XRemoveFromSaveSet function removes the specified window from the client's save-set. The specified window must have been created by some other client, or a .B BadMatch error results. .LP .B XRemoveFromSaveSet can generate .B BadMatch and .B BadWindow errors. .SH DIAGNOSTICS .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XReparentWindow(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XForceScreenSaver.man0000644014310600000120000000007114763154126013122 .so man__libmansuffix__/XSetScreenSaver.__libmansuffix__ libX11-1.8.12/man/XFreeFontNames.man0000644014310600000120000000006414763154126012421 .so man__libmansuffix__/XListFonts.__libmansuffix__ libX11-1.8.12/man/XSelectInput.man0000644014310600000120000001037014763154126012165 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSelectInput __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSelectInput \- select input events .SH SYNTAX .HP int XSelectInput\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, long \fIevent_mask\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIevent_mask\fP 1i Specifies the event mask. .IP \fIw\fP 1i Specifies the window whose events you are interested in. .SH DESCRIPTION The .B XSelectInput function requests that the X server report the events associated with the specified event mask. Initially, X will not report any of these events. Events are reported relative to a window. If a window is not interested in a device event, it usually propagates to the closest ancestor that is interested, unless the do_not_propagate mask prohibits it. .LP Setting the event-mask attribute of a window overrides any previous call for the same window but not for other clients. Multiple clients can select for the same events on the same window with the following restrictions: .IP \(bu 5 Multiple clients can select events on the same window because their event masks are disjoint. When the X server generates an event, it reports it to all interested clients. .IP \(bu 5 Only one client at a time can select .BR CirculateRequest , .BR ConfigureRequest , or .B MapRequest events, which are associated with the event mask .BR SubstructureRedirectMask . .IP \(bu 5 Only one client at a time can select a .B ResizeRequest event, which is associated with the event mask .BR ResizeRedirectMask . .IP \(bu 5 Only one client at a time can select a .B ButtonPress event, which is associated with the event mask .BR ButtonPressMask . .LP The server reports the event to all interested clients. .LP .B XSelectInput can generate a .B BadWindow error. .SH DIAGNOSTICS .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XLoadFont.man0000644014310600000120000003273614763154126011446 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .de EX .sp .nf .ft CW .. .de EE .ft R .fi .sp .. .TH XLoadFont __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XLoadFont, XQueryFont, XLoadQueryFont, XFreeFont, XGetFontProperty, XUnloadFont, XCharStruct, XFontProp, XChar2b, XFontStruct \- load or unload fonts and font metric structures .SH SYNTAX .HP Font XLoadFont\^(\^Display *\fIdisplay\fP\^, _Xconst char *\fIname\fP\^); .HP XFontStruct *XQueryFont\^(\^Display *\fIdisplay\fP\^, XID \fIfont_ID\fP\^); .HP XFontStruct *XLoadQueryFont\^(\^Display *\fIdisplay\fP\^, _Xconst char *\fIname\fP\^); .HP int XFreeFont\^(\^Display *\fIdisplay\fP\^, XFontStruct *\fIfont_struct\fP\^); .HP Bool XGetFontProperty\^(\^XFontStruct *\fIfont_struct\fP\^, Atom \fIatom\fP\^, unsigned long *\fIvalue_return\fP\^); .HP int XUnloadFont\^(\^Display *\fIdisplay\fP\^, Font \fIfont\fP\^); .SH ARGUMENTS .IP \fIatom\fP 1i Specifies the atom for the property name you want returned. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIfont\fP 1i Specifies the font. .IP \fIfont_ID\fP 1i Specifies the font ID or the .B GContext ID. .IP \fIfont_struct\fP 1i Specifies the storage associated with the font. .IP \fIgc\fP 1i Specifies the GC. .IP \fIname\fP 1i Specifies the name of the font, which is a null-terminated string. .IP \fIvalue_return\fP 1i Returns the value of the font property. .SH DESCRIPTION The .B XLoadFont function loads the specified font and returns its associated font ID. If the font name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. When the characters \*(lq?\*(rq and \*(lq\*(rq are used in a font name, a pattern match is performed and any matching font is used. In the pattern, the \*(lq?\*(rq character will match any single character, and the \*(lq*\*(rq character will match any number of characters. A structured format for font names is specified in the X Consortium standard \fIX Logical Font Description Conventions\fP. If .B XLoadFont was unsuccessful at loading the specified font, a .B BadName error results. Fonts are not associated with a particular screen and can be stored as a component of any GC. When the font is no longer needed, call .BR XUnloadFont . .LP .B XLoadFont can generate .B BadAlloc and .B BadName errors. .LP The .B XQueryFont function returns a pointer to the .B XFontStruct structure, which contains information associated with the font. You can query a font or the font stored in a GC. The font ID stored in the .B XFontStruct structure will be the .B GContext ID, and you need to be careful when using this ID in other functions (see .BR XGContextFromGC ). If the font does not exist, .B XQueryFont returns NULL. To free this data, use .BR XFreeFontInfo . .LP .B XLoadQueryFont can generate a .B BadAlloc error. .LP The .B XLoadQueryFont function provides the most common way for accessing a font. .B XLoadQueryFont both opens (loads) the specified font and returns a pointer to the appropriate .B XFontStruct structure. If the font name is not in the Host Portable Character Encoding, the result is implementation-dependent. If the font does not exist, .B XLoadQueryFont returns NULL. .LP The .B XFreeFont function deletes the association between the font resource ID and the specified font and frees the .B XFontStruct structure. The font itself will be freed when no other resource references it. The data and the font should not be referenced again. .LP .B XFreeFont can generate a .B BadFont error. .LP Given the atom for that property, the .B XGetFontProperty function returns the value of the specified font property. .B XGetFontProperty also returns .B False if the property was not defined or .B True if it was defined. A set of predefined atoms exists for font properties, which can be found in .BR X11/Xatom.h . This set contains the standard properties associated with a font. Although it is not guaranteed, it is likely that the predefined font properties will be present. .LP The .B XUnloadFont function deletes the association between the font resource ID and the specified font. The font itself will be freed when no other resource references it. The font should not be referenced again. .LP .B XUnloadFont can generate a .B BadFont error. .SH STRUCTURES The .B XFontStruct structure contains all of the information for the font and consists of the font-specific information as well as a pointer to an array of .B XCharStruct structures for the characters contained in the font. The .BR XFontStruct , .BR XFontProp , and .B XCharStruct structures contain: .LP .EX typedef struct { short lbearing; /\&* origin to left edge of raster */ short rbearing; /\&* origin to right edge of raster */ short width; /\&* advance to next char's origin */ short ascent; /\&* baseline to top edge of raster */ short descent; /\&* baseline to bottom edge of raster */ unsigned short attributes; /\&* per char flags (not predefined) */ } XCharStruct; .EE .LP .EX typedef struct { Atom name; unsigned long card32; } XFontProp; .EE .LP .EX typedef struct { /\&* normal 16 bit characters are two bytes */ unsigned char byte1; unsigned char byte2; } XChar2b; .EE .LP .EX typedef struct { XExtData *ext_data; /\&* hook for extension to hang data */ Font fid; /\&* Font id for this font */ unsigned direction; /\&* hint about the direction font is painted */ unsigned min_char_or_byte2; /\&* first character */ unsigned max_char_or_byte2; /\&* last character */ unsigned min_byte1; /\&* first row that exists */ unsigned max_byte1; /\&* last row that exists */ Bool all_chars_exist; /\&* flag if all characters have nonzero size */ unsigned default_char; /\&* char to print for undefined character */ int n_properties; /\&* how many properties there are */ XFontProp *properties; /\&* pointer to array of additional properties */ XCharStruct min_bounds; /\&* minimum bounds over all existing char */ XCharStruct max_bounds; /\&* maximum bounds over all existing char */ XCharStruct *per_char; /\&* first_char to last_char information */ int ascent; /\&* logical extent above baseline for spacing */ int descent; /\&* logical decent below baseline for spacing */ } XFontStruct; .EE .LP X supports single byte/character, two bytes/character matrix, and 16-bit character text operations. Note that any of these forms can be used with a font, but a single byte/character text request can only specify a single byte (that is, the first row of a 2-byte font). You should view 2-byte fonts as a two-dimensional matrix of defined characters: byte1 specifies the range of defined rows and byte2 defines the range of defined columns of the font. Single byte/character fonts have one row defined, and the byte2 range specified in the structure defines a range of characters. .LP The bounding box of a character is defined by the .B XCharStruct of that character. When characters are absent from a font, the default_char is used. When fonts have all characters of the same size, only the information in the .B XFontStruct min and max bounds are used. .LP The members of the .B XFontStruct have the following semantics: .IP \(bu 5 The direction member can be either .B FontLeftToRight or .BR FontRightToLeft . It is just a hint as to whether most .B XCharStruct elements have a positive .RB ( FontLeftToRight ) or a negative .RB ( FontRightToLeft ) character width metric. The core protocol defines no support for vertical text. .IP \(bu 5 If the min_byte1 and max_byte1 members are both zero, min_char_or_byte2 specifies the linear character index corresponding to the first element of the per_char array, and max_char_or_byte2 specifies the linear character index of the last element. .IP If either min_byte1 or max_byte1 are nonzero, both min_char_or_byte2 and max_char_or_byte2 are less than 256, and the 2-byte character index values corresponding to the per_char array element N (counting from 0) are: .IP .EX byte1 = N/D + min_byte1 byte2 = N\\D + min_char_or_byte2 .EE where: .EX D = max_char_or_byte2 \- min_char_or_byte2 + 1 / = integer division \e\e = integer modulus .EE .IP \(bu 5 If the per_char pointer is NULL, all glyphs between the first and last character indexes inclusive have the same information, as given by both min_bounds and max_bounds. .IP \(bu 5 If all_chars_exist is .BR True , all characters in the per_char array have nonzero bounding boxes. .IP \(bu 5 The default_char member specifies the character that will be used when an undefined or nonexistent character is printed. The default_char is a 16-bit character (not a 2-byte character). For a font using 2-byte matrix format, the default_char has byte1 in the most-significant byte and byte2 in the least significant byte. If the default_char itself specifies an undefined or nonexistent character, no printing is performed for an undefined or nonexistent character. .IP \(bu 5 The min_bounds and max_bounds members contain the most extreme values of each individual .B XCharStruct component over all elements of this array (and ignore nonexistent characters). The bounding box of the font (the smallest rectangle enclosing the shape obtained by superimposing all of the characters at the same origin [x,y]) has its upper-left coordinate at: .EX [x + min_bounds.lbearing, y \- max_bounds.ascent] .EE .IP Its width is: .EX max_bounds.rbearing \- min_bounds.lbearing .EE .IP Its height is: .EX max_bounds.ascent + max_bounds.descent .EE .IP \(bu 5 The ascent member is the logical extent of the font above the baseline that is used for determining line spacing. Specific characters may extend beyond this. .IP \(bu 5 The descent member is the logical extent of the font at or below the baseline that is used for determining line spacing. Specific characters may extend beyond this. .IP \(bu 5 If the baseline is at Y-coordinate y, the logical extent of the font is inclusive between the Y-coordinate values (y \- font.ascent) and (y + font.descent \- 1). Typically, the minimum interline spacing between rows of text is given by ascent + descent. .LP For a character origin at [x,y], the bounding box of a character (that is, the smallest rectangle that encloses the character's shape) described in terms of .B XCharStruct components is a rectangle with its upper-left corner at: .LP .EX [x + lbearing, y \- ascent] .EE .LP Its width is: .LP .EX rbearing \- lbearing .EE .LP Its height is: .LP .EX ascent + descent .EE .LP The origin for the next character is defined to be: .LP .EX [x + width, y] .EE .LP The lbearing member defines the extent of the left edge of the character ink from the origin. The rbearing member defines the extent of the right edge of the character ink from the origin. The ascent member defines the extent of the top edge of the character ink from the origin. The descent member defines the extent of the bottom edge of the character ink from the origin. The width member defines the logical width of the character. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadFont A value for a Font or GContext argument does not name a defined Font. .TP 1i .B BadName A font or color of the specified name does not exist. .SH "SEE ALSO" XCreateGC(__libmansuffix__), XListFonts(__libmansuffix__), XSetFontPath(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XrmQGetSearchResource.man0000644014310600000120000000007014763154126013757 .so man__libmansuffix__/XrmGetResource.__libmansuffix__ libX11-1.8.12/man/XPixmapFormatValues.man0000644014310600000120000000007014763154126013511 .so man__libmansuffix__/ImageByteOrder.__libmansuffix__ libX11-1.8.12/man/XQueryColor.man0000644014310600000120000002043614763154126012036 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XQueryColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XQueryColor, XQueryColors, XLookupColor, XParseColor \- obtain color values .SH SYNTAX .HP int XQueryColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, XColor *\fIdef_in_out\fP\^); .HP int XQueryColors\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, XColor \fIdefs_in_out\fP[\^]\^, int \fIncolors\fP\^); .HP Status XLookupColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, _Xconst char *\fIcolor_name\fP\^, XColor *\fIexact_def_return\fP\^, XColor *\fIscreen_def_return\fP\^); .HP Status XParseColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, _Xconst char *\fIspec\fP\^, XColor *\fIexact_def_return\fP\^); .SH ARGUMENTS .IP \fIcolormap\fP 1i Specifies the colormap. .IP \fIcolor_name\fP 1i Specifies the color name string (for example, red) whose color definition structure you want returned. .IP \fIdef_in_out\fP 1i Specifies and returns the RGB values for the pixel specified in the structure. .IP \fIdefs_in_out\fP 1i Specifies and returns an array of color definition structures for the pixel specified in the structure. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIexact_def_return\fP 1i Returns the exact RGB values. .IP \fIncolors\fP 1i .\"Specifies the number of color definition structures. Specifies the number of .B XColor structures in the color definition array. .IP \fIscreen_def_return\fP 1i Returns the closest RGB values provided by the hardware. .IP \fIspec\fP 1i Specifies the color name string; case is ignored. .IP \fIexact_def_return\fP 1i Returns the exact color value for later use and sets the .BR DoRed , .BR DoGreen , and .B DoBlue flags. .SH DESCRIPTION The .B XQueryColor function returns the current RGB value for the pixel in the .B XColor structure and sets the .BR DoRed , .BR DoGreen , and .B DoBlue flags. The .B XQueryColors function returns the RGB value for each pixel in each .B XColor structure and sets the .BR DoRed , .BR DoGreen , and .B DoBlue flags in each structure. .LP .B XQueryColor and .B XQueryColors can generate .B BadColor and .B BadValue errors. .LP The .B XLookupColor function looks up the string name of a color with respect to the screen associated with the specified colormap. It returns both the exact color values and the closest values provided by the screen with respect to the visual type of the specified colormap. If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. .B XLookupColor returns nonzero if the name is resolved; otherwise, it returns zero. .LP The .B XParseColor function looks up the string name of a color with respect to the screen associated with the specified colormap. It returns the exact color value. If the color name is not in the Host Portable Character Encoding, the result is implementation-dependent. Use of uppercase or lowercase does not matter. .B XParseColor returns nonzero if the name is resolved; otherwise, it returns zero. .LP .B XLookupColor and .B XParseColor can generate .B BadColor error. .SH "COLOR NAMES" An RGB Device specification is identified by the prefix \*(lqrgb:\*(rq and conforms to the following syntax: .LP .\" Start marker code here .EX rgb:\fI//\fP \fI\fP, \fI\fP, \fI\fP := \fIh\fP | \fIhh\fP | \fIhhh\fP | \fIhhhh\fP \fIh\fP := single hexadecimal digits (case insignificant) .EE .\" End marker code here .LP Note that \fIh\fP indicates the value scaled in 4 bits, \fIhh\fP the value scaled in 8 bits, \fIhhh\fP the value scaled in 12 bits, and \fIhhhh\fP the value scaled in 16 bits, respectively. .LP For backward compatibility, an older syntax for RGB Device is supported, but its continued use is not encouraged. The syntax is an initial sharp sign character followed by a numeric specification, in one of the following formats: .LP .TS l l. \&#RGB (4 bits each) \&#RRGGBB (8 bits each) \&#RRRGGGBBB (12 bits each) \&#RRRRGGGGBBBB (16 bits each) .TE .LP The R, G, and B represent single hexadecimal digits. When fewer than 16 bits each are specified, they represent the most significant bits of the value (unlike the \*(lqrgb:\*(rq syntax, in which values are scaled). For example, the string \*(lq#3a7\*(rq is the same as \*(lq#3000a0007000\*(rq. .LP An RGB intensity specification is identified by the prefix \*(lqrgbi:\*(rq and conforms to the following syntax: .LP .\" Start marker code here .EX rgbi:\fI//\fP .EE .\" End marker code here .LP Note that red, green, and blue are floating-point values between 0.0 and 1.0, inclusive. The input format for these values is an optional sign, a string of numbers possibly containing a decimal point, and an optional exponent field containing an E or e followed by a possibly signed integer string. .LP The standard device-independent string specifications have the following syntax: .LP .\" Start marker code here .EX CIEXYZ:\fI//\fP CIEuvY:\fI//\fP CIExyY:\fI//\fP CIELab:\fI//\fP CIELuv:\fI//\fP TekHVC:\fI//\fP .EE .\" End marker code here .LP All of the values (C, H, V, X, Y, Z, a, b, u, v, y, x) are floating-point values. The syntax for these values is an optional plus or minus sign, a string of digits possibly containing a decimal point, and an optional exponent field consisting of an \*(lqE\*(rq or \*(lqe\*(rq followed by an optional plus or minus followed by a string of digits. .SH DIAGNOSTICS .TP 1i .B BadColor A value for a Colormap argument does not name a defined Colormap. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XAllocColor(__libmansuffix__), XCreateColormap(__libmansuffix__), XStoreColors(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XCreateColormap.man0000644014310600000120000002075714763154126012640 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCreateColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateColormap, XCopyColormapAndFree, XFreeColormap, XColor \- create, copy, or destroy colormaps and color structure .SH SYNTAX .HP Colormap XCreateColormap\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Visual *\fIvisual\fP\^, int \fIalloc\fP\^); .HP Colormap XCopyColormapAndFree\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^); .HP int XFreeColormap\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^); .SH ARGUMENTS .IP \fIalloc\fP 1i Specifies the colormap entries to be allocated. You can pass .B AllocNone or .BR AllocAll . .IP \fIcolormap\fP 1i Specifies the colormap that you want to create, copy, set, or destroy. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIvisual\fP 1i Specifies a visual type supported on the screen. If the visual type is not one supported by the screen, a .B BadMatch error results. .IP \fIw\fP 1i Specifies the window on whose screen you want to create a colormap. .SH DESCRIPTION The .B XCreateColormap function creates a colormap of the specified visual type for the screen on which the specified window resides and returns the colormap ID associated with it. Note that the specified window is only used to determine the screen. .LP The initial values of the colormap entries are undefined for the visual classes .BR GrayScale , .BR PseudoColor , and .BR DirectColor . For .BR StaticGray , .BR StaticColor , and .BR TrueColor , the entries have defined values, but those values are specific to the visual and are not defined by X. For .BR StaticGray , .BR StaticColor , and .BR TrueColor , alloc must be .BR AllocNone , or a .B BadMatch error results. For the other visual classes, if alloc is .BR AllocNone , the colormap initially has no allocated entries, and clients can allocate them. For information about the visual types, see section 3.1. .LP If alloc is .BR AllocAll , the entire colormap is allocated writable. The initial values of all allocated entries are undefined. For .B GrayScale and .BR PseudoColor , the effect is as if an .B XAllocColorCells call returned all pixel values from zero to N \- 1, where N is the colormap entries value in the specified visual. For .BR DirectColor , the effect is as if an .B XAllocColorPlanes call returned a pixel value of zero and red_mask, green_mask, and blue_mask values containing the same bits as the corresponding masks in the specified visual. However, in all cases, none of these entries can be freed by using .BR XFreeColors . .LP .B XCreateColormap can generate .BR BadAlloc , .BR BadMatch , .BR BadValue , and .B BadWindow errors. .LP The .B XCopyColormapAndFree function creates a colormap of the same visual type and for the same screen as the specified colormap and returns the new colormap ID. It also moves all of the client's existing allocation from the specified colormap to the new colormap with their color values intact and their read-only or writable characteristics intact and frees those entries in the specified colormap. Color values in other entries in the new colormap are undefined. If the specified colormap was created by the client with alloc set to .BR AllocAll , the new colormap is also created with .BR AllocAll , all color values for all entries are copied from the specified colormap, and then all entries in the specified colormap are freed. If the specified colormap was not created by the client with .BR AllocAll , the allocations to be moved are all those pixels and planes that have been allocated by the client using .BR XAllocColor , .BR XAllocNamedColor , .BR XAllocColorCells , or .B XAllocColorPlanes and that have not been freed since they were allocated. .LP .B XCopyColormapAndFree can generate .B BadAlloc and .B BadColor errors. .LP The .B XFreeColormap function deletes the association between the colormap resource ID and the colormap and frees the colormap storage. However, this function has no effect on the default colormap for a screen. If the specified colormap is an installed map for a screen, it is uninstalled (see .BR XUninstallColormap ). If the specified colormap is defined as the colormap for a window (by .BR XCreateWindow , .BR XSetWindowColormap , or .BR XChangeWindowAttributes ), .B XFreeColormap changes the colormap associated with the window to .B None and generates a .B ColormapNotify event. X does not define the colors displayed for a window with a colormap of .BR None . .LP .B XFreeColormap can generate a .B BadColor error. .SH STRUCTURES The .B XColor structure contains: .LP .EX typedef struct { unsigned long pixel; /\&* pixel value */ unsigned short red, green, blue; /\&* rgb values */ char flags; /\&* DoRed, DoGreen, DoBlue */ char pad; } XColor; .EE .LP The red, green, and blue values are always in the range 0 to 65535 inclusive, independent of the number of bits actually used in the display hardware. The server scales these values down to the range used by the hardware. Black is represented by (0,0,0), and white is represented by (65535,65535,65535). In some functions, the flags member controls which of the red, green, and blue members is used and can be the inclusive OR of zero or more of .BR DoRed , .BR DoGreen , and .BR DoBlue . .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadColor A value for a Colormap argument does not name a defined Colormap. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocColor(__libmansuffix__), XChangeWindowAttributes(__libmansuffix__), XCreateWindow(__libmansuffix__), XQueryColor(__libmansuffix__), XStoreColors(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XColormapEvent.man0000644014310600000120000001272114763154126012506 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XColormapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XColormapEvent \- ColormapNotify event structure .SH STRUCTURES The structure for .B ColormapNotify events contains: .LP .EX typedef struct { int type; /\&* ColormapNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; Colormap colormap; /\&* colormap or None */ Bool new; int state; /\&* ColormapInstalled, ColormapUninstalled */ } XColormapEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The window member is set to the window whose associated colormap is changed, installed, or uninstalled. For a colormap that is changed, installed, or uninstalled, the colormap member is set to the colormap associated with the window. For a colormap that is changed by a call to .BR XFreeColormap , the colormap member is set to .BR None . The new member is set to indicate whether the colormap for the specified window was changed or installed or uninstalled and can be .B True or .BR False . If it is .BR True , the colormap was changed. If it is .BR False , the colormap was installed or uninstalled. The state member is always set to indicate whether the colormap is installed or uninstalled and can be .B ColormapInstalled or .BR ColormapUninstalled . .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCreateColormap(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XModifierKeymap.man0000644014310600000120000000010014763154126012621 .so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ libX11-1.8.12/man/XSetRGBColormaps.man0000644014310600000120000000010014763154126012662 .so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__ libX11-1.8.12/man/XcmsRGB.man0000644014310600000120000000006314763154126011041 .so man__libmansuffix__/XcmsColor.__libmansuffix__ libX11-1.8.12/man/XSetClipOrigin.man0000644014310600000120000001501414763154126012441 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetClipOrigin __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetClipOrigin, XSetClipMask, XSetClipRectangles \- GC convenience routines .SH SYNTAX .HP int XSetClipOrigin\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int \fIclip_x_origin\fP\^, int \fIclip_y_origin\fP\^); .HP int XSetClipMask\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Pixmap \fIpixmap\fP\^); .HP int XSetClipRectangles\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int \fIclip_x_origin\fP\^, int \fIclip_y_origin\fP\^, XRectangle \fIrectangles\fP[]\^, int \fIn\fP\^, int \fIordering\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIclip_x_origin\fP 1i .br .ns .IP \fIclip_y_origin\fP 1i Specify the x and y coordinates of the clip-mask origin. .IP \fIgc\fP 1i Specifies the GC. .IP \fIn\fP 1i Specifies the number of rectangles. .IP \fIordering\fP 1i Specifies the ordering relations on the rectangles. You can pass .BR Unsorted , .BR YSorted , .BR YXSorted , or .BR YXBanded . .IP \fIpixmap\fP 1i Specifies the pixmap or .BR None . .IP \fIrectangles\fP 1i Specifies an array of rectangles that define the clip-mask. .SH DESCRIPTION The .B XSetClipOrigin function sets the clip origin in the specified GC. The clip-mask origin is interpreted relative to the origin of whatever destination drawable is specified in the graphics request. .LP .B XSetClipOrigin can generate .B BadAlloc and .B BadGC errors. .LP The .B XSetClipMask function sets the clip-mask in the specified GC to the specified pixmap. If the clip-mask is set to .BR None , the pixels are are always drawn (regardless of the clip-origin). .LP .B XSetClipMask can generate .BR BadAlloc , .BR BadGC , .BR BadMatch , and .B BadValue errors. .LP The .B XSetClipRectangles function changes the clip-mask in the specified GC to the specified list of rectangles and sets the clip origin. The output is clipped to remain contained within the rectangles. The clip-origin is interpreted relative to the origin of whatever destination drawable is specified in a graphics request. The rectangle coordinates are interpreted relative to the clip-origin. The rectangles should be nonintersecting, or the graphics results will be undefined. Note that the list of rectangles can be empty, which effectively disables output. This is the opposite of passing .B None as the clip-mask in .BR XCreateGC , .BR XChangeGC , and .BR XSetClipMask . .LP If known by the client, ordering relations on the rectangles can be specified with the ordering argument. This may provide faster operation by the server. If an incorrect ordering is specified, the X server may generate a .B BadMatch error, but it is not required to do so. If no error is generated, the graphics results are undefined. .B Unsorted means the rectangles are in arbitrary order. .B YSorted means that the rectangles are nondecreasing in their Y origin. .B YXSorted additionally constrains .B YSorted order in that all rectangles with an equal Y origin are nondecreasing in their X origin. .B YXBanded additionally constrains .B YXSorted by requiring that, for every possible Y scanline, all rectangles that include that scanline have an identical Y origins and Y extents. .LP .B XSetClipRectangles can generate .BR BadAlloc , .BR BadGC , .BR BadMatch , and .B BadValue errors. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XCreateGC(__libmansuffix__), XDrawRectangle(__libmansuffix__), XQueryBestSize(__libmansuffix__), XSetArcMode(__libmansuffix__), XSetFillStyle(__libmansuffix__), XSetFont(__libmansuffix__), XSetLineAttributes(__libmansuffix__), XSetState(__libmansuffix__), XSetTile(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetWindowColormap.man0000644014310600000120000000010114763154126013335 .so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__ libX11-1.8.12/man/XUninstallColormap.man0000644014310600000120000000007214763154126013372 .so man__libmansuffix__/XInstallColormap.__libmansuffix__ libX11-1.8.12/man/XGContextFromGC.man0000644014310600000120000000006314763154126012515 .so man__libmansuffix__/XCreateGC.__libmansuffix__ libX11-1.8.12/man/XCheckMaskEvent.man0000644014310600000120000000006414763154126012560 .so man__libmansuffix__/XNextEvent.__libmansuffix__ libX11-1.8.12/man/XFillArcs.man0000644014310600000120000000007014763154126011421 .so man__libmansuffix__/XFillRectangle.__libmansuffix__ libX11-1.8.12/man/XCreateFontCursor.man0000644014310600000120000001743514763154126013167 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCreateFontCursor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateFontCursor, XCreatePixmapCursor, XCreateGlyphCursor \- create cursors .SH SYNTAX \&#include .HP Cursor XCreateFontCursor\^(\^Display *\fIdisplay\fP\^, unsigned int \fIshape\fP\^); .HP Cursor XCreatePixmapCursor\^(\^Display *\fIdisplay\fP\^, Pixmap \fIsource\fP\^, Pixmap \fImask\fP\^, XColor *\fIforeground_color\fP\^, XColor *\fIbackground_color\fP\^, unsigned int \fIx\fP\^, unsigned int \fIy\fP\^); .HP Cursor XCreateGlyphCursor\^(\^Display *\fIdisplay\fP\^, Font \fIsource_font\fP\^, Font \fImask_font\fP\^, unsigned int \fIsource_char\fP\^, unsigned int \fImask_char\fP\^, XColor _Xconst *\fIforeground_color\fP\^, XColor _Xconst *\fIbackground_color\fP\^); .SH ARGUMENTS .IP \fIbackground_color\fP 1i Specifies the RGB values for the background of the source. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIforeground_color\fP 1i Specifies the RGB values for the foreground of the source. .IP \fImask\fP 1i Specifies the cursor's source bits to be displayed or .BR None . .IP \fImask_char\fP 1i Specifies the glyph character for the mask. .IP \fImask_font\fP 1i Specifies the font for the mask glyph or .BR None . .IP \fIshape\fP 1i Specifies the shape of the cursor. .IP \fIsource\fP 1i Specifies the shape of the source cursor. .\" *** JIM: NEED TO CHECK THIS. *** .IP \fIsource_char\fP 1i Specifies the character glyph for the source. .IP \fIsource_font\fP 1i Specifies the font for the source glyph. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates, which indicate the hotspot relative to the source's origin. .SH DESCRIPTION X provides a set of standard cursor shapes in a special font named cursor. Applications are encouraged to use this interface for their cursors because the font can be customized for the individual display type. The shape argument specifies which glyph of the standard fonts to use. .LP The hotspot comes from the information stored in the cursor font. The initial colors of a cursor are a black foreground and a white background (see .BR XRecolorCursor ). .LP .B XCreateFontCursor can generate .B BadAlloc and .B BadValue errors. .LP The .B XCreatePixmapCursor function creates a cursor and returns the cursor ID associated with it. The foreground and background RGB values must be specified using foreground_color and background_color, even if the X server only has a .B StaticGray or .B GrayScale screen. The foreground color is used for the pixels set to 1 in the source, and the background color is used for the pixels set to 0. Both source and mask, if specified, must have depth one (or a .B BadMatch error results) but can have any root. The mask argument defines the shape of the cursor. The pixels set to 1 in the mask define which source pixels are displayed, and the pixels set to 0 define which pixels are ignored. If no mask is given, all pixels of the source are displayed. The mask, if present, must be the same size as the pixmap defined by the source argument, or a .B BadMatch error results. The hotspot must be a point within the source, or a .B BadMatch error results. .LP The components of the cursor can be transformed arbitrarily to meet display limitations. The pixmaps can be freed immediately if no further explicit references to them are to be made. Subsequent drawing in the source or mask pixmap has an undefined effect on the cursor. The X server might or might not make a copy of the pixmap. .LP .B XCreatePixmapCursor can generate .B BadAlloc and .B BadPixmap errors. .LP The .B XCreateGlyphCursor function is similar to .B XCreatePixmapCursor except that the source and mask bitmaps are obtained from the specified font glyphs. The source_char must be a defined glyph in source_font, or a .B BadValue error results. If mask_font is given, mask_char must be a defined glyph in mask_font, or a .B BadValue error results. The mask_font and character are optional. The origins of the source_char and mask_char (if defined) glyphs are positioned coincidently and define the hotspot. The source_char and mask_char need not have the same bounding box metrics, and there is no restriction on the placement of the hotspot relative to the bounding boxes. If no mask_char is given, all pixels of the source are displayed. You can free the fonts immediately by calling .B XFreeFont if no further explicit references to them are to be made. .LP For 2-byte matrix fonts, the 16-bit value should be formed with the byte1 member in the most significant byte and the byte2 member in the least significant byte. .LP .B XCreateGlyphCursor can generate .BR BadAlloc , .BR BadFont , and .B BadValue errors. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadFont A value for a Font or GContext argument does not name a defined Font. .TP 1i .B BadMatch Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request. .TP 1i .B BadPixmap A value for a Pixmap argument does not name a defined Pixmap. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" XDefineCursor(__libmansuffix__), XLoadFont(__libmansuffix__), XRecolorCursor(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XEvent.man0000644014310600000120000000006314763154126011005 .so man__libmansuffix__/XAnyEvent.__libmansuffix__ libX11-1.8.12/man/XGetKeyboardControl.man0000644014310600000120000000010014763154126013455 .so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__ libX11-1.8.12/man/XWindowEvent.man0000644014310600000120000000006414763154126012176 .so man__libmansuffix__/XNextEvent.__libmansuffix__ libX11-1.8.12/man/XSetWMProtocols.man0000644014310600000120000001237314763154126012637 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetWMProtocols __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetWMProtocols, XGetWMProtocols \- set or read a window's WM_PROTOCOLS property .SH SYNTAX .HP Status XSetWMProtocols\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom *\fIprotocols\fP\^, int \fIcount\fP\^); .HP Status XGetWMProtocols\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom **\fIprotocols_return\fP\^, int *\fIcount_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIcount\fP 1i Specifies the number of protocols in the list. .IP \fIcount_return\fP 1i Returns the number of protocols in the list. .IP \fIprotocols\fP 1i Specifies the list of protocols. .IP \fIprotocols_return\fP 1i Returns the list of protocols. .SH DESCRIPTION The .B XSetWMProtocols function replaces the WM_PROTOCOLS property on the specified window with the list of atoms specified by the protocols argument. If the property does not already exist, .B XSetWMProtocols sets the WM_PROTOCOLS property on the specified window to the list of atoms specified by the protocols argument. The property is stored with a type of ATOM and a format of 32. If it cannot intern the WM_PROTOCOLS atom, .B XSetWMProtocols returns a zero status. Otherwise, it returns a nonzero status. .LP .B XSetWMProtocols can generate .B BadAlloc and .B BadWindow errors. .LP The .B XGetWMProtocols function returns the list of atoms stored in the WM_PROTOCOLS property on the specified window. These atoms describe window manager protocols in which the owner of this window is willing to participate. If the property exists, is of type ATOM, is of format 32, and the atom WM_PROTOCOLS can be interned, .B XGetWMProtocols sets the protocols_return argument to a list of atoms, sets the count_return argument to the number of elements in the list, and returns a nonzero status. Otherwise, it sets neither of the return arguments and returns a zero status. To release the list of atoms, use .BR XFree . .LP .B XGetWMProtocols can generate a .B BadWindow error. .SH PROPERTIES .TP 1i \s-1WM_PROTOCOLS\s+1 List of atoms that identify the communications protocols between the client and window manager in which the client is willing to participate. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocIconSize(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XAllocWMHints(__libmansuffix__), XFree(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XcmsConvertColors.man0000644014310600000120000001070614763154126013236 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XcmsConvertColors __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsConvertColors \- convert CCC color specifications .SH SYNTAX .HP Status XcmsConvertColors\^(\^XcmsCCC \fIccc\fP\^, XcmsColor \fIcolors_in_out\fP\^[\^]\^, unsigned int \fIncolors\fP\^, XcmsColorFormat \fItarget_format\fP\^, Bool \fIcompression_flags_return\fP\^[\^]\^); .SH ARGUMENTS .IP \fIccc\fP 1i Specifies the CCC. If Conversion is between device-independent color spaces only (for example, TekHVC to CIELuv), the CCC is necessary only to specify the Client White Point. .IP \fIcolors_in_out\fP 1i Specifies an array of color specifications. Pixel members are ignored and remain unchanged upon return. .IP \fIcompression_flags_return\fP 1i Returns an array of Boolean values indicating compression status. If a non-NULL pointer is supplied, each element of the array is set to .B True if the corresponding color was compressed and .B False otherwise. Pass NULL if the compression status is not useful. .IP \fIncolors\fP 1i Specifies the number of .B XcmsColor structures in the color-specification array. .IP \fItarget_format\fP 1i Specifies the target color specification format. .SH DESCRIPTION The .B XcmsConvertColors function converts the color specifications in the specified array of .B XcmsColor structures from their current format to a single target format, using the specified CCC. When the return value is .BR XcmsFailure , the contents of the color specification array are left unchanged. .LP The array may contain a mixture of color specification formats (for example, 3 CIE XYZ, 2 CIE Luv, and so on). When the array contains both device-independent and device-dependent color specifications and the target_format argument specifies a device-dependent format (for example, .BR XcmsRGBiFormat , .BR XcmsRGBFormat ), all specifications are converted to CIE XYZ format and then to the target device-dependent format. .SH "SEE ALSO" DisplayOfCCC(__libmansuffix__), XcmsCCCOfColormap(__libmansuffix__), XcmsCreateCCC(__libmansuffix__), XcmsDefaultCCC(__libmansuffix__), XcmsSetWhitePoint(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XStandardColormap.man0000644014310600000120000000010014763154126013151 .so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__ libX11-1.8.12/man/XMapRaised.man0000644014310600000120000000006414763154126011572 .so man__libmansuffix__/XMapWindow.__libmansuffix__ libX11-1.8.12/man/XFree.man0000644014310600000120000000561014763154126010610 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XFree __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFree \- free client data .SH SYNTAX int XFree\^(\^void *\fIdata\fP\^); .SH ARGUMENTS .IP \fIdata\fP 1i Specifies the data that are to be freed. .SH DESCRIPTION The .B XFree function is a general-purpose Xlib routine that frees the specified data. You must use it to free any objects that were allocated by Xlib, unless an alternate function is explicitly specified for the object. If data is NULL, no operation is performed. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/IsCursorKey.man0000644014310600000120000000747014763154126012027 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH IsCursorKey __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME IsCursorKey, IsFunctionKey, IsKeypadKey, IsMiscFunctionKey, IsModifierKey, IsPFKey, IsPrivateKeypadKey \- keysym classification macros .SH SYNTAX int IsCursorKey\^(\^KeySym \fIkeysym\fP\^); .LP int IsFunctionKey\^(\^KeySym \fIkeysym\fP\^); .LP int IsKeypadKey\^(\^KeySym \fIkeysym\fP\^); .LP int IsMiscFunctionKey\^(\^KeySym \fIkeysym\fP\^); .LP int IsModifierKey\^(\^KeySym \fIkeysym\fP\^); .LP int IsPFKey\^(\^KeySym \fIkeysym\fP\^); .LP int IsPrivateKeypadKey\^(\^KeySym \fIkeysym\fP\^); .SH ARGUMENTS .IP \fIkeysym\fP 1i Specifies the KeySym that is to be tested. .SH DESCRIPTION The .B IsCursorKey macro returns .B True if the specified KeySym is a cursor key. .LP The .B IsFunctionKey macro returns .B True if the KeySym is a function key. .LP The .B IsKeypadKey macro returns .B True if the specified KeySym is a keypad key. .LP The .B IsMiscFunctionKey macro returns .B True if the specified KeySym is a miscellaneous function key. .LP The .B IsModifierKey macro returns .B True if the specified KeySym is a modifier key. .LP The .B IsPFKey macro returns .B True if the specified KeySym is a PF key. .LP The .B IsPrivateKeypadKey macro returns .B True if the specified KeySym is a vendor-private keypad key. .SH "SEE ALSO" XkbKeyTypesForCoreSymbols(__libmansuffix__), AllPlanes(__libmansuffix__), BlackPixelOfScreen(__libmansuffix__), ImageByteOrder(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XcmsCIELabQueryMaxLC.man0000644014310600000120000000007514763154126013364 .so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__ libX11-1.8.12/man/XcmsTekHVCQueryMaxVC.man0000644014310600000120000000007514763154126013443 .so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__ libX11-1.8.12/man/XReconfigureWMWindow.man0000644014310600000120000000007014763154126013626 .so man__libmansuffix__/XIconifyWindow.__libmansuffix__ libX11-1.8.12/man/XStoreName.man0000644014310600000120000000006414763154126011622 .so man__libmansuffix__/XSetWMName.__libmansuffix__ libX11-1.8.12/man/XInsertModifiermapEntry.man0000644014310600000120000000010014763154126014357 .so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ libX11-1.8.12/man/XOMOfOC.man0000644014310600000120000000006314763154126010746 .so man__libmansuffix__/XCreateOC.__libmansuffix__ libX11-1.8.12/man/XSetWMClientMachine.man0000644014310600000120000000772514763154126013363 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetWMClientMachine __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetWMClientMachine, XGetWMClientMachine \- set or read a window's WM_CLIENT_MACHINE property .SH SYNTAX .HP void XSetWMClientMachine\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, XTextProperty *\fItext_prop\fP\^); .HP Status XGetWMClientMachine\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, XTextProperty *\fItext_prop_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fItext_prop\fP 1i Specifies the .B XTextProperty structure to be used. .IP \fItext_prop_return\fP 1i Returns the .B XTextProperty structure. .IP \fIw\fP 1i Specifies the window. .SH DESCRIPTION The .B XSetWMClientMachine convenience function calls .B XSetTextProperty to set the WM_CLIENT_MACHINE property. .LP The .B XGetWMClientMachine convenience function performs an .B XGetTextProperty on the WM_CLIENT_MACHINE property. It returns a nonzero status on success; otherwise, it returns a zero status. .SH PROPERTIES .TP 1i \s-1WM_CLIENT_MACHINE\s+1 The string name of the machine on which the client application is running. .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocIconSize(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XAllocWMHints(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XSetWMProtocols(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetGraphicsExposure.man0000644014310600000120000000006514763154126013675 .so man__libmansuffix__/XSetArcMode.__libmansuffix__ libX11-1.8.12/man/XSetWindowBackgroundPixmap.man0000644014310600000120000000010114763154126015017 .so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__ libX11-1.8.12/man/XrmPutFileDatabase.man0000644014310600000120000000007414763154126013262 .so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__ libX11-1.8.12/man/XAllocIconSize.man0000644014310600000120000001272314763154126012430 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XAllocIconSize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllocIconSize, XSetIconSizes, XGetIconSizes, XIconSize \- allocate icon size structure and set or read a window's WM_ICON_SIZES property .SH SYNTAX XIconSize *XAllocIconSize\^(void\^); .LP int XSetIconSizes\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XIconSize *\fIsize_list\fP, int \fIcount\fP\^); .LP Status XGetIconSizes\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XIconSize **\fIsize_list_return\fP, int *\fIcount_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIcount\fP 1i Specifies the number of items in the size list. .IP \fIcount_return\fP 1i Returns the number of items in the size list. .IP \fIsize_list\fP 1i Specifies the size list. .IP \fIsize_list_return\fP 1i Returns the size list. .IP \fIw\fP 1i Specifies the window. .SH DESCRIPTION The .B XAllocIconSize function allocates and returns a pointer to a .B XIconSize structure. Note that all fields in the .B XIconSize structure are initially set to zero. If insufficient memory is available, .B XAllocIconSize returns NULL. To free the memory allocated to this structure, use .BR XFree . .LP The .B XSetIconSizes function is used only by window managers to set the supported icon sizes. .LP .B XSetIconSizes can generate .B BadAlloc and .B BadWindow errors. .LP The .B XGetIconSizes function returns zero if a window manager has not set icon sizes; otherwise, it return nonzero. .B XGetIconSizes should be called by an application that wants to find out what icon sizes would be most appreciated by the window manager under which the application is running. The application should then use .B XSetWMHints to supply the window manager with an icon pixmap or window in one of the supported sizes. To free the data allocated in size_list_return, use .BR XFree . .LP .B XGetIconSizes can generate a .B BadWindow error. .SH PROPERTIES .TP 1i \s-1WM_ICON_SIZES\s+1 The window manager may set this property on the root window to specify the icon sizes it supports. The C type of this property is .BR XIconSize . .SH STRUCTURES The .B XIconSize structure contains: .LP .EX typedef struct { int min_width, min_height; int max_width, max_height; int width_inc, height_inc; } XIconSize; .EE .LP The width_inc and height_inc members define an arithmetic progression of sizes (minimum to maximum) that represent the supported icon sizes. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XAllocWMHints(__libmansuffix__), XFree(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XSetWMProtocols(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/Xutf8DrawString.man0000644014310600000120000000006714763154126012623 .so man__libmansuffix__/XmbDrawString.__libmansuffix__ libX11-1.8.12/man/XCreateIC.man0000644014310600000120000001056114763154126011347 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCreateIC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateIC, XDestroyIC, XIMOfIC \- create, destroy, and obtain the input method of an input context .SH SYNTAX .HP XIC XCreateIC\^(\^XIM \fIim\fP\^, ...\^); .HP void XDestroyIC\^(\^XIC \fIic\fP\^); .HP XIM XIMOfIC\^(\^XIC \fIic\fP\^); .SH ARGUMENTS .IP \fIic\fP 1i Specifies the input context. .IP \fIim\fP 1i Specifies the input method. .IP ... 1i Specifies the variable length argument list to set XIC values. .SH DESCRIPTION The .B XCreateIC function creates a context within the specified input method. .LP Some of the arguments are mandatory at creation time, and the input context will not be created if those arguments are not provided. The mandatory arguments are the input style and the set of text callbacks (if the input style selected requires callbacks). All other input context values can be set later. .LP .B XCreateIC returns a NULL value if no input context could be created. A NULL value could be returned for any of the following reasons: .IP \(bu 5 A required argument was not set. .IP \(bu 5 A read-only argument was set (for example, .BR XNFilterEvents ). .IP \(bu 5 The argument name is not recognized. .IP \(bu 5 The input method encountered an input method implementation-dependent error. .LP The .B XCreateIC can generate .BR BadAtom , .BR BadColor , .BR BadPixmap , and .B BadWindow errors. .LP .B XDestroyIC destroys the specified input context. .LP The .B XIMOfIC function returns the input method associated with the specified input context. .SH DIAGNOSTICS .TP 1i .B BadAtom A value for an Atom argument does not name a defined Atom. .TP 1i .B BadColor A value for a Colormap argument does not name a defined Colormap. .TP 1i .B BadPixmap A value for a Pixmap argument does not name a defined Pixmap. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XOpenIM(__libmansuffix__), XSetICFocus(__libmansuffix__), XSetICValues(__libmansuffix__), XmbResetIC(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetICFocus.man0000644014310600000120000000731014763154126011675 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetICFocus __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetICFocus, XUnsetICFocus \- set and unset input context focus .SH SYNTAX .HP void XSetICFocus\^(\^XIC \fIic\fP\^); .HP void XUnsetICFocus\^(\^XIC \fIic\fP\^); .SH ARGUMENTS .IP \fIic\fP 1i Specifies the input context. .SH DESCRIPTION The .B XSetICFocus function allows a client to notify an input method that the focus window attached to the specified input context has received keyboard focus. The input method should take action to provide appropriate feedback. Complete feedback specification is a matter of user interface policy. .LP Calling .B XSetICFocus does not affect the focus window value. .LP The .B XUnsetICFocus function allows a client to notify an input method that the specified input context has lost the keyboard focus and that no more input is expected on the focus window attached to that input context. The input method should take action to provide appropriate feedback. Complete feedback specification is a matter of user interface policy. .LP Calling .B XUnsetICFocus does not affect the focus window value; the client may still receive events from the input method that are directed to the focus window. .SH "SEE ALSO" XCreateIC(__libmansuffix__), XOpenIM(__libmansuffix__), XSetICValues(__libmansuffix__), XmbResetIC(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XcmsCIELuvQueryMaxC.man0000644014310600000120000001237514763154126013326 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XcmsCIELuvQueryMaxC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsCIELuvQueryMaxC, XcmsCIELuvQueryMaxL, XcmsCIELuvQueryMaxLC, XcmsCIELuvQueryMinL \- obtain the CIE L*u*v* coordinates .SH SYNTAX .HP Status XcmsCIELuvQueryMaxC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue_angle\fP\^, XcmsFloat \fIL_star\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsCIELuvQueryMaxL\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue_angle\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsCIELuvQueryMaxLC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue_angle\fP\^, XcmsColor *\fIcolor_return\fP\^); .HP Status XcmsCIELuvQueryMinL\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue_angle\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^); .SH ARGUMENTS .IP \fIccc\fP 1i Specifies the CCC. Note that the CCC's Client White Point and White Point Adjustment procedures are ignored. .ds Ch maximum lightness (MaxL) or minimum lightness (MinL) .IP \fIchroma\fP 1i Specifies the chroma at which to find \*(Ch. .ds Lc maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), \ or minimum lightness (MinL) .ds lC hue angle and lightness (MaxC), hue angle and chroma (MaxL and MinL), \ or hue angle (MaxLC) .IP \fIcolor_return\fP 1i Returns the CIE L*u*v* coordinates of \*(Lc displayable by the screen for the given \*(lC. The white point associated with the returned color specification is the Screen White Point. The value returned in the pixel member is undefined. .ds Ha maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), \ or minimum lightness (MinL) .IP \fIhue_angle\fP 1i Specifies the hue angle (in degrees) at which to find \*(Ha. .ds Ls maximum chroma (MaxC) or maximum lightness (MaxL) .IP \fIL_star\fP 1i Specifies the lightness (L*) at which to find \*(Ls. .SH DESCRIPTION The .B XcmsCIELuvQueryMaxC function, given a hue angle and lightness, finds the point of maximum chroma displayable by the screen. It returns this point in CIE L*u*v* coordinates. .LP The .B XcmsCIELuvQueryMaxL function, given a hue angle and chroma, finds the point in CIE L*u*v* color space of maximum lightness (L*) displayable by the screen. It returns this point in CIE L*u*v* coordinates. An .B XcmsFailure return value usually indicates that the given chroma is beyond maximum for the given hue angle. .LP The .B XcmsCIELuvQueryMaxLC function, given a hue angle, finds the point of maximum chroma displayable by the screen. It returns this point in CIE L*u*v* coordinates. .LP The .B XcmsCIELuvQueryMinL function, given a hue angle and chroma, finds the point of minimum lightness (L*) displayable by the screen. It returns this point in CIE L*u*v* coordinates. An .B XcmsFailure return value usually indicates that the given chroma is beyond maximum for the given hue angle. .SH "SEE ALSO" XcmsCIELabQueryMaxC(__libmansuffix__), XcmsTekHVCQueryMaxC(__libmansuffix__), XcmsQueryBlack(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetInputFocus.man0000644014310600000120000001341214763154126012501 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetInputFocus __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetInputFocus, XGetInputFocus \- control input focus .SH SYNTAX .HP int XSetInputFocus\^(\^Display *\fIdisplay\fP\^, Window \fIfocus\fP\^, int \fIrevert_to\fP\^, Time \fItime\fP\^); .HP int XGetInputFocus\^(\^Display *\fIdisplay\fP\^, Window *\fIfocus_return\fP\^, int *\fIrevert_to_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIfocus\fP 1i Specifies the window, .BR PointerRoot , or .BR None . .IP \fIfocus_return\fP 1i Returns the focus window, .BR PointerRoot , or .BR None . .IP \fIrevert_to\fP 1i Specifies where the input focus reverts to if the window becomes not viewable. You can pass .BR RevertToParent , .BR RevertToPointerRoot , or .BR RevertToNone . .IP \fIrevert_to_return\fP 1i Returns the current focus state .RB ( RevertToParent , .BR RevertToPointerRoot , or .BR RevertToNone ). .IP \fItime\fP 1i Specifies the time. You can pass either a timestamp or .BR CurrentTime . .SH DESCRIPTION The .B XSetInputFocus function changes the input focus and the last-focus-change time. It has no effect if the specified time is earlier than the current last-focus-change time or is later than the current X server time. Otherwise, the last-focus-change time is set to the specified time .RB ( CurrentTime is replaced by the current X server time). .B XSetInputFocus causes the X server to generate .B FocusIn and .B FocusOut events. .LP Depending on the focus argument, the following occurs: .IP \(bu 5 If focus is .BR None , all keyboard events are discarded until a new focus window is set, and the revert_to argument is ignored. .IP \(bu 5 If focus is a window, it becomes the keyboard's focus window. If a generated keyboard event would normally be reported to this window or one of its inferiors, the event is reported as usual. Otherwise, the event is reported relative to the focus window. .IP \(bu 5 If focus is .BR PointerRoot , the focus window is dynamically taken to be the root window of whatever screen the pointer is on at each keyboard event. In this case, the revert_to argument is ignored. .LP The specified focus window must be viewable at the time .B XSetInputFocus is called, or a .B BadMatch error results. If the focus window later becomes not viewable, the X server evaluates the revert_to argument to determine the new focus window as follows: .IP \(bu 5 If revert_to is .BR RevertToParent , the focus reverts to the parent (or the closest viewable ancestor), and the new revert_to value is taken to be .BR RevertToNone . .IP \(bu 5 If revert_to is .B RevertToPointerRoot or .BR RevertToNone , the focus reverts to .B PointerRoot or .BR None , respectively. When the focus reverts, the X server generates .B FocusIn and .B FocusOut events, but the last-focus-change time is not affected. .LP .B XSetInputFocus can generate .BR BadMatch , .BR BadValue , and .B BadWindow errors. .LP The .B XGetInputFocus function returns the focus window and the current focus state. .SH DIAGNOSTICS .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XWarpPointer(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XMotionEvent.man0000644014310600000120000000006614763154126012176 .so man__libmansuffix__/XButtonEvent.__libmansuffix__ libX11-1.8.12/man/XGetAtomNames.man0000644014310600000120000000006514763154126012252 .so man__libmansuffix__/XInternAtom.__libmansuffix__ libX11-1.8.12/man/XSync.man0000644014310600000120000000006014763154126010635 .so man__libmansuffix__/XFlush.__libmansuffix__ libX11-1.8.12/man/XCirculateSubwindows.man0000644014310600000120000000006614763154126013727 .so man__libmansuffix__/XRaiseWindow.__libmansuffix__ libX11-1.8.12/man/XCirculateSubwindowsUp.man0000644014310600000120000000006614763154126014234 .so man__libmansuffix__/XRaiseWindow.__libmansuffix__ libX11-1.8.12/man/RootWindowOfScreen.man0000644014310600000120000000007414763154126013336 .so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ libX11-1.8.12/man/XGetKeyboardMapping.man0000644014310600000120000000010014763154126013430 .so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ libX11-1.8.12/man/XSetAfterFunction.man0000644014310600000120000000006614763154126013152 .so man__libmansuffix__/XSynchronize.__libmansuffix__ libX11-1.8.12/man/XExposeEvent.man0000644014310600000120000001255014763154126012175 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XExposeEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XExposeEvent \- Expose event structure .SH STRUCTURES The structure for .B Expose events contains: .LP .EX typedef struct { int type; /\&* Expose */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; int x, y; int width, height; int count; /\&* if nonzero, at least this many more */ } XExposeEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The window member is set to the exposed (damaged) window. The x and y members are set to the coordinates relative to the window's origin and indicate the upper-left corner of the rectangle. The width and height members are set to the size (extent) of the rectangle. The count member is set to the number of .B Expose events that are to follow. If count is zero, no more .B Expose events follow for this window. However, if count is nonzero, at least that number of .B Expose events (and possibly more) follow for this window. Simple applications that do not want to optimize redisplay by distinguishing between subareas of its window can just ignore all .B Expose events with nonzero counts and perform full redisplays on events with zero counts. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XrmCombineFileDatabase.man0000644014310600000120000000007314763154126014065 .so man__libmansuffix__/XrmMergeDatabases.__libmansuffix__ libX11-1.8.12/man/XwcFreeStringList.man0000644014310600000120000000010314763154126013155 .so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ libX11-1.8.12/man/XDeleteProperty.man0000644014310600000120000000007414763154126012675 .so man__libmansuffix__/XGetWindowProperty.__libmansuffix__ libX11-1.8.12/man/XGetIconSizes.man0000644014310600000120000000007014763154126012270 .so man__libmansuffix__/XAllocIconSize.__libmansuffix__ libX11-1.8.12/man/XLookupKeysym.man0000644014310600000120000001515414763154126012406 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XLookupKeysym __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XLookupKeysym, XRefreshKeyboardMapping, XLookupString, XRebindKeysym \- handle keyboard input events in Latin-1 .SH SYNTAX .HP KeySym XLookupKeysym(\^XKeyEvent *\fIkey_event\fP\^, int \fIindex\fP\^); .HP int XRefreshKeyboardMapping(\^XMappingEvent *\fIevent_map\fP\^); .HP int XLookupString(\^XKeyEvent *\fIevent_struct\fP\^, char *\fIbuffer_return\fP\^, int \fIbytes_buffer\fP\^, KeySym *\fIkeysym_return\fP\^, XComposeStatus *\fIstatus_in_out\fP\^); .HP int XRebindKeysym(\^Display *\fIdisplay\fP\^, KeySym \fIkeysym\fP\^, KeySym \fIlist\fP\^[\^]\^, int \fImod_count\fP\^, _Xconst unsigned char *\fIstring\fP\^, int \fInum_bytes\fP\^); .SH ARGUMENTS .IP \fIbuffer_return\fP 1i Returns the translated characters. .IP \fIbytes_buffer\fP 1i Specifies the length of the buffer. No more than bytes_buffer of translation are returned. .IP \fInum_bytes\fP 1i Specifies the number of bytes in the string argument. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIevent_map\fP 1i Specifies the mapping event that is to be used. .IP \fIevent_struct\fP 1i Specifies the key event structure to be used. You can pass .B XKeyPressedEvent or .BR XKeyReleasedEvent . .IP \fIindex\fP 1i Specifies the index into the KeySyms list for the event's KeyCode. .IP \fIkey_event\fP 1i Specifies the .B KeyPress or .B KeyRelease event. .IP \fIkeysym\fP 1i Specifies the KeySym that is to be returned. .IP \fIkeysym_return\fP 1i Returns the KeySym computed from the event if this argument is not NULL. .IP \fIlist\fP 1i Specifies the KeySyms to be used as modifiers. .IP \fImod_count\fP 1i Specifies the number of modifiers in the modifier list. .IP \fIstatus_in_out\fP 1i Specifies or returns the .B XComposeStatus structure or NULL. .IP \fIstring\fP 1i Specifies the string that is copied and will be returned by .BR XLookupString . .SH DESCRIPTION The .B XLookupKeysym function uses a given keyboard event and the index you specified to return the KeySym from the list that corresponds to the KeyCode member in the .B XKeyPressedEvent or .B XKeyReleasedEvent structure. If no KeySym is defined for the KeyCode of the event, .B XLookupKeysym returns .BR NoSymbol . .LP The .B XRefreshKeyboardMapping function refreshes the stored modifier and keymap information. You usually call this function when a .B MappingNotify event with a request member of .B MappingKeyboard or .B MappingModifier occurs. The result is to update Xlib's knowledge of the keyboard. .LP The .B XLookupString function translates a key event to a KeySym and a string. The KeySym is obtained by using the standard interpretation of the .BR Shift , .BR Lock , group, and numlock modifiers as defined in the X Protocol specification. If the KeySym has been rebound (see .BR XRebindKeysym ), the bound string will be stored in the buffer. Otherwise, the KeySym is mapped, if possible, to an ISO Latin-1 character or (if the Control modifier is on) to an ASCII control character, and that character is stored in the buffer. .B XLookupString returns the number of characters that are stored in the buffer. .LP If present (non-NULL), the .B XComposeStatus structure records the state, which is private to Xlib, that needs preservation across calls to .B XLookupString to implement compose processing. The creation of .B XComposeStatus structures is implementation-dependent; a portable program must pass NULL for this argument. .LP The .B XRebindKeysym function can be used to rebind the meaning of a KeySym for the client. It does not redefine any key in the X server but merely provides an easy way for long strings to be attached to keys. .B XLookupString returns this string when the appropriate set of modifier keys are pressed and when the KeySym would have been used for the translation. No text conversions are performed; the client is responsible for supplying appropriately encoded strings. Note that you can rebind a KeySym that may not exist. .SH "SEE ALSO" XButtonEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XStringToKeysym(__libmansuffix__), XkbLookupKeySym(__libmansuffix__), XkbRefreshKeyboardMapping(__libmansuffix__), XmbLookupString(__libmansuffix__), XwcLookupString(__libmansuffix__), Xutf8LookupString(__libmansuffix__), Compose(__filemansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/DisplayString.man0000644014310600000120000000006314763154126012370 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XGetICValues.man0000644014310600000120000000006614763154126012042 .so man__libmansuffix__/XSetICValues.__libmansuffix__ libX11-1.8.12/man/XVisibilityEvent.man0000644014310600000120000001342614763154126013064 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XVisibilityEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XVisibilityEvent \- VisibilityNotify event structure .SH STRUCTURES The structure for .B VisibilityNotify events contains: .LP .EX typedef struct { int type; /\&* VisibilityNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; int state; } XVisibilityEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The window member is set to the window whose visibility state changes. The state member is set to the state of the window's visibility and can be .BR VisibilityUnobscured , .BR VisibilityPartiallyObscured , or .BR VisibilityFullyObscured . The X server ignores all of a window's subwindows when determining the visibility state of the window and processes .B VisibilityNotify events according to the following: .IP \(bu 5 When the window changes state from partially obscured, fully obscured, or not viewable to viewable and completely unobscured, the X server generates the event with the state member of the .B XVisibilityEvent structure set to .BR VisibilityUnobscured . .IP \(bu 5 When the window changes state from viewable and completely unobscured or not viewable to viewable and partially obscured, the X server generates the event with the state member of the .B XVisibilityEvent structure set to .BR VisibilityPartiallyObscured . .IP \(bu 5 When the window changes state from viewable and completely unobscured, viewable and partially obscured, or not viewable to viewable and fully obscured, the X server generates the event with the state member of the .B XVisibilityEvent structure set to .BR VisibilityFullyObscured . .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), .br \fI\*(xL\fP libX11-1.8.12/man/XQueryFont.man0000644014310600000120000000006314763154126011660 .so man__libmansuffix__/XLoadFont.__libmansuffix__ libX11-1.8.12/man/XVisualInfo.man0000644014310600000120000000007014763154126012001 .so man__libmansuffix__/XGetVisualInfo.__libmansuffix__ libX11-1.8.12/man/Makefile.am0000644014310600000120000010327414763154126011143 SUBDIRS = xkb libmandir = $(LIB_MAN_DIR) libman_PRE = \ $(all_shadows:=.man) \ $(file_shadows:=.man) \ AllPlanes.man \ BlackPixelOfScreen.man \ DisplayOfCCC.man \ ImageByteOrder.man \ IsCursorKey.man \ XAddConnectionWatch.man \ XAddHost.man \ XAllocClassHint.man \ XAllocColor.man \ XAllocIconSize.man \ XAllocSizeHints.man \ XAllocStandardColormap.man \ XAllocWMHints.man \ XAllowEvents.man \ XAnyEvent.man \ XButtonEvent.man \ XChangeKeyboardControl.man \ XChangeKeyboardMapping.man \ XChangePointerControl.man \ XChangeSaveSet.man \ XChangeWindowAttributes.man \ XCirculateEvent.man \ XCirculateRequestEvent.man \ XClearArea.man \ XClientMessageEvent.man \ XcmsAllocColor.man \ XcmsCCCOfColormap.man \ XcmsCIELabQueryMaxC.man \ XcmsCIELuvQueryMaxC.man \ XcmsColor.man \ XcmsConvertColors.man \ XcmsCreateCCC.man \ XcmsDefaultCCC.man \ XcmsQueryBlack.man \ XcmsQueryColor.man \ XcmsSetWhitePoint.man \ XcmsStoreColor.man \ XcmsTekHVCQueryMaxC.man \ XColormapEvent.man \ XConfigureEvent.man \ XConfigureRequestEvent.man \ XConfigureWindow.man \ XCopyArea.man \ XCreateColormap.man \ XCreateFontCursor.man \ XCreateFontSet.man \ XCreateGC.man \ XCreateIC.man \ XCreateOC.man \ XCreatePixmap.man \ XCreateRegion.man \ XCreateWindowEvent.man \ XCreateWindow.man \ XCrossingEvent.man \ XDefineCursor.man \ XDestroyWindowEvent.man \ XDestroyWindow.man \ XDrawArc.man \ XDrawImageString.man \ XDrawLine.man \ XDrawPoint.man \ XDrawRectangle.man \ XDrawString.man \ XDrawText.man \ XEmptyRegion.man \ XErrorEvent.man \ XExposeEvent.man \ XExtentsOfFontSet.man \ XFillRectangle.man \ XFilterEvent.man \ XFlush.man \ XFocusChangeEvent.man \ XFontSetExtents.man \ XFontsOfFontSet.man \ XFree.man \ XGetEventData.man \ XGetVisualInfo.man \ XGetWindowAttributes.man \ XGetWindowProperty.man \ XGetXCBConnection.man \ XGrabButton.man \ XGrabKeyboard.man \ XGrabKey.man \ XGrabPointer.man \ XGrabServer.man \ XGraphicsExposeEvent.man \ XGravityEvent.man \ XIconifyWindow.man \ XIfEvent.man \ XInitImage.man \ XInitThreads.man \ XInstallColormap.man \ XInternAtom.man \ XIntersectRegion.man \ XKeymapEvent.man \ XListFonts.man \ XLoadFont.man \ XLookupKeysym.man \ XMapEvent.man \ XMapRequestEvent.man \ XMapWindow.man \ XmbDrawImageString.man \ XmbDrawString.man \ XmbDrawText.man \ XmbLookupString.man \ XmbResetIC.man \ XmbTextEscapement.man \ XmbTextExtents.man \ XmbTextListToTextProperty.man \ XmbTextPerCharExtents.man \ XNextEvent.man \ XNoOp.man \ XOpenDisplay.man \ XOpenIM.man \ XOpenOM.man \ XParseGeometry.man \ XPolygonRegion.man \ XPropertyEvent.man \ XPutBackEvent.man \ XPutImage.man \ XQueryBestSize.man \ XQueryColor.man \ XQueryExtension.man \ XQueryPointer.man \ XQueryTree.man \ XRaiseWindow.man \ XReadBitmapFile.man \ XRecolorCursor.man \ XReparentEvent.man \ XReparentWindow.man \ XResizeRequestEvent.man \ XResourceManagerString.man \ XrmEnumerateDatabase.man \ XrmGetFileDatabase.man \ XrmGetResource.man \ XrmInitialize.man \ XrmMergeDatabases.man \ XrmPutResource.man \ XrmUniqueQuark.man \ XSaveContext.man \ XSelectInput.man \ XSelectionClearEvent.man \ XSelectionEvent.man \ XSelectionRequestEvent.man \ XSendEvent.man \ XSetArcMode.man \ XSetClipOrigin.man \ XSetCloseDownMode.man \ XSetCommand.man \ XSetErrorHandler.man \ XSetEventQueueOwner.man \ XSetFillStyle.man \ XSetFont.man \ XSetFontPath.man \ XSetICFocus.man \ XSetICValues.man \ XSetInputFocus.man \ XSetLineAttributes.man \ XSetPointerMapping.man \ XSetScreenSaver.man \ XSetSelectionOwner.man \ XSetState.man \ XSetTextProperty.man \ XSetTile.man \ XSetTransientForHint.man \ XSetWMClientMachine.man \ XSetWMColormapWindows.man \ XSetWMIconName.man \ XSetWMName.man \ XSetWMProperties.man \ XSetWMProtocols.man \ XStoreBytes.man \ XStoreColors.man \ XStringListToTextProperty.man \ XStringToKeysym.man \ XSupportsLocale.man \ XSynchronize.man \ XTextExtents.man \ XTextWidth.man \ XTranslateCoordinates.man \ XUnmapEvent.man \ XUnmapWindow.man \ XVaCreateNestedList.man \ XVisibilityEvent.man \ XWarpPointer.man filemandir = $(FILE_MAN_DIR) fileman_PRE = Compose.man libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) \ $(all_shadows:=.@LIB_MAN_SUFFIX@) fileman_DATA = $(fileman_PRE:man=@FILE_MAN_SUFFIX@) \ $(file_shadows:=.@FILE_MAN_SUFFIX@) EXTRA_DIST = $(libman_PRE) $(fileman_PRE) CLEANFILES = $(libman_DATA) $(fileman_DATA) SUFFIXES = .$(LIB_MAN_SUFFIX) .$(FILE_MAN_SUFFIX) .man MAN_SUBSTS += -e 's|__xlocaledir__|$(X11_LOCALEDATADIR)|g' # String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure .man.$(LIB_MAN_SUFFIX) .man.$(FILE_MAN_SUFFIX): $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@ # Generate man page shadow files (Replaces InstallManPageAliases from Imake) all_shadows = \ $(AllPlanes_shadows) \ $(BlackPixelOfScreen_shadows) \ $(DisplayOfCCC_shadows) \ $(ImageByteOrder_shadows) \ $(IsCursorKey_shadows) \ $(XAllocClassHint_shadows) \ $(XAllocIconSize_shadows) \ $(XAllocStandardColormap_shadows) \ $(XAllocSizeHints_shadows) \ $(XAllocWMHints_shadows) \ $(XAddHost_shadows) \ $(XAllocColor_shadows) \ $(XAnyEvent_shadows) \ $(XButtonEvent_shadows) \ $(XChangeKeyboardControl_shadows) \ $(XChangeKeyboardMapping_shadows) \ $(XChangePointerControl_shadows) \ $(XChangeSaveSet_shadows) \ $(XChangeWindowAttributes_shadows) \ $(XClearArea_shadows) \ $(XConfigureWindow_shadows) \ $(XCopyArea_shadows) \ $(XCreateColormap_shadows) \ $(XCreateFontCursor_shadows) \ $(XCreateFontSet_shadows) \ $(XCreateGC_shadows) \ $(XCreateIC_shadows) \ $(XInitImage_shadows) \ $(XCreateOC_shadows) \ $(XCreatePixmap_shadows) \ $(XCreateRegion_shadows) \ $(XCreateWindow_shadows) \ $(XDefineCursor_shadows) \ $(XDestroyWindow_shadows) \ $(XDrawArc_shadows) \ $(XDrawImageString_shadows) \ $(XDrawLine_shadows) \ $(XDrawPoint_shadows) \ $(XDrawRectangle_shadows) \ $(XDrawString_shadows) \ $(XDrawText_shadows) \ $(XEmptyRegion_shadows) \ $(XFillRectangle_shadows) \ $(XFlush_shadows) \ $(XFontsOfFontSet_shadows) \ $(XGraphicsExposeEvent_shadows) \ $(XrmGetFileDatabase_shadows) \ $(XrmGetResource_shadows) \ $(XGetEventData_shadows) \ $(XGetVisualInfo_shadows) \ $(XGetWindowAttributes_shadows) \ $(XGetWindowProperty_shadows) \ $(XGrabButton_shadows) \ $(XGrabKey_shadows) \ $(XGrabKeyboard_shadows) \ $(XGrabPointer_shadows) \ $(XGrabServer_shadows) \ $(XIconifyWindow_shadows) \ $(XIfEvent_shadows) \ $(XrmInitialize_shadows) \ $(XInstallColormap_shadows) \ $(XAddConnectionWatch_shadows) \ $(XIntersectRegion_shadows) \ $(XInternAtom_shadows) \ $(XListFonts_shadows) \ $(XLoadFont_shadows) \ $(XLookupKeysym_shadows) \ $(XrmMergeDatabases_shadows) \ $(XMapEvent_shadows) \ $(XMapWindow_shadows) \ $(XNextEvent_shadows) \ $(XOpenDisplay_shadows) \ $(XOpenIM_shadows) \ $(XOpenOM_shadows) \ $(XParseGeometry_shadows) \ $(XPolygonRegion_shadows) \ $(XPutImage_shadows) \ $(XrmPutResource_shadows) \ $(XQueryBestSize_shadows) \ $(XQueryColor_shadows) \ $(XQueryExtension_shadows) \ $(XResourceManagerString_shadows) \ $(XRaiseWindow_shadows) \ $(XReadBitmapFile_shadows) \ $(XRecolorCursor_shadows) \ $(XSaveContext_shadows) \ $(XSetICFocus_shadows) \ $(XSetICValues_shadows) \ $(XStringListToTextProperty_shadows) \ $(XSetArcMode_shadows) \ $(XSetClipOrigin_shadows) \ $(XSetCloseDownMode_shadows) \ $(XSetCommand_shadows) \ $(XSetErrorHandler_shadows) \ $(XSendEvent_shadows) \ $(XSetFillStyle_shadows) \ $(XSetFontPath_shadows) \ $(XSetInputFocus_shadows) \ $(XSetLineAttributes_shadows) \ $(XSetPointerMapping_shadows) \ $(XSetScreenSaver_shadows) \ $(XSetSelectionOwner_shadows) \ $(XSetState_shadows) \ $(XSetTransientForHint_shadows) \ $(XSetTextProperty_shadows) \ $(XSetTile_shadows) \ $(XSetWMClientMachine_shadows) \ $(XSetWMColormapWindows_shadows) \ $(XSetWMIconName_shadows) \ $(XSetWMName_shadows) \ $(XSetWMProperties_shadows) \ $(XSetWMProtocols_shadows) \ $(XStoreBytes_shadows) \ $(XStoreColors_shadows) \ $(XStringToKeysym_shadows) \ $(XSupportsLocale_shadows) \ $(XSynchronize_shadows) \ $(XmbTextListToTextProperty_shadows) \ $(XTextExtents_shadows) \ $(XTextWidth_shadows) \ $(XInitThreads_shadows) \ $(XrmUniqueQuark_shadows) \ $(XUnmapWindow_shadows) \ $(XcmsCCCOfColormap_shadows) \ $(XcmsAllocColor_shadows) \ $(XcmsColor_shadows) \ $(XcmsCreateCCC_shadows) \ $(XcmsCIELabQueryMaxC_shadows) \ $(XcmsCIELuvQueryMaxC_shadows) \ $(XcmsQueryBlack_shadows) \ $(XcmsQueryColor_shadows) \ $(XcmsStoreColor_shadows) \ $(XcmsSetWhitePoint_shadows) \ $(XcmsTekHVCQueryMaxC_shadows) \ $(XmbDrawImageString_shadows) \ $(XmbDrawString_shadows) \ $(XmbDrawText_shadows) \ $(XmbLookupString_shadows) \ $(XmbResetIC_shadows) \ $(XmbTextEscapement_shadows) \ $(XmbTextExtents_shadows) \ $(XmbTextPerCharExtents_shadows) AllPlanes_shadows = \ BlackPixel \ WhitePixel \ ConnectionNumber \ DefaultColormap \ DefaultDepth \ XListDepths \ DefaultGC \ DefaultRootWindow \ DefaultScreenOfDisplay \ DefaultScreen \ DefaultVisual \ DisplayCells \ DisplayPlanes \ DisplayString \ XMaxRequestSize \ XExtendedMaxRequestSize \ LastKnownRequestProcessed \ NextRequest \ ProtocolVersion \ ProtocolRevision \ QLength \ RootWindow \ ScreenCount \ ScreenOfDisplay \ ServerVendor \ VendorRelease BlackPixelOfScreen_shadows = \ WhitePixelOfScreen \ CellsOfScreen \ DefaultColormapOfScreen \ DefaultDepthOfScreen \ DefaultGCOfScreen \ DefaultVisualOfScreen \ DoesBackingStore \ DoesSaveUnders \ DisplayOfScreen \ XScreenNumberOfScreen \ EventMaskOfScreen \ HeightOfScreen \ HeightMMOfScreen \ MaxCmapsOfScreen \ MinCmapsOfScreen \ PlanesOfScreen \ RootWindowOfScreen \ WidthOfScreen \ WidthMMOfScreen DisplayOfCCC_shadows = \ VisualOfCCC \ ScreenNumberOfCCC \ ScreenWhitePointOfCCC \ ClientWhitePointOfCCC ImageByteOrder_shadows = \ BitmapBitOrder \ BitmapPad \ BitmapUnit \ DisplayHeight \ DisplayHeightMM \ DisplayWidth \ DisplayWidthMM \ XListPixmapFormats \ XPixmapFormatValues IsCursorKey_shadows = \ IsFunctionKey \ IsKeypadKey \ IsMiscFunctionKey \ IsModifierKey \ IsPFKey \ IsPrivateKeypadKey XAllocClassHint_shadows = \ XSetClassHint \ XGetClassHint \ XClassHint XAllocIconSize_shadows = \ XSetIconSizes \ XGetIconSizes \ XIconSize XAllocStandardColormap_shadows = \ XSetRGBColormaps \ XGetRGBColormaps \ XStandardColormap XAllocSizeHints_shadows = \ XSetWMNormalHints \ XGetWMNormalHints \ XSetWMSizeHints \ XGetWMSizeHints \ XSizeHints XAllocWMHints_shadows = \ XSetWMHints \ XGetWMHints \ XWMHints XAddHost_shadows = \ XAddHosts \ XListHosts \ XRemoveHost \ XRemoveHosts \ XSetAccessControl \ XEnableAccessControl \ XDisableAccessControl \ XHostAddress XAllocColor_shadows = \ XAllocNamedColor \ XAllocColorCells \ XAllocColorPlanes \ XFreeColors XAnyEvent_shadows = \ XEvent XButtonEvent_shadows = \ XKeyEvent \ XMotionEvent XChangeKeyboardControl_shadows = \ XGetKeyboardControl \ XAutoRepeatOn \ XAutoRepeatOff \ XBell \ XQueryKeymap \ XKeyboardControl XChangeKeyboardMapping_shadows = \ XGetKeyboardMapping \ XDisplayKeycodes \ XSetModifierMapping \ XGetModifierMapping \ XNewModifiermap \ XInsertModifiermapEntry \ XDeleteModifiermapEntry \ XFreeModifiermap \ XModifierKeymap XChangePointerControl_shadows = \ XGetPointerControl XChangeSaveSet_shadows = \ XAddToSaveSet \ XRemoveFromSaveSet XChangeWindowAttributes_shadows = \ XSetWindowBackground \ XSetWindowBackgroundPixmap \ XSetWindowBorder \ XSetWindowBorderPixmap \ XSetWindowColormap XClearArea_shadows = \ XClearWindow XConfigureWindow_shadows = \ XMoveWindow \ XResizeWindow \ XMoveResizeWindow \ XSetWindowBorderWidth \ XWindowChanges XCopyArea_shadows = \ XCopyPlane XCreateColormap_shadows = \ XCopyColormapAndFree \ XFreeColormap \ XColor XCreateFontCursor_shadows = \ XCreatePixmapCursor \ XCreateGlyphCursor XCreateFontSet_shadows = \ XFreeFontSet XCreateGC_shadows = \ XCopyGC \ XChangeGC \ XGetGCValues \ XFreeGC \ XGContextFromGC \ XGCValues XCreateIC_shadows = \ XDestroyIC \ XIMOfIC XInitImage_shadows = \ XCreateImage \ XGetPixel \ XPutPixel \ XSubImage \ XAddPixel \ XDestroyImage XCreateOC_shadows = \ XDestroyOC \ XSetOCValues \ XGetOCValues \ XOMOfOC XCreatePixmap_shadows = \ XFreePixmap XCreateRegion_shadows = \ XSetRegion \ XDestroyRegion XCreateWindow_shadows = \ XCreateSimpleWindow \ XSetWindowAttributes XDefineCursor_shadows = \ XUndefineCursor XDestroyWindow_shadows = \ XDestroySubwindows XDrawArc_shadows = \ XDrawArcs \ XArc XDrawImageString_shadows = \ XDrawImageString16 XDrawLine_shadows = \ XDrawLines \ XDrawSegments \ XSegment XDrawPoint_shadows = \ XDrawPoints \ XPoint XDrawRectangle_shadows = \ XDrawRectangles \ XRectangle XDrawString_shadows = \ XDrawString16 XDrawText_shadows = \ XDrawText16 \ XTextItem \ XTextItem16 XEmptyRegion_shadows = \ XEqualRegion \ XPointInRegion \ XRectInRegion XFillRectangle_shadows = \ XFillRectangles \ XFillPolygon \ XFillArc \ XFillArcs XFlush_shadows = \ XSync \ XEventsQueued \ XPending XFontsOfFontSet_shadows = \ XBaseFontNameListOfFontSet \ XLocaleOfFontSet \ XContextDependentDrawing \ XContextualDrawing \ XDirectionalDependentDrawing XGraphicsExposeEvent_shadows = \ XNoExposeEvent XrmGetFileDatabase_shadows = \ XrmPutFileDatabase \ XrmGetStringDatabase \ XrmLocaleOfDatabase \ XrmGetDatabase \ XrmSetDatabase \ XrmDestroyDatabase XrmGetResource_shadows = \ XrmQGetResource \ XrmQGetSearchList \ XrmQGetSearchResource XGetEventData_shadows = \ XFreeEventData \ XGenericEventCookie XGetVisualInfo_shadows = \ XMatchVisualInfo \ XVisualIDFromVisual \ XVisualInfo XGetWindowAttributes_shadows = \ XGetGeometry \ XWindowAttributes XGetWindowProperty_shadows = \ XListProperties \ XChangeProperty \ XRotateWindowProperties \ XDeleteProperty XGrabButton_shadows = \ XUngrabButton XGrabKey_shadows = \ XUngrabKey XGrabKeyboard_shadows = \ XUngrabKeyboard XGrabPointer_shadows = \ XUngrabPointer \ XChangeActivePointerGrab XGrabServer_shadows = \ XUngrabServer XIconifyWindow_shadows = \ XWithdrawWindow \ XReconfigureWMWindow XIfEvent_shadows = \ XCheckIfEvent \ XPeekIfEvent XrmInitialize_shadows = \ XrmParseCommand \ XrmValue \ XrmOptionKind \ XrmOptionDescRec XInstallColormap_shadows = \ XUninstallColormap \ XListInstalledColormaps XAddConnectionWatch_shadows = \ XRemoveConnectionWatch \ XProcessInternalConnection \ XInternalConnectionNumbers XIntersectRegion_shadows = \ XUnionRegion \ XUnionRectWithRegion \ XSubtractRegion \ XXorRegion \ XOffsetRegion \ XShrinkRegion XInternAtom_shadows = \ XInternAtoms \ XGetAtomName \ XGetAtomNames XListFonts_shadows = \ XFreeFontNames \ XListFontsWithInfo \ XFreeFontInfo XLoadFont_shadows = \ XQueryFont \ XLoadQueryFont \ XFreeFont \ XGetFontProperty \ XUnloadFont \ XCharStruct \ XFontProp \ XChar2b \ XFontStruct XLookupKeysym_shadows = \ XRefreshKeyboardMapping \ XLookupString \ XRebindKeysym XrmMergeDatabases_shadows = \ XrmCombineDatabase \ XrmCombineFileDatabase XMapEvent_shadows = \ XMappingEvent XMapWindow_shadows = \ XMapRaised \ XMapSubwindows XNextEvent_shadows = \ XPeekEvent \ XWindowEvent \ XCheckWindowEvent \ XMaskEvent \ XCheckMaskEvent \ XCheckTypedEvent \ XCheckTypedWindowEvent XOpenDisplay_shadows = \ XCloseDisplay XOpenIM_shadows = \ XCloseIM \ XSetIMValues \ XGetIMValues \ XDisplayOfIM \ XLocaleOfIM \ XRegisterIMInstantiateCallback \ XUnregisterIMInstantiateCallback XOpenOM_shadows = \ XCloseOM \ XSetOMValues \ XGetOMValues \ XDisplayOfOM \ XLocaleOfOM XParseGeometry_shadows = \ XWMGeometry XPolygonRegion_shadows = \ XClipBox XPutImage_shadows = \ XGetImage \ XGetSubImage XrmPutResource_shadows = \ XrmQPutResource \ XrmPutStringResource \ XrmQPutStringResource \ XrmPutLineResource XQueryBestSize_shadows = \ XQueryBestTile \ XQueryBestStipple XQueryColor_shadows = \ XQueryColors \ XLookupColor \ XParseColor XQueryExtension_shadows = \ XListExtensions \ XFreeExtensionList XResourceManagerString_shadows = \ XScreenResourceString XRaiseWindow_shadows = \ XLowerWindow \ XCirculateSubwindows \ XCirculateSubwindowsUp \ XCirculateSubwindowsDown \ XRestackWindows XReadBitmapFile_shadows = \ XReadBitmapFileData \ XWriteBitmapFile \ XCreatePixmapFromBitmapData \ XCreateBitmapFromData XRecolorCursor_shadows = \ XFreeCursor \ XQueryBestCursor XSaveContext_shadows = \ XFindContext \ XDeleteContext \ XUniqueContext XSetICFocus_shadows = \ XUnsetICFocus XSetICValues_shadows = \ XGetICValues XStringListToTextProperty_shadows = \ XTextPropertyToStringList \ XFreeStringList \ XTextProperty XSetArcMode_shadows = \ XSetSubwindowMode \ XSetGraphicsExposure XSetClipOrigin_shadows = \ XSetClipMask \ XSetClipRectangles XSetCloseDownMode_shadows = \ XKillClient XSetCommand_shadows = \ XGetCommand XSetErrorHandler_shadows = \ XGetErrorText \ XDisplayName \ XSetIOErrorHandler \ XGetErrorDatabaseText XSendEvent_shadows = \ XDisplayMotionBufferSize \ XGetMotionEvents \ XTimeCoord XSetFillStyle_shadows = \ XSetFillRule XSetFontPath_shadows = \ XGetFontPath \ XFreeFontPath XSetInputFocus_shadows = \ XGetInputFocus XSetLineAttributes_shadows = \ XSetDashes XSetPointerMapping_shadows = \ XGetPointerMapping XSetScreenSaver_shadows = \ XForceScreenSaver \ XActivateScreenSaver \ XResetScreenSaver \ XGetScreenSaver XSetSelectionOwner_shadows = \ XGetSelectionOwner \ XConvertSelection XSetState_shadows = \ XSetFunction \ XSetPlaneMask \ XSetForeground \ XSetBackground XSetTransientForHint_shadows = \ XGetTransientForHint XSetTextProperty_shadows = \ XGetTextProperty XSetTile_shadows = \ XSetStipple \ XSetTSOrigin XSetWMClientMachine_shadows = \ XGetWMClientMachine XSetWMColormapWindows_shadows = \ XGetWMColormapWindows XSetWMIconName_shadows = \ XGetWMIconName \ XSetIconName \ XGetIconName XSetWMName_shadows = \ XGetWMName \ XStoreName \ XFetchName XSetWMProperties_shadows = \ XmbSetWMProperties \ Xutf8SetWMProperties XSetWMProtocols_shadows = \ XGetWMProtocols XStoreBytes_shadows = \ XStoreBuffer \ XFetchBytes \ XFetchBuffer \ XRotateBuffers XStoreColors_shadows = \ XStoreColor \ XStoreNamedColor XStringToKeysym_shadows = \ XKeysymToString \ XKeycodeToKeysym \ XKeysymToKeycode \ XConvertCase XSupportsLocale_shadows = \ XSetLocaleModifiers XSynchronize_shadows = \ XSetAfterFunction XmbTextListToTextProperty_shadows = \ XwcTextListToTextProperty \ Xutf8TextListToTextProperty \ XmbTextPropertyToTextList \ XwcTextPropertyToTextList \ Xutf8TextPropertyToTextList \ XwcFreeStringList \ XDefaultString XTextExtents_shadows = \ XTextExtents16 \ XQueryTextExtents \ XQueryTextExtents16 XTextWidth_shadows = \ XTextWidth16 XInitThreads_shadows = \ XLockDisplay \ XUnlockDisplay XrmUniqueQuark_shadows = \ XrmStringToQuark \ XrmPermStringToQuark \ XrmQuarkToString \ XrmStringToQuarkList \ XrmStringToBindingQuarkList XUnmapWindow_shadows = \ XUnmapSubwindows XcmsCCCOfColormap_shadows = \ XcmsSetCCCOfColormap XcmsAllocColor_shadows = \ XcmsAllocNamedColor XcmsColor_shadows = \ XcmsRGB \ XcmsRGBi \ XcmsCIEXYZ \ XcmsCIEuvY \ XcmsCIExyY \ XcmsCIELab \ XcmsCIELuv \ XcmsTekHVC \ XcmsPad XcmsCreateCCC_shadows = \ XcmsFreeCCC XcmsCIELabQueryMaxC_shadows = \ XcmsCIELabQueryMaxL \ XcmsCIELabQueryMaxLC \ XcmsCIELabQueryMinL XcmsCIELuvQueryMaxC_shadows = \ XcmsCIELuvQueryMaxL \ XcmsCIELuvQueryMaxLC \ XcmsCIELuvQueryMinL XcmsQueryBlack_shadows = \ XcmsQueryBlue \ XcmsQueryGreen \ XcmsQueryRed \ XcmsQueryWhite XcmsQueryColor_shadows = \ XcmsQueryColors \ XcmsLookupColor XcmsStoreColor_shadows = \ XcmsStoreColors XcmsSetWhitePoint_shadows = \ XcmsSetWhiteAdjustProc XcmsTekHVCQueryMaxC_shadows = \ XcmsTekHVCQueryMaxV \ XcmsTekHVCQueryMaxVC \ XcmsTekHVCQueryMaxVSamples \ XcmsTekHVCQueryMinV XmbDrawImageString_shadows = \ XwcDrawImageString \ Xutf8DrawImageString XmbDrawString_shadows = \ XwcDrawString \ Xutf8DrawString XmbDrawText_shadows = \ XwcDrawText \ Xutf8DrawText XmbLookupString_shadows = \ XwcLookupString \ Xutf8LookupString XmbResetIC_shadows = \ XwcResetIC \ Xutf8ResetIC XmbTextEscapement_shadows = \ XwcTextEscapement \ Xutf8TextEscapement XmbTextExtents_shadows = \ XwcTextExtents \ Xutf8TextExtents XmbTextPerCharExtents_shadows = \ XwcTextPerCharExtents \ Xutf8TextPerCharExtents file_shadows = \ $(Compose_shadows) Compose_shadows = \ XCompose libX11-1.8.12/man/XGetEventData.man0000644014310600000120000000730014763154126012240 .\" Copyright \(co 2009 Red Hat, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining a .\" copy of this software and associated documentation files (the "Software"), .\" to deal in the Software without restriction, including without limitation .\" the rights to use, copy, modify, merge, publish, distribute, sublicense, .\" and/or sell copies of the Software, and to permit persons to whom the .\" Software is furnished to do so, subject to the following conditions: .\" .\" The above copyright notice and this permission notice (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. .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XGetEventData __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGetEventData, XFreeEventData, XGenericEventCookie \- retrieve and free additional event data through cookies. .SH SYNTAX .HP Bool XGetEventData\^(\^Display *\fIdisplay\fP\^, XGenericEventCookie *\fIcookie\fP\^); .HP void XFreeEventData\^(\^Display *\fIdisplay\fP\^, XGenericEventCookie *\fIcookie\fP\^); .HP .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIcookie\fP 1i Specifies the cookie to free or retrieve the data for. .SH STRUCTURES .EX typedef struct { int type; unsigned long serial; Bool send_event; Display *display; int extension; int evtype; unsigned int cookie; void *data; } XGenericEventCookie; .EE .SH DESCRIPTION Some extension .B XGenericEvents require additional memory to store information. For these events, the library returns a .B XGenericEventCookie with a token ('cookie') unique to this event. The .BR XGenericEventCookie 's data pointer is undefined until .B XGetEventData is called. The .B XGetEventData function retrieves this extra data for the given cookie. No round-trip to the server is required. If the cookie is invalid or the event is not an event handled by cookie handlers, .B False is returned. If .B XGetEventData returns .BR True , the cookie's data pointer points to the memory containing the event information. A client must call .B XFreeEventData to free this memory. .B XGetEventData returns .B False for multiple calls for the same event cookie. The .B XFreeEventData function frees the data associated with a cookie. A client must call .B XFreeEventData for each cookie claimed with .BR XGetEventData . .SH EXAMPLE CODE .EX XEvent event; XGenericEventCookie *cookie = &ev; XNextEvent(display, &event); if (XGetEventData(display, cookie)) { handle_cookie_event(cookie->data); } else handle_event(&event); } XFreeEventData(display, cookie); .EE .SH NOTES A cookie is defined as unclaimed if it has been returned to the client through .B XNextEvent but its data has not been retrieved via .BR XGetEventData . Subsequent calls to .B XNextEvent may free memory associated with unclaimed cookies. Multi-threaded X clients must ensure that .B XGetEventData is called before the next call to .BR XNextEvent . .SH "SEE ALSO" XNextEvent(__libmansuffix__), .br \fI\*(xL\fP libX11-1.8.12/man/XRebindKeysym.man0000644014310600000120000000006714763154126012335 .so man__libmansuffix__/XLookupKeysym.__libmansuffix__ libX11-1.8.12/man/XrmQuarkToString.man0000644014310600000120000000007014763154126013036 .so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__ libX11-1.8.12/man/XConfigureEvent.man0000644014310600000120000001350114763154126012650 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XConfigureEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XConfigureEvent \- ConfigureNotify event structure .SH STRUCTURES The structure for .B ConfigureNotify events contains: .LP .EX typedef struct { int type; /\&* ConfigureNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window event; Window window; int x, y; int width, height; int border_width; Window above; Bool override_redirect; } XConfigureEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The event member is set either to the reconfigured window or to its parent, depending on whether .B StructureNotify or .B SubstructureNotify was selected. The window member is set to the window whose size, position, border, and/or stacking order was changed. .LP The x and y members are set to the coordinates relative to the parent window's origin and indicate the position of the upper-left outside corner of the window. The width and height members are set to the inside size of the window, not including the border. The border_width member is set to the width of the window's border, in pixels. .LP The above member is set to the sibling window and is used for stacking operations. If the X server sets this member to .BR None , the window whose state was changed is on the bottom of the stack with respect to sibling windows. However, if this member is set to a sibling window, the window whose state was changed is placed on top of this sibling window. .LP The override_redirect member is set to the override-redirect attribute of the window. Window manager clients normally should ignore this window if the override_redirect member is .BR True . .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XrmMergeDatabases.man0000644014310600000120000001166014763154126013137 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XrmMergeDatabases __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmMergeDatabases, XrmCombineDatabase, XrmCombineFileDatabase \- merge resource databases .SH SYNTAX .HP #include .HP void XrmMergeDatabases(\^XrmDatabase \fIsource_db\fP, XrmDatabase *\fItarget_db\fP\^); .HP void XrmCombineDatabase(\^XrmDatabase \fIsource_db\fP, XrmDatabase *\fItarget_db\fP, Bool \fIoverride\fP\^); .HP Status XrmCombineFileDatabase(\^_Xconst char *\fIfilename\fP, XrmDatabase *\fItarget_db\fP\^, Bool \fIoverride\fP); .SH ARGUMENTS .IP \fIsource_db\fP 1i Specifies the resource database that is to be merged into the target database. .IP \fItarget_db\fP 1i Specifies the resource database into which the source database is to be merged. .IP \fIfilename\fP 1i Specifies the resource database file name. .IP \fIoverride\fP 1i Specifies whether source entries override target ones. .SH DESCRIPTION Calling the .B XrmMergeDatabases function is equivalent to calling the .B XrmCombineDatabase function with an override argument of .BR True . .LP The .B XrmCombineDatabase function merges the contents of one database into another. If the same specifier is used for an entry in both databases, the entry in the source_db will replace the entry in the target_db if override is .BR True ; otherwise, the entry in source_db is discarded. If target_db contains NULL, .B XrmCombineDatabase simply stores source_db in it. Otherwise, source_db is destroyed by the merge, but the database pointed to by target_db is not destroyed. The database entries are merged without changing values or types, regardless of the locales of the databases. The locale of the target database is not modified. .LP The .B XrmCombineFileDatabase function merges the contents of a resource file into a database. If the same specifier is used for an entry in both the file and the database, the entry in the file will replace the entry in the database if override is .BR True ; otherwise, the entry in the file is discarded. The file is parsed in the current locale. If the file cannot be read, a zero status is returned; otherwise, a nonzero status is returned. If target_db contains NULL, .B XrmCombineFileDatabase creates and returns a new database to it. Otherwise, the database pointed to by target_db is not destroyed by the merge. The database entries are merged without changing values or types, regardless of the locale of the database. The locale of the target database is not modified. .SH "SEE ALSO" XrmGetResource(__libmansuffix__), XrmInitialize(__libmansuffix__), XrmPutResource(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetWMColormapWindows.man0000644014310600000120000001266214763154126014003 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetWMColormapWindows __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetWMColormapWindows, XGetWMColormapWindows \- set or read a window's WM_COLORMAP_WINDOWS property .SH SYNTAX .HP Status XSetWMColormapWindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window *\fIcolormap_windows\fP\^, int \fIcount\fP\^); .HP Status XGetWMColormapWindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window **\fIcolormap_windows_return\fP\^, int *\fIcount_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIcolormap_windows\fP 1i Specifies the list of windows. .IP \fIcolormap_windows_return\fP 1i Returns the list of windows. .IP \fIcount\fP 1i Specifies the number of windows in the list. .IP \fIcount_return\fP 1i Returns the number of windows in the list. .IP \fIw\fP 1i Specifies the window. .SH DESCRIPTION The .B XSetWMColormapWindows function replaces the WM_COLORMAP_WINDOWS property on the specified window with the list of windows specified by the colormap_windows argument. It the property does not already exist, .B XSetWMColormapWindows sets the WM_COLORMAP_WINDOWS property on the specified window to the list of windows specified by the colormap_windows argument. The property is stored with a type of WINDOW and a format of 32. If it cannot intern the WM_COLORMAP_WINDOWS atom, .B XSetWMColormapWindows returns a zero status. Otherwise, it returns a nonzero status. .LP .B XSetWMColormapWindows can generate .B BadAlloc and .B BadWindow errors. .LP The .B XGetWMColormapWindows function returns the list of window identifiers stored in the WM_COLORMAP_WINDOWS property on the specified window. These identifiers indicate the colormaps that the window manager may need to install for this window. If the property exists, is of type WINDOW, is of format 32, and the atom WM_COLORMAP_WINDOWS can be interned, .B XGetWMColormapWindows sets the windows_return argument to a list of window identifiers, sets the count_return argument to the number of elements in the list, and returns a nonzero status. Otherwise, it sets neither of the return arguments and returns a zero status. To release the list of window identifiers, use .BR XFree . .LP .B XGetWMColormapWindows can generate a .B BadWindow error. .SH PROPERTIES .TP 1i \s-1WM_COLORMAP_WINDOWS\s+1 The list of window IDs that may need a different colormap from that of their top-level window. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocIconSize(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XAllocWMHints(__libmansuffix__), XFree(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XSetWMProtocols(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/xkb/0000755014310600000120000000000014763154171007744 5libX11-1.8.12/man/xkb/XkbChangeTypesOfKey.man0000644014310600000120000001416114763154126014201 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbChangeTypesOfKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbChangeTypesOfKey \- Change the number of groups and the types bound to a key .SH SYNOPSIS .HP .B Status XkbChangeTypesOfKey .BI "(\^XkbDescPtr " "xkb" "\^," .BI "int " "key" "\^," .BI "int " "n_groups" "\^," .BI "unsigned int " "groups" "\^," .BI "int *" "new_types_in" "\^," .BI "XkbMapChangesPtr " "p_changes" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description to be changed .TP .I key keycode for key of interest .TP .I n_groups new number of groups for key .TP .I groups mask indicating groups to change .TP .I new_types_in indices for new groups specified in groups .TP .I p_changes notes changes made to xkb .SH DESCRIPTION .LP .I XkbChangeTypesOfKey reallocates the symbols and actions bound to the key, if necessary, and initializes any new symbols or actions to NoSymbol or NoAction, as appropriate. If the p_changes parameter is not NULL, .I XkbChangeTypesOfKey adds the XkbKeySymsMask to the changes field of .I p_changes and modifies the .I first_key_sym and .I num_key_syms fields of .I p_changes to include the .I key that was changed. See STRUCTURE for more information on the XkbMapChangesPtr structure. If successful, .I XkbChangeTypesOfKey returns Success. The .I n_groups parameter specifies the new number of groups for the key. The .I groups parameter is a mask specifying the groups for which new types are supplied and is a bitwise inclusive OR of the following masks: XkbGroup1Mask, XkbGroup2Mask, XkbGroup3Mask, and XkbGroup4Mask. The .I new_types_in parameter is an integer array of length .I n_groups. Each entry represents the type to use for the associated group and is an index into .I xkb->map->types. The .I new_types_in array is indexed by group index; if .I n_groups is four and .I groups only has Group1Mask and Group3Mask set, .I new_types_in looks like this: .nf new_types_in[0] = type for Group1 new_types_in[1] = ignored new_types_in[2] = type for Group3 new_types_in[3] = ignored .fi For convenience, Xkb provides the following constants to use as indices to the groups: .TS c s l l l l. Table 1 Group Index Constants _ Constant Name Value _ XkbGroup1Index 0 XkbGroup2Index 1 XkbGroup3Index 2 XkbGroup4Index 3 .TE If the Xkb extension has not been properly initialized, .I XkbChangeTypesOfKey returns BadAccess. If the .I xkb parameter it not valid (that is, it is NULL or it does not contain a valid client map), .I XkbChangeTypesOfKey returns BadMatch. If the .I key is not a valid keycode, .I n_groups is greater than XkbNumKbdGroups, or the .I groups mask does not contain any of the valid group mask bits, .I XkbChangeTypesOfKey returns BadValue. If it is necessary to resize the key symbols or key actions arrays and any allocation errors occur, .I XkbChangeTypesOfKey returns BadAlloc. .SH STRUCTURES .LP Use the XkbMapChangesRec structure to identify and track partial modifications to the mapping components and to reduce the amount of traffic between the server and clients. .nf typedef struct _XkbMapChanges { unsigned short changed; /\&* identifies valid components in structure */ KeyCode min_key_code; /\&* lowest numbered keycode for device */ KeyCode max_key_code; /\&* highest numbered keycode for device */ unsigned char first_type; /\&* index of first key type modified */ unsigned char num_types; /\&* # types modified */ KeyCode first_key_sym; /\&* first key whose key_sym_map changed */ unsigned char num_key_syms; /\&* # key_sym_map entries changed */ KeyCode first_key_act; /\&* first key whose key_acts entry changed */ unsigned char num_key_acts; /\&* # key_acts entries changed */ KeyCode first_key_behavior; /\&* first key whose behaviors changed */ unsigned char num_key_behaviors; /\&* # behaviors entries changed */ KeyCode first_key_explicit; /\&* first key whose explicit entry changed */ unsigned char num_key_explicit; /\&* # explicit entries changed */ KeyCode first_modmap_key; /\&* first key whose modmap entry changed */ unsigned char num_modmap_keys; /\&* # modmap entries changed */ KeyCode first_vmodmap_key; /\&* first key whose vmodmap changed */ unsigned char num_vmodmap_keys; /\&* # vmodmap entries changed */ unsigned char pad1; /\&* reserved */ unsigned short vmods; /\&* mask indicating which vmods changed */ } XkbMapChangesRec,*XkbMapChangesPtr; .fi .SH DIAGNOSTICS .TP 15 .B BadAccess The Xkb extension has not been properly initialized .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbAllocIndicatorMaps.man0000644014310600000120000000450514763154126014542 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocIndicatorMaps __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocIndicatorMaps \- Allocates, directly, the .I indicators member of the keyboard description record .SH SYNOPSIS .HP .B Status XkbAllocIndicatorMaps .BI "(\^variable_type *" "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description structure .SH DESCRIPTION .LP The .I xkb parameter must point to a valid keyboard description. If it doesn't, .I XkbAllocIndicatorMaps returns a BadMatch error. Otherwise, .I XkbAllocIndicatorMaps allocates and initializes the .I indicators member of the keyboard description record and returns Success. If .I XkbAllocIndicatorMaps was unable to allocate the indicators record, it reports a BadAlloc error. .SH RETURN VALUES" .TP 15 Success The .I XkbAllocIndicatorMaps function returns Success if it is successful in allocating and initializing the .I indicators member of the keyboard description record. .SH DIAGNOSTICS .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .B BadAlloc Unable to allocate storage libX11-1.8.12/man/xkb/XkbAllocGeomOutlines.man0000644014310600000120000000507614763154126014423 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomOutlines __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomOutlines \- Allocate space for an arbitrary number of outlines to a shape .SH SYNOPSIS .HP .B Status XkbAllocGeomOutlines .BI "(\^XkbShapePtr " "shape" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I shape shape for which outlines should be allocated .TP .I num_needed number of new outlines required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomOutlines allocates space for .I num_needed outlines in the specified .I shape. The outlines are not initialized. To free geometry outlines, use .I XkbFreeGeomOutlines. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbFreeGeomOutlines (__libmansuffix__) libX11-1.8.12/man/xkb/XkbInitCanonicalKeyTypes.man0000644014310600000120000000556614763154126015253 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbInitCanonicalKeyTypes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbInitCanonicalKeyTypes \- Set the definitions of the canonical key types in a client map to their default values .SH SYNOPSIS .HP .B Status XkbInitCanonicalKeyTypes .BI "(\^XkbDescPtr " "xkb" "\^," .BI "unsigned int " "which" "\^," .BI "int " "keypadVMod" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description containing client map to initialize .TP .I which mask of types to initialize .TP .I keypadVMod index of NumLock virtual modifier .SH DESCRIPTION .LP .I XkbInitCanonicalKeyTypes initializes the first XkbNumRequiredTypes key types of the keyboard specified by the .I xkb parameter to their default values. The .I which parameter specifies what canonical key types to initialize and is a bitwise inclusive OR of the following masks: XkbOneLevelMask, XkbTwoLevelMask, XkbAlphabeticMask, and XkbKeypadMask. Only those canonical types specified by the .I which mask are initialized. If XkbKeypadMask is set in the .I which parameter, .I XkbInitCanonicalKeyTypes looks up the NumLock named virtual modifier to determine which virtual modifier to use when initializing the KEYPAD key type. If the NumLock virtual modifier does not exist, .I XkbInitCanonicalKeyTypes creates it. .I XkbInitCanonicalKeyTypes normally returns Success. It returns BadAccess if the Xkb extension has not been properly initialized, and BadAccess if the xkb parameter is not valid. .SH "RETURN VALUES" .TP 15 Success The .I XkbInitCanonicalKeyTypes function return Success if the Xkb extension has been properly initialized and the xkb parameter is valid. .SH DIAGNOSTICS .TP 15 .B BadAccess The Xkb extension has not been properly initialized libX11-1.8.12/man/xkb/XkbGetKeyVirtualModMap.man0000644014310600000120000000630514763154126014667 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetKeyVirtualModMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetKeyVirtualModMap \- Obtain the virtual modifier map (the vmodmap array) for a subset of the keys in a keyboard description .SH SYNOPSIS .HP .B Status XkbGetKeyVirtualModMap .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "first" "\^," .BI "unsigned int " "num" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to server .TP .I first keycode of first key to fetch .TP .I num number of keys for which virtual mod maps are desired .TP .I xkb Xkb description where results will be placed .SH DESCRIPTION .LP .I XkbGetKeyVirutalModmap sends a request to the server to obtain the virtual modifier mappings for .I num keys on the keyboard starting with key .I first. It waits for a reply and returns the virtual modifier mappings in the .I server->vmodmap array of .I xkb. If successful, .I XkbGetKeyVirtualModMap returns Success. The .I xkb parameter must be a pointer to a valid Xkb keyboard description. If the .I server map in the .I xkb parameter has not been allocated, .I XkbGetKeyVirtualModMap allocates and initializes it before obtaining the virtual modifier mappings. If the server does not have a compatible version of Xkb, or the Xkb extension has not been properly initialized, .I XkbGetKeyVirtualModMap returns BadMatch. If .I num is less than 1 or greater than XkbMaxKeyCount, .I XkbGetKeyVirtualModMap returns BadValue. If any allocation errors occur, .I XkbGetKeyVirtualModMap returns BadAlloc. .SH "RETURN VALUES" .TP 15 Success The .I XkbGetKeyVirutalModmap function returns Success following a successful reply from the server to obtain the virtual modifier mappings for .I num keys on the keyboard starting with key .I first. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbGetKeyActions.man0000644014310600000120000000540514763154126013543 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetKeyActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetKeyActions \- Update the actions (the key_acts array) for a subset of the keys in a keyboard description .SH SYNOPSIS .HP .B Status XkbGetKeyActions .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "first" "\^," .BI "unsigned int " "num" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I first keycode of first key of interest .TP .I num number of keys desired .TP .I xkb pointer to keyboard description where result is stored .SH DESCRIPTION .LP .I XkbGetKeyActions sends a request to the server to obtain the actions for .I num keys on the keyboard starting with key .I first. It waits for a reply and returns the actions in the .I server->key_acts field of .I xkb. If successful, .I XkbGetKeyActions returns Success. The .I xkb parameter must be a pointer to a valid Xkb keyboard description. If the .I server map, in the .I xkb parameter, has not been allocated, .I XkbGetKeyActions allocates and initializes it before obtaining the actions. If the server does not have a compatible version of Xkb, or the Xkb extension has not been properly initialized, .I XkbGetKeyActions returns BadAccess. If .I num is less than 1 or greater than XkbMaxKeyCount, .I XkbGetKeyActions returns BadValue. If any allocation errors occur, .I XkbGetKeyActions returns BadAlloc. .SH DIAGNOSTICS .TP 15 .B BadAccess The Xkb extension has not been properly initialized .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbAddGeomRow.man0000644014310600000120000000621514763154126013022 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddGeomRow __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddGeomRow \- Add a row to a section .SH SYNOPSIS .HP .B XkbRowPtr XkbAddGeomRow .BI "(\^XkbSectionPtr " "section" "\^," .BI "int " "sz_keys" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I section section to be updated .TP .I sz_keys number of keys to be reserved .SH DESCRIPTION .LP Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the .I num_ * fields of the corresponding structure is incremented by 1. These functions do not change .I sz_* unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements. The top-level geometry description includes a list of .I geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. One of the components of a keyboard geometry section is one or more rows of keys. .I XkbAddGeomRow adds one row to the specified .I section. The newly created row contains space for the number of keys specified in .I sz_keys. They are allocated and zeroed, but otherwise uninitialized. .I XkbAddGeomRow returns NULL if any of the parameters is empty or if it was not able to allocate space for the row. To allocate space for an arbitrary number of rows to a section, use the .I XkbAllocGeomRows function. .SH STRUCTURES .LP .nf typedef struct _XkbRow { short top; short left; unsigned short num_keys; unsigned short sz_keys; int vertical; XkbKeyPtr keys; XkbBoundsRec bounds; } XkbRowRec, *XkbRowPtr; .fi .SH "SEE ALSO" .BR XkbAllocGeomRows (__libmansuffix__) libX11-1.8.12/man/xkb/XkbResizeKeyActions.man0000644014310600000120000000664514763154126014274 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbResizeKeyActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbResizeKeyActions \- Change the number of actions bound to a key .SH SYNOPSIS .HP .B XkbAction * XkbResizeKeyActions .BI "(\^XkbDescRec *" "xkb" "\^," .BI "int " "key" "\^," .BI "int " "needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description to change .TP .I key keycode of key to change .TP .I needed new number of actions required .SH DESCRIPTION .LP The .I xkb parameter points to the keyboard description containing the .I key whose number of actions is to be changed. The .I key parameter is the keycode of the key to change, and needed specifies the new number of actions required for the key. .I XkbResizeKeyActions reserves the space needed for the actions and returns a pointer to the beginning of the new array that holds the actions. It can change the .I acts, num_acts, and .I size_acts fields of .I xkb->server if it is necessary to reallocate the .I acts array. If .I needed is greater than the current number of keysyms for the key, .I XkbResizeKeyActions initializes all new actions in the array to NoAction. Because the number of actions needed by a key is normally computed as width * number of groups, and .I XkbResizeKeyActions does not modify either the width or number of groups for the key, a discrepancy exists on return from .I XkbResizeKeyActions between the space allocated for the actions and the number required. The unused entries in the list of actions returned by .I XkbResizeKeyActions are not preserved across future calls to any of the map editing functions, so you must update the key actions (which updates the width and number of groups for the key) before calling another allocator function. A call to .I XkbChangeTypesOfKey updates these. If any allocation errors occur while resizing the number of actions bound to the key, .I XkbResizeKeyActions returns NULL. .SH "SEE ALSO" .BR XkbChangeTypesOfKey (__libmansuffix__), .BR XkbResizeKeySyms (__libmansuffix__) .SH NOTES .LP A change to the number of actions bound to a key should be accompanied by a change in the number of symbols bound to a key. Refer to .I XkbResizeKeySyms for more information on changing the number of symbols bound to a key. libX11-1.8.12/man/xkb/XkbSetPtrActionX.man0000644014310600000120000000742614763154126013546 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetPtrActionX __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetPtrActionX \- Sets the high_XXX and low_XXX fields of act from the signed integer value x .SH SYNOPSIS .HP .B void XkbSetPtrActionX .BI "(\^XkbPtrAction " "act" "\^," .BI "int " "x" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action in which to set X .TP .I x new value to set .SH DESCRIPTION .LP Actions associated with the XkbPtrAction structure move the pointer when keys are pressed and released. If the MouseKeys control is not enabled, KeyPress and KeyRelease events are treated as though the action is XkbSA_NoAction. If the MouseKeys control is enabled, a server action of type XkbSA_MovePtr instructs the server to generate core pointer MotionNotify events rather than the usual KeyPress event, and the corresponding KeyRelease event disables any mouse keys timers that were created as a result of handling the XkbSA_MovePtr action. The .I type field of the XkbPtrAction structure is always XkbSA_MovePtr. The .I flags field is a bitwise inclusive OR of the masks shown in Table 1. .TS c s l l l lw(4i). Table 1 Pointer Action Types _ Action Type Meaning _ XkbSA_NoAcceleration T{ If not set, and the MouseKeysAccel control is enabled, the KeyPress initiates a mouse keys timer for this key; every time the timer expires, the cursor moves. T} XkbSA_MoveAbsoluteX T{ If set, the X portion of the structure specifies the new pointer X coordinate. Otherwise, the X portion is added to the current pointer X coordinate to determine the new pointer X coordinate. T} XkbSA_MoveAbsoluteY T{ If set, the Y portion of the structure specifies the new pointer Y coordinate. Otherwise, the Y portion is added to the current pointer Y coordinate to determine the new pointer Y coordinate. T} .TE Each of the X and Y coordinates of the XkbPtrAction structure is composed of two signed 16-bit values, that is, the X coordinate is composed of .I high_XXX and .I low_XXX, and similarly for the Y coordinate. Xkb provides the following macros, to convert between a signed integer and two signed 16-bit values in XkbPtrAction structures. .SH STRUCTURES .LP .nf typedef struct _XkbPtrAction { unsigned char type; /\&* XkbSA_MovePtr */ unsigned char flags; /\&* determines type of pointer motion */ unsigned char high_XXX; /\&* x coordinate, high bits*/ unsigned char low_XXX; /\&* y coordinate, low bits */ unsigned char high_YYY; /\&* x coordinate, high bits */ unsigned char low_YYY; /\&* y coordinate, low bits */ } XkbPtrAction; .fi libX11-1.8.12/man/xkb/XkbAllocServerMap.man0000644014310600000120000000727214763154126013715 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocServerMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocServerMap \- Allocate and initialize an empty server map description record .SH SYNOPSIS .HP .B Status XkbAllocServerMap .BI "(\^XkbDescPtr " "xkb" "\^," .BI "unsigned int " "which" "\^," .BI "unsigned int " "count_acts" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description in which to allocate server map .TP .I which mask selecting map components to allocate .TP .I count_acts value of num_acts field in map to be allocated .SH DESCRIPTION .LP .I XkbAllocServerMap allocates and initializes an empty server map in the .I server field of the keyboard description specified by .I xkb. The .I which parameter specifies the particular components of the server map structure to allocate, as specified in Table 1. .TS c s l l l lw(4i). Table 1 XkbAllocServerMap Masks _ Mask Effect _ XkbExplicitComponentsMask T{ The min_key_code and max_key_code fields of the xkb parameter are used to allocate the explicit field of the server map. T} .sp XkbKeyActionsMask T{ The min_key_code and max_key_code fields of the xkb parameter are used to allocate the key_acts field of the server map. The count_acts parameter is used to allocate the acts field of the server map. T} .sp XkbKeyBehaviorsMask T{ The min_key_code and max_key_code fields of the xkb parameter are used to allocate the behaviors field of the server map. T} .sp XkbVirtualModMapMask T{ The min_key_code and max_key_code fields of the xkb parameter are used to allocate the vmodmap field of the server map. T} .TE If the server map of the keyboard description is not NULL and any fields are already allocated in the server map, .I XkbAllocServerMap does not overwrite the existing values. The only exception is with the .I acts array. If the .I count_acts parameter is greater than the current .I num_acts field of the server map, .I XkbAllocServerMap resizes the .I acts array and resets the .I num_acts field accordingly. If .I XkbAllocServerMap is successful, it returns Success. Otherwise, it can return either BadMatch or BadAlloc errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .B BadValue An argument is out of range .SH NOTES .LP The .I min_key_code and .I max_key_code fields of the .I xkb parameter must be legal values. If they are not valid, .I XkbAllocServerMap returns BadValue. libX11-1.8.12/man/xkb/XkbSAScreen.man0000644014310600000120000000642114763154126012474 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSAScreen __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSAScreen \- Returns the screenXXX field of act converted to a signed int .SH SYNOPSIS .HP .B int XkbSAScreen .BI "(\^XkbSwitchScreenAction " "act" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action from which to extract screen .SH DESCRIPTION .LP Actions associated with the XkbSwitchScreen action structure change the active screen on a multiscreen display. The .I type field of the XkbSwitchScreenAction structure should always be XkbSA_SwitchScreen. The .I flags field is composed of the bitwise inclusive OR of the masks shown in Table 1. .TS c s l l l lw(4i). Table 1 Switch Screen Action Flags _ Flag Meaning _ XkbSA_SwitchAbsolute T{ If set, the screenXXX field represents the index of the new screen. Otherwise, it represents an offset from the current screen to the new screen. T} XkbSA_SwitchApplication T{ If not set, the action should switch to another screen on the same server. Otherwise, it should switch to another X server or application that shares the same physical display. T} .TE The .I screenXXX field is a signed character value that represents either the relative or absolute screen index, depending on the state of the XkbSA_SwitchAbsolute bit in the .I flags field. Xkb provides the following macros to convert between the integer and signed character value for screen numbers in XkbSwitchScreenAction structures. .I XkbSAScreen macro returns the .I screenXXX field of .I act converted to a signed int. .SH STRUCTURES .LP .nf typedef struct _XkbSwitchScreenAction { unsigned char type; /\&* XkbSA_SwitchScreen */ unsigned char flags; /\&* controls screen switching */ char screenXXX; /\&* screen number or delta */ } XkbSwitchScreenAction; .fi .SH NOTES .LP The XkbSwitchScreen action is optional. Servers are free to ignore the action or any of its flags if they do not support the requested behavior. If the action is ignored, it behaves like XkbSA_NoAction. Otherwise, key press and key release events do not generate an event. libX11-1.8.12/man/xkb/XkbGetKeyBehaviors.man0000644014310600000120000000536314763154126014070 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetKeyBehaviors __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetKeyBehaviors \- Obtain the behaviors (the behaviors array) for a subset of the keys in a keyboard description from the server .SH SYNOPSIS .HP .B Status XkbGetKeyBehaviors .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "first" "\^," .BI "unsigned int " "num" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to server .TP .I first keycode of first key to get .TP .I num number of keys for which behaviors are desired .TP .I xkb Xkb description to contain the result .SH DESCRIPTION .LP .I XkbGetKeyBehaviors sends a request to the server to obtain the behaviors for .I num keys on the keyboard starting with the key whose keycode is .I first. It waits for a reply and returns the behaviors in the .I server->behaviors field of .I xkb. If successful, .I XkbGetKeyBehaviors returns Success. If the .I server map in the .I xkb parameter has not been allocated, .I XkbGetKeyBehaviors allocates and initializes it before obtaining the actions. If the server does not have a compatible version of Xkb, or the Xkb extension has not been properly initialized, .I XkbGetKeyBehaviors returns BadAccess. If .I num is less than 1 or greater than XkbMaxKeyCount, .I XkbGetKeyBehaviors returns BadValue. If any allocation errors occur, .I XkbGetKeyBehaviors returns BadAlloc. .SH DIAGNOSTICS .TP 15 .B BadAccess The Xkb extension has not been properly initialized .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbGetState.man0000644014310600000120000000403314763154126012546 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetState __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetState \- Obtains the keyboard state .SH SYNOPSIS .HP .B Status XkbGetState .BI "(\^Display *" "display" "\^," .BI "unsigned int " "device_spec" "\^," .BI "XkbStatePtr " "state_return" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I state_return backfilled with Xkb state .SH DESCRIPTION .LP The .I XkbGetState function queries the server for the current keyboard state, waits for a reply, and then backfills .I state_return with the results. All group values are expressed as group indices in the range [0..3]. Modifiers and the compatibility modifier state values are expressed as the bitwise union of the core X11 modifier masks. The pointer button state is reported as in the core X11 protocol. libX11-1.8.12/man/xkb/XkbQueryExtension.man0000644014310600000120000001022014763154126014023 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbQueryExtension __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbQueryExtension \- Determines the compatibility of a library at runtime. .SH SYNOPSIS .HP .B Bool XkbQueryExtension .BI "(\^Display *" "dpy" "\^," .BI "int *" "opcode_rtrn" "\^," .BI "int *" "event_rtrn" "\^," .BI "int *" "error_rtrn" "\^," .BI "int *" "major_in_out" "\^," .BI "int *" "minor_in_out" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to the X server .TP .I opcode_rtrn backfilled with the major extension opcode .TP .I event_rtrn backfilled with the extension base event code .TP .I error_rtrn backfilled with the extension base error code .TP .I major_in_out compile time lib major version in, server major version out .TP .I minor_in_out compile time lib min version in, server minor version out .SH DESCRIPTION .LP Call .I XkbQueryExtension to check for the presence and compatibility of the extension in the server and to initialize the extension. Because of potential version mismatches, you cannot use the generic extension mechanism functions ( .I XQueryExtension and .I XInitExtension ) for checking for the presence of, and initializing the Xkb extension. You must call .I XkbQueryExtension or .I XkbOpenDisplay before using any other Xkb library interfaces, unless such usage is explicitly allowed in the interface description in this document. The exceptions are: .I XkbIgnoreExtension, XkbLibraryVersion, and a handful of audible-bell functions. You should not use any other Xkb functions if the extension is not present or is uninitialized. In general, calls to Xkb library functions made prior to initializing the Xkb extension cause BadAccess protocol errors. .I XkbQueryExtension both determines whether a compatible Xkb extension is present in the X server and initializes the extension when it is present. The .I XkbQueryExtension function determines whether a compatible version of the X Keyboard Extension is present in the server. If a compatible extension is present, .I XkbQueryExtension returns True; otherwise, it returns False. If a compatible version of Xkb is present, .I XkbQueryExtension initializes the extension. It backfills the major opcode for the keyboard extension in .I opcode_rtrn, the base event code in .I event_rtrn, the base error code in .I error_rtrn, and the major and minor version numbers of the extension in .I major_in_out and .I minor_in_out. The major opcode is reported in the .I req_major fields of some Xkb events. For a discussion of the base event code. .SH "RETURN VALUES" .TP 15 True The .I XkbQueryExtension function returns True if it determines a compatible version of the X Keyboard Extension is present in the server. .TP 15 False The .I XkbQueryExtension function returns False if it determines a compatible version of the X Keyboard Extension is not present in the server. .SH "SEE ALSO" .BR XkbIgnoreExtension (__libmansuffix__), .BR XkbLibraryVersion (__libmansuffix__), .BR XkbOpenDisplay (__libmansuffix__) libX11-1.8.12/man/xkb/Makefile.am0000644014310600000120000002046614763154126011730 libmandir = $(LIB_MAN_DIR) libman_PRE = \ XkbActionCtrls.man \ XkbAddDeviceLedInfo.man \ XkbAddGeomColor.man \ XkbAddGeomDoodad.man \ XkbAddGeomKey.man \ XkbAddGeomKeyAlias.man \ XkbAddGeomOutline.man \ XkbAddGeomOverlay.man \ XkbAddGeomOverlayKey.man \ XkbAddGeomOverlayRow.man \ XkbAddGeomProperty.man \ XkbAddGeomRow.man \ XkbAddGeomSection.man \ XkbAddGeomShape.man \ XkbAddSymInterpret.man \ XkbAllocClientMap.man \ XkbAllocCompatMap.man \ XkbAllocControls.man \ XkbAllocDeviceInfo.man \ XkbAllocGeomColors.man \ XkbAllocGeomDoodads.man \ XkbAllocGeomKeyAliases.man \ XkbAllocGeomKeys.man \ XkbAllocGeomOutlines.man \ XkbAllocGeomOverlayKeys.man \ XkbAllocGeomOverlayRows.man \ XkbAllocGeomOverlays.man \ XkbAllocGeomPoints.man \ XkbAllocGeomProps.man \ XkbAllocGeomRows.man \ XkbAllocGeomSectionDoodads.man \ XkbAllocGeomSections.man \ XkbAllocGeomShapes.man \ XkbAllocGeometry.man \ XkbAllocIndicatorMaps.man \ XkbAllocKeyboard.man \ XkbAllocNames.man \ XkbAllocServerMap.man \ XkbApplyCompatMapToKey.man \ XkbBell.man \ XkbBellEvent.man \ XkbChangeControls.man \ XkbChangeDeviceInfo.man \ XkbChangeEnabledControls.man \ XkbChangeMap.man \ XkbChangeNames.man \ XkbChangeTypesOfKey.man \ XkbComputeRowBounds.man \ XkbComputeSectionBounds.man \ XkbComputeShapeBounds.man \ XkbComputeShapeTop.man \ XkbCopyKeyType.man \ XkbCopyKeyTypes.man \ XkbDeviceBell.man \ XkbDeviceBellEvent.man \ XkbFindOverlayForKey.man \ XkbForceBell.man \ XkbForceDeviceBell.man \ XkbFreeClientMap.man \ XkbFreeCompatMap.man \ XkbFreeComponentList.man \ XkbFreeControls.man \ XkbFreeDeviceInfo.man \ XkbFreeGeomColors.man \ XkbFreeGeomDoodads.man \ XkbFreeGeomKeyAliases.man \ XkbFreeGeomKeys.man \ XkbFreeGeomOutlines.man \ XkbFreeGeomOverlayKeys.man \ XkbFreeGeomOverlayRows.man \ XkbFreeGeomOverlays.man \ XkbFreeGeomPoints.man \ XkbFreeGeomProperties.man \ XkbFreeGeomRows.man \ XkbFreeGeomSections.man \ XkbFreeGeomShapes.man \ XkbFreeGeometry.man \ XkbFreeIndicatorMaps.man \ XkbFreeKeyboard.man \ XkbFreeNames.man \ XkbFreeServerMap.man \ XkbGetAutoRepeatRate.man \ XkbGetAutoResetControls.man \ XkbGetCompatMap.man \ XkbGetControls.man \ XkbGetControlsChanges.man \ XkbGetDetectableAutoRepeat.man \ XkbGetDeviceButtonActions.man \ XkbGetDeviceInfo.man \ XkbGetDeviceInfoChanges.man \ XkbGetDeviceLedInfo.man \ XkbGetGeometry.man \ XkbGetIndicatorMap.man \ XkbGetIndicatorState.man \ XkbGetKeyActions.man \ XkbGetKeyBehaviors.man \ XkbGetKeyExplicitComponents.man \ XkbGetKeyModifierMap.man \ XkbGetKeySyms.man \ XkbGetKeyTypes.man \ XkbGetKeyVirtualModMap.man \ XkbGetKeyboard.man \ XkbGetKeyboardByName.man \ XkbGetMap.man \ XkbGetNamedDeviceIndicator.man \ XkbGetNamedGeometry.man \ XkbGetNamedIndicator.man \ XkbGetNames.man \ XkbGetState.man \ XkbGetUpdatedMap.man \ XkbGetVirtualMods.man \ XkbGetXlibControls.man \ XkbIgnoreExtension.man \ XkbInitCanonicalKeyTypes.man \ XkbKeyAction.man \ XkbKeyActionEntry.man \ XkbKeyActionsPtr.man \ XkbKeyGroupInfo.man \ XkbKeyGroupWidth.man \ XkbKeyGroupsWidth.man \ XkbKeyHasActions.man \ XkbKeyKeyType.man \ XkbKeyKeyTypeIndex.man \ XkbKeyNumActions.man \ XkbKeyNumGroups.man \ XkbKeyNumSyms.man \ XkbKeySymEntry.man \ XkbKeySymsPtr.man \ XkbKeyTypesForCoreSymbols.man \ XkbKeycodeToKeysym.man \ XkbKeysymToModifiers.man \ XkbLatchGroup.man \ XkbLatchModifiers.man \ XkbLibraryVersion.man \ XkbListComponents.man \ XkbLockGroup.man \ XkbLockModifiers.man \ XkbLookupKeyBinding.man \ XkbLookupKeySym.man \ XkbModActionVMods.man \ XkbNoteControlsChanges.man \ XkbNoteDeviceChanges.man \ XkbNoteNameChanges.man \ XkbOpenDisplay.man \ XkbOutOfRangeGroupInfo.man \ XkbOutOfRangeGroupNumber.man \ XkbPtrActionX.man \ XkbPtrActionY.man \ XkbQueryExtension.man \ XkbRefreshKeyboardMapping.man \ XkbResizeDeviceButtonActions.man \ XkbResizeKeyActions.man \ XkbResizeKeySyms.man \ XkbResizeKeyType.man \ XkbActionSetCtrls.man \ XkbSAGroup.man \ XkbSAPtrDfltValue.man \ XkbSARedirectSetVMods.man \ XkbSARedirectSetVModsMask.man \ XkbSARedirectVMods.man \ XkbSARedirectVModsMask.man \ XkbSAScreen.man \ XkbSASetGroup.man \ XkbSASetPtrDfltValue.man \ XkbSASetScreen.man \ XkbSelectEventDetails.man \ XkbSelectEvents.man \ XkbSetAutoRepeatRate.man \ XkbSetAutoResetControls.man \ XkbSetCompatMap.man \ XkbSetControls.man \ XkbSetDebuggingFlags.man \ XkbSetDetectableAutoRepeat.man \ XkbSetDeviceButtonActions.man \ XkbSetDeviceInfo.man \ XkbSetIgnoreLockMods.man \ XkbSetIndicatorMap.man \ XkbSetMap.man \ XkbSetModActionVMods.man \ XkbSetNamedDeviceIndicator.man \ XkbSetNamedIndicator.man \ XkbSetNames.man \ XkbSetPtrActionX.man \ XkbSetPtrActionY.man \ XkbSetServerInternalMods.man \ XkbSetXlibControls.man \ XkbTranslateKeyCode.man \ XkbTranslateKeySym.man \ XkbUpdateMapFromCore.man \ XkbVirtualModsToReal.man libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) EXTRA_DIST = $(libman_PRE) CLEANFILES = $(libman_DATA) SUFFIXES = .$(LIB_MAN_SUFFIX) .man # String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure .man.$(LIB_MAN_SUFFIX): $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@ libX11-1.8.12/man/xkb/XkbGetDeviceInfoChanges.man0000644014310600000120000000443714763154126015002 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetDeviceInfoChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetDeviceInfoChanges \- Query the changes that have occurred in the button actions or indicator names and indicator maps associated with an input extension device .SH SYNOPSIS .HP .B Status XkbGetDeviceInfoChanges .BI "(\^Display *" "dpy" "\^," .BI "XkbDeviceInfoPtr " "device_info" "\^," .BI "XkbDeviceChangesPtr " "changes" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I device_info structure to update with results .TP .I changes contains notes of changes that have occurred .SH DESCRIPTION .LP The .I changes->changed field indicates which attributes of the device specified in .I changes->device have changed. The parameters describing the changes are contained in the other fields of .I changes. XkbGetDeviceInfoChanges uses that information to call .I XkbGetDeviceInfo to obtain the current status of those attributes that have changed. It then updates the local description of the device in .I device_info with the new information. .SH "SEE ALSO" .BR XkbGetDeviceInfo (__libmansuffix__) libX11-1.8.12/man/xkb/XkbCopyKeyType.man0000644014310600000120000000630214763154126013254 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbCopyKeyType __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbCopyKeyType \- Copy one XkbKeyTypeRec structures .SH SYNOPSIS .HP .B Status XkbCopyKeyType .BI "(\^XkbKeyTypePtr " "from" "\^," .BI "XkbKeyTypePtr " "into" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I from pointer to XkbKeyTypeRec to be copied .TP .I into pointer to XkbKeyTypeRec to be changed .SH DESCRIPTION .LP .I XkbCopyKeyType copies the key type specified by .I from to the key type specified by .I into. Both must point to legal XkbKeyTypeRec structures. Xkb assumes .I from and .I into point to different places. As a result, overlaps can be fatal. .I XkbCopyKeyType frees any existing .I map, preserve, and .I level_names in .I into prior to copying. If any allocation errors occur while copying .I from to .I into, XkbCopyKeyType returns BadAlloc. Otherwise, .I XkbCopyKeyType copies .I from to .I into and returns Success. .SH STRUCTURES .LP Key types are used to determine the shift level of a key given the current state of the keyboard. The set of all possible key types for the Xkb keyboard description are held in the .I types field of the client map, whose total size is stored in .I size_types, and whose total number of valid entries is stored in .I num_types. Key types are defined using the following structure: .nf typedef struct { /\&* Key Type */ XkbModsRec mods; /\&* modifiers used to compute shift level */ unsigned char num_levels; /\&* total # shift levels, do not modify directly */ unsigned char map_count; /\&* # entries in map, preserve (if non-NULL) */ XkbKTMapEntryPtr map; /\&* vector of modifiers for each shift level */ XkbModsPtr preserve; /\&* mods to preserve for corresponding map entry */ Atom name; /\&* name of key type */ Atom * level_names; /\&* array of names of each shift level */ } XkbKeyTypeRec, *XkbKeyTypePtr; .fi .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage libX11-1.8.12/man/xkb/XkbGetGeometry.man0000644014310600000120000000502514763154126013263 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetGeometry \- Loads a keyboard geometry if you already have the keyboard description .SH SYNOPSIS .HP .B Status XkbGetGeometry .BI "(\^Display *" "dpy" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to the X server .TP .I xkb keyboard description that contains the ID for the keyboard and into which the geometry should be loaded .SH DESCRIPTION .LP You can load a keyboard geometry as part of the keyboard description returned by .I XkbGetKeyboard. However, if a keyboard description has been previously loaded, you can instead obtain the geometry by calling the .I XkbGetGeometry. In this case, the geometry returned is the one associated with the keyboard whose device ID is contained in the keyboard description. .I XkbGetGeometry can return BadValue, BadImplementation, BadName, BadAlloc, or BadLength errors or Success if it succeeds. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadImplementation Invalid reply from server .TP 15 .B BadLength The length of a request is shorter or longer than that required to minimally contain the arguments .TP 15 .B BadName A font or color of the specified name does not exist .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbGetKeyboard (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAllocGeomOverlayRows.man0000644014310600000120000000505214763154126015107 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomOverlayRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomOverlayRows \- Allocate rows in a overlay .SH SYNOPSIS .HP .B Status XkbAllocGeomOverlayRows .BI "(\^XkbOverlayPtr " "overlay" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I overlay section for which rows should be allocated .TP .I num_needed number of new rows required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomOverlayRows allocates .I num_needed rows and adds them to the .I overlay. No initialization of the rows is done. To free rows in an overlay, use .I XkbFreeGeomOverlayRows. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbFreeGeomOverlayRows (__libmansuffix__) libX11-1.8.12/man/xkb/XkbFreeGeomRows.man0000644014310600000120000000536114763154126013377 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomRows \- Free rows in a section .SH SYNOPSIS .HP .B void XkbFreeGeomRows .BI "(\^XkbSectionPtr " "section" "\^," .BI "int " "first" "\^," .BI "int " "count" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I section section in which rows should be freed .TP .I first first row to be freed .TP .I count number of rows to be freed .TP .I free_all True => all rows are freed .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. If .I free_all is True, all rows are freed regardless of the value of .I first and .I count. Otherwise, the number of rows specified by .I count are freed, beginning with the row specified by .I first in the specified section. .SH "RETURN VALUES" .TP 15 Success The XkbFreeGeomRows function returns Success when there are no allocation or argument errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbNoteNameChanges.man0000644014310600000120000000606414763154126014033 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbNoteNameChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbNoteNameChanges \- Note the changed names in a changes structure .SH SYNOPSIS .HP .B void XkbNoteNameChanges .BI "(\^XkbNameChangesPtr " "old" "\^," .BI "XkbNamesNotifyEvent *" "new" "\^," .BI "unsigned int " "wanted" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I old XkbNameChanges structure to be updated .TP .I new event from which changes are to be copied .TP .I wanted types of names for which changes are to be noted .SH DESCRIPTION .LP When your application receives a XkbNamesNotify event, you can note the changed names in a changes structure using .I XkbNoteNameChanges. The .I wanted parameter is the bitwise inclusive OR of the valid names mask bits shown in Table 1. .I XkbNoteNameChanges copies any changes that are reported in .I new and specified in .I wanted into the changes record specified by .I old. .TS c s s s l l l l. Table 1 Symbolic Names Masks _ Mask Bit Value Keyboard Field Component _ XkbKeycodesNameMask (1<<0) Xkb->names keycodes XkbGeometryNameMask (1<<1) Xkb->names geometry XkbSymbolsNameMask (1<<2) Xkb->names symbols XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols XkbTypesNameMask (1<<4) Xkb->names type XkbCompatNameMask (1<<5) Xkb->names compat XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*] XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*] XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*] XkbGroupNamesMask (1<<12) Xkb->names groups[*] XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg XkbComponentNamesMask (0x3f) Xkb->names keycodes, geometry, symbols, physical symbols, types, and compatibility map XkbAllNamesMask (0x3fff) Xkb->names all name components .TE libX11-1.8.12/man/xkb/XkbSASetPtrDfltValue.man0000644014310600000120000000654114763154126014310 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSASetPtrDfltValue __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSASetPtrDfltValue \- Sets the valueXXX field of act from val .SH SYNOPSIS .HP .B void XkbSASetPtrDfltValue .BI "(\^XkbAction " "act" "\^," .BI "int " "val" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action in which to set valueXXX .TP .I val value to set in valueXXX .SH DESCRIPTION .LP Actions associated with the XkbPtrDfltAction structure change the mk_dflt_btn attribute of the MouseKeys control. If the MouseKeys control is not enabled, KeyPress and KeyRelease events are treated as though the action is XkbSA_NoAction. Otherwise, this action changes the .I mk_dflt_btn attribute of the MouseKeys control. The .I type field of the XkbPtrDfltAction structure should always be XkbSA_SetPtrDflt. The .I flags field is composed of the bitwise inclusive OR of the values shown in Table 1 (currently there is only one value defined). .TS c s l l l lw(4i). Table 1 Pointer Default Flags _ Flag Meaning _ XkbSA_DfltBtnAbsolute T{ If set, the value field represents an absolute pointer button. Otherwise, the value field represents the amount to be added to the current default button. T} .TE The .I affect field specifies what changes as a result of this action. The only valid value for the .I affect field is XkbSA_AffectDfltBtn. The .I valueXXX field is a signed character that represents the new button value for the .I mk_dflt_btn attribute of the MouseKeys control. If XkbSA_DfltBtnAbsolute is set in .I flags, valueXXX specifies the button to be used; otherwise, .I valueXXX specifies the amount to be added to the current default button. In either case, illegal button choices are wrapped back around into range. Xkb provides macros, to convert between the integer and signed character values in XkbPtrDfltAction structures. .SH STRUCTURES .LP .nf typedef struct _XkbPtrDfltAction { unsigned char type; /\&* XkbSA_SetPtrDflt */ unsigned char flags; /\&* controls the pointer button number */ unsigned char affect; /\&* XkbSA_AffectDfltBtn */ char valueXXX; /\&* new default button member */ } XkbPtrDfltAction; .fi libX11-1.8.12/man/xkb/XkbLatchGroup.man0000644014310600000120000000435614763154126013106 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbLatchGroup __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbLatchGroup \- Latches the keysym group .SH SYNOPSIS .HP .B Bool XkbLatchGroup .BI "(\^Display *" "display" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "group" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I group index of the keysym group to latch .SH DESCRIPTION .LP .I XkbLatchGroup sends a request to the server to latch the specified .I group and does not wait for a reply. It returns True if the request was sent and False otherwise. Reference the keysym group indices with these symbolic constants: .TS c s l l l l. Table 1 Symbolic Group Names _ Symbolic Name Value _ XkbGroup1Index 0 XkbGroup2Index 1 XkbGroup3Index 2 XkbGroup4Index 3 .TE .SH "RETURN VALUES" .TP 15 True The .I XkbLatchGroup function returns True if a request was sent to the server to latch the specified .I group. .TP 15 False The .I XkbLatchGroup function returns False if the request was not sent. libX11-1.8.12/man/xkb/XkbPtrActionY.man0000644014310600000120000000734014763154126013066 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbPtrActionY __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbPtrActionY \- Returns the high_YYY and low_YYY fields of act converted to a signed int .SH SYNOPSIS .HP .B int XkbPtrActionY .BI "(\^XkbPtrAction " "act" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action from which to extract Y .SH DESCRIPTION .LP Actions associated with the XkbPtrAction structure move the pointer when keys are pressed and released. If the MouseKeys control is not enabled, KeyPress and KeyRelease events are treated as though the action is XkbSA_NoAction. If the MouseKeys control is enabled, a server action of type XkbSA_MovePtr instructs the server to generate core pointer MotionNotify events rather than the usual KeyPress event, and the corresponding KeyRelease event disables any mouse keys timers that were created as a result of handling the XkbSA_MovePtr action. The .I type field of the XkbPtrAction structure is always XkbSA_MovePtr. The .I flags field is a bitwise inclusive OR of the masks shown in Table 1. .TS c s l l l lw(4i). Table 1 Pointer Action Types _ Action Type Meaning _ XkbSA_NoAcceleration T{ If not set, and the MouseKeysAccel control is enabled, the KeyPress initiates a mouse keys timer for this key; every time the timer expires, the cursor moves. T} XkbSA_MoveAbsoluteX T{ If set, the X portion of the structure specifies the new pointer X coordinate. Otherwise, the X portion is added to the current pointer X coordinate to determine the new pointer X coordinate. T} XkbSA_MoveAbsoluteY T{ If set, the Y portion of the structure specifies the new pointer Y coordinate. Otherwise, the Y portion is added to the current pointer Y coordinate to determine the new pointer Y coordinate. T} .TE Each of the X and Y coordinates of the XkbPtrAction structure is composed of two signed 16-bit values, that is, the X coordinate is composed of .I high_XXX and .I low_XXX, and similarly for the Y coordinate. Xkb provides the following macros, to convert between a signed integer and two signed 16-bit values in XkbPtrAction structures. .SH STRUCTURES .LP .nf typedef struct _XkbPtrAction { unsigned char type; /\&* XkbSA_MovePtr */ unsigned char flags; /\&* determines type of pointer motion */ unsigned char high_XXX; /\&* x coordinate, high bits*/ unsigned char low_XXX; /\&* y coordinate, low bits */ unsigned char high_YYY; /\&* x coordinate, high bits */ unsigned char low_YYY; /\&* y coordinate, low bits */ } XkbPtrAction; .fi libX11-1.8.12/man/xkb/XkbLockModifiers.man0000644014310600000120000000542114763154126013562 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbLockModifiers __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbLockModifiers \- Locks and unlocks any of the eight real keyboard modifiers .SH SYNOPSIS .HP .B Bool XkbLockModifiers .BI "(\^Display *" "display" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "affect" "\^," .BI "unsigned int " "values" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I affect mask of real modifiers whose lock state is to change .TP .I values 1 => lock, 0 => unlock; only for modifiers selected by affect .SH DESCRIPTION .LP .I XkbLockModifiers sends a request to the server to lock the real modifiers selected by both .I affect and .I values and to unlock the real modifiers selected by .I affect, but not selected by .I values. XkbLockModifiers does not wait for a reply from the server. It returns True if the request was sent, and False otherwise. The functions in this section that change the use of modifiers use a mask in the parameter affect. It is a bitwise inclusive OR of the legal modifier masks: .TS c l l. Table 1 Real Modifier Masks _ Mask _ ShiftMask LockMask ControlMask Mod1Mask Mod2Mask Mod3Mask Mod4Mask Mod5Mask .TE .SH "RETURN VALUES" .TP 15 True The .I XkbLockModifiers function returns True if a request is sent to the server to lock the real modifiers selected by both .I affect and .I values and to unlock the real modifiers selected by .I affect, but not selected by .I values. .TP 15 False The .I XkbLockModifiers function returns False if the request was not sent. libX11-1.8.12/man/xkb/XkbFreeGeomOverlays.man0000644014310600000120000000543414763154126014252 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomOverlays __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomOverlays \- Free rows in a section .SH SYNOPSIS .HP .B void XkbFreeGeomOverlays .BI "(\^XkbSectionPtr " "section" "\^," .BI "int " "first" "\^," .BI "int " "count" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I section section in which overlays should be freed .TP .I first first overlay to be freed .TP .I count number of overlays to be freed .TP .I free_all True => all overlays are freed .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. If .I free_all is True, all overlays are freed regardless of the value of .I first and .I count. Otherwise, the number of overlays specified by .I count are freed, beginning with the overlay specified by .I first in the specified section. .SH "RETURN VALUES" .TP 15 Success The XkbFreeGeomOverlays functions returns Success if there are no allocation or argument errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbAllocGeomSectionDoodads.man0000644014310600000120000000513514763154126015517 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomSectionDoodads __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomSectionDoodads \- Allocate doodads that are specific to a section .SH SYNOPSIS .HP .B Status XkbAllocGeomSectionDoodads .BI "(\^XkbSectionPtr " "section" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I section section for which doodads should be allocated .TP .I num_needed number of new doodads required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomSectionDoodads allocates .I num_needed doodads and adds them to the specified .I section. No initialization of the doodads is done. To free geometry doodads, use .I XkbFreeGeomDoodads. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbFreeGeomDoodads (__libmansuffix__) libX11-1.8.12/man/xkb/XkbKeySymsPtr.man0000644014310600000120000000457514763154126013133 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeySymsPtr __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeySymsPtr \- Returns the pointer to the two-dimensional array of keysyms for the key corresponding to .I keycode .SH SYNOPSIS .HP .B KeySym * XkbKeySymsPtr .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .SH DESCRIPTION .LP The key width and number of groups associated with a key are used to form a small two-dimensional array of KeySyms for a key. This array may be different sizes for different keys. The array for a single key is stored as a linear list, in row-major order. The arrays for all of the keys are stored in the .I syms field of the client map. There is one row for each group associated with a key and one column for each level. The index corresponding to a given group and shift level is computed as: .nf idx = group_index * key_width + shift_level .fi The .I offset field of the .I key_sym_map entry for a key is used to access the beginning of the array. .I XkbKeySymsPtr returns the pointer to the two-dimensional array of keysyms for the key corresponding to .I keycode. libX11-1.8.12/man/xkb/XkbFreeGeometry.man0000644014310600000120000000574214763154126013433 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeometry \- Free an entire geometry .SH SYNOPSIS .HP .B void XkbFreeGeometry .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "unsigned int " "which" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry to be freed .TP .I which mask of geometry components to be freed .TP .I free_all True => the entire geometry is freed .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. The values of .I which and .I free_all determine how much of the specified geometry is freed. The valid values for .I which are: .nf #define XkbGeomPropertiesMask (1<<0) #define XkbGeomColorsMask (1<<1) #define XkbGeomShapesMask (1<<2) #define XkbGeomSectionsMask (1<<3) #define XkbGeomDoodadsMask (1<<4) #define XkbGeomKeyAliasesMask (1<<5) #define XkbGeomAllMask (0x3f) .fi If .I free_all is True, the entire geometry is freed regardless of the value of .I which. Otherwise, the portions of the geometry specified by .I which are freed. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbGetVirtualMods.man0000644014310600000120000001546514763154126013752 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetVirtualMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetVirtualMods \- Obtain a subset of the virtual modifier bindings (the vmods array) in a keyboard description .SH SYNOPSIS .HP .B Status XkbGetVirtualMods .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "which" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to server .TP .I which mask indicating virtual modifier bindings to get .TP .I xkb Xkb description where results will be placed .SH DESCRIPTION .LP .I XkbGetVirtualMods sends a request to the server to obtain the .I vmods entries for the virtual modifiers specified in the mask, .I which, and waits for a reply. Virtual modifiers are named by converting their string name to an X Atom and storing the Atom in the .I names.vmods array in an XkbDescRec structure. The position of a name Atom in the .I names.vmods array defines the bit position used to represent the virtual modifier and also the index used when accessing virtual modifier information in arrays: the name in the i-th (0 relative) entry of .I names.vmods is the i-th virtual modifier, represented by the mask (1<vmods array of .I xkb. The .I xkb parameter must be a pointer to a valid Xkb keyboard description. If successful, .I XkbGetVirtualMods returns Success. .B Virtual Modifier Names and Masks Virtual modifiers are named by converting their string name to an X Atom and storing the Atom in the .I names.vmods array in an XkbDescRec structure. The position of a name Atom in the .I names.vmods array defines the bit position used to represent the virtual modifier and also the index used when accessing virtual modifier information in arrays: the name in the i-th (0 relative) entry of .I names.vmods is the i-th virtual modifier, represented by the mask (1<vmods array of .I xkb. .SH STRUCTURES .LP The complete description of an Xkb keyboard is given by an XkbDescRec. The component structures in the XkbDescRec represent the major Xkb components. .nf typedef struct { struct _XDisplay * display; /\&* connection to X server */ unsigned short flags; /\&* private to Xkb, do not modify */ unsigned short device_spec; /\&* device of interest */ KeyCode min_key_code; /\&* minimum keycode for device */ KeyCode max_key_code; /\&* maximum keycode for device */ XkbControlsPtr ctrls; /\&* controls */ XkbServerMapPtr server; /\&* server keymap */ XkbClientMapPtr map; /\&* client keymap */ XkbIndicatorPtr indicators; /\&* indicator map */ XkbNamesPtr names; /\&* names for all components */ XkbCompatMapPtr compat; /\&* compatibility map */ XkbGeometryPtr geom; /\&* physical geometry of keyboard */ } XkbDescRec, *XkbDescPtr; .fi The .I display field points to an X display structure. The .I flags field is private to the library: modifying .I flags may yield unpredictable results. The .I device_spec field specifies the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which specifies the core keyboard device. The .I min_key_code and .I max_key_code fields specify the least and greatest keycode that can be returned by the keyboard. Each structure component has a corresponding mask bit that is used in function calls to indicate that the structure should be manipulated in some manner, such as allocating it or freeing it. These masks and their relationships to the fields in the XkbDescRec are shown in Table 1. .TS c s s l l l l l l. Table 1 Mask Bits for XkbDescRec _ Mask Bit XkbDescRec Field Value _ XkbControlsMask ctrls (1L<<0) XkbServerMapMask server (1L<<1) XkbIClientMapMask map (1L<<2) XkbIndicatorMapMask indicators (1L<<3) XkbNamesMask names (1L<<4) XkbCompatMapMask compat (1L<<5) XkbGeometryMask geom (1L<<6) XkbAllComponentsMask All Fields (0x7f) .TE .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .SH "SEE ALSO" .BR XkbGetNames (__libmansuffix__), .BR XkbSetNames (__libmansuffix__) libX11-1.8.12/man/xkb/XkbBell.man0000644014310600000120000002431214763154126011706 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbBell \- Rings the bell on the default keyboard .SH SYNOPSIS .HP .B Bool XkbBell .BI "(\^Display *" "display" "\^," .BI "Window " "window" "\^," .BI "int " "percent" "\^," .BI "Atom " "name" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I window event window, or None .TP .I percent relative volume, which can range from -100 to 100 inclusive .TP .I name a bell name, or NULL .SH DESCRIPTION .LP The core X protocol allows only applications to explicitly sound the system bell with a given duration, pitch, and volume. Xkb extends this capability by allowing clients to attach symbolic names to bells, disable audible bells, and receive an event whenever the keyboard bell is rung. For the purposes of this document, the .I audible bell is defined to be the system bell, or the default keyboard bell, as opposed to any other audible sound generated elsewhere in the system. You can ask to receive XkbBellNotify events when any client rings any one of the following: .IP \(bu 5 The default bell .IP \(bu 5 Any bell on an input device that can be specified by a bell_class and bell_id pair .IP \(bu 5 Any bell specified only by an arbitrary name. (This is, from the server's point of view, merely a name, and not connected with any physical sound-generating device. Some client application must generate the sound, or visual feedback, if any, that is associated with the name.) .LP You can also ask to receive XkbBellNotify events when the server rings the default bell or if any client has requested events only (without the bell sounding) for any of the bell types previously listed. You can disable audible bells on a global basis. For example, a client that replaces the keyboard bell with some other audible cue might want to turn off the AudibleBell control to prevent the server from also generating a sound and avoid cacophony. If you disable audible bells and request to receive XkbBellNotify events, you can generate feedback different from the default bell. You can, however, override the AudibleBell control by calling one of the functions that force the ringing of a bell in spite of the setting of the AudibleBell control - .I XkbForceDeviceBell or .I XkbForceBell. In this case the server does not generate a bell event. Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeating, Xkb can provide feedback for the controls by using special beep codes. The AccessXFeedback control is used to configure the specific types of operations that generate feedback. Bell Names You can associate a name to an act of ringing a bell by converting the name to an Atom and then using this name when you call the functions listed in this chapter. If an event is generated as a result, the name is then passed to all other clients interested in receiving XkbBellNotify events. Note that these are arbitrary names and that there is no binding to any sounds. Any sounds or other effects (such as visual bells on the screen) must be generated by a client application upon receipt of the bell event containing the name. There is no default name for the default keyboard bell. The server does generate some predefined bells for the AccessX controls. These named bells are shown in Table 1 below; the name is included in any bell event sent to clients that have requested to receive XkbBellNotify events. .TS c s l l lW(4I) l. Table 1 Predefined Bells _ Action Named Bell _ Indicator turned on AX_IndicatorOn Indicator turned off AX_IndicatorOff More than one indicator changed state AX_IndicatorChange Control turned on AX_FeatureOn Control turned off AX_FeatureOff More than one control changed state AX_FeatureChange SlowKeys and BounceKeys about to be turned on or off AX_SlowKeysWarning SlowKeys key pressed AX_SlowKeyPress SlowKeys key accepted AX_SlowKeyAccept SlowKeys key rejected AX_SlowKeyReject Accepted SlowKeys key released AX_SlowKeyRelease BounceKeys key rejected AX_BounceKeyReject StickyKeys key latched AX_StickyLatch StickyKeys key locked AX_StickyLock StickyKeys key unlocked AX_StickyUnlock .TE Audible Bells Using Xkb you can generate bell events that do not necessarily ring the system bell. This is useful if you need to use an audio server instead of the system beep. For example, when an audio client starts, it could disable the audible bell (the system bell) and then listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio client could then send a request to an audio server to play a sound. You can control the audible bells feature by passing the XkbAudibleBellMask to .I XkbChangeEnabledControls. If you set XkbAudibleBellMask on, the server rings the system bell when a bell event occurs. This is the default. If you set XkbAudibleBellMask off and a bell event occurs, the server does not ring the system bell unless you call .I XkbForceDeviceBell or .I XkbForceBell. Audible bells are also part of the per-client auto-reset controls. Bell Functions Use the functions described in this section to ring bells and to generate bell events. The input extension has two types of feedbacks that can generate bells - bell feedback and keyboard feedback. Some of the functions in this section have .I bell_class and .I bell_id parameters; set them as follows: Set .I bell_class to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of each type; set .I bell_id to the particular bell feedback of .I bell_class type. Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated when a bell function is called. .TS c s s s l l l l l l l l. Table 2 Bell Sounding and Bell Event Generating _ Function called AudibleBell Server sounds a bell Server sends an XkbBellNotifyEvent _ XkbDeviceBell On Yes Yes XkbDeviceBell Off No Yes XkbBell On Yes Yes XkbBell Off No Yes XkbDeviceBellEvent On or Off No Yes XkbBellEvent On or Off No Yes XkbDeviceForceBell On or Off Yes No XkbForceBell On or Off Yes No .TE If a compatible keyboard extension isn't present in the X server, .I XkbBell calls .I XBell with the specified .I display and .I percent, and returns False. Otherwise, .I XkbBell calls .I XkbDeviceBell with the specified .I display, window, percent, and .I name, a .I device_spec of XkbUseCoreKbd, a .I bell_class of XkbDfltXIClass, and a .I bell_id of XkbDfltXIId, and returns True. If you have disabled the audible bell, the server does not ring the system bell, although it does generate a XkbBellNotify event. You can call .I XkbBell without first initializing the keyboard extension. .SH "RETURN VALUES" .TP 15 FALSE The XkbBell function returns FALSE if XlibDisplayNoXkb is set. .SH STRUCTURES .LP Xkb generates XkbBellNotify events for all bells except for those resulting from calls to .I XkbForceDeviceBell and .I XkbForceBell. To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask in both the .I bits_to_change and .I values_for_bits parameters to .I XkbSelectEvents. The XkbBellNotify event has no event details. It is either selected or it is not. However, you can call .I XkbSelectEventDetails using XkbBellNotify as the .I event_type and specifying XkbAllBellEventsMask in .I bits_to_change and .I values_for_bits. This has the same effect as a call to .I XkbSelectEvents. The structure for the XkbBellNotify event type contains: .nf typedef struct _XkbBellNotify { int type; /\&* Xkb extension base event code */ unsigned long serial; /\&* X server serial number for event */ Bool send_event; /\&* True => synthetically generated */ Display * display; /\&* server connection where event generated */ Time time; /\&* server time when event generated */ int xkb_type; /\&* XkbBellNotify */ unsigned int device; /\&* Xkb device ID, will not be XkbUseCoreKbd */ int percent; /\&* requested volume as % of max */ int pitch; /\&* requested pitch in Hz */ int duration; /\&* requested duration in microseconds */ unsigned int bell_class; /\&* X input extension feedback class */ unsigned int bell_id; /\&* X input extension feedback ID */ Atom name; /\&* "name" of requested bell */ Window window; /\&* window associated with event */ Bool event_only; /\&* False -> the server did not produce a beep */ } XkbBellNotifyEvent; .fi If your application needs to generate visual bell feedback on the screen when it receives a bell event, use the window ID in the XkbBellNotifyEvent, if present. .SH "SEE ALSO" .BR XBell (__libmansuffix__), .BR XkbBellNotify (__libmansuffix__), .BR XkbChangeEnabledControls (__libmansuffix__), .BR XkbDeviceBell (__libmansuffix__), .BR XkbForceBell (__libmansuffix__), .BR XkbForceDeviceBell (__libmansuffix__), .BR XkbUseCoreKbd (__libmansuffix__) libX11-1.8.12/man/xkb/XkbLookupKeySym.man0000644014310600000120000000445714763154126013453 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbLookupKeySym __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbLookupKeySym \- Find the symbol associated with a key for a particular state .SH SYNOPSIS .HP .B Bool XkbLookupKeySym .BI "(\^Display *" "dpy" "\^," .BI "KeyCode " "key" "\^," .BI "unsigned int " "state" "\^," .BI "unsigned int *" "mods_rtrn" "\^," .BI "KeySym *" "sym_rtrn" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I key key for which symbols are to be found .TP .I state state for which symbol should be found .TP .I mods_rtrn backfilled with consumed modifiers .TP .I sym_rtrn backfilled with symbol associated with key + state .SH DESCRIPTION .LP .I XkbLookupKeySym is the equivalent of the core .I XLookupKeySym function. For the core keyboard, given a keycode .I key and an Xkb state .I state, XkbLookupKeySym returns the symbol associated with the key in .I sym_rtrn and the list of modifiers that should still be applied in .I mods_rtrn. The .I state parameter is the state from a KeyPress or KeyRelease event. .I XkbLookupKeySym returns True if it succeeds. .SH "SEE ALSO" .BR XLookupKeySym (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAllocClientMap.man0000644014310600000120000001136414763154126013662 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocClientMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocClientMap \- Allocate and initialize an empty client map description record .SH SYNOPSIS .HP .B Status XkbAllocClientMap .BI "(\^XkbDescPtr " "xkb" "\^," .BI "unsigned int " "which" "\^," .BI "unsigned int " "type_count" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description in which to allocate client map .TP .I which mask selecting map components to allocate .TP .I type_count value of num_types field in map to be allocated .SH DESCRIPTION .LP Calling .I XkbGetMap should be sufficient for most applications to get client and server maps. As a result, most applications do not need to directly allocate client and server maps. If you change the number of key types or construct map components without loading the necessary components from the X server, do not allocate any map components directly using .I malloc or .I Xmalloc. Instead, use the Xkb allocators, .I XkbAllocClientMap, and .I XkbAllocServerMap. Similarly, use the Xkb destructors, .I XkbFreeClientMap, and .I XkbFreeServerMap instead of .I free or .I Xfree. .I XkbAllocClientMap allocates and initializes an empty client map in the .I map field of the keyboard description specified by .I xkb. The .I which parameter specifies the particular components of the client map structure to allocate and is a mask composed by a bitwise inclusive OR of one or more of the masks shown in Table 1. .bp .TS c s l l l lw(4i). Table 1 XkbAllocClientMap Masks _ Mask Effect _ XkbKeyTypesMask T{ The type_count field specifies the number of entries to preallocate for the types field of the client map. If the type_count field is less than XkbNumRequiredTypes returns BadValue. T} .sp XkbKeySymsMask T{ The min_key_code and max_key_code fields of the xkb parameter are used to allocate the syms and key_sym_map fields of the client map. The fields are allocated to contain the maximum number of entries necessary for max_key_code - min_key_code + 1 keys. T} .sp XkbModifierMapMask T{ The min_key_code and max_key_code fields of the xkb parameter are used to allocate the modmap field of the client map. The field is allocated to contain the maximum number of entries necessary for max_key_code - min_key_code + 1 keys. T} .TE NOTE: The .I min_key_code and .I max_key_code fields of the .I xkb parameter must be legal values if the XkbKeySymsMask or XkbModifierMapMask masks are set in the .I which parameter. If they are not valid, .I XkbAllocClientMap returns BadValue. If the client map of the keyboard description is not NULL, and any fields are already allocated in the client map, .I XkbAllocClientMap does not overwrite the existing values; it simply ignores that part of the request. The only exception is the .I types array. If .I type_count is greater than the current .I num_types field of the client map, .I XkbAllocClientMap resizes the .I types array and resets the .I num_types field accordingly. If .I XkbAllocClientMap is successful, it returns Success. Otherwise, it can return either BadMatch, BadAlloc, or BadValue errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbAllocClientMap (__libmansuffix__), .BR XkbAllocServerMap (__libmansuffix__), .BR XkbFreeClientMap, (__libmansuffix__), .BR XkbFreeServerMap (__libmansuffix__), .BR XkbGetMap (__libmansuffix__) libX11-1.8.12/man/xkb/XkbSetNamedIndicator.man0000644014310600000120000001144414763154126014367 .\" Copyright (c) 1999, 2017, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetNamedIndicator __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetNamedIndicator \- Names an indicator if it is not already named; toggles the state of the indicator; sets the indicator to a specified state and sets the indicator map for the indicator .SH SYNOPSIS .HP .HP .B Bool XkbSetNamedDeviceIndicator .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "led_class" "\^," .BI "unsigned int " "led_id" "\^," .BI "Atom " "name" "\^," .BI "Bool " "change_state" "\^," .BI "Bool " "state" "\^," .BI "Bool " "create_new" "\^," .BI "XkbIndicatorMapPtr " "map" "\^);" .B Bool XkbSetNamedIndicator .BI "(\^Display *" "dpy" "\^," .BI "Atom " "name" "\^," .BI "Bool " "change_state" "\^," .BI "Bool " "state" "\^," .BI "Bool " "create_new" "\^," .BI "XkbIndicatorMapPtr " "map" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to the X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I led_class feedback class, or XkbDfltXIClass .TP .I led_id feedback ID, or XkbDfltXIId .TP .I name name of the indicator to change .TP .I change_state whether to change the indicator state or not .TP .I state desired new state for the indicator .TP .I create_new whether a new indicator with the specified name should be created when necessary .TP .I map new map for the indicator .SH DESCRIPTION .LP If a compatible version of the Xkb extension is not available in the server, .I XkbSetNamedDeviceIndicator returns False. Otherwise, it sends a request to the X server to change the indicator specified by .I name and returns True. If .I change_state is True, .I XkbSetNamedDeviceIndicator tells the server to change the state of the named indicator to the value specified by .IR state . If .I change_state is False, then .I state is not used. If an indicator with the name specified by .I name does not already exist, the .I create_new parameter tells the server whether it should create a new named indicator. If .I create_new is True, the server finds the first indicator that doesn't have a name and gives it the name specified by .IR name . If the optional parameter, .IR map , is not NULL, .I XkbSetNamedDeviceIndicator tells the server to change the indicator's map to the values specified in .IR map . In addition, it can also generate XkbIndicatorStateNotify, XkbIndicatorMapNotify, and XkbNamesNotify events. .LP .I XkbSetNamedIndicator is a convenience function that calls .I XkbSetNamedDeviceIndicator with a .I device_spec of .BR XkbUseCoreKbd , a .I led_class of .BR XkbDfltXIClass , and a .I led_id of .BR XkbDfltXIId . It returns the return value from .IR XkbSetNamedDeviceIndicator . .SH "RETURN VALUES" .TP 15 True The .IR XkbSetNamedIndicator " and " XkbSetNamedDeviceIndicator functions return True if a compatible version of the Xkb extension is available in the server. .TP 15 False The .IR XkbSetNamedIndicator " and " XkbSetNamedDeviceIndicator functions return False if a compatible version of the Xkb extension is not available in the server. .SH DIAGNOSTICS .TP 15 .B BadAtom A name is neither a valid Atom or None .TP 15 .B BadImplementation Invalid reply from server .TP 15 .B BadKeyboard .I device_spec does not specify a device with indicators. .TP 15 .B BadMatch .I led_id is not .B DfltXIId and does not specify a feedback of the class specified by .I led_class on the device specified by .IR device_spec . .TP 15 .B BadValue .I led_class does not specify .BR DfltXIClass ", " LedFeedbackClass ", or " KbdFeedbackClass . .SH "SEE ALSO" .BR XkbIndicatorMapNotify (__libmansuffix__), .BR XkbIndicatorStateNotify (__libmansuffix__), .BR XkbNamesNotify (__libmansuffix__) libX11-1.8.12/man/xkb/XkbKeyActionEntry.man0000644014310600000120000001117014763154126013736 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyActionEntry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyActionEntry \- Returns a pointer to the key action corresponding to group grp and shift level lvl from the two-dimensional table of key actions associated with the key corresponding to keycode .SH SYNOPSIS .HP .B XkbAction * XkbKeyActionEntry .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^," .BI "int " "shift" "\^," .BI "int " "grp" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .TP .I shift shift level within group .TP .I grp group index for group of interest .SH DESCRIPTION .LP A key action defines the effect key presses and releases have on the internal state of the server. For example, the expected key action associated with pressing the Shift key is to set the Shift modifier. There is zero or one key action associated with each keysym bound to each key. Just as the entire list of key symbols for the keyboard mapping is held in the .I syms field of the client map, the entire list of key actions for the keyboard mapping is held in the .I acts array of the server map. The total size of .I acts is specified by .I size_acts, and the number of entries is specified by .I num_acts. The .I key_acts array, indexed by keycode, describes the actions associated with a key. The .I key_acts array has .I min_key_code unused entries at the start to allow direct indexing using a keycode. If a .I key_acts entry is zero, it means the key does not have any actions associated with it. If an entry is not zero, the entry represents an index into the .I acts field of the server map, much as the .I offset field of a KeySymMapRec structure is an index into the .I syms field of the client map. The reason the .I acts field is a linear list of XkbActions is to reduce the memory consumption associated with a keymap. Because Xkb allows individual keys to have multiple shift levels and a different number of groups per key, a single two-dimensional array of KeySyms would potentially be very large and sparse. Instead, Xkb provides a small two-dimensional array of XkbActions for each key. To store all of these individual arrays, Xkb concatenates each array together in the .I acts field of the server map. The key action structures consist only of fields of type char or unsigned char. This is done to optimize data transfer when the server sends bytes over the wire. If the fields are anything but bytes, the server has to sift through all of the actions and swap any nonbyte fields. Because they consist of nothing but bytes, it can just copy them out. .I XkbKeyActionEntry returns the key action corresponding to group .I grp and shift level .I lvl from the two-dimensional table of key actions associated with the key corresponding to .I keycode. .SH STRUCTURES .LP The KeySymMapRec structure is defined as follows: .nf #define XkbNumKbdGroups 4 #define XkbMaxKbdGroup (XkbNumKbdGroups-1) typedef struct { /\&* map to keysyms for a single keycode */ unsigned char kt_index[XkbNumKbdGroups]; /\&* key type index for each group */ unsigned char group_info; /\&* # of groups and out of range group handling */ unsigned char width; /\&* max # of shift levels for key */ unsigned short offset; /\&* index to keysym table in syms array */ } XkbSymMapRec, *XkbSymMapPtr; .fi libX11-1.8.12/man/xkb/XkbKeyGroupInfo.man0000644014310600000120000002054614763154126013416 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyGroupInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyGroupInfo \- Returns the number of groups of symbols bound to the key corresponding to keycode .SH SYNOPSIS .HP .B unsigned char XkbKeyGroupInfo .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .SH DESCRIPTION .LP The .I group_info field of an XkbSymMapRec is an encoded value containing the number of groups of symbols bound to the key as well as the specification of the treatment of out-of-range groups. It is legal for a key to have zero groups, in which case it also has zero symbols and all events from that key yield NoSymbol. To obtain the number of groups of symbols bound to the key, use .I XkbKeyNumGroups. To change the number of groups bound to a key, use .I XkbChangeTypesOfKey. To obtain a mask that determines the treatment of out-of-range groups, use .I XkbKeyGroupInfo and .I XkbOutOfRangeGroupInfo. The keyboard controls contain a .I groups_wrap field specifying the handling of illegal groups on a global basis. That is, when the user performs an action causing the effective group to go out of the legal range, the .I groups_wrap field specifies how to normalize the effective keyboard group to a group that is legal for the keyboard as a whole, but there is no guarantee that the normalized group will be within the range of legal groups for any individual key. The per-key .I group_info field specifies how a key treats a legal effective group if the key does not have a type specified for the group of concern. For example, the Enter key usually has just one group defined. If the user performs an action causing the global keyboard group to change to Group2, the .I group_info field for the Enter key describes how to handle this situation. Out-of-range groups for individual keys are mapped to a legal group using the same options as are used for the overall keyboard group. The particular type of mapping used is controlled by the bits set in the .I group_info flag, as shown in Table 1. .bp .TS c s l l l l. Table 1 group_info Range Normalization _ Bits set in group_info Normalization method _ XkbRedirectIntoRange XkbRedirectIntoRange XkbClampIntoRange XkbClampIntoRange none of the above XkbWrapIntoRange .TE .I XkbKeyGroupInfo returns the group_info field from the XkbSymMapRec structure associated with the key corresponding to .I keycode. .SH STRUCTURES .LP The KeySymMapRec structure is defined as follows: .nf \&#define XkbNumKbdGroups 4 \&#define XkbMaxKbdGroup (XkbNumKbdGroups-1) typedef struct { /\&* map to keysyms for a single keycode */ unsigned char kt_index[XkbNumKbdGroups]; /\&* key type index for each group */ unsigned char group_info; /\&* # of groups and out of range group handling */ unsigned char width; /\&* max # of shift levels for key */ unsigned short offset; /\&* index to keysym table in syms array */ } XkbSymMapRec, *XkbSymMapPtr; .fi .nf The XkbControlsRec structure is defined as follows: \&#define XkbMaxLegalKeyCode 255 \&#define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8) typedef struct { unsigned char mk_dflt_btn; /\&* default button for keyboard driven mouse */ unsigned char num_groups; /\&* number of keyboard groups */ unsigned char groups_wrap; /\&* how to wrap out-of-bounds groups */ XkbModsRec internal; /\&* defines server internal modifiers */ XkbModsRec ignore_lock; /\&* modifiers to ignore when checking for grab */ unsigned int enabled_ctrls; /\&* 1 bit => corresponding boolean control enabled */ unsigned short repeat_delay; /\&* ms delay until first repeat */ unsigned short repeat_interval; /\&* ms delay between repeats */ unsigned short slow_keys_delay; /\&* ms minimum time key must be down to be ok */ unsigned short debounce_delay; /\&* ms delay before key reactivated */ unsigned short mk_delay; /\&* ms delay to second mouse motion event */ unsigned short mk_interval; /\&* ms delay between repeat mouse events */ unsigned short mk_time_to_max; /\&* # intervals until constant mouse move */ unsigned short mk_max_speed; /\&* multiplier for maximum mouse speed */ short mk_curve; /\&* determines mouse move curve type */ unsigned short ax_options; /\&* 1 bit => Access X option enabled */ unsigned short ax_timeout; /\&* seconds until Access X disabled */ unsigned short axt_opts_mask; /\&* 1 bit => options to reset on Access X timeout */ unsigned short axt_opts_values; /\&* 1 bit => turn option on, 0=> off */ unsigned int axt_ctrls_mask; /\&* which bits in enabled_ctrls to modify */ unsigned int axt_ctrls_values; /\&* values for new bits in enabled_ctrls */ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\&* per key auto repeat */ } XkbControlsRec, *XkbControlsPtr; .fi .nf The XkbControlsRec structure is defined as follows: \&#define XkbMaxLegalKeyCode 255 \&#define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8) typedef struct { unsigned char mk_dflt_btn; /\&* default button for keyboard driven mouse */ unsigned char num_groups; /\&* number of keyboard groups */ unsigned char groups_wrap; /\&* how to wrap out-of-bounds groups */ XkbModsRec internal; /\&* defines server internal modifiers */ XkbModsRec ignore_lock; /\&* modifiers to ignore when checking for grab */ unsigned int enabled_ctrls; /\&* 1 bit => corresponding boolean control enabled */ unsigned short repeat_delay; /\&* ms delay until first repeat */ unsigned short repeat_interval; /\&* ms delay between repeats */ unsigned short slow_keys_delay; /\&* ms minimum time key must be down to be ok */ unsigned short debounce_delay; /\&* ms delay before key reactivated */ unsigned short mk_delay; /\&* ms delay to second mouse motion event */ unsigned short mk_interval; /\&* ms delay between repeat mouse events */ unsigned short mk_time_to_max; /\&* # intervals until constant mouse move */ unsigned short mk_max_speed; /\&* multiplier for maximum mouse speed */ short mk_curve; /\&* determines mouse move curve type */ unsigned short ax_options; /\&* 1 bit => Access X option enabled */ unsigned short ax_timeout; /\&* seconds until Access X disabled */ unsigned short axt_opts_mask; /\&* 1 bit => options to reset on Access X timeout */ unsigned short axt_opts_values; /\&* 1 bit => turn option on, 0=> off */ unsigned int axt_ctrls_mask; /\&* which bits in enabled_ctrls to modify */ unsigned int axt_ctrls_values; /\&* values for new bits in enabled_ctrls */ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\&* per key auto repeat */ } XkbControlsRec, *XkbControlsPtr; .fi .SH "SEE ALSO" .BR XkbChangeTypesOfKey (__libmansuffix__), .BR XkbKeyGroupInfo (__libmansuffix__), .BR XkbOutOfRangeGroupInfo (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAddGeomColor.man0000644014310600000120000000650214763154126013330 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddGeomColor __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddGeomColor \- Add one color name to an existing keyboard geometry description .SH SYNOPSIS .HP .B XkbColorPtr XkbAddGeomColor .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "_Xconst char *" "spec" "\^," .BI "unsigned int " "pixel" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry to be updated .TP .I spec color to be added .TP .I pixel color to be added .SH DESCRIPTION .LP Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the .I num_ * fields of the corresponding structure is incremented by 1. These functions do not change .I sz_* unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements. The top-level geometry description includes a list of .I geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. .I XkbAddGeomColor adds the specified color .I name and .I pixel to the specified geometry .I geom. The top-level geometry description includes a list of up to MaxColors (32) .I color names. A color .I name is a string whose interpretation is not specified by Xkb and neither is the .I pixel value's interpretation. All other geometry data structures refer to colors using their indices in this global list or pointers to colors in this list. .I XkbAddGeomColor returns NULL if any of the parameters is empty or if it was not able to allocate space for the color. To allocate space for an arbitrary number of colors to a geometry, use the .I XkbAllocGeomColors function. .SH STRUCTURES .LP .nf typedef struct _XkbColor { unsigned int pixel; /\&* color */ char * spec; /\&* color name */ } XkbColorRec,*XkbColorPtr; .fi .SH "SEE ALSO" .BR XkbAllocGeomColors (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAddGeomProperty.man0000644014310600000120000000603614763154126014100 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddGeomProperty __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddGeomProperty \- Add one property to an existing keyboard geometry description .SH SYNOPSIS .HP .B XkbPropertyPtr XkbAddGeomProperty .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "_Xconst char *" "name" "\^," .BI "_Xconst char *" "value" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry to be updated .TP .I name name of the new property .TP .I value value for the new property .SH DESCRIPTION .LP Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the .I num_ * fields of the corresponding structure is incremented by 1. These functions do not change .I sz_* unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements. The top-level geometry description includes a list of .I geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. .I XkbAddGeomProperty adds one property with the specified .I name and .I value to the keyboard geometry specified by .I geom. XkbAddGeomProperty returns NULL if any of the parameters is empty or if it was not able to allocate space for the property. To allocate space for an arbitrary number of properties, use the .I XkbAllocGeomProps function. .SH STRUCTURES .LP .nf typedef struct _XkbProperty { char * name; /\&* property name */ char * value; /\&* property value */ } XkbPropertyRec,*XkbPropertyPtr; .fi .SH "SEE ALSO" .BR XkbAllocGeomProps (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAddGeomOutline.man0000644014310600000120000000632314763154126013672 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddGeomOutline __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddGeomOutline \- Add one outline to an existing shape .SH SYNOPSIS .HP .B XkbOutlinePtr XkbAddGeomOutline .BI "(\^XkbShapePtr " "shape" "\^," .BI "int " "sz_points" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I shape shape to be updated .TP .I sz_points number of points to be reserved .SH DESCRIPTION .LP Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the .I num_ * fields of the corresponding structure is incremented by 1. These functions do not change .I sz_* unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements. The top-level geometry description includes a list of .I geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. An outline consists of an arbitrary number of points. .I XkbAddGeomOutline adds an outline to the specified .I shape by reserving .I sz_points points for it. The new outline is allocated and zeroed. .I XkbAddGeomOutline returns NULL if any of the parameters is empty or if it was not able to allocate space. To allocate space for an arbitrary number of outlines to a shape, use .I XkbAllocGeomOutlines. .SH STRUCTURES .LP .nf typedef struct _XkbOutline { unsigned short num_points; /\&* number of points in the outline */ unsigned short sz_points; /\&* size of the points array */ unsigned short corner_radius; /\&* draw corners as circles with this radius */ XkbPointPtr points; /\&* array of points defining the outline */ } XkbOutlineRec, *XkbOutlinePtr; .fi .SH "SEE ALSO" .BR XkbAllocGeomOutlines (__libmansuffix__) libX11-1.8.12/man/xkb/XkbSARedirectSetVMods.man0000644014310600000120000001024014763154126014435 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSARedirectSetVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSARedirectSetVMods \- Sets the vmods0 and vmods1 of act from v .SH SYNOPSIS .HP .B void XkbSARedirectSetVMods .BI "(\^XkbRedirectKeyAction " "act" "\^," .BI "unsigned int " "v" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action in which to set vmods .TP .I v new value for virtual modifiers .SH DESCRIPTION .LP Actions associated with the XkbRedirectKeyAction structure generate KeyPress and KeyRelease events containing a keycode different from the key that was pressed or released. The .I type field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey. Key presses cause a KeyPress event for the key specified by the .I new_key field instead of the actual key. The state reported in this event reports the current effective modifiers changed as follows: any real modifiers selected by the .I mods_mask field are set to corresponding values from the .I mods field. Any real modifiers bound to the virtual modifiers specified by the .I vmods_mask0 and .I vmods_mask1 fields are either set or cleared, depending on the corresponding values in the .I vmods0 and .I vmods1 fields. If the real and virtual modifier definitions specify conflicting values for a single modifier, the real modifier definition has priority. Key releases cause a KeyRelease event for the key specified by the .I new_key field instead of the actual key. The state for this event consists of the effective keyboard modifiers at the time of the release, changed as described previously. The XkbSA_RedirectKey action normally redirects to another key on the same device as the key that caused the event, unless that device does not belong to the input extension KeyClass, in which case this action causes an event on the core keyboard device. (The input extension categorizes devices by breaking them into classes. Keyboards, and other input devices with keys, are classified as KeyClass devices by the input extension.) The .I vmods_mask0 and .I vmods_mask1 fields actually represent one .I vmods_mask value. Xkb provides macros to convert between the two formats. .I XkbSARedirectSetVModsMask sets the .I vmods0 and .I vmods1 of .I act from .I v. .SH STRUCTURES .LP .nf typedef struct_XkbRedirectKeyAction { unsigned char type; /\&* XkbSA_RedirectKey */ unsigned char new_key; /\&* keycode to be put in event */ unsigned char mods_mask; /\&* mask of real mods to be reset */ unsigned char mods; /\&* mask of real mods to take values from */ unsigned char vmods_mask0; /\&* first half of mask of virtual mods to be reset */ unsigned char vmods_mask1; /\&* other half of mask of virtual mods to be reset */ unsigned char vmods0; /\&* first half of mask of virtual mods to take values from */ unsigned char vmods1; /\&* other half of mask of virtual mods to take values from */ } XkbRedirectKeyAction; .fi libX11-1.8.12/man/xkb/XkbFreeGeomPoints.man0000644014310600000120000000541114763154126013715 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomPoints __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomPoints \- Free points in a outline .SH SYNOPSIS .HP .B void XkbFreeGeomPoints .BI "(\^XkbOutlinePtr " "outline" "\^," .BI "int " "first" "\^," .BI "int " "count" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I outline outline in which points should be freed .TP .I first first point to be freed .TP .I count number of points to be freed .TP .I free_all True => all points are freed .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. If .I free_all is True, all points are freed regardless of the value of >i first and .I count. Otherwise, the number of points specified by .I count are freed, beginning with the point specified by .I first in the specified outline. .SH "RETURN VALUES" .TP 15 Success The XkbFreeGeomPoints function returns Success when there are no allocation or argument errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbSetDeviceButtonActions.man0000644014310600000120000000633014763154126015420 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetDeviceButtonActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetDeviceButtonActions \- Change only the button actions for an input extension device .SH SYNOPSIS .HP .B Bool XkbSetDeviceButtonActions .BI "(\^Display *" "dpy" "\^," .BI "XkbDeviceInfoPtr " "device" "\^," .BI "unsigned int " "first_button" "\^," .BI "unsigned int " "num_buttons" "\^);" .SH ARGUMENTS .TP .I dpy connection to X server .TP .I device structure defining the device and modifications .TP .I first_button number of first button to update, 0 relative .TP .I num_buttons number of buttons to update .SH DESCRIPTION .LP .I XkbSetDeviceButtonActions assigns actions to the buttons of the device specified in .I device_info->device_spec. Actions are assigned to .I num_buttons buttons beginning with .I first_button and are taken from the actions specified in .I device_info->btn_acts. If the server does not support assignment of Xkb actions to extension device buttons, .I XkbSetDeviceButtonActions has no effect and returns False. If the device has no buttons or if .I first_button or .I num_buttons specify buttons outside of the valid range as determined by .I device_info->num_btns, the function has no effect and returns False. Otherwise, .I XkbSetDeviceButtonActions sends a request to the server to change the actions for the specified buttons and returns True. If the actual request sent to the server involved illegal button numbers, a BadValue protocol error is generated. If an invalid device identifier is specified in .I device_info->device_spec, a BadKeyboard protocol error results. If the actual device specified in .I device_info->device_spec does not contain buttons and a request affecting buttons is made, a BadMatch protocol error is generated. .SH DIAGNOSTICS .TP 15 .B BadKeyboard The device specified was not a valid core or input extension device .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbSelectEvents.man0000644014310600000120000001441314763154126013435 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSelectEvents __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSelectEvents \- Selects and / or deselects for delivery of one or more Xkb events and has them delivered under all conditions .SH SYNOPSIS .HP .B Bool XkbSelectEvents .BI "(\^Display *" "display" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned long int " "bits_to_change" "\^," .BI "unsigned long int " "values_for_bits" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I bits_to_change determines events to be selected / deselected .TP .I values_for_bits 1=>select, 0->deselect; for events in bits_to_change .SH DESCRIPTION .LP Xkb events are selected using an event mask, much the same as normal core X events are selected. However, unlike selecting core X events, where you must specify the selection status (on or off) for all possible event types whenever you wish to change the selection criteria for any one event, Xkb allows you to restrict the specification to only the event types you wish to change. This means that you do not need to remember the event selection values for all possible types each time you want to change one of them. Many Xkb event types are generated under several different circumstances. When selecting to receive an Xkb event, you may specify either that you want it delivered under all circumstances, or that you want it delivered only for a subset of the possible circumstances. You can also deselect an event type that was previously selected for, using the same granularity. Xkb provides two functions to select and deselect delivery of Xkb events. .I XkbSelectEvents allows you to select or deselect delivery of more than one Xkb event type at once. Events selected using .I XkbSelectEvents are delivered to your program under all circumstances that generate the events. To restrict delivery of an event to a subset of the conditions under which it occurs, use .I XkbSelectEventDetails. XkbSelectEventDetails only allows you to change the selection conditions for a single event at a time, but it provides a means of fine-tuning the conditions under which the event is delivered. This request changes the Xkb event selection mask for the keyboard specified by .I device_spec. Each Xkb event that can be selected is represented by a bit in the .I bits_to_change and .I values_for_bits masks. Only the event selection bits specified by the .I bits_to_change parameter are affected; any unspecified bits are left unchanged. To turn on event selection for an event, set the bit for the event in the .I bits_to_change parameter and set the corresponding bit in the .I values_for_bits parameter. To turn off event selection for an event, set the bit for the event in the .I bits_to_change parameter and do not set the corresponding bit in the .I values_for_bits parameter. The valid values for both of these parameters are an inclusive bitwise OR of the masks shown in Table 1. There is no interface to return your client's current event selection mask. Clients cannot set other clients' event selection masks. The X server reports the events defined by Xkb to your client application only if you have requested them via a call to .I XkbSelectEvents or .I XkbSelectEventDetails. Specify the event types in which you are interested in a mask. Table 1 lists the event mask constants that can be specified with the .I XkbSelectEvents request and the circumstances in which the mask should be specified. .TS c s s l l l l l l. Table 1 XkbSelectEvents Mask Constants _ Event Mask Value Notification Wanted _ XkbNewKeyboardNotifyMask (1L<<0) Keyboard geometry change XkbMapNotifyMask (1L<<1) Keyboard mapping change XkbStateNotifyMask (1L<<2) Keyboard state change XkbControlsNotifyMask (1L<<3) Keyboard control change XkbIndicatorStateNotifyMask (1L<<4) Keyboard indicator state change XkbIndicatorMapNotifyMask (1L<<5) Keyboard indicator map change XkbNamesNotifyMask (1L<<6) Keyboard name change XkbCompatMapNotifyMask (1L<<7) Keyboard compat map change XkbBellNotifyMask (1L<<8) Bell XkbActionMessageMask (1L<<9) Action message XkbAccessXNotifyMask (1L<<10) AccessX features XkbExtensionDeviceNotifyMask (1L<<11) Extension device XkbAllEventsMask (0xFFF) All Xkb events .TE If a bit is not set in the .I bits_to_change parameter, but the corresponding bit is set in the .I values_for_bits parameter, a BadMatch protocol error results. If an undefined bit is set in either the .I bits_to_change or the .I values_for_bits parameter, a BadValue protocol error results. All event selection bits are initially zero for clients using the Xkb extension. Once you set some bits, they remain set for your client until you clear them via another call to .I XkbSelectEvents. .I XkbSelectEvents returns False if the Xkb extension has not been initialized and True otherwise. .SH "RETURN VALUES" .TP 15 True The .I XkbSelectEvents function returns True if the Xkb extension has been initialized. .TP 15 False The .I XkbSelectEvents function returns False if the Xkb extension has not been initialized. .SH "SEE ALSO" .BR XkbSelectEventDetails (__libmansuffix__), .BR XkbUseCoreKbd (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetKeySyms.man0000644014310600000120000000567214763154126013104 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetKeySyms __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetKeySyms \- Obtain the symbols for a subset of the keys in a keyboard description .SH SYNOPSIS .HP .B Status XkbGetKeySyms .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "first" "\^," .BI "unsigned int " "num" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I first keycode of first key to get .TP .I num number of keycodes for which syms desired .TP .I xkb Xkb description to be updated .SH DESCRIPTION .LP .I XkbGetKeySyms sends a request to the server to obtain the set of keysyms bound to .I num keys starting with the key whose keycode is .I first. It waits for a reply and returns the keysyms in the .I map.syms field of .I xkb. If successful, .I XkbGetKeySyms returns Success. The .I xkb parameter must be a pointer to a valid Xkb keyboard description. If the client .I map in the xkb parameter has not been allocated, .I XkbGetKeySyms allocates and initializes it before obtaining the symbols. If a compatible version of Xkb is not available in the server or the Xkb extension has not been properly initialized, .I XkbGetKeySyms returns BadAccess. If .I num is less than 1 or greater than XkbMaxKeyCount, .I XkbGetKeySyms returns BadValue. If any allocation errors occur, .I XkbGetKeySyms returns BadAlloc. .SH "RETURN VALUES" .TP 15 Success The .I XkbGetKeySyms function returns Success if it gets a reply to a request to the server to obtain the set of keysyms bound to .I num keys starting with the key whose keycode is .I first. .SH DIAGNOSTICS .TP 15 .B BadAccess The Xkb extension has not been properly initialized .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbAllocGeomOverlays.man0000644014310600000120000000466314763154126014426 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomOverlays __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomOverlays \- Allocate overlays in a section .SH SYNOPSIS .HP .B Status XkbAllocGeomOverlays .BI "(\^XkbSectionPtr " "section" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I section section for which overlays should be allocated .TP .I num_needed number of new overlays required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomOverlays allocates .I num_needed overlays and adds them to the .I section. No initialization of the overlays is done. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbSetDeviceInfo.man0000644014310600000120000002244614763154126013525 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetDeviceInfo \- Modify some or all of the characteristics of an X Input Extension device .SH SYNOPSIS .HP .B Bool XkbSetDeviceInfo .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "which" "\^," .BI "XkbDeviceInfoPtr " "device_info" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I which mask indicating characteristics to modify .TP .I device_info structure defining the device and modifications .SH DESCRIPTION .LP To change characteristics of an X Input Extension device in the server, first modify a local copy of the device structure and then use either .I XkbSetDeviceInfo, or, to save network traffic, use an XkbDeviceChangesRec structure and call .I XkbChangeDeviceInfo to download the changes to the server. .I XkbSetDeviceInfo sends a request to the server to modify the characteristics of the device specified in the .I device_info structure. The particular characteristics modified are identified by the bits set in .I which and take their values from the relevant fields in device_info (see Table 1). XkbSetDeviceInfo returns True if the request was successfully sent to the server. If the X server implementation does not allow interaction between the X input extension and the Xkb Extension, the function does nothing and returns False. .bp .nf Table 1 XkbDeviceInfoRec Mask Bits ____________________________________________________________________________________ Name XkbDeviceInfoRec Value Capability If Set Fields Effected ____________________________________________________________________________________ XkbXI_KeyboardsMask (1L <<0) Clients can use all Xkb requests and events with KeyClass devices supported by the input device extension. XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key btn_acts actions to buttons non-KeyClass input extension devices. XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign names to indicators on non-KeyClass input extension devices. XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign indicator maps to indicators on non-KeyClass input extension devices. XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request the status of indicators on non-KeyClass input extension devices. XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask | num_leds XkbXI_IndicatorMapsMask | leds->* XkbXI_IndicatorStateMask XkbXI_UnsupportedFeaturesMask unsupported (1L <<15) XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask | by Value Column XkbSI_ButtonActionsMask masks XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask | by Value Column XkbSI_KeyboardsMask masks XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask | by Value column XkbXI_UnsupportedFeaturesMask masks .fi The .I which parameter specifies which aspects of the device should be changed and is a bitmask composed of an inclusive OR or one or more of the following bits: XkbXI_ButtonActionsMask, XkbXI_IndicatorNamesMask, XkbXI_IndicatorMapsMask. If the features requested to be manipulated in .I which are valid for the device, but the server does not support assignment of one or more of them, that particular portion of the request is ignored. If the device specified in .I device_info->device_spec does not contain buttons and a request affecting buttons is made, or the device does not contain indicators and a request affecting indicators is made, a BadMatch protocol error results. If the XkbXI_ButtonActionsMask bit is set in the .I supported mask returned by .I XkbGetDeviceInfo, the Xkb extension allows applications to assign key actions to buttons on input extension devices other than the core keyboard device. If the XkbXI_ButtonActionsMask is set in .I which, the actions for all buttons specified in .I device_info are set to the XkbActions specified in .I device_info->btn_acts. If the number of buttons requested to be updated is not valid for the device, .I XkbSetDeviceInfo returns False and a BadValue protocol error results. If the XkbXI_IndicatorMaps and / or XkbXI_IndicatorNamesMask bit is set in the .I supported mask returned by .I XkbGetDeviceInfo, the Xkb extension allows applications to assign maps and / or names to the indicators of nonkeyboard extension devices. If supported, maps and / or names can be assigned to all extension device indicators, whether they are part of a keyboard feedback or part of an indicator feedback. If the XkbXI_IndicatorMapsMask and / or XkbXI_IndicatorNamesMask flag is set in .I which, the indicator maps and / or names for all .I device_info->num_leds indicator devices specified in .I device_info->leds are set to the maps and / or names specified in .I device_info->leds. device_info->leds->led_class and .I led_id specify the input extension class and device ID for each indicator device to modify; if they have invalid values, a BadValue protocol error results and .I XkbSetDeviceInfo returns False. If they have legal values but do not specify a keyboard or indicator class feedback for the device in question, a BadMatch error results. If any of the values in .I device_info->leds->names are not a valid Atom or None, a BadAtom protocol error results. .SH "RETURN VALUES" .TP 15 True The .I XkbSetDeviceInfo function returns True if the request was successfully sent to the server. .TP 15 False The .I XkbSetDeviceInfo function returns False if the X server implementation does not allow interaction between the X input extension and the Xkb Extension. .SH STRUCTURES .LP Changes to an Xkb extension device may be tracked by listening to XkbDeviceExtensionNotify events and accumulating the changes in an XkbDeviceChangesRec structure. The changes noted in the structure may then be used in subsequent operations to update either a server configuration or a local copy of an Xkb extension device configuration. The changes structure is defined as follows: .nf typedef struct _XkbDeviceChanges { unsigned int changed; /\&* bits indicating what has changed */ unsigned short first_btn; /\&* number of first button which changed, if any */ unsigned short num_btns; /\&* number of buttons that have changed */ XkbDeviceLedChangesRec leds; } XkbDeviceChangesRec,*XkbDeviceChangesPtr; .fi .SH DIAGNOSTICS .TP 15 .B BadAtom A name is neither a valid Atom or None .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbChangeDeviceInfo (__libmansuffix__), .BR XkbGetDeviceInfo (__libmansuffix__) libX11-1.8.12/man/xkb/XkbSetXlibControls.man0000644014310600000120000000554714763154126014137 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetXlibControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetXlibControls \- Changes the state of the Library Controls .SH SYNOPSIS .HP .B unsigned int XkbSetXlibControls .BI "(\^Display *" "display" "\^," .BI "unsigned long " "bits_to_change" "\^," .BI "unsigned long " "values_for_bits" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to X server .TP .I bits_to_change selects controls to be modified .TP .I values_for_bits turns selected controls on (1) or off (0) .SH DESCRIPTION .LP .I XkbSetXlibControls modifies the state of the controls selected by .I bits_to_change; only the controls selected by .I bits_to_change are modified. If the bit corresponding to a control is on in .I bits_to_change and also on in .I values_for_bits, the control is enabled. If the bit corresponding to a control is on in .I bits_to_change but off in .I values_for_bits, the control is disabled. .I bits_to_change should be an inclusive OR of bits from Table 1. .TS c s l l l l. Table 1 Library Control Masks _ Library Control Mask Value _ XkbLC_ForceLatin1Lookup (1 << 0) XkbLC_ConsumeLookupMods (1 << 1) XkbLC_AlwaysConsumeShiftAndLock (1 << 2) XkbLC_IgnoreNewKeyboards (1 << 3) XkbLC_ConsumeKeysOnComposeFail (1 << 29) XkbLC_ComposeLED (1 << 30) XkbLC_BeepOnComposeFail (1 << 31) XkbLC_AllControls (0xc0000007) .TE .SH "RETURN VALUES" .TP 15 (1 << 0) XkbLC_ForceLatin1Lookup .TP 15 (1 << 1) XkbLC_ConsumeLookupMods .TP 15 (1 << 2) XkbLC_AlwaysConsumeShiftAndLock .TP 15 (1 << 3) XkbLC_IgnoreNewKeyboards .TP 15 (1 << 29) XkbLC_ConsumeKeysOnComposeFail .TP 15 (1 << 30) XkbLC_ComposeLED .TP 15 (1 << 31) XkbLC_BeepOnComposeFail .TP 15 (0xc0000007) XkbLC_AllControls libX11-1.8.12/man/xkb/XkbFreeGeomOverlayRows.man0000644014310600000120000000541314763154126014737 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomOverlayRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomOverlayRows \- Free rows in an overlay .SH SYNOPSIS .HP .B void XkbFreeGeomOverlayRows .BI "(\^XkbSectionPtr " "overlay" "\^," .BI "int " "first" "\^," .BI "int " "count" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I overlay section in which rows should be freed .TP .I first first row to be freed .TP .I count number of rows to be freed .TP .I free_all True => all rows are freed .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. If .I free_all is True, all rows are freed regardless of the value of .I first and .I count. Otherwise, the number of rows specified by .I count are freed, beginning with the row specified by .I first in the specified overlay. .SH "RETURN VALUES" .TP 15 Success The XkbFreeGeomOverlayRows function returns Success if there are no allocation or argument errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbSetModActionVMods.man0000644014310600000120000000366314763154126014340 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetModActionVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetModActionVMods \- Sets the vmods1 and vmods2 fields of act using the vmods format of an Xkb modifier description .SH SYNOPSIS .HP .B void XkbSetModActionVMods .BI "(\^XkbAction " "act" "\^," .BI "unsigned short " "vmods" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action in which to set vmods .TP .I vmods virtual mods to set .SH DESCRIPTION .LP .I XkbSetModActionVMods sets the .I vmods1 and .I vmods2 fields of .I act using the .I vmods format of an Xkb modifier description. .SH NOTES .LP Despite the fact that the first parameter of these two macros is of type XkbAction, these macros may be used only with Actions of type XkbModAction and XkbISOAction. libX11-1.8.12/man/xkb/XkbKeycodeToKeysym.man0000644014310600000120000000376614763154126014132 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeycodeToKeysym __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeycodeToKeysym \- Finds the keysym bound to a particular key at a specified group and shift level .SH SYNOPSIS .HP .B KeySym XkbKeycodeToKeysym .BI "(\^Display *" "dpy" "\^," .BI "KeyCode " "kc" "\^," .BI "unsigned int " "group" "\^," .BI "unsigned int " "level" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I kc key of interest .TP .I group group of interest .TP .I level shift level of interest .SH DESCRIPTION .LP .I XkbKeycodeToKeysym returns the keysym bound to a particular group and shift level for a particular key on the core keyboard. If .I kc is not a legal keycode for the core keyboard, or if .I group or .I level are out of range for the specified key, .I XkbKeycodeToKeysym returns NoSymbol. libX11-1.8.12/man/xkb/XkbSAPtrDfltValue.man0000644014310600000120000000662214763154126013634 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSAPtrDfltValue __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSAPtrDfltValue \- Returns the valueXXX field of act converted to a signed int .SH SYNOPSIS .HP .B int XkbSAPtrDfltValue .BI "(\^XkbAction " "act" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action from which to extract group .SH DESCRIPTION .LP Actions associated with the XkbPtrDfltAction structure change the mk_dflt_btn attribute of the MouseKeys control. If the MouseKeys control is not enabled, KeyPress and KeyRelease events are treated as though the action is XkbSA_NoAction. Otherwise, this action changes the .I mk_dflt_btn attribute of the MouseKeys control. The .I type field of the XkbPtrDfltAction structure should always be XkbSA_SetPtrDflt. The .I flags field is composed of the bitwise inclusive OR of the values shown in Table 1 (currently there is only one value defined). .TS c s l l l lw(4i). Table 1 Pointer Default Flags _ Flag Meaning _ XkbSA_DfltBtnAbsolute T{ If set, the value field represents an absolute pointer button. Otherwise, the value field represents the amount to be added to the current default button. T} .TE The .I affect field specifies what changes as a result of this action. The only valid value for the .I affect field is XkbSA_AffectDfltBtn. The .I valueXXX field is a signed character that represents the new button value for the .I mk_dflt_btn attribute of the MouseKeys control. If XkbSA_DfltBtnAbsolute is set in .I flags, valueXXX specifies the button to be used; otherwise, .I valueXXX specifies the amount to be added to the current default button. In either case, illegal button choices are wrapped back around into range. Xkb provides macros, to convert between the integer and signed character values in XkbPtrDfltAction structures. .I XkbSAPtrDfltValue returns the .I valueXXX field of .I act converted to a signed int. .SH STRUCTURES .LP .nf typedef struct _XkbPtrDfltAction { unsigned char type; /\&* XkbSA_SetPtrDflt */ unsigned char flags; /\&* controls the pointer button number */ unsigned char affect; /\&* XkbSA_AffectDfltBtn */ char valueXXX; /\&* new default button member */ } XkbPtrDfltAction; .fi libX11-1.8.12/man/xkb/XkbFreeDeviceInfo.man0000644014310600000120000001766114763154126013656 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeDeviceInfo \- Free an XkbDeviceInfoRec structure .SH SYNOPSIS .HP .B void XkbFreeDeviceInfo .BI "(\^XkbDeviceInfoPtr " "device_info" "\^," .BI "unsigned int " "which" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I device_info pointer to XkbDeviceInfoRec in which to free items .TP .I which mask of components of device_info to free .TP .I free_all True => free everything, including device_info .SH DESCRIPTION .LP If .I free_all is True, the .I XkbFreeDeviceInfo frees all components of .I device_info and the XkbDeviceInfoRec structure pointed to by .I device_info itself. If .I free_all is False, the value of .I which determines which subcomponents are freed. .I which is an inclusive OR of one or more of the values from Table 1. If .I which contains XkbXI_ButtonActionsMask, all button actions associated with .I device_info are freed, .I device_info->btn_acts is set to NULL, and .I device_info->num_btns is set to zero. If .I which contains all bits in XkbXI_IndicatorsMask, all XkbDeviceLedInfoRec structures associated with .I device_info are freed, .I device_info->leds is set to NULL, and .I device_info->sz_leds and .I device_info->num_leds are set to zero. If .I which contains XkbXI_IndicatorMapsMask, all indicator maps associated with .I device_info are cleared, but the number of LEDs and the leds structures themselves is preserved. If .I which contains XkbXI_IndicatorNamesMask, all indicator names associated with .I device_info are cleared, but the number of LEDs and the leds structures themselves is preserved. If .I which contains XkbXI_IndicatorStateMask, the indicator state associated with the .I device_info leds are set to zeros but the number of LEDs and the leds structures themselves is preserved. .bp .nf Table 1 XkbDeviceInfoRec Mask Bits ____________________________________________________________________________________ Name XkbDeviceInfoRec Value Capability If Set Fields Effected ____________________________________________________________________________________ XkbXI_KeyboardsMask (1L <<0) Clients can use all Xkb requests and events with KeyClass devices supported by the input device extension. XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key btn_acts actions to buttons non-KeyClass input extension devices. XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign names to indicators on non-KeyClass input extension devices. XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign indicator maps to indicators on non-KeyClass input extension devices. XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request the status of indicators on non-KeyClass input extension devices. XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask | num_leds XkbXI_IndicatorMapsMask | leds->* XkbXI_IndicatorStateMask XkbXI_UnsupportedFeaturesMask unsupported (1L <<15) XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask | by Value Column XkbSI_ButtonActionsMask masks XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask | by Value Column XkbSI_KeyboardsMask masks XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask | by Value column XkbXI_UnsupportedFeaturesMask masks .fi .SH STRUCTURES .LP Information about X Input Extension devices is transferred between a client program and the Xkb extension in an XkbDeviceInfoRec structure: .nf typedef struct { char * name; /\&* name for device */ Atom type; /\&* name for class of devices */ unsigned short device_spec; /\&* device of interest */ Bool has_own_state; /\&* True=>this device has its own state */ unsigned short supported; /\&* bits indicating supported capabilities */ unsigned short unsupported; /\&* bits indicating unsupported capabilities */ unsigned short num_btns; /\&* number of entries in btn_acts */ XkbAction * btn_acts; /\&* button actions */ unsigned short sz_leds; /\&* total number of entries in LEDs vector */ unsigned short num_leds; /\&* number of valid entries in LEDs vector */ unsigned short dflt_kbd_fb; /\&* input extension ID of default (core kbd) indicator */ unsigned short dflt_led_fb; /\&* input extension ID of default indicator feedback */ XkbDeviceLedInfoPtr leds; /\&* LED descriptions */ } XkbDeviceInfoRec, *XkbDeviceInfoPtr; typedef struct { unsigned short led_class; /\&* class for this LED device*/ unsigned short led_id; /\&* ID for this LED device */ unsigned int phys_indicators; /\&* bits for which LEDs physically present */ unsigned int maps_present; /\&* bits for which LEDs have maps in maps */ unsigned int names_present; /\&* bits for which LEDs are in names */ unsigned int state; /\&* 1 bit => corresponding LED is on */ Atom names[XkbNumIndicators]; /\&* names for LEDs */ XkbIndicatorMapRec maps; /\&* indicator maps for each LED */ } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr; .fi libX11-1.8.12/man/xkb/XkbGetAutoRepeatRate.man0000644014310600000120000000640614763154126014361 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetAutoRepeatRate __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetAutoRepeatRate \- Gets the current attributes of the RepeatKeys control for a keyboard device .SH SYNOPSIS .HP .B Bool XkbGetAutoRepeatRate .BI "(\^Display *" "display" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int *" "timeout_rtrn" "\^," .BI "unsigned int *" "interval_rtrn" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to X server .TP .I device_spec desired device ID, or XkbUseCoreKbd .TP .I timeout_rtrn backfilled with initial repeat delay, ms .TP .I interval_rtrn backfilled with subsequent repeat delay, ms .SH DESCRIPTION .LP The core protocol allows only control over whether or not the entire keyboard or individual keys should auto-repeat when held down. RepeatKeys is a boolean control that extends this capability by adding control over the delay until a key begins to repeat and the rate at which it repeats. RepeatKeys is coupled with the core auto-repeat control: when RepeatKeys is enabled or disabled, the core auto-repeat is enabled or disabled and vice versa. Auto-repeating keys are controlled by two attributes. The first, .I timeout, is the delay after the initial press of an auto-repeating key and the first generated repeat event. The second, .I interval, is the delay between all subsequent generated repeat events. As with all boolean controls, configuring the attributes that determine how the control operates does not automatically enable the control as a whole. .I XkbGetAutoRepeatRate queries the server for the current values of the RepeatControls control attributes, backfills .I timeout_rtrn and .I interval_rtrn with them, and returns True. If a compatible version of the Xkb extension is not available in the server .I XkbGetAutoRepeatRate returns False. .SH "RETURN VALUES" .TP 15 True The XkbGetAutoRepeatRate function returns True if a compatible version of the Xkb extension is available in the server. .TP 15 False The XkbGetAutoRepeatRate function returns False if a compatible version of the Xkb extension is not available in the server. libX11-1.8.12/man/xkb/XkbSetPtrActionY.man0000644014310600000120000000742614763154126013547 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetPtrActionY __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetPtrActionY \- Sets the high_YYY and low_YYY fields of act from the signed integer value y .SH SYNOPSIS .HP .B void XkbSetPtrActionY .BI "(\^XkbPtrAction " "act" "\^," .BI "int " "y" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action in which to set Y .TP .I y new value to set .SH DESCRIPTION .LP Actions associated with the XkbPtrAction structure move the pointer when keys are pressed and released. If the MouseKeys control is not enabled, KeyPress and KeyRelease events are treated as though the action is XkbSA_NoAction. If the MouseKeys control is enabled, a server action of type XkbSA_MovePtr instructs the server to generate core pointer MotionNotify events rather than the usual KeyPress event, and the corresponding KeyRelease event disables any mouse keys timers that were created as a result of handling the XkbSA_MovePtr action. The .I type field of the XkbPtrAction structure is always XkbSA_MovePtr. The .I flags field is a bitwise inclusive OR of the masks shown in Table 1. .TS c s l l l lw(4i). Table 1 Pointer Action Types _ Action Type Meaning _ XkbSA_NoAcceleration T{ If not set, and the MouseKeysAccel control is enabled, the KeyPress initiates a mouse keys timer for this key; every time the timer expires, the cursor moves. T} XkbSA_MoveAbsoluteX T{ If set, the X portion of the structure specifies the new pointer X coordinate. Otherwise, the X portion is added to the current pointer X coordinate to determine the new pointer X coordinate. T} XkbSA_MoveAbsoluteY T{ If set, the Y portion of the structure specifies the new pointer Y coordinate. Otherwise, the Y portion is added to the current pointer Y coordinate to determine the new pointer Y coordinate. T} .TE Each of the X and Y coordinates of the XkbPtrAction structure is composed of two signed 16-bit values, that is, the X coordinate is composed of .I high_XXX and .I low_XXX, and similarly for the Y coordinate. Xkb provides the following macros, to convert between a signed integer and two signed 16-bit values in XkbPtrAction structures. .SH STRUCTURES .LP .nf typedef struct _XkbPtrAction { unsigned char type; /\&* XkbSA_MovePtr */ unsigned char flags; /\&* determines type of pointer motion */ unsigned char high_XXX; /\&* x coordinate, high bits*/ unsigned char low_XXX; /\&* y coordinate, low bits */ unsigned char high_YYY; /\&* x coordinate, high bits */ unsigned char low_YYY; /\&* y coordinate, low bits */ } XkbPtrAction; .fi libX11-1.8.12/man/xkb/XkbGetDetectableAutoRepeat.man0000644014310600000120000000771714763154126015530 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetDetectableAutoRepeat __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetDetectableAutoRepeat \- Determines whether or not the server supports DetectableAutoRepeat .SH SYNOPSIS .HP .B Bool XkbGetDetectableAutoRepeat .BI "(\^Display *" "display" "\^," .BI "Bool *" "supported_rtrn" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to X server .TP .I supported_rtrn backfilled True if DetectableAutoRepeat supported .SH DESCRIPTION .LP Auto-repeat is the generation of multiple key events by a keyboard when the user presses a key and holds it down. Keyboard hardware and device-dependent X server software often implement auto-repeat by generating multiple KeyPress events with no intervening KeyRelease event. The standard behavior of the X server is to generate a KeyRelease event for every KeyPress event. If the keyboard hardware and device-dependent software of the X server implement auto-repeat by generating multiple KeyPress events, the device-independent part of the X server by default synthetically generates a KeyRelease event after each KeyPress event. This provides predictable behavior for X clients, but does not allow those clients to detect the fact that a key is auto-repeating. Xkb allows clients to request .I detectable auto-repeat. If a client requests and the server supports DetectableAutoRepeat, Xkb generates KeyRelease events only when the key is physically released. If DetectableAutoRepeat is not supported or has not been requested, the server synthesizes a KeyRelease event for each repeating KeyPress event it generates. DetectableAutoRepeat, unlike other controls, is not contained in the XkbControlsRec structure, nor can it be enabled or disabled via the EnabledControls control. Instead, query and set DetectableAutoRepeat using .I XkbGetDetectableAutoRepeat and .I XkbSetDetectableAutoRepeat. DetectableAutoRepeat is a condition that applies to all keyboard devices for a client's connection to a given X server; it cannot be selectively set for some devices and not for others. For this reason, none of the Xkb library functions involving DetectableAutoRepeat involve a device specifier. .I XkbGetDetectableAutoRepeat queries the server for the current state of DetectableAutoRepeat and waits for a reply. If .I supported_rtrn is not NULL, it backfills .I supported_rtrn with True if the server supports DetectableAutoRepeat, and False otherwise. .I XkbGetDetectableAutoRepeat returns the current state of DetectableAutoRepeat for the requesting client: True if DetectableAutoRepeat is set, and False otherwise. .SH "RETURN VALUES" .TP 15 True The .I XkbGetDetectableAutoRepeat function returns True if the server supports DetectableAutoRepeat. .TP 15 False The .I XkbGetDetectableAutoRepeat function returns False if the server does not support DetectableAutoRepeat. libX11-1.8.12/man/xkb/Makefile.in0000644014310600000120000006120214763154146011734 # Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = man/xkb ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_define_dir.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h \ $(top_builddir)/include/X11/XlibConf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(libmandir)" DATA = $(libman_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BASE_CFLAGS = @BASE_CFLAGS@ BIGFONT_CFLAGS = @BIGFONT_CFLAGS@ BIGFONT_LIBS = @BIGFONT_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CHANGELOG_CMD = @CHANGELOG_CMD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CWARNFLAGS = @CWARNFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ FGREP = @FGREP@ FILECMD = @FILECMD@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ GREP = @GREP@ I18N_MODULE_LIBS = @I18N_MODULE_LIBS@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KEYSYMDEFS = @KEYSYMDEFS@ LAUNCHD = @LAUNCHD@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LINT = @LINT@ LINTLIB = @LINTLIB@ LINT_FLAGS = @LINT_FLAGS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@ MANIFEST_TOOL = @MANIFEST_TOOL@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ RAWCPP = @RAWCPP@ RAWCPPFLAGS = @RAWCPPFLAGS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_CFLAGS = @STRICT_CFLAGS@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ TRADITIONALCPPFLAGS = @TRADITIONALCPPFLAGS@ USE_THREAD_LIBS = @USE_THREAD_LIBS@ VERSION = @VERSION@ WCHAR32 = @WCHAR32@ X11_CFLAGS = @X11_CFLAGS@ X11_DATADIR = @X11_DATADIR@ X11_EXTRA_DEPS = @X11_EXTRA_DEPS@ X11_LIBDIR = @X11_LIBDIR@ X11_LIBS = @X11_LIBS@ X11_LOCALEDATADIR = @X11_LOCALEDATADIR@ X11_LOCALEDIR = @X11_LOCALEDIR@ X11_LOCALELIBDIR = @X11_LOCALELIBDIR@ XERRORDB = @XERRORDB@ XKBPROTO_REQUIRES = @XKBPROTO_REQUIRES@ XKEYSYMDB = @XKEYSYMDB@ XLOCALEDATADIR = @XLOCALEDATADIR@ XLOCALEDIR = @XLOCALEDIR@ XLOCALELIBDIR = @XLOCALELIBDIR@ XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ XTHREADLIB = @XTHREADLIB@ XTHREAD_CFLAGS = @XTHREAD_CFLAGS@ XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ locales = @locales@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ libmandir = $(LIB_MAN_DIR) libman_PRE = \ XkbActionCtrls.man \ XkbAddDeviceLedInfo.man \ XkbAddGeomColor.man \ XkbAddGeomDoodad.man \ XkbAddGeomKey.man \ XkbAddGeomKeyAlias.man \ XkbAddGeomOutline.man \ XkbAddGeomOverlay.man \ XkbAddGeomOverlayKey.man \ XkbAddGeomOverlayRow.man \ XkbAddGeomProperty.man \ XkbAddGeomRow.man \ XkbAddGeomSection.man \ XkbAddGeomShape.man \ XkbAddSymInterpret.man \ XkbAllocClientMap.man \ XkbAllocCompatMap.man \ XkbAllocControls.man \ XkbAllocDeviceInfo.man \ XkbAllocGeomColors.man \ XkbAllocGeomDoodads.man \ XkbAllocGeomKeyAliases.man \ XkbAllocGeomKeys.man \ XkbAllocGeomOutlines.man \ XkbAllocGeomOverlayKeys.man \ XkbAllocGeomOverlayRows.man \ XkbAllocGeomOverlays.man \ XkbAllocGeomPoints.man \ XkbAllocGeomProps.man \ XkbAllocGeomRows.man \ XkbAllocGeomSectionDoodads.man \ XkbAllocGeomSections.man \ XkbAllocGeomShapes.man \ XkbAllocGeometry.man \ XkbAllocIndicatorMaps.man \ XkbAllocKeyboard.man \ XkbAllocNames.man \ XkbAllocServerMap.man \ XkbApplyCompatMapToKey.man \ XkbBell.man \ XkbBellEvent.man \ XkbChangeControls.man \ XkbChangeDeviceInfo.man \ XkbChangeEnabledControls.man \ XkbChangeMap.man \ XkbChangeNames.man \ XkbChangeTypesOfKey.man \ XkbComputeRowBounds.man \ XkbComputeSectionBounds.man \ XkbComputeShapeBounds.man \ XkbComputeShapeTop.man \ XkbCopyKeyType.man \ XkbCopyKeyTypes.man \ XkbDeviceBell.man \ XkbDeviceBellEvent.man \ XkbFindOverlayForKey.man \ XkbForceBell.man \ XkbForceDeviceBell.man \ XkbFreeClientMap.man \ XkbFreeCompatMap.man \ XkbFreeComponentList.man \ XkbFreeControls.man \ XkbFreeDeviceInfo.man \ XkbFreeGeomColors.man \ XkbFreeGeomDoodads.man \ XkbFreeGeomKeyAliases.man \ XkbFreeGeomKeys.man \ XkbFreeGeomOutlines.man \ XkbFreeGeomOverlayKeys.man \ XkbFreeGeomOverlayRows.man \ XkbFreeGeomOverlays.man \ XkbFreeGeomPoints.man \ XkbFreeGeomProperties.man \ XkbFreeGeomRows.man \ XkbFreeGeomSections.man \ XkbFreeGeomShapes.man \ XkbFreeGeometry.man \ XkbFreeIndicatorMaps.man \ XkbFreeKeyboard.man \ XkbFreeNames.man \ XkbFreeServerMap.man \ XkbGetAutoRepeatRate.man \ XkbGetAutoResetControls.man \ XkbGetCompatMap.man \ XkbGetControls.man \ XkbGetControlsChanges.man \ XkbGetDetectableAutoRepeat.man \ XkbGetDeviceButtonActions.man \ XkbGetDeviceInfo.man \ XkbGetDeviceInfoChanges.man \ XkbGetDeviceLedInfo.man \ XkbGetGeometry.man \ XkbGetIndicatorMap.man \ XkbGetIndicatorState.man \ XkbGetKeyActions.man \ XkbGetKeyBehaviors.man \ XkbGetKeyExplicitComponents.man \ XkbGetKeyModifierMap.man \ XkbGetKeySyms.man \ XkbGetKeyTypes.man \ XkbGetKeyVirtualModMap.man \ XkbGetKeyboard.man \ XkbGetKeyboardByName.man \ XkbGetMap.man \ XkbGetNamedDeviceIndicator.man \ XkbGetNamedGeometry.man \ XkbGetNamedIndicator.man \ XkbGetNames.man \ XkbGetState.man \ XkbGetUpdatedMap.man \ XkbGetVirtualMods.man \ XkbGetXlibControls.man \ XkbIgnoreExtension.man \ XkbInitCanonicalKeyTypes.man \ XkbKeyAction.man \ XkbKeyActionEntry.man \ XkbKeyActionsPtr.man \ XkbKeyGroupInfo.man \ XkbKeyGroupWidth.man \ XkbKeyGroupsWidth.man \ XkbKeyHasActions.man \ XkbKeyKeyType.man \ XkbKeyKeyTypeIndex.man \ XkbKeyNumActions.man \ XkbKeyNumGroups.man \ XkbKeyNumSyms.man \ XkbKeySymEntry.man \ XkbKeySymsPtr.man \ XkbKeyTypesForCoreSymbols.man \ XkbKeycodeToKeysym.man \ XkbKeysymToModifiers.man \ XkbLatchGroup.man \ XkbLatchModifiers.man \ XkbLibraryVersion.man \ XkbListComponents.man \ XkbLockGroup.man \ XkbLockModifiers.man \ XkbLookupKeyBinding.man \ XkbLookupKeySym.man \ XkbModActionVMods.man \ XkbNoteControlsChanges.man \ XkbNoteDeviceChanges.man \ XkbNoteNameChanges.man \ XkbOpenDisplay.man \ XkbOutOfRangeGroupInfo.man \ XkbOutOfRangeGroupNumber.man \ XkbPtrActionX.man \ XkbPtrActionY.man \ XkbQueryExtension.man \ XkbRefreshKeyboardMapping.man \ XkbResizeDeviceButtonActions.man \ XkbResizeKeyActions.man \ XkbResizeKeySyms.man \ XkbResizeKeyType.man \ XkbActionSetCtrls.man \ XkbSAGroup.man \ XkbSAPtrDfltValue.man \ XkbSARedirectSetVMods.man \ XkbSARedirectSetVModsMask.man \ XkbSARedirectVMods.man \ XkbSARedirectVModsMask.man \ XkbSAScreen.man \ XkbSASetGroup.man \ XkbSASetPtrDfltValue.man \ XkbSASetScreen.man \ XkbSelectEventDetails.man \ XkbSelectEvents.man \ XkbSetAutoRepeatRate.man \ XkbSetAutoResetControls.man \ XkbSetCompatMap.man \ XkbSetControls.man \ XkbSetDebuggingFlags.man \ XkbSetDetectableAutoRepeat.man \ XkbSetDeviceButtonActions.man \ XkbSetDeviceInfo.man \ XkbSetIgnoreLockMods.man \ XkbSetIndicatorMap.man \ XkbSetMap.man \ XkbSetModActionVMods.man \ XkbSetNamedDeviceIndicator.man \ XkbSetNamedIndicator.man \ XkbSetNames.man \ XkbSetPtrActionX.man \ XkbSetPtrActionY.man \ XkbSetServerInternalMods.man \ XkbSetXlibControls.man \ XkbTranslateKeyCode.man \ XkbTranslateKeySym.man \ XkbUpdateMapFromCore.man \ XkbVirtualModsToReal.man libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) EXTRA_DIST = $(libman_PRE) CLEANFILES = $(libman_DATA) SUFFIXES = .$(LIB_MAN_SUFFIX) .man all: all-am .SUFFIXES: .SUFFIXES: .$(LIB_MAN_SUFFIX) .man $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/xkb/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign man/xkb/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-libmanDATA: $(libman_DATA) @$(NORMAL_INSTALL) @list='$(libman_DATA)'; test -n "$(libmandir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(libmandir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libmandir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libmandir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(libmandir)" || exit $$?; \ done uninstall-libmanDATA: @$(NORMAL_UNINSTALL) @list='$(libman_DATA)'; test -n "$(libmandir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(libmandir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(libmandir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-libmanDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libmanDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libmanDATA install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-libmanDATA .PRECIOUS: Makefile # String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure .man.$(LIB_MAN_SUFFIX): $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% libX11-1.8.12/man/xkb/XkbSetMap.man0000644014310600000120000002527114763154126012226 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetMap \- Send a complete new set of values for entire components to the server. .SH SYNOPSIS .HP .B Bool XkbSetMap .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "which" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I which mask selecting subcomponents to update .TP .I xkb description from which new values are taken .SH DESCRIPTION .LP There are two ways to make changes to map components: either change a local copy of the keyboard map and call .I XkbSetMap to send the modified map to the server, or, to reduce network traffic, use an XkbMapChangesRec structure and call .I XkbChangeMap. Use .I XkbSetMap to send a complete new set of values for entire components (for example, all symbols, all actions, and so on) to the server. The .I which parameter specifies the components to be sent to the server, and is a bitwise inclusive OR of the masks listed in Table 1. The .I xkb parameter is a pointer to an XkbDescRec structure and contains the information to be copied to the server. For each bit set in the .I which parameter, .I XkbSetMap takes the corresponding structure values from the .I xkb parameter and sends it to the server specified by .IR dpy . If any components specified by .I which are not present in the .I xkb parameter, .I XkbSetMap returns False. Otherwise, it sends the update request to the server and returns True. .I XkbSetMap can generate BadAlloc, BadLength, and BadValue protocol errors. Key types, symbol maps, and actions are all interrelated; changes in one require changes in the others. Xkb provides functions to make it easier to edit these components and handle the interdependencies. Table 1 lists these helper functions and provides a pointer to where they are defined. .TS c s s s s c s s s s l l l l l l l l l l lw(2i) l l lw(1i) lw(3i). Table 1 Xkb Mapping Component Masks and Convenience Functions _ Mask Value Map Fields Convenience Functions _ T{ XkbKeyTypesMask T} (1<<0) client T{ types .br size_types .br num_types T} T{ XkbGetKeyTypes .br XkbResizeKeyType .br XkbCopyKeyType .br XkbCopyKeyTypes T} T{ XkbKeySymsMask T} (1<<1) client T{ syms .br size_syms .br num_syms .br key_sym_map T} T{ XkbGetKeySyms .br XkbResizeKeySyms .br XkbChangeTypesOfKey T} T{ XkbModifierMapMask T} (1<<2) client modmap T{ XkbGetKeyModifierMap T} T{ XkbExplicitComponentsMask T} (1<<3) server T{ explicit T} T{ XkbGetKeyExplicitComponents T} T{ XkbKeyActionsMask T} (1<<4) server T{ key_acts .br acts .br num_acts .br size_acts T} T{ XkbGetKeyActions .br XkbResizeKeyActions T} T{ XkbKeyBehaviorsMask T} (1<<5) server T{ behaviors T} T{ XkbGetKeyBehaviors T} T{ XkbVirtualModsMask T} (1<<6) server T{ vmods T} T{ XkbGetVirtualMods T} T{ XkbVirtualModMapMask T} (1<<7) server T{ vmodmap T} T{ XkbGetVirtualModMap T} .TE The .I changed field identifies the map components that have changed in an XkbDescRec structure and may contain any of the bits in Table 1, which are also shown in Table 2. Every 1 bit in .I changed also identifies which other fields in the XkbMapChangesRec structure contain valid values, as indicated in Table 2. The .I min_key_code and .I max_key_code fields are for reference only; they are ignored on any requests sent to the server and are always updated by the server whenever it returns the data for an XkbMapChangesRec. .bp .TS c s s l l l l l l l l l l lw(2i) lw(3i). Table 2 XkbMapChangesRec Masks _ Valid Mask XkbMapChangesRec XkbDescRec Field Containing Fields Changed Data _ XkbKeyTypesMask first_type, map->type[first_type] .. num_types map->type[first_type + num_types - 1] .sp XkbKeySymsMask first_key_sym, map->key_sym_map[first_key_sym] .. num_key_syms map->key_sym_map[first_key_sym + num_key_syms - 1] .sp XkbModifierMapMask first_modmap_key, map->modmap[first_modmap_key] .. num_modmap_keys map->modmap[first_modmap_key + num_modmap_keys - 1] .sp XkbExplicitComponentsMask first_key_explicit, server->explicit[first_key_explicit] .. num_key_explicit server->explicit[first_key_explicit + num_key_explicit - 1] .sp XkbKeyActionsMask first_key_act, server->key_acts[first_key_act] .. num_key_acts server->key_acts[first_key_act + num_key_acts - 1] .sp XkbKeyBehaviorsMask first_key_behavior, server->behaviors[first_key_behavior] .. num_key_behaviors server->behaviors[first_key_behavior + num_key_behaviors - 1] .sp XkbVirtualModsMask vmods server->vmods[*] .sp XkbVirtualModMapMask first_vmodmap_key, server->vmodmap[first_vmodmap_key] .. num_vmodmap_keys server->vmodmap[first_vmodmap_key + num_vmodmap_keys - 1] .TE .SH "RETURN VALUES" .TP 15 True The .I XkbSetMap function returns True all components specified by .I which are present in the .I xkb parameter. .TP 15 False The .I XkbSetMap function returns False if any component specified by .I which is not present in the .I xkb parameter. .SH STRUCTURES Use the XkbMapChangesRec structure to identify and track partial modifications to the mapping components and to reduce the amount of traffic between the server and clients. .nf typedef struct _XkbMapChanges { unsigned short changed; /\&* identifies valid components in structure */ KeyCode min_key_code; /\&* lowest numbered keycode for device */ KeyCode max_key_code; /\&* highest numbered keycode for device */ unsigned char first_type; /\&* index of first key type modified */ unsigned char num_types; /\&* # types modified */ KeyCode first_key_sym; /\&* first key whose key_sym_map changed */ unsigned char num_key_syms; /\&* # key_sym_map entries changed */ KeyCode first_key_act; /\&* first key whose key_acts entry changed */ unsigned char num_key_acts; /\&* # key_acts entries changed */ KeyCode first_key_behavior; /\&* first key whose behaviors changed */ unsigned char num_key_behaviors; /\&* # behaviors entries changed */ KeyCode first_key_explicit; /\&* first key whose explicit entry changed */ unsigned char num_key_explicit; /\&* # explicit entries changed */ KeyCode first_modmap_key; /\&* first key whose modmap entry changed */ unsigned char num_modmap_keys; /\&* # modmap entries changed */ KeyCode first_vmodmap_key; /\&* first key whose vmodmap changed */ unsigned char num_vmodmap_keys; /\&* # vmodmap entries changed */ unsigned char pad1; /\&* reserved */ unsigned short vmods; /\&* mask indicating which vmods changed */ } XkbMapChangesRec,*XkbMapChangesPtr; .fi The complete description of an Xkb keyboard is given by an XkbDescRec. The component structures in the XkbDescRec represent the major Xkb components. .nf typedef struct { struct _XDisplay * display; /\&* connection to X server */ unsigned short flags; /\&* private to Xkb, do not modify */ unsigned short device_spec; /\&* device of interest */ KeyCode min_key_code; /\&* minimum keycode for device */ KeyCode max_key_code; /\&* maximum keycode for device */ XkbControlsPtr ctrls; /\&* controls */ XkbServerMapPtr server; /\&* server keymap */ XkbClientMapPtr map; /\&* client keymap */ XkbIndicatorPtr indicators; /\&* indicator map */ XkbNamesPtr names; /\&* names for all components */ XkbCompatMapPtr compat; /\&* compatibility map */ XkbGeometryPtr geom; /\&* physical geometry of keyboard */ } XkbDescRec, *XkbDescPtr; .fi The .I display field points to an X display structure. The .I flags field is private to the library: modifying .I flags may yield unpredictable results. The .I device_spec field specifies the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which specifies the core keyboard device. The .I min_key_code and .I max_key_code fields specify the least and greatest keycode that can be returned by the keyboard. Each structure component has a corresponding mask bit that is used in function calls to indicate that the structure should be manipulated in some manner, such as allocating it or freeing it. These masks and their relationships to the fields in the XkbDescRec are shown in Table 3. .bp .TS c s s l l l l l l. Table 3 Mask Bits for XkbDescRec _ Mask Bit XkbDescRec Field Value _ XkbControlsMask ctrls (1L<<0) XkbServerMapMask server (1L<<1) XkbIClientMapMask map (1L<<2) XkbIndicatorMapMask indicators (1L<<3) XkbNamesMask names (1L<<4) XkbCompatMapMask compat (1L<<5) XkbGeometryMask geom (1L<<6) XkbAllComponentsMask All Fields (0x7f) .TE .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadLength The length of a request is shorter or longer than that required to minimally contain the arguments .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbChangeMap (__libmansuffix__), .BR XkbChangeTypesOfKey (__libmansuffix__), .BR XkbCopyKeyType (__libmansuffix__), .BR XkbCopyKeyTypes (__libmansuffix__), .BR XkbGetKeyActions (__libmansuffix__), .BR XkbGetKeyBehaviors (__libmansuffix__), .BR XkbGetKeyExplicitComponents (__libmansuffix__), .BR XkbGetKeyModifierMap (__libmansuffix__), .BR XkbGetKeySyms (__libmansuffix__), .BR XkbGetKeyTypes (__libmansuffix__), .BR XkbResizeKeyActions (__libmansuffix__), .BR XkbResizeKeySyms (__libmansuffix__), .BR XkbResizeKeyType (__libmansuffix__), .BR XkbGetVirtualModMap (__libmansuffix__), .BR XkbGetVirtualMods (__libmansuffix__) libX11-1.8.12/man/xkb/XkbFreeKeyboard.man0000644014310600000120000000441014763154126013367 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeKeyboard __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeKeyboard \- Destroys either an entire XkbDescRec or just some of its members .SH SYNOPSIS .HP .B void XkbFreeKeyboard .BI "(\^XkbDescPtr " "xkb" "\^," .BI "unsigned int " "which" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description with components to free .TP .I which mask selecting components to free .TP .I free_all True => free all components and .I xkb .SH DESCRIPTION .LP .I XkbFreeKeyboard frees the components of .I xkb specified by .I which and sets the corresponding values to NULL. If .I free_all is True, .I XkbFreeKeyboard frees every non-NULL component of .I xkb and then frees the .I xkb structure itself. If kbd is NULL, no operation is performed. .SH "SEE ALSO" .BR XkbFreeClientMap (__libmansuffix__), .BR XkbFreeServerMap (__libmansuffix__), .BR XkbFreeCompatMap (__libmansuffix__), .BR XkbFreeIndicatorMaps (__libmansuffix__), .BR XkbFreeNames (__libmansuffix__), .BR XkbFreeGeometry (__libmansuffix__), .BR XkbFreeControls (__libmansuffix__) libX11-1.8.12/man/xkb/XkbSARedirectSetVModsMask.man0000644014310600000120000001034514763154126015257 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSARedirectSetVModsMask __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSARedirectSetVModsMask \- Sets the vmods_mask0 and vmods_mask1 fields of act from vm .SH SYNOPSIS .HP .B void XkbSARedirectSetVModsMask .BI "(\^XkbRedirectKeyAction " "act" "\^," .BI "unsigned int " "vm" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action in which to set vmods .TP .I vm new value for virtual modifier mask .SH DESCRIPTION .LP Actions associated with the XkbRedirectKeyAction structure generate KeyPress and KeyRelease events containing a keycode different from the key that was pressed or released. The .I type field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey. Key presses cause a KeyPress event for the key specified by the .I new_key field instead of the actual key. The state reported in this event reports the current effective modifiers changed as follows: any real modifiers selected by the .I mods_mask field are set to corresponding values from the .I mods field. Any real modifiers bound to the virtual modifiers specified by the .I vmods_mask0 and .I vmods_mask1 fields are either set or cleared, depending on the corresponding values in the .I vmods0 and .I vmods1 fields. If the real and virtual modifier definitions specify conflicting values for a single modifier, the real modifier definition has priority. Key releases cause a KeyRelease event for the key specified by the .I new_key field instead of the actual key. The state for this event consists of the effective keyboard modifiers at the time of the release, changed as described previously. The XkbSA_RedirectKey action normally redirects to another key on the same device as the key that caused the event, unless that device does not belong to the input extension KeyClass, in which case this action causes an event on the core keyboard device. (The input extension categorizes devices by breaking them into classes. Keyboards, and other input devices with keys, are classified as KeyClass devices by the input extension.) The .I vmods_mask0 and .I vmods_mask1 fields actually represent one .I vmods_mask value. Xkb provides macros to convert between the two formats. .I XkbSARedirectSetVModsMask sets the .I vmods_mask0 and .I vmods_mask1 fields of .I act from .I vm. .SH STRUCTURES .LP .nf typedef struct_XkbRedirectKeyAction { unsigned char type; /\&* XkbSA_RedirectKey */ unsigned char new_key; /\&* keycode to be put in event */ unsigned char mods_mask; /\&* mask of real mods to be reset */ unsigned char mods; /\&* mask of real mods to take values from */ unsigned char vmods_mask0; /\&* first half of mask of virtual mods to be reset */ unsigned char vmods_mask1; /\&* other half of mask of virtual mods to be reset */ unsigned char vmods0; /\&* first half of mask of virtual mods to take values from */ unsigned char vmods1; /\&* other half of mask of virtual mods to take values from */ } XkbRedirectKeyAction; .fi libX11-1.8.12/man/xkb/XkbOutOfRangeGroupNumber.man0000644014310600000120000002115214763154126015226 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbOutOfRangeGroupNumber __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbOutOfRangeGroupNumber \- Returns the out-of-range group number, represented as a group index, from the group_info field of an XkbSymMapRec structure .SH SYNOPSIS .HP .B unsigned char XkbOutOfRangeGroupNumber .BI "(\^unsigned char " "grp_inf" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I grp_inf Xkb description of interest .SH DESCRIPTION .LP .I XkbOutOfRangeGroupNumber returns the out-of-range group number, represented as a group index, from the .I group_info field of an XkbSymMapRec structure. The .I group_info field of an XkbSymMapRec is an encoded value containing the number of groups of symbols bound to the key as well as the specification of the treatment of out-of-range groups. It is legal for a key to have zero groups, in which case it also has zero symbols and all events from that key yield NoSymbol. To obtain the number of groups of symbols bound to the key, use .I XkbKeyNumGroups. To change the number of groups bound to a key, use .I XkbChangeTypesOfKey. To obtain a mask that determines the treatment of out-of-range groups, use .I XkbKeyGroupInfo and .I XkbOutOfRangeGroupInfo. The keyboard controls contain a .I groups_wrap field specifying the handling of illegal groups on a global basis. That is, when the user performs an action causing the effective group to go out of the legal range, the .I groups_wrap field specifies how to normalize the effective keyboard group to a group that is legal for the keyboard as a whole, but there is no guarantee that the normalized group will be within the range of legal groups for any individual key. The per-key .I group_info field specifies how a key treats a legal effective group if the key does not have a type specified for the group of concern. For example, the Enter key usually has just one group defined. If the user performs an action causing the global keyboard group to change to Group2, the .I group_info field for the Enter key describes how to handle this situation. Out-of-range groups for individual keys are mapped to a legal group using the same options as are used for the overall keyboard group. The particular type of mapping used is controlled by the bits set in the .I group_info flag, as shown in Table 1. .TS c s l l l l. Table 1 group_info Range Normalization _ Bits set in group_info Normalization method _ XkbRedirectIntoRange XkbRedirectIntoRange XkbClampIntoRange XkbClampIntoRange none of the above XkbWrapIntoRange .TE .SH STRUCTURES .LP The KeySymMapRec structure is defined as follows: .nf #define XkbNumKbdGroups 4 #define XkbMaxKbdGroup (XkbNumKbdGroups-1) typedef struct { /\&* map to keysyms for a single keycode */ unsigned char kt_index[XkbNumKbdGroups]; /\&* key type index for each group */ unsigned char group_info; /\&* # of groups and out of range group handling */ unsigned char width; /\&* max # of shift levels for key */ unsigned short offset; /\&* index to keysym table in syms array */ } XkbSymMapRec, *XkbSymMapPtr; .fi .nf The XkbControlsRec structure is defined as follows: #define XkbMaxLegalKeyCode 255 #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8) typedef struct { unsigned char mk_dflt_btn; /\&* default button for keyboard driven mouse */ unsigned char num_groups; /\&* number of keyboard groups */ unsigned char groups_wrap; /\&* how to wrap out-of-bounds groups */ XkbModsRec internal; /\&* defines server internal modifiers */ XkbModsRec ignore_lock; /\&* modifiers to ignore when checking for grab */ unsigned int enabled_ctrls; /\&* 1 bit => corresponding boolean control enabled */ unsigned short repeat_delay; /\&* ms delay until first repeat */ unsigned short repeat_interval; /\&* ms delay between repeats */ unsigned short slow_keys_delay; /\&* ms minimum time key must be down to be ok */ unsigned short debounce_delay; /\&* ms delay before key reactivated */ unsigned short mk_delay; /\&* ms delay to second mouse motion event */ unsigned short mk_interval; /\&* ms delay between repeat mouse events */ unsigned short mk_time_to_max; /\&* # intervals until constant mouse move */ unsigned short mk_max_speed; /\&* multiplier for maximum mouse speed */ short mk_curve; /\&* determines mouse move curve type */ unsigned short ax_options; /\&* 1 bit => Access X option enabled */ unsigned short ax_timeout; /\&* seconds until Access X disabled */ unsigned short axt_opts_mask; /\&* 1 bit => options to reset on Access X timeout */ unsigned short axt_opts_values; /\&* 1 bit => turn option on, 0=> off */ unsigned int axt_ctrls_mask; /\&* which bits in enabled_ctrls to modify */ unsigned int axt_ctrls_values; /\&* values for new bits in enabled_ctrls */ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\&* per key auto repeat */ } XkbControlsRec, *XkbControlsPtr; .fi .nf The XkbControlsRec structure is defined as follows: #define XkbMaxLegalKeyCode 255 #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8) typedef struct { unsigned char mk_dflt_btn; /\&* default button for keyboard driven mouse */ unsigned char num_groups; /\&* number of keyboard groups */ unsigned char groups_wrap; /\&* how to wrap out-of-bounds groups */ XkbModsRec internal; /\&* defines server internal modifiers */ XkbModsRec ignore_lock; /\&* modifiers to ignore when checking for grab */ unsigned int enabled_ctrls; /\&* 1 bit => corresponding boolean control enabled */ unsigned short repeat_delay; /\&* ms delay until first repeat */ unsigned short repeat_interval; /\&* ms delay between repeats */ unsigned short slow_keys_delay; /\&* ms minimum time key must be down to be ok */ unsigned short debounce_delay; /\&* ms delay before key reactivated */ unsigned short mk_delay; /\&* ms delay to second mouse motion event */ unsigned short mk_interval; /\&* ms delay between repeat mouse events */ unsigned short mk_time_to_max; /\&* # intervals until constant mouse move */ unsigned short mk_max_speed; /\&* multiplier for maximum mouse speed */ short mk_curve; /\&* determines mouse move curve type */ unsigned short ax_options; /\&* 1 bit => Access X option enabled */ unsigned short ax_timeout; /\&* seconds until Access X disabled */ unsigned short axt_opts_mask; /\&* 1 bit => options to reset on Access X timeout */ unsigned short axt_opts_values; /\&* 1 bit => turn option on, 0=> off */ unsigned int axt_ctrls_mask; /\&* which bits in enabled_ctrls to modify */ unsigned int axt_ctrls_values; /\&* values for new bits in enabled_ctrls */ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\&* per key auto repeat */ } XkbControlsRec, *XkbControlsPtr; .fi .SH "SEE ALSO" .BR XkbChangeTypesOfKey (__libmansuffix__), .BR XkbKeyGroupInfo (__libmansuffix__), .BR XkbOutOfRangeGroupInfo (__libmansuffix__) libX11-1.8.12/man/xkb/XkbUpdateMapFromCore.man0000644014310600000120000000703414763154126014347 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbUpdateMapFromCore __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbUpdateMapFromCore \- Update a local Xkb keyboard map to reflect the mapping expressed by a core format mapping .SH SYNOPSIS .HP .B Bool XkbUpdateMapFromCore .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "first_key" "\^," .BI "int " "num_keys" "\^," .BI "int " "map_width" "\^," .BI "KeySym *" "core_keysyms" "\^," .BI "XkbChangesPtr " "changes" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description to update .TP .I first_key keycode of first key description to update .TP .I num_keys number of key descriptions to update .TP .I map_width width of core protocol keymap .TP .I core_keysyms symbols in core protocol keymap .TP .I changes backfilled with changes made to Xkb .SH DESCRIPTION .LP Xkb provides several functions that make it easier to apply the compatibility map to configure a client-side Xkb keyboard mapping, given a core protocol representation of part or all of a keyboard mapping. Obtain a core protocol representation of a keyboard mapping from an actual server (by using .I XGetKeyboardMapping, for example), a data file, or some other source. .I XkbUpdateMapFromCore interprets input argument information representing a keyboard map in core format to update the Xkb keyboard description passed in .I xkb. Only a portion of the Xkb map is updated - the portion corresponding to keys with keycodes in the range .I first_key through .I first_key + num_keys - 1. If .I XkbUpdateMapFromCore is being called in response to a MappingNotify event, .I first_key and .I num_keys are reported in the MappingNotify event. .I core_keysyms contains the keysyms corresponding to the keycode range being updated, in core keyboard description order. .I map_width is the number of keysyms per key in .I core_keysyms. Thus, the first .I map_width entries in .I core_keysyms are for the key with keycode .I first_key, the next .I map_width entries are for key .I first_key + 1, and so on. In addition to modifying the Xkb keyboard mapping in .I xkb, XkbUpdateMapFromCore backfills the changes structure whose address is passed in .I changes to indicate the modifications that were made. You may then use .I changes in subsequent calls such as .I XkbSetMap, to propagate the local modifications to a server. .SH "SEE ALSO" .BR XkbSetMap (__libmansuffix__) libX11-1.8.12/man/xkb/XkbSAGroup.man0000644014310600000120000000404514763154126012351 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSAGroup __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSAGroup \- Returns the group_XXX field of act converted to a signed int .SH SYNOPSIS .HP .B int XkbSAGroup .BI "(\^XkbAction " "act" "\^);" .SH ARGUMENTS .TP .I act action from which to extract group .SH DESCRIPTION .LP .I XkbSAGroup returns the .I group_XXX field of .I act converted to a signed int. .SH STRUCTURE .LP Actions associated with the XkbGroupAction structure change the current group state when keys are pressed and released: .nf .ft CW typedef struct _XkbGroupAction { unsigned char type; /\&* XkbSA_{Set|Latch|Lock}Group */ unsigned char flags; /\&* with type, controls the effect on groups */ char group_XXX; /\&* represents a group index or delta */ } XkbGroupAction; .ft .fi .SH WARNING .LP This manpage seems to be incomplete libX11-1.8.12/man/xkb/XkbFreeIndicatorMaps.man0000644014310600000120000000350314763154126014366 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeIndicatorMaps __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeIndicatorMaps \- Frees memory used by the .I indicators member of an XkbDescRec structure .SH SYNOPSIS .HP .B void XkbFreeIndicatorMaps .BI "(\^XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description structure .SH DESCRIPTION .LP If the .I indicators member of the keyboard description record pointed to by .I xkb is not NULL, .I XkbFreeIndicatorMaps frees the memory associated with the .I indicators member of .I xkb. If xkb is NULL, no operation is performed. .SH "SEE ALSO" .BR XkbAllocIndicatorMaps (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAllocGeomKeys.man0000644014310600000120000000463514763154126013534 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomKeys \- Allocate space for an arbitrary number of keys to a row .SH SYNOPSIS .HP .B Status XkbAllocGeomKeys .BI "(\^XkbRowPtr " "row" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I row row to which keys should be allocated .TP .I num_needed number of new keys required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomKeys allocates .I num_needed keys and adds them to the .I row. No initialization of the keys is done. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbKeyGroupWidth.man0000644014310600000120000000470214763154126013576 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyGroupWidth __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyGroupWidth \- Computes the width of the type associated with the group .I grp for the key corresponding to .I keycode .SH SYNOPSIS .HP .B int XkbKeyGroupWidth .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^," .BI "int " "grp" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .TP .I grp group of interest .SH DESCRIPTION .LP The key width and number of groups associated with a key are used to form a small two-dimensional array of KeySyms for a key. This array may be different sizes for different keys. The array for a single key is stored as a linear list, in row-major order. The arrays for all of the keys are stored in the .I syms field of the client map. There is one row for each group associated with a key and one column for each level. The index corresponding to a given group and shift level is computed as: .nf idx = group_index * key_width + shift_level .fi The .I offset field of the .I key_sym_map entry for a key is used to access the beginning of the array. .I XkbKeyGroupWidth computes the width of the type associated with the group .I grp for the key corresponding to .I keycode. libX11-1.8.12/man/xkb/XkbFreeGeomDoodads.man0000644014310600000120000000510614763154126014017 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomDoodads __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomDoodads \- Free geometry doodads .SH SYNOPSIS .HP .B void XkbFreeGeomDoodads .BI "(\^XkbDoodadPtr " "doodads" "\^," .BI "int " "count" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I doodads doodads to be freed .TP .I count number of doodads to be freed .TP .I free_all True => all doodads are freed .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. If .I free_all is True, all doodads in the array are freed, regardless of the value of .I count. Otherwise, .I count doodads are freed. .SH "RETURN VALUES" .TP 15 Success The XkbFreeGeomDoodads function returns Success if there are no allocation errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbAllocGeomColors.man0000644014310600000120000000512714763154126014057 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomColors __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomColors \- Allocate geometry colors .SH SYNOPSIS .HP .B Status XkbAllocGeomColors .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry for which colors should be allocated .TP .I num_needed number of new colors required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomColors allocates space for .I num_needed colors and adds them to the specified geometry .I geom. A color name is a string whose interpretation is not specified by Xkb. All other geometry data structures refer to colors using their indices in this global list or pointers to colors in this list. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbChangeControls.man0000644014310600000120000001761214763154126013746 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbChangeControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbChangeControls \- Provides a flexible method for updating the controls in a server to match those in the changed keyboard description .SH SYNOPSIS .HP .B Bool XkbChangeControls .BI "(\^Display *" "dpy" "\^," .BI "XkbDescPtr " "xkb" "\^," .BI "XkbControlsChangesPtr " "changes" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I xkb keyboard description with changed xkb->ctrls .TP .I changes which parts of xkb->ctrls have changed .SH DESCRIPTION The XkbControlsChangesRec structure allows applications to track modifications to an XkbControlsRec structure and thereby reduce the amount of traffic sent to the server. The same XkbControlsChangesRec structure may be used in several successive modifications to the same XkbControlsRec structure, then subsequently used to cause all of the changes, and only the changes, to be propagated to the server. The .I changed_ctrls field is a mask specifying which logical sets of data in the controls structure have been modified. In this context, modified means .IR set , that is, if a value is set to the same value it previously contained, it has still been modified, and is noted as changed. Valid values for .I changed_ctrls are any combination of the masks listed in Table 1 that have "ok" in the .I changed_ctrls column. Setting a bit implies the corresponding data fields from the "Relevant XkbControlsRec Data Fields" column in Table 1 have been modified. The .I enabled_ctrls_changes field specifies which bits in the .I enabled_ctrls field have changed. If the number of keyboard groups has changed, the .I num_groups_changed field is set to True. Table 1 shows the actual values for the individual mask bits used to select controls for modification and to enable and disable the control. Note that the same mask bit is used to specify general modifications to the parameters used to configure the control (which), and to enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column) are for controls that have no configurable attributes; and for controls that are not boolean controls and therefore cannot be enabled or disabled. .TS c s s s s l l l l l l l l l l l l l l l l l l l l lw(1.5i) lw(1.5i) l lw(1.5i) l. Table 1 Xkb Controls _ Control Control Selection Relevant Mask (which XkbControlsRec Boolean Control parameter) DataFields enabled_ctrls bit Section _ T{ AccessXFeedback T} T{ XkbAccessX\%FeedbackMask T} T{ ax_options: XkbAX_*FBMask T} T{ XkbAccessX\%FeedbackMask T} 10.6.3 T{ AccessXKeys T} T{ XkbAccessX\%Keys\%Mask T} 10.6.1 T{ AccessX\%Timeout T} T{ XkbAccessX\%Timeout\%Mask T} T{ ax_timeout axt_opts_mask axt_opts_values axt_ctrls_mask axt_ctrls_values T} T{ XkbAccessX\%Timeout\%Mask T} 10.6.2 T{ AudibleBell T} T{ XkbAudible\%Bell\%Mask T} 9.2 T{ AutoReset T} 10.1.2 T{ BounceKeys T} T{ XkbBounce\%KeysMask T} debounce_delay T{ XkbBounce\%KeysMask T} 10.6.7 T{ Detectable- T} 10.3.3 T{ Autorepeat T} T{ EnabledControls T} T{ XkbControls\%EnabledMask T} enabled_ctrls T{ Non-Boolean \%Control T} 10.1.1 T{ GroupsWrap T} T{ XkbGroups\%Wrap\%Mask T} groups_wrap T{ Non-Boolean \%Control T} 10.7.1 T{ IgnoreGroupLock T} T{ XkbIgnore\%GroupLock\%Mask T} 10.7.3 T{ IgnoreLockMods T} T{ XkbIgnore\%LockMods\%Mask T} ignore_lock T{ Non-Boolean \%Control T} 5.1 T{ InternalMods T} T{ XkbInternal\%Mods\%Mask T} internal T{ Non-Boolean \%Control T} 5.1 T{ MouseKeys T} T{ XkbMouseKeysMask T} mk_dflt_btn T{ XkbMouseKeysMask T} 10.5.1 T{ MouseKeysAccel T} T{ XkbMouseKeys\%Accel\%Mask T} T{ mk_delay mk_interval mk_time_to_max mk_max_speed mk_curve T} T{ XkbMouseKeys\%Accel\%Mask T} 10.5.2 T{ Overlay1 T} T{ XkbOverlay1Mask T} 10.4 T{ Overlay2 T} T{ XkbOverlay2Mask T} 10.4 T{ PerKeyRepeat T} T{ XkbPerKey\%Repeat\%Mask T} per_key_repeat T{ Non-Boolean \%Control T} 10.3.1 T{ RepeatKeys T} T{ Xkb\%Repeat\%Keys\%Mask T} repeat_delay T{ Xkb\%Repeat\%Keys\%Mask T} 10.3 repeat_interval T{ SlowKeys T} T{ Xkb\%Slow\%Keys\%Mask T} slow_keys_delay T{ Xkb\%Slow\%Keys\%Mask T} 10.6.6 T{ StickyKeys T} T{ Xkb\%Sticky\%Keys\%Mask T} T{ ax_options: XkbAX_TwoKeysMask XkbAX_LatchToLockMask T} T{ Xkb\%Sticky\%Keys\%Mask T} 10.6.8 .TE Table 2 shows the actual values for the individual mask bits used to select controls for modification and to enable and disable the control. Note that the same mask bit is used to specify general modifications to the parameters used to configure the control (which), and to enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column) are for controls that have no configurable attributes; and for controls that are not boolean controls and therefore cannot be enabled or disabled. .TS c s s s l l l l l l l l l l l l. Table 2 Controls Mask Bits _ Mask Bit which or Value changed enabled _ctrls _ctrls _ XkbRepeatKeysMask ok ok (1L<<0) XkbSlowKeysMask ok ok (1L<<1) XkbBounceKeysMask ok ok (1L<<2) XkbStickyKeysMask ok ok (1L<<3) XkbMouseKeysMask ok ok (1L<<4) XkbMouseKeysAccelMask ok ok (1L<<5) XkbAccessXKeysMask ok ok (1L<<6) XkbAccessXTimeoutMask ok ok (1L<<7) XkbAccessXFeedbackMask ok ok (1L<<8) XkbAudibleBellMask ok (1L<<9) XkbOverlay1Mask ok (1L<<10) XkbOverlay2Mask ok (1L<<11) XkbIgnoreGroupLockMask ok (1L<<12) XkbGroupsWrapMask ok (1L<<27) XkbInternalModsMask ok (1L<<28) XkbIgnoreLockModsMask ok (1L<<29) XkbPerKeyRepeatMask ok (1L<<30) XkbControlsEnabledMask ok (1L<<31) XkbAccessXOptionsMask ok ok (XkbStickyKeysMask | XkbAccessXFeedbackMask) XkbAllBooleanCtrlsMask ok (0x00001FFF) XkbAllControlsMask ok (0xF8001FFF) .TE If you have an Xkb description with controls that have been modified and an XkbControlsChangesRec that describes the changes that have been made, the .I XkbChangeControls function provides a flexible method for updating the controls in a server to match those in the changed keyboard description. .I XkbChangeControls copies any controls fields specified by .I changes from the keyboard description controls structure, .IR xkb->ctrls , to the server specified by .IR dpy . .SH STRUCTURES The XkbControlsChangesRec structure is defined as follows: .nf typedef struct _XkbControlsChanges { unsigned int changed_ctrls; /\&* bits indicating changed control data */ unsigned int enabled_ctrls_changes; /\&* bits indicating enabled/disabled controls */ Bool num_groups_changed; /\&* True if number of keyboard groups changed */ } XkbControlsChangesRec,*XkbControlsChangesPtr; .fi .SH "SEE ALSO" XkbChangeControls(__libmansuffix__), XkbChangeDeviceInfo(__libmansuffix__), XkbChangeEnabledControls(__libmansuffix__), XkbChangeMap(__libmansuffix__), XkbChangeNames(__libmansuffix__), XkbChangeTypesOfKey(__libmansuffix__) libX11-1.8.12/man/xkb/XkbAllocControls.man0000644014310600000120000001055014763154126013605 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocControls \- Allocates an XkbControlsRec structure in the XkbDescRec .SH SYNOPSIS .HP .B Status XkbAllocControls .BI "(\^XkbDescPtr " "xkb" "\^," .BI "unsigned int " "which" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description in which to allocate ctrls rec .TP .I which mask of components of ctrls to allocate .SH DESCRIPTION .LP The need to allocate an XkbControlsRec structure seldom arises; Xkb creates one when an application calls .I XkbGetControls or a related function. For those situations where there is not an XkbControlsRec structure allocated in the XkbDescRec, allocate one by calling .I XkbAllocControls. .I XkbAllocControls allocates the .I ctrls field of the .I xkb parameter, initializes all fields to zero, and returns Success. If the .I ctrls field is not NULL, .I XkbAllocControls simply returns Success. If .I xkb is NULL, .I XkbAllocControls reports a BadMatch error. If the .I ctrls field could not be allocated, it reports a BadAlloc error. The .I which mask specifies the individual fields of the .I ctrls structure to be allocated and can contain any of the valid masks defined in Table 1. (SHOULD THIS COMMENT BE LEFT IN????) Because none of the currently existing controls have any structures associated with them, which is currently of little practical value in this call. Table 1 shows the actual values for the individual mask bits used to select controls for modification and to enable and disable the control. Note that the same mask bit is used to specify general modifications to the parameters used to configure the control (which), and to enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column) are for controls that have no configurable attributes; and for controls that are not boolean controls and therefore cannot be enabled or disabled. .TS c s s s l l l l l l l l l l l l. Table 1 Controls Mask Bits _ Mask Bit which or enabled Value changed_ctrls _ctrls _ XkbRepeatKeysMask ok ok (1L<<0) XkbSlowKeysMask ok ok (1L<<1) XkbBounceKeysMask ok ok (1L<<2) XkbStickyKeysMask ok ok (1L<<3) XkbMouseKeysMask ok ok (1L<<4) XkbMouseKeysAccelMask ok ok (1L<<5) XkbAccessXKeysMask ok ok (1L<<6) XkbAccessXTimeoutMask ok ok (1L<<7) XkbAccessXFeedbackMask ok ok (1L<<8) XkbAudibleBellMask ok (1L<<9) XkbOverlay1Mask ok (1L<<10) XkbOverlay2Mask ok (1L<<11) XkbIgnoreGroupLockMask ok (1L<<12) XkbGroupsWrapMask ok (1L<<27) XkbInternalModsMask ok (1L<<28) XkbIgnoreLockModsMask ok (1L<<29) XkbPerKeyRepeatMask ok (1L<<30) XkbControlsEnabledMask ok (1L<<31) XkbAccessXOptionsMask ok ok (XkbStickyKeysMask | XkbAccessXFeedbackMask) XkbAllBooleanCtrlsMask ok (0x00001FFF) XkbAllControlsMask ok (0xF8001FFF) .TE .nh .SH "RETURN VALUES" .TP 15 SUCCESS allocates the ctrls field of the xkb parameter, initializes all fields to zero .sp .in 20 the ctrls field is not NULL .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .SH "SEE ALSO" .BR XkbGetControls (__libmansuffix__) libX11-1.8.12/man/xkb/XkbRefreshKeyboardMapping.man0000644014310600000120000000524414763154126015426 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbRefreshKeyboardMapping __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbRefreshKeyboardMapping \- Update the keyboard description that is internal to the X library .SH SYNOPSIS .HP .B Status XkbRefreshKeyboardMapping .BI "(\^XkbMapNotifyEvent *" "event" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I event event initiating remapping .SH DESCRIPTION .LP .I XkbRefreshKeyboardMapping is the Xkb equivalent of the core .I XRefreshKeyboardMapping function. It requests that the X server send the current key mapping information to this client. A client usually invokes .I XkbRefreshKeyboardMapping after receiving an XkbMapNotify event. .I XkbRefreshKeyboardMapping returns Success if it succeeds and BadMatch if the event is not an Xkb event. The XkbMapNotify event can be generated when some client calls .I XkbSetMap, XkbChangeMap, XkbGetKeyboardByName, or any of the standard X library functions that change the keyboard mapping or modifier mapping. .SH "RETURN VALUES" .TP 15 Success The .I XkbRefreshKeyboardMapping function returns Success when the request that the X server send the current key mapping information to this client is successful. .SH DIAGNOSTICS .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .SH "SEE ALSO" .BR XkbChangeMap (__libmansuffix__), .BR XkbGetKeyboardByName (__libmansuffix__), .BR XkbSetMap (__libmansuffix__), .BR XRefreshKeyboardMapping (__libmansuffix__) libX11-1.8.12/man/xkb/XkbLookupKeyBinding.man0000644014310600000120000000520014763154126014240 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbLookupKeyBinding __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbLookupKeyBinding \- Find the string bound to a key by XRebindKeySym .SH SYNOPSIS .HP .B int XkbLookupKeyBinding .BI "(\^Display *" "dpy" "\^," .BI "KeySym " "sym" "\^," .BI "unsigned int " "state" "\^," .BI "char *" "buf" "\^," .BI "int " "nbytes" "\^," .BI "int *" "extra_rtrn" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to server .TP .I sym connection to server .TP .I state state for which string is to be looked up .TP .I buf buffer into which returned string is written .TP .I nbytes size of buffer in bytes .TP .I extra_rtrn backfilled with number bytes overflow .SH DESCRIPTION .LP .I XkbLookupKeyBinding is the equivalent of the core .I XLookupString function. .I XRebindKeysym binds an ASCII string to a specified keysym, so that the string and keysym are returned when the key is pressed and a specified list of modifiers are also being held down. .I XkbLookupKeyBinding returns in .I buf the string associated with the keysym .I sym and modifier state .I state. buf is NULL terminated unless there's an overflow. If the string returned is larger than .I nbytes, a count of bytes that does not fit into the buffer is returned in .I extra_rtrn. .I XkbTranslateKeySym returns the number of bytes that it placed into .I buf. .SH "SEE ALSO" .BR XkbTranslateKeySym (__libmansuffix__), .BR XLookupString (__libmansuffix__), .BR XRebindKeysym (__libmansuffix__) libX11-1.8.12/man/xkb/XkbOpenDisplay.man0000644014310600000120000001131014763154126013251 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbOpenDisplay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbOpenDisplay \- Checks for a compatible version of the Xkb extension in both the library and the server, and initializes the extension for use. .SH SYNOPSIS .HP .B Display *XkbOpenDisplay .BI "(\^_Xconst char *" "display_name" "\^," .BI "int *" "event_rtrn" "\^," .BI "int *" "error_rtrn" "\^," .BI "int *" "major_in_out" "\^," .BI "int *" "minor_in_out" "\^," .BI "int *" "reason_rtrn" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display_name hardware display name, which determines the display and communications domain to be used .TP .I event_rtrn backfilled with the extension base event code .TP .I error_rtrn backfilled with the extension base error code .TP .I major_in_out compile time lib major version in, server major version out .TP .I minor_in_out compile time lib min version in, server minor version out .TP .I reason_rtrn backfilled with a status code .SH DESCRIPTION .LP As a convenience, you can use the function .I XkbOpenDisplay to perform these three tasks at once: open a connection to an X server, check for a compatible version of the Xkb extension in both the library and the server, and initialize the extension for use. .I XkbOpenDisplay is a convenience function that opens an X display connection and initializes the X keyboard extension. In all cases, upon return .I reason_rtrn contains a status value indicating success or the type of failure. If .I major_in_out and .I minor_in_out are not NULL, .I XkbOpenDisplay first calls .I XkbLibraryVersion to determine whether the client library is compatible, passing it the values pointed to by .I major_in_out and .I minor_in_out. If the library is incompatible, .I XkbOpenDisplay backfills .I major_in_out and .I minor_in_out with the major and minor extension versions of the library being used and returns NULL. If the library is compatible, .I XkbOpenDisplay next calls .I XOpenDisplay with the .I display_name. If this fails, the function returns NULL. If successful, .I XkbOpenDisplay calls .I XkbQueryExtension and backfills the major and minor Xkb server extension version numbers in .I major_in_out and .I minor_in_out. If the server extension version is not compatible with the library extension version or if the server extension is not present, .I XkbOpenDisplay closes the display and returns NULL. When successful, the function returns the display connection. The possible values for reason_rtrn are: .IP \(bu 5 XkbOD_BadLibraryVersion indicates XkbLibraryVersion returned False. .IP \(bu 5 XkbOD_ConnectionRefused indicates the display could not be opened. .IP \(bu 5 XkbOD_BadServerVersion indicates the library and the server have incompatible extension versions. .IP \(bu 5 XkbOD_NonXkbServer indicates the extension is not present in the X server. .IP \(bu 5 XkbOD_Success indicates that the function succeeded. .SH "RETURN VALUES" .TP 15 NULL The .I XkbOpenDisplay function returns NULL if the library is incompatible. .sp .in 20 The .I XkbOpenDisplay function returns NULL if the call to .I XOpenDisplay with the .I display_name fails. .sp .in 20 The .I XkbOpenDisplay function returns NULL and closes the display if the server extension version is not compatible with the library extension version or if the server extension is not present. .SH DIAGNOSTICS .TP 15 .SM BadAccess The Xkb extension has not been properly initialized .SH "SEE ALSO" .BR XkbLibraryVersion (__libmansuffix__), .BR XkbQueryExtension (__libmansuffix__), .BR XOpenDisplay (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetIndicatorState.man0000644014310600000120000000621714763154126014411 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetIndicatorState __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetIndicatorState \- Obtains the current state of the keyboard indicators .SH SYNOPSIS .HP .B Status XkbGetIndicatorState .BI "(\^Display *" "display" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "state_return" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I state_return backfilled with a mask of the indicator state .SH DESCRIPTION .LP Xkb allows applications to obtain information about indicators using two different methods. The first method, which is similar to the core X implementation, uses a mask to specify the indicators. The second method, which is more suitable for applications concerned with interoperability, uses indicator names. The correspondence between the indicator name and the bit position in masks is as follows: one of the parameters returned from .I XkbGetNamedIndicators is an index that is the bit position to use in any function call that requires a mask of indicator bits, as well as the indicator's index into the XkbIndicatorRec array of indicator maps. .I XkbGetIndicatorState queries the .I display for the state of the indicators on the device specified by the .I device_spec. For each indicator that is "turned on" on the device, the associated bit is set in .I state_return. If a compatible version of the Xkb extension is not available in the server, .I XkbGetIndicatorState returns a BadMatch error. Otherwise, it sends the request to the X server, places the state of the indicators into .I state_return, and returns Success. Thus the value reported by .I XkbGetIndicatorState is identical to the value reported by the core protocol. .SH DIAGNOSTICS .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .SH "SEE ALSO" .BR XkbGetNamedIndicators (__libmansuffix__) libX11-1.8.12/man/xkb/XkbFreeGeomOutlines.man0000644014310600000120000000357014763154126014247 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomOutlines __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomOutlines \- Free geometry outlines .SH SYNOPSIS .HP .B void XkbFreeGeomOutlines .BI "(\^XkbShapePtr " "shape" "\^," .BI "int " "first" "\^," .BI "int " "count" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I shape shape in which outlines should be freed .TP .I first first outline to be freed .TP .I count number of outlines to be freed .TP .I free_all True => all outlines are freed .SH DESCRIPTION .LP If .I free_all is True, all outlines are freed regardless of the value of .I first or .I count. Otherwise, .I count outlines are freed beginning with the one specified by .I first. libX11-1.8.12/man/xkb/XkbFreeGeomShapes.man0000644014310600000120000000533514763154126013671 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomShapes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomShapes \- Free geometry shapes .SH SYNOPSIS .HP .B void XkbFreeGeomShapes .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "int " "first" "\^," .BI "int " "count" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry in which shapes should be freed .TP .I first first shape to be freed .TP .I count number of shapes to be freed .TP .I free_all True => all shapes are freed .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. If .I free_all is True, all shapes in the geometry are freed regardless of the values of .I first and .I count. Otherwise, .I count shapes are freed, beginning with the shape specified by .I first. .SH "RETURN VALUES" .TP 15 Success The XkbFreeGeomShapes function returns Success when there are no allocation or argument errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbKeyTypesForCoreSymbols.man0000644014310600000120000001717214763154126015444 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyTypesForCoreSymbols __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyTypesForCoreSymbols \- Determine the Xkb key types appropriate for the symbols bound to a key in a core keyboard mapping .SH SYNOPSIS .HP .B int XkbKeyTypesForCoreSymbols .BI "(\^XkbDescPtr " "xkb" "\^," .BI "int " "map_width" "\^," .BI "KeySym *" "core_syms" "\^," .BI "unsigned int " "protected" "\^," .BI "int *" "types_inout" "\^," .BI "KeySym *" "xkb_syms_rtrn" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description in which to place symbols .TP .I map_width width of core protocol keymap in xkb_syms_rtrn .TP .I core_syms core protocol format array of KeySyms .TP .I protected explicit key types .TP .I types_inout backfilled with the canonical types bound to groups one and two for the key .TP .I xkb_syms_rtrn backfilled with symbols bound to the key in the Xkb mapping .SH DESCRIPTION .LP .I XkbKeyTypesForCoreSymbols expands the symbols in .I core_syms and types in .I types_inout, then chooses canonical key types (canonical key types are defined The Canonical Key Types) for groups 1 and 2 using the rules specified by the Xkb protocol and places them in xkb_syms_rtrn, which will be non-NULL. .B The Canonical Key Types Xkb allows up to XkbMaxKeyTypes (255) key types to be defined, but requires at least XkbNumRequiredTypes (4) predefined types to be in a key map. These predefined key types are referred to as the canonical key types and describe the types of keys available on most keyboards. The definitions for the canonical key types are held in the first XkbNumRequiredTypes entries of the .I types field of the client map and are indexed using the following constants: .nf XkbOneLevelIndex XkbTwoLevelIndex XkbAlphabeticIndex XkbKeypadIndex .fi ONE_LEVEL The ONE_LEVEL key type describes groups that have only one symbol. The default ONE_LEVEL key type has no map entries and does not pay attention to any modifiers. A symbolic representation of this key type could look like the following: .nf type "ONE_LEVEL" { modifiers = None; map[None]= Level1; level_name[Level1]= "Any"; }; .fi The description of the ONE_LEVEL key type is stored in the types[XkbOneLevelIndex] entry of the client key map. TWO_LEVEL The TWO_LEVEL key type describes groups that consist of two symbols but are neither alphabetic nor numeric keypad keys. The default TWO_LEVEL type uses only the Shift modifier. It returns shift level two if Shift is set, and level one if it is not. A symbolic representation of this key type could look like the following: .nf type "TWO_LEVEL" { modifiers = Shift; map[Shift]= Level2; level_name[Level1]= "Base"; level_name[Level2]= "Shift"; }; .fi The description of the TWO_LEVEL key type is stored in the types[XkbTwoLevelIndex] entry of the client key map. ALPHABETIC The ALPHABETIC key type describes groups consisting of two symbols: the lowercase form of a symbol followed by the uppercase form of the same symbol. The default ALPHABETIC type implements locale-sensitive "Shift cancels CapsLock" behavior using both the Shift and Lock modifiers as follows: .IP \(bu 5 If Shift and Lock are both set, the default ALPHABETIC type yields level one. .IP \(bu 5 If Shift alone is set, it yields level two. .IP \(bu 5 If Lock alone is set, it yields level one, but preserves the Lock modifier so Xlib notices and applies the appropriate capitalization rules. The Xlib functions are locale-sensitive and apply different capitalization rules for different locales. .IP \(bu 5 If neither Shift nor Lock is set, it yields level one. A symbolic representation of this key type could look like the following: .nf type "ALPHABETIC" { modifiers = Shift+Lock; map[Shift]= Level2; preserve[Lock]= Lock; level_name[Level1]= "Base"; level_name[Level2]= "Caps"; }; .fi The description of the ALPHABETIC key type is stored in the types[XkbAlphabeticIndex] entry of the client key map. KEYPAD The KEYPAD key type describes groups that consist of two symbols, at least one of which is a numeric keypad symbol. The numeric keypad symbol is assumed to reside at level two. The default KEYPAD key type implements "Shift cancels NumLock" behavior using the Shift modifier and the real modifier bound to the virtual modifier named "NumLock," known as the NumLock modifier, as follows: .IP \(bu 5 If Shift and NumLock are both set, the default KEYPAD type yields level one. .IP \(bu 5 If Shift alone is set, it yields level two. .IP \(bu 5 If NumLock alone is set, it yields level two. .IP \(bu 5 If neither Shift nor NumLock is set, it yields level one. A symbolic representation of this key type could look like the following: .nf type "KEYPAD" { modifiers = Shift+NumLock; map[None]= Level1; map[Shift]= Level2; map[NumLock]= Level2; map[Shift+NumLock]= Level1; level_name[Level1]= "Base"; level_name[Level2]= "Caps"; }; .fi The description of the KEYPAD key type is stored in the types[XkbKeypadIndex] entry of the client key map. A core keymap is a two-dimensional array of keysyms. It has .I map_width columns and .I max_key_code rows. .I XkbKeyTypesForCoreSymbols takes a single row from a core keymap, determines the number of groups associated with it, the type of each group, and the symbols bound to each group. The return value is the number of groups, .I types_inout has the types for each group, and .I xkb_syms_rtrn has the symbols in Xkb order (that is, groups are contiguous, regardless of size). .I protected contains the explicitly protected key types. There is one explicit override control associated with each of the four possible groups for each Xkb key, ExplicitKeyType1 through ExplicitKeyType4; .I protected is an inclusive OR of these controls. .I map_width is the width of the core keymap and is not dependent on any Xkb definitions. .I types_inout is an array of four type indices. On input, .I types_inout contains the indices of any types already assigned to the key, in case they are explicitly protected from change. Upon return, .I types_inout contains any automatically selected (that is, canonical) types plus any protected types. Canonical types are assigned to all four groups if there are enough symbols to do so. The four entries in .I types_inout correspond to the four groups for the key in question. libX11-1.8.12/man/xkb/XkbFreeCompatMap.man0000644014310600000120000001256314763154126013520 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeCompatMap \- Free an entire compatibility map or selected portions of one .SH SYNOPSIS .HP .B void XkbFreeCompatMap .BI "(\^XkbDescPtr " "xkb" "\^," .BI "unsigned int " "which" "\^," .BI "Bool " "free_map" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description in which to free compatibility map .TP .I which mask of compatibility map components to free .TP .I free_map True => free XkbCompatMap structure itself .SH DESCRIPTION .LP .I which specifies the compatibility map components to be freed (see XkbGetCompatMap). .I which is an inclusive OR of the bits shown in Table 1. .TS c s s l l l. Table 1 Compatibility Map Component Masks _ Mask Value Affecting _ XkbSymInterpMask (1<<0) Symbol interpretations XkbGroupCompatMask (1<<1) Group maps XkbAllCompatMask (0x3) All compatibility map components .TE .I free_map indicates whether the XkbCompatMap structure itself should be freed. If .I free_map is True, .I which is ignored, all non-NULL compatibility map components are freed, and the .I compat field in the XkbDescRec referenced by .I xkb is set to NULL. .SH STRUCTURES .LP .nf typedef struct _XkbCompatMapRec { XkbSymInterpretPtr sym_interpret; /\&* symbol based key semantics*/ XkbModsRec groups[XkbNumKbdGroups]; /\&* group => modifier map */ unsigned short num_si; /\&* # structures used in sym_interpret */ unsigned short size_si; /\&* # structures allocated in sym_interpret */ } XkbCompatMapRec, *XkbCompatMapPtr; .fi The complete description of an Xkb keyboard is given by an XkbDescRec. The component structures in the XkbDescRec represent the major Xkb components outlined in Figure 1.1. .nf typedef struct { struct _XDisplay * display; /\&* connection to X server */ unsigned short flags; /\&* private to Xkb, do not modify */ unsigned short device_spec; /\&* device of interest */ KeyCode min_key_code; /\&* minimum keycode for device */ KeyCode max_key_code; /\&* maximum keycode for device */ XkbControlsPtr ctrls; /\&* controls */ XkbServerMapPtr server; /\&* server keymap */ XkbClientMapPtr map; /\&* client keymap */ XkbIndicatorPtr indicators; /\&* indicator map */ XkbNamesPtr names; /\&* names for all components */ XkbCompatMapPtr compat; /\&* compatibility map */ XkbGeometryPtr geom; /\&* physical geometry of keyboard */ } XkbDescRec, *XkbDescPtr; .fi The .I display field points to an X display structure. The .I flags field is private to the library: modifying .I flags may yield unpredictable results. The .I device_spec field specifies the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which specifies the core keyboard device. The .I min_key_code and .I max_key_code fields specify the least and greatest keycode that can be returned by the keyboard. The other fields specify structure components of the keyboard description and are described in detail in other sections of this document. Table 2 identifies the subsequent sections of this document that discuss the individual components of the XkbDescRec. .TS c s l l l l. Table 2 XkbDescRec Component References _ XkbDescRec Field For more info _ ctrls Chapter 10 server Chapter 16 map Chapter 15 indicators Chapter 8 names Chapter 18 compat Chapter 17 geom Chapter 13 .TE Each structure component has a corresponding mask bit that is used in function calls to indicate that the structure should be manipulated in some manner, such as allocating it or freeing it. These masks and their relationships to the fields in the XkbDescRec are shown in Table 3. .TS c s s l l l l l l. Table 3 Mask Bits for XkbDescRec _ Mask Bit XkbDescRec Field Value _ XkbControlsMask ctrls (1L<<0) XkbServerMapMask server (1L<<1) XkbIClientMapMask map (1L<<2) XkbIndicatorMapMask indicators (1L<<3) XkbNamesMask names (1L<<4) XkbCompatMapMask compat (1L<<5) XkbGeometryMask geom (1L<<6) XkbAllComponentsMask All Fields (0x7f) .TE .SH "SEE ALSO" .BR XkbGetCompatMap (__libmansuffix__) libX11-1.8.12/man/xkb/XkbSASetGroup.man0000644014310600000120000000415314763154126013025 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSASetGroup __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSASetGroup \- Sets the group_XXX field of act from the group index grp .SH SYNOPSIS .HP .B void XkbSASetGroup .BI "(\^XkbAction " "act" "\^," .BI "int " "grp" "\^);" .SH ARGUMENTS .TP .I act action from which to set group .TP .I grp group index to set in group_XXX .SH DESCRIPTION .LP .I XkbSASetGroup sets the .I group_XXX field of .I act from the group index .I grp. .SH STRUCTURE .LP Actions associated with the XkbGroupAction structure change the current group state when keys are pressed and released: .nf .ft CW typedef struct _XkbGroupAction { unsigned char type; /\&* XkbSA_{Set|Latch|Lock}Group */ unsigned char flags; /\&* with type, controls the effect on groups */ char group_XXX; /\&* represents a group index or delta */ } XkbGroupAction; .ft .fi .SH WARNING .LP This manpage seems to be incomplete libX11-1.8.12/man/xkb/XkbSetNamedDeviceIndicator.man0000644014310600000120000000007614763154126015506 .so man__libmansuffix__/XkbSetNamedIndicator.__libmansuffix__ libX11-1.8.12/man/xkb/XkbSetIgnoreLockMods.man0000644014310600000120000001614014763154126014363 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetIgnoreLockMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetIgnoreLockMods \- Sets the modifiers that, if locked, are not to be reported in matching events to passive grabs .SH SYNOPSIS .HP .B Bool XkbSetIgnoreLockMods .BI "(\^Display *" "display" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "affect_real" "\^," .BI "unsigned int " "real_values" "\^," .BI "unsigned int " "affect_virtual" "\^," .BI "unsigned int " "virtual_values" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I affect_real mask of real modifiers affected by this call .TP .I real_values values for affected real modifiers (1=>set, 0=>unset) .TP .I affect_virtual mask of virtual modifiers affected by this call .TP .I virtual_values values for affected virtual modifiers (1=>set, 0=>unset) .SH DESCRIPTION .LP The core protocol does not provide a way to exclude specific modifiers from grab calculations, with the result that locking modifiers sometimes have unanticipated side effects. The IgnoreLockMods control specifies modifiers that should be excluded from grab calculations. These modifiers are also not reported in any core events except KeyPress and KeyRelease events that do not activate a passive grab and that do not occur while a grab is active. Manipulate the IgnoreLockMods control via the .I ignore_lock field in the XkbControlsRec structure, then use .I XkbSetControls and .I XkbGetControls to query and change this control. Alternatively, use .I XkbSetIgnoreLockMods. .I XkbSetIgnoreLockMods sends a request to the server to change the server's IgnoreLockMods control. .I affect_real and .I real_values are masks of real modifier bits indicating which real modifiers are to be added and removed from the server's IgnoreLockMods control. Modifiers selected by both .I affect_real and .I real_values are added to the server's IgnoreLockMods control; those selected by .I affect_real but not by .I real_values are removed from the server's IgnoreLockMods control. Valid values for .I affect_real and .I real_values consist of any combination of the eight core modifier bits: ShiftMask, LockMask, ControlMask, Mod1Mask - Mod5Mask. .I affect_virtual and .I virtual_values are masks of virtual modifier bits indicating which virtual modifiers are to be added and removed from the server's IgnoreLockMods control. Modifiers selected by both .I affect_virtual and .I virtual_values are added to the server's IgnoreLockMods control; those selected by .I affect_virtual but not by .I virtual_values are removed from the server's IgnoreLockMods control. See below for a discussion of virtual modifier masks to use in .I affect_virtual and .I virtual_values. XkbSetIgnoreLockMods does not wait for a reply from the server. It returns True if the request was sent, and False otherwise. Virtual modifiers are named by converting their string name to an X Atom and storing the Atom in the .I names.vmods array in an XkbDescRec structure. The position of a name Atom in the .I names.vmods array defines the bit position used to represent the virtual modifier and also the index used when accessing virtual modifier information in arrays: the name in the i-th (0 relative) entry of .I names.vmods is the i-th virtual modifier, represented by the mask (1<map->modmap array. If successful, .I XkbGetKeyModifier returns Success. If the map component of the .I xkb parameter has not been allocated, .I XkbGetKeyModifierMap allocates and initializes it. If a compatible version of Xkb is not available in the server or the Xkb extension has not been properly initialized, .I XkbGetKeySyms returns BadAccess. If any allocation errors occur while obtaining the modifier map, .I XkbGetKeyModifierMap returns BadAlloc. .SH DIAGNOSTICS .TP 15 .B BadAccess The Xkb extension has not been properly initialized .TP 15 .B BadAlloc Unable to allocate storage libX11-1.8.12/man/xkb/XkbSetServerInternalMods.man0000644014310600000120000001657514763154126015306 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetServerInternalMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetServerInternalMods \- Sets the modifiers that are consumed by the server before events are delivered to the client .SH SYNOPSIS .HP .B Bool XkbSetServerInternalMods .BI "(\^Display *" "display" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "affect_real" "\^," .BI "unsigned int " "real_values" "\^," .BI "unsigned int " "affect_virtual" "\^," .BI "unsigned int " "virtual_values" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I affect_real mask of real modifiers affected by this call .TP .I real_values values for affected real modifiers (1=>set, 0=>unset) .TP .I affect_virtual mask of virtual modifiers affected by this call .TP .I virtual_values values for affected virtual modifiers (1=>set, 0=>unset) .SH DESCRIPTION .LP The core protocol does not provide any means to prevent a modifier from being reported in events sent to clients; Xkb, however makes this possible via the InternalMods control. It specifies modifiers that should be consumed by the server and not reported to clients. When a key is pressed and a modifier that has its bit set in the InternalMods control is reported to the server, the server uses the modifier when determining the actions to apply for the key. The server then clears the bit, so it is not actually reported to the client. In addition, modifiers specified in the InternalMods control are not used to determine grabs and are not used to calculate core protocol compatibility state. Manipulate the InternalMods control via the .I internal field in the XkbControlsRec structure, using .I XkbSetControls and .I XkbGetControls. Alternatively, use .I XkbSetServerInternalMods. .I XkbSetServerInternalMods sends a request to the server to change the internal modifiers consumed by the server. .I affect_real and .I real_values are masks of real modifier bits indicating which real modifiers are to be added and removed from the server's internal modifiers control. Modifiers selected by both .I affect_real and .I real_values are added to the server's internal modifiers control; those selected by .I affect_real but not by .I real_values are removed from the server's internal modifiers mask. Valid values for .I affect_real and .I real_values consist of any combination of the eight core modifier bits: ShiftMask, LockMask, ControlMask, Mod1Mask - Mod5Mask. .I affect_virtual and .I virtual_values are masks of virtual modifier bits indicating which virtual modifiers are to be added and removed from the server's internal modifiers control. Modifiers selected by both .I affect_virtual and .I virtual_values are added to the server's internal modifiers control; those selected by .I affect_virtual but not by .I virtual_values are removed from the server's internal modifiers control. See below for a discussion of virtual modifier masks to use in .I affect_virtual and .I virtual_values. XkbSetServerInternalMods does not wait for a reply from the server. It returns True if the request was sent and False otherwise. Virtual modifiers are named by converting their string name to an X Atom and storing the Atom in the .I names.vmods array in an XkbDescRec structure. The position of a name Atom in the .I names.vmods array defines the bit position used to represent the virtual modifier and also the index used when accessing virtual modifier information in arrays: the name in the i-th (0 relative) entry of .I names.vmods is the i-th virtual modifier, represented by the mask (1<names keycodes XkbGeometryNameMask (1<<1) Xkb->names geometry XkbSymbolsNameMask (1<<2) Xkb->names symbols XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols XkbTypesNameMask (1<<4) Xkb->names type XkbCompatNameMask (1<<5) Xkb->names compat XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*] XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*] XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*] XkbGroupNamesMask (1<<12) Xkb->names groups[*] XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg XkbComponentNamesMask (0x3f) Xkb->names keycodes, geometry, symbols, physical symbols, types, and compatibility map XkbAllNamesMask (0x3fff) Xkb->names all name components .TE Do not free symbolic names structures directly using .I free or .I XFree. Use .I XkbFreeNames instead. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbFreeNames (__libmansuffix__) libX11-1.8.12/man/xkb/XkbPtrActionX.man0000644014310600000120000000734014763154126013065 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbPtrActionX __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbPtrActionX \- Returns the high_XXX and low_XXX fields of act converted to a signed int .SH SYNOPSIS .HP .B int XkbPtrActionX .BI "(\^XkbPtrAction " "act" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action from which to extract X .SH DESCRIPTION .LP Actions associated with the XkbPtrAction structure move the pointer when keys are pressed and released. If the MouseKeys control is not enabled, KeyPress and KeyRelease events are treated as though the action is XkbSA_NoAction. If the MouseKeys control is enabled, a server action of type XkbSA_MovePtr instructs the server to generate core pointer MotionNotify events rather than the usual KeyPress event, and the corresponding KeyRelease event disables any mouse keys timers that were created as a result of handling the XkbSA_MovePtr action. The .I type field of the XkbPtrAction structure is always XkbSA_MovePtr. The .I flags field is a bitwise inclusive OR of the masks shown in Table 1. .TS c s l l l lw(4i). Table 1 Pointer Action Types _ Action Type Meaning _ XkbSA_NoAcceleration T{ If not set, and the MouseKeysAccel control is enabled, the KeyPress initiates a mouse keys timer for this key; every time the timer expires, the cursor moves. T} XkbSA_MoveAbsoluteX T{ If set, the X portion of the structure specifies the new pointer X coordinate. Otherwise, the X portion is added to the current pointer X coordinate to determine the new pointer X coordinate. T} XkbSA_MoveAbsoluteY T{ If set, the Y portion of the structure specifies the new pointer Y coordinate. Otherwise, the Y portion is added to the current pointer Y coordinate to determine the new pointer Y coordinate. T} .TE Each of the X and Y coordinates of the XkbPtrAction structure is composed of two signed 16-bit values, that is, the X coordinate is composed of .I high_XXX and .I low_XXX, and similarly for the Y coordinate. Xkb provides the following macros, to convert between a signed integer and two signed 16-bit values in XkbPtrAction structures. .SH STRUCTURES .LP .nf typedef struct _XkbPtrAction { unsigned char type; /\&* XkbSA_MovePtr */ unsigned char flags; /\&* determines type of pointer motion */ unsigned char high_XXX; /\&* x coordinate, high bits*/ unsigned char low_XXX; /\&* y coordinate, low bits */ unsigned char high_YYY; /\&* x coordinate, high bits */ unsigned char low_YYY; /\&* y coordinate, low bits */ } XkbPtrAction; .fi libX11-1.8.12/man/xkb/XkbGetKeyboard.man0000644014310600000120000000620714763154126013233 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetKeyboard __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetKeyboard \- Retrieves one or more components of a keyboard device description .SH SYNOPSIS .HP .B XkbDescPtr XkbGetKeyboard .BI "(\^Display *" "display" "\^," .BI "unsigned int " "which" "\^," .BI "unsigned int " "device_spec" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I bits_to_change determines events to be selected / deselected .TP .I values_for_bits 1=>select, 0->deselect; for events in bits_to_change .SH DESCRIPTION .LP .B XkbGetKeyboard allocates and returns a pointer to a keyboard description. It queries the server for those components specified in the .I which parameter for device .I device_spec and copies the results to the XkbDescRec it allocated. The remaining fields in the keyboard description are set to NULL. The valid masks for .I which are those listed in Table 1. .TS c s s l l l l l l. Table 1 Mask Bits for XkbDescRec _ Mask Bit XkbDescRec Field Value _ XkbControlsMask ctrls (1L<<0) XkbServerMapMask server (1L<<1) XkbIClientMapMask map (1L<<2) XkbIndicatorMapMask indicators (1L<<3) XkbNamesMask names (1L<<4) XkbCompatMapMask compat (1L<<5) XkbGeometryMask geom (1L<<6) XkbAllComponentsMask All Fields (1L<<7) .TE .B XkbGetKeyboard is used to read the current description for one or more components of a keyboard device. It calls .BR XkbGetKeyboardByName (__libmansuffix__) as follows: .I XkbGetKeyboardByName(dpy, device_spec, NULL, .I which, which, False). .LP If successful, .B XkbGetKeyboard returns a pointer to a newly allocated .B XkbDescRec structure, which is described in .BR XkbGetKeyboardByName (__libmansuffix__), and which should be freed with .BR XkbFreeKeyboard (__libmansuffix__). If .B XkbGetKeyboard does not succeed, it returns .BR NULL . .SH DIAGNOSTICS .TP 15 .SM BadAlloc Unable to allocate storage .SH "SEE ALSO" .BR XkbGetKeyboardByName (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAddGeomOverlayRow.man0000644014310600000120000000637014763154126014366 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddGeomOverlayRow __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddGeomOverlayRow \- Add a row to an existing overlay .SH SYNOPSIS .HP .B XkbOverlayRowPtr XkbAddGeomOverlayRow .BI "(\^XkbOverlayPtr " "overlay" "\^," .BI "XkbRowPtr " "row_under" "\^," .BI "int " "sz_keys" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I overlay overlay to be updated .TP .I row_under row to be overlaid in the section overlay overlays .TP .I sz_keys number of keys to reserve in the row .SH DESCRIPTION .LP Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the .I num_ * fields of the corresponding structure is incremented by 1. These functions do not change .I sz_* unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements. The top-level geometry description includes a list of .I geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. .I XkbAddGeomOverlayRow adds one row to the .I overlay. The new row contains space for .I sz_keys keys. If . I row_under specifies a row that doesn't exist on the underlying section, .I XkbAddGeomOverlayRow returns NULL and doesn't change the overlay. .I XkbAddGeomOverlayRow returns NULL if any of the parameters is empty or if it was not able to allocate space for the overlay. .SH STRUCTURES .LP .nf typedef struct _XkbOverlayRow { unsigned short row_under; /\&* index into the row under this overlay row */ unsigned short num_keys; /\&* number of keys in the keys array */ unsigned short sz_keys; /\&* size of the keys array */ XkbOverlayKeyPtr keys; /\&* array of keys in the overlay row */ } XkbOverlayRowRec,*XkbOverlayRowPtr; .fi libX11-1.8.12/man/xkb/XkbChangeDeviceInfo.man0000644014310600000120000000545714763154126014162 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbChangeDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbChangeDeviceInfo \- Update the server's description of a device with the changes noted in an XkbDeviceChangesRec .SH SYNOPSIS .HP .B Bool XkbChangeDeviceInfo .BI "(\^Display *" "dpy" "\^," .BI "XkbDeviceInfoPtr " "device_info" "\^," .BI "XkbDeviceChangesPtr " "changes" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I device_info local copy of device state and configuration .TP .I changes note specifying changes in device_info .SH DESCRIPTION .LP .I XkbChangeDeviceInfo updates the server's description of the device specified in .I device_info->device_spec with the changes specified in .I changes and contained in .I device_info. The update is made by an .I XkbSetDeviceInfo request. .SH STRUCTURES .LP Changes to an Xkb extension device may be tracked by listening to XkbDeviceExtensionNotify events and accumulating the changes in an XkbDeviceChangesRec structure. The changes noted in the structure may then be used in subsequent operations to update either a server configuration or a local copy of an Xkb extension device configuration. The changes structure is defined as follows: .nf typedef struct _XkbDeviceChanges { unsigned int changed; /\&* bits indicating what has changed */ unsigned short first_btn; /\&* number of first button which changed, if any */ unsigned short num_btns; /\&* number of buttons that have changed */ XkbDeviceLedChangesRec leds; } XkbDeviceChangesRec,*XkbDeviceChangesPtr; .fi .SH "SEE ALSO" .BR XkbSetDeviceInfo (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetCompatMap.man0000644014310600000120000000741214763154126013353 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetCompatMap \- Fetch any combination of the current compatibility map components from the server .SH SYNOPSIS .HP .B Status XkbGetCompatMap .BI "(\^Display *" "display" "\^," .BI "unsigned int " "which" "\^," .BI "XkbDescRec *" "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to server .TP .I which mask of compatibility map components to fetch .TP .I xkb keyboard description where results placed .SH DESCRIPTION .LP When another client modifies the compatibility map, you are notified if you have selected for XkbCompatMapNotify events. .I XkbGetCompatMap is particularly useful when you receive an event of this type, as it allows you to update your program's version of the compatibility map to match the modified version now in the server. If your program is dealing with multiple servers and needs to configure them all in a similar manner, the updated compatibility map may be used to reconfigure other servers. .I XkbGetCompatMap fetches the components of the compatibility map specified in .I which from the server specified by .I display and places them in the .I compat structure of the keyboard description .I xkb. Valid values for .I which are an inclusive OR of the values shown in Table 1. .TS c s s l l l l l l. Table 1 Compatibility Map Component Masks _ Mask Value Affecting _ XkbSymInterpMask (1<<0) Symbol interpretations XkbGroupCompatMask (1<<1) Group maps XkbAllCompatMask (0x3) All compatibility map components .TE If no compatibility map structure is allocated in .I xkb upon entry, .I XkbGetCompatMap allocates one. If one already exists, its contents are overwritten with the returned results. .I XkbGetCompatMap fetches compatibility map information for the device specified by the .I device_spec field of .I xkb. Unless you have specifically modified this field, it is the default keyboard device. .I XkbGetCompatMap returns Success if successful, BadAlloc if it is unable to obtain necessary storage for either the return values or work space, BadMatch if the .I dpy field of the .I xkb argument is non-NULL and does not match the .I display argument, and BadLength under certain conditions caused by server or Xkb implementation errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadLength The length of a request is shorter or longer than that required to minimally contain the arguments .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid libX11-1.8.12/man/xkb/XkbGetIndicatorMap.man0000644014310600000120000000606714763154126014051 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetIndicatorMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetIndicatorMap \- Gets the map for one or more indicators, using a mask to specify the indicators .SH SYNOPSIS .HP .B Status XkbGetIndicatorMap .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "which" "\^," .BI "XkbDescPtr " "desc" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to the X server .TP .I which mask of indicators for which maps should be returned .TP .I desc keyboard description to be updated .SH DESCRIPTION .LP Xkb allows applications to obtain information about indicators using two different methods. The first method, which is similar to the core X implementation, uses a mask to specify the indicators. The second method, which is more suitable for applications concerned with interoperability, uses indicator names. The correspondence between the indicator name and the bit position in masks is as follows: one of the parameters returned from .I XkbGetNamedIndicators is an index that is the bit position to use in any function call that requires a mask of indicator bits, as well as the indicator's index into the XkbIndicatorRec array of indicator maps. .I XkbGetIndicatorMap obtains the maps from the server for only those indicators specified by the .I which mask and copies the values into the keyboard description specified by .I desc. If the .I indicators field of the .I desc parameter is NULL, .I XkbGetIndicatorMap allocates and initializes it. To free the indicator maps, use .I XkbFreeIndicatorMaps. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .B BadImplementation Invalid reply from server .SH "SEE ALSO" .BR XkbFreeIndicatorMaps (__libmansuffix__), .BR XkbGetNamedIndicators (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetDeviceLedInfo.man0000644014310600000120000001025714763154126014133 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetDeviceLedInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetDeviceLedInfo \- Query the indicator names, maps, and state associated with an LED feedback of an input extension device .SH SYNOPSIS .HP .B Status XkbGetDeviceLedInfo .BI "(\^Display *" "dpy" "\^," .BI "XkbDeviceInfoPtr " "device_info" "\^," .BI "unsigned int " "led_class" "\^," .BI "unsigned int " "led_id" "\^," .BI "unsigned int " "which" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I device_info structure to update with results .TP .I led_class LED feedback class assigned by input extension .TP .I led_id LED feedback ID assigned by input extension .TP .I which mask indicating desired information .SH DESCRIPTION .LP .I XkbGetDeviceLedInfo queries the server for the desired LED information for the feedback specified by .I led_class and .I led_id for the X input extension device indicated by .I device_spec->device_info and waits for a reply. If successful, .I XkbGetDeviceLedInfo backfills the relevant fields of .I device_info as determined by .I which with the results and returns Success. Valid values for .I which are the inclusive OR of any of XkbXI_IndicatorNamesMask, XkbXI_IndicatorMapsMask, and XkbXI_IndicatorStateMask. The fields of .I device_info that are filled in when this request succeeds are .I name, type, supported, and .I unsupported, and portions of the .I leds structure corresponding to .I led_class and .I led_id as indicated by the bits set in .I which. The .I device_info->leds vector is allocated if necessary and .I sz_leds and .I num_leds filled in. The .I led_class, led_id and .I phys_indicators fields of the .I device_info->leds entry corresponding to .I led_class and .I led_id are always filled in. If .I which contains XkbXI_IndicatorNamesMask, the .I names_present and .I names fields of the .I device_info->leds structure corresponding to .I led_class and .I led_id are updated, if .I which contains XkbXI_IndicatorStateMask, the corresponding .I state field is updated, and if .I which contains XkbXI_IndicatorMapsMask, the .I maps_present and .I maps fields are updated. If a compatible version of Xkb is not available in the server or the Xkb extension has not been properly initialized, .I XkbGetDeviceLedInfo returns BadAccess. If allocation errors occur, a BadAlloc status is returned. If the device has no indicators, a BadMatch error is returned. If .I ledClass or .I ledID have illegal values, a BadValue error is returned. If they have legal values but do not specify a feedback that contains LEDs and is associated with the specified device, a BadMatch error is returned. .SH DIAGNOSTICS .TP 15 .B BadAccess The Xkb extension has not been properly initialized .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbAllocGeomShapes.man0000644014310600000120000000506014763154126014035 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomShapes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomShapes \- Allocate space for an arbitrary number of geometry shapes .SH SYNOPSIS .HP .B Status XkbAllocGeomShapes .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry for which shapes should be allocated .TP .I num_needed number of new shapes required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomShapes allocates space for .I num_needed shapes in the specified geometry .I geom. The shapes are not initialized. To free geometry shapes, use .I XkbFreeGeomShapes. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbFreeGeomShapes (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAllocGeomRows.man0000644014310600000120000000462414763154126013551 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomRows \- Allocate rows in a section .SH SYNOPSIS .HP .B Status XkbAllocGeomRows .BI "(\^XkbSectionPtr " "section" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I section section for which rows should be allocated .TP .I num_needed number of new rows required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomRows allocates .I num_needed rows and adds them to the .I section. No initialization of the rows is done. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbDeviceBellEvent.man0000644014310600000120000002535514763154126014040 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbDeviceBellEvent __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbDeviceBellEvent \- Creates a bell event for an X input extension device or for the keyboard, without ringing the corresponding bell .SH SYNOPSIS .HP .B Bool XkbDeviceBellEvent .BI "(\^Display *" "display" "\^," .BI "Window " "window" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "bell_class" "\^," .BI "unsigned int " "bell_id" "\^," .BI "int " "percent" "\^," .BI "Atom " "name" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I window event window, or None .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I bell_class input extension bell class for the event .TP .I bell_id input extension bell ID for the event .TP .I percent volume for the bell, which can range from -100 to 100 inclusive .TP .I name a bell name, or NULL .SH DESCRIPTION .LP The core X protocol allows only applications to explicitly sound the system bell with a given duration, pitch, and volume. Xkb extends this capability by allowing clients to attach symbolic names to bells, disable audible bells, and receive an event whenever the keyboard bell is rung. For the purposes of this document, the .I audible bell is defined to be the system bell, or the default keyboard bell, as opposed to any other audible sound generated elsewhere in the system. You can ask to receive XkbBellNotify events when any client rings any one of the following: .IP \(bu 5 The default bell .IP \(bu 5 Any bell on an input device that can be specified by a bell_class and bell_id pair .IP \(bu 5 Any bell specified only by an arbitrary name. (This is, from the server's point of view, merely a name, and not connected with any physical sound-generating device. Some client application must generate the sound, or visual feedback, if any, that is associated with the name.) You can also ask to receive XkbBellNotify events when the server rings the default bell or if any client has requested events only (without the bell sounding) for any of the bell types previously listed. You can disable audible bells on a global basis. For example, a client that replaces the keyboard bell with some other audible cue might want to turn off the AudibleBell control to prevent the server from also generating a sound and avoid cacophony. If you disable audible bells and request to receive XkbBellNotify events, you can generate feedback different from the default bell. You can, however, override the AudibleBell control by calling one of the functions that force the ringing of a bell in spite of the setting of the AudibleBell control - .I XkbForceDeviceBell or .I XkbForceBell. In this case the server does not generate a bell event. Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeating, Xkb can provide feedback for the controls by using special beep codes. The AccessXFeedback control is used to configure the specific types of operations that generate feedback. Bell Names You can associate a name to an act of ringing a bell by converting the name to an Atom and then using this name when you call the functions listed in this chapter. If an event is generated as a result, the name is then passed to all other clients interested in receiving XkbBellNotify events. Note that these are arbitrary names and that there is no binding to any sounds. Any sounds or other effects (such as visual bells on the screen) must be generated by a client application upon receipt of the bell event containing the name. There is no default name for the default keyboard bell. The server does generate some predefined bells for the AccessX controls. These named bells are shown in the Table 1 below; the name is included in any bell event sent to clients that have requested to receive XkbBellNotify events. .TS c s l l lW(4i) l. Table 1 Predefined Bells _ Action Named Bell _ Indicator turned on AX_IndicatorOn Indicator turned off AX_IndicatorOff More than one indicator changed state AX_IndicatorChange Control turned on AX_FeatureOn Control turned off AX_FeatureOff More than one control changed state AX_FeatureChange T{ SlowKeys and BounceKeys about to be turned on or off T} AX_SlowKeysWarning SlowKeys key pressed AX_SlowKeyPress SlowKeys key accepted AX_SlowKeyAccept SlowKeys key rejected AX_SlowKeyReject Accepted SlowKeys key released AX_SlowKeyRelease BounceKeys key rejected AX_BounceKeyReject StickyKeys key latched AX_StickyLatch StickyKeys key locked AX_StickyLock StickyKeys key unlocked AX_StickyUnlock .TE Audible Bells Using Xkb you can generate bell events that do not necessarily ring the system bell. This is useful if you need to use an audio server instead of the system beep. For example, when an audio client starts, it could disable the audible bell (the system bell) and then listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio client could then send a request to an audio server to play a sound. You can control the audible bells feature by passing the XkbAudibleBellMask to .I XkbChangeEnabledControls. If you set XkbAudibleBellMask on, the server rings the system bell when a bell event occurs. This is the default. If you set XkbAudibleBellMask off and a bell event occurs, the server does not ring the system bell unless you call .I XkbForceDeviceBell or .I XkbForceBell. Audible bells are also part of the per-client auto-reset controls. Bell Functions Use the functions described in this section to ring bells and to generate bell events. The input extension has two types of feedbacks that can generate bells - bell feedback and keyboard feedback. Some of the functions in this section have .I bell_class and .I bell_id parameters; set them as follows: Set .I bell_class to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of each type; set .I bell_id to the particular bell feedback of .I bell_class type. Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated when a bell function is called. .TS c s s s l l l l l l l l. Table 2 Bell Sounding and Bell Event Generating _ Function called AudibleBell Server sounds a bell Server sends an XkbBellNotifyEvent _ XkbDeviceBell On Yes Yes XkbDeviceBell Off No Yes XkbBell On Yes Yes XkbBell Off No Yes XkbDeviceBellEvent On or Off No Yes XkbBellEvent On or Off No Yes XkbDeviceForceBell On or Off Yes No XkbForceBell On or Off Yes No .TE If a compatible keyboard extension isn't present in the X server, .I XkbDeviceBellEvent immediately returns False. Otherwise, .I XkbDeviceBellEvent causes an XkbBellNotify event to be sent to all interested clients and returns True. Set .I percent to be the volume relative to the base volume for the keyboard as described for .I XBell. In addition, .I XkbDeviceBellEvent may generate Atom protocol errors as well as XkbBellNotify events. You can call .I XkbBell without first initializing the keyboard extension. .SH "RETURN VALUES" .TP 15 True The .I XkbDeviceBellEvent sends an XkbBellNotify event to to all interested clients and returns True. .TP 15 False If a compatible keyboard extension isn't present in the X server, .I XkbDeviceBellEvent immediately returns False .SH STRUCTURES .TP Xkb generates XkbBellNotify events for all bells except for those resulting from calls to .I XkbForceDeviceBell and .I XkbForceBell. To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask in both the .I bits_to_change and .I values_for_bits parameters to .I XkbSelectEvents. The XkbBellNotify event has no event details. It is either selected or it is not. However, you can call .I XkbSelectEventDetails using XkbBellNotify as the .I event_type and specifying XkbAllBellEventsMask in .I bits_to_change and .I values_for_bits. This has the same effect as a call to .I XkbSelectEvents. The structure for the XkbBellNotify event type contains: .nf typedef struct _XkbBellNotify { int type; /\&* Xkb extension base event code */ unsigned long serial; /\&* X server serial number for event */ Bool send_event; /\&* True => synthetically generated */ Display * display; /\&* server connection where event generated */ Time time; /\&* server time when event generated */ int xkb_type; /\&* XkbBellNotify */ unsigned int device; /\&* Xkb device ID, will not be XkbUseCoreKbd */ int percent; /\&* requested volume as % of max */ int pitch; /\&* requested pitch in Hz */ int duration; /\&* requested duration in microseconds */ unsigned int bell_class; /\&* X input extension feedback class */ unsigned int bell_id; /\&* X input extension feedback ID */ Atom name; /\&* "name" of requested bell */ Window window; /\&* window associated with event */ Bool event_only; /\&* False -> the server did not produce a beep */ } XkbBellNotifyEvent; .fi If your application needs to generate visual bell feedback on the screen when it receives a bell event, use the window ID in the XkbBellNotifyEvent, if present. .SH "SEE ALSO" .BR XBell (__libmansuffix__), .BR XkbBellNotify (__libmansuffix__), .BR XkbChangeEnabledControls (__libmansuffix__), .BR XkbDeviceBell (__libmansuffix__), .BR XkbForceBell (__libmansuffix__), .BR XkbForceDeviceBell (__libmansuffix__), .BR XkbSelectEvents (__libmansuffix__), .BR XkbSelectEventDetails (__libmansuffix__), .BR XkbUseCoreKbd (__libmansuffix__) libX11-1.8.12/man/xkb/XkbComputeShapeBounds.man0000644014310600000120000000675214763154126014610 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbComputeShapeBounds __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbComputeShapeBounds \- Updates the bounding box of a shape .SH SYNOPSIS .HP .B Bool XkbComputeShapeBounds .BI "(\^XkbShapePtr " "shape" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I shape shape to be examined .SH DESCRIPTION .LP Xkb provides a number of convenience functions to help use a keyboard geometry. These include functions to return the bounding box of a shape's top surface and to update the bounding box of a shape row or section. A shape is made up of a number of outlines. Each outline is a polygon made up of a number of points. The bounding box of a shape is a rectangle that contains all the outlines of that shape. A ShapeRec contains a BoundsRec that describes the bounds of the shape. If you add or delete an outline to or from a shape, the bounding box must be updated. .I XkbComputeShapeBounds updates the BoundsRec contained in the .I shape by examining all the outlines of the shape and setting the BoundsRec to the minimum x and minimum y, and maximum x and maximum y values found in those outlines. .I XkbComputeShapeBounds returns False if .I shape is NULL or if there are no outlines for the shape; otherwise, it returns True. If you add or delete a key to or from a row, or if you update the shape of one of the keys in that row, you may need to update the bounding box of that row. To update the bounding box of a row, use .I XkbComputeRowBounds. .SH STRUCTURES .LP .nf typedef struct _XkbShape { Atom name; /\&* shape's name */ unsigned short num_outlines; /\&* number of outlines for the shape */ unsigned short sz_outlines; /\&* size of the outlines array */ XkbOutlinePtr outlines; /\&* array of outlines for the shape */ XkbOutlinePtr approx; /\&* pointer into the array to the approximating outline */ XkbOutlinePtr primary; /\&* pointer into the array to the primary outline */ XkbBoundsRec bounds; /\&* bounding box for the shape; encompasses all outlines */ } XkbShapeRec, *XkbShapePtr; typedef struct _XkbBounds { short x1,y1; /\&* upper left corner of the bounds, in mm/10 */ short x2,y2; /\&* lower right corner of the bounds, in mm/10 */ } XkbBoundsRec, *XkbBoundsPtr; .fi .SH "SEE ALSO" .BR XkbComputeRowBounds (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetNames.man0000644014310600000120000001001314763154126012524 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetNames \- Obtain symbolic names from the server .SH SYNOPSIS .HP .B Status XkbGetNames .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "which" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to the X server .TP .I which mask of names or map components to be updated .TP .I xkb keyboard description to be updated .SH DESCRIPTION .LP .I XkbGetNames retrieves symbolic names for the components of the keyboard extension from the X server. The .I which parameter specifies the name components to be updated in the .I xkb parameter, and is the bitwise inclusive OR of the valid names mask bits defined in Table 1. .TS c s s s l l l l. Table 1 Symbolic Names Masks _ Mask Bit Value Keyboard Field Component _ XkbKeycodesNameMask (1<<0) Xkb->names keycodes XkbGeometryNameMask (1<<1) Xkb->names geometry XkbSymbolsNameMask (1<<2) Xkb->names symbols XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols XkbTypesNameMask (1<<4) Xkb->names type XkbCompatNameMask (1<<5) Xkb->names compat XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*] XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*] XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*] XkbGroupNamesMask (1<<12) Xkb->names groups[*] XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg XkbComponentNamesMask (0x3f) Xkb->names keycodes, geometry, symbols, physical symbols, types, and compatibility map XkbAllNamesMask (0x3fff) Xkb->names all name components .TE If the .I names field of the keyboard description .I xkb is NULL, .I XkbGetNames allocates and initializes the .I names component of the keyboard description before obtaining the values specified by .I which. If the .I names field of .I xkb is not NULL, .I XkbGetNames obtains the values specified by .I which and copies them into the keyboard description .I Xkb. If the .I map component of the .I xkb parameter is NULL, .I XkbGetNames does not retrieve type or shift level names, even if XkbKeyTypeNamesMask or XkbKTLevelNamesMask are set in .I which. .I XkbGetNames can return Success, or BadAlloc, BadLength, BadMatch, and BadImplementation errors. To free symbolic names, use .I XkbFreeNames. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadImplementation Invalid reply from server .TP 15 .B BadLength The length of a request is shorter or longer than that required to minimally contain the arguments .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .SH "SEE ALSO" .BR XkbFreeNames (__libmansuffix__) libX11-1.8.12/man/xkb/XkbFreeGeomColors.man0000644014310600000120000000510414763154126013701 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomColors __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomColors \- Free geometry colors .SH SYNOPSIS .HP .B void XkbFreeGeomColors .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "int " "first" "\^," .BI "int " "count" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry in which colors should be freed .TP .I first first color to be freed .TP .I count number of colors to be freed .TP .I free_all True => all colors are freed .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. If .I free_all is True, all colors are freed regardless of the value of .I first or .I count. Otherwise, .I count colors are freed beginning with the one specified by .I first. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbFreeComponentList.man0000644014310600000120000000327714763154126014437 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeComponentList __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeComponentList \- Free the structure returned by .I XkbListComponents .SH SYNOPSIS .HP .B void XkbFreeComponentList .BI "(\^XkbComponentListPtr " "list" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I list pointer to XkbComponentListRec to free .SH DESCRIPTION .LP When you are done using the structure returned by .I XkbListComponents, free it using .I XkbFreeComponentList. .SH "SEE ALSO" .BR XkbListComponents (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAddGeomDoodad.man0000644014310600000120000000733214763154126013446 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddGeomDoodad __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddGeomDoodad \- Add one doodad to a section of a keyboard geometry or to the top-level geometry .SH SYNOPSIS .HP .B XkbDoodadPtr XkbAddGeomDoodad .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "XkbSectionPtr " "section" "\^," .BI "Atom " "name" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry to which the doodad is added .TP .I section section, if any, to which the doodad is added .TP .I name name of the new doodad .SH DESCRIPTION .LP Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the .I num_ * fields of the corresponding structure is incremented by 1. These functions do not change .I sz_* unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements. The top-level geometry description includes a list of .I geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. A .I doodad describes some visible aspect of the keyboard that is not a key and is not a section. .I XkbAddGeomDoodad adds a doodad with name specified by .I name to the geometry .I geom if .I section is NULL or to the section of the geometry specified by .I section if .I section is not NULL. .I XkbAddGeomDoodad returns NULL if any of the parameters is empty or if it was not able to allocate space for the doodad. If there is already a doodad with the name .I name in the doodad array for the geometry (if .I section is NULL) or the section (if .I section is non-NULL), a pointer to that doodad is returned. To allocate space for an arbitrary number of doodads to a section, use the .I XkbAllocGeomSectionDoodads function. To allocate space for an arbitrary number of doodads to a keyboard geometry, use the .I XkbAllocGeomDoodads function. .SH STRUCTURES .LP .nf typedef union _XkbDoodad { XkbAnyDoodadRec any; XkbShapeDoodadRec shape; XkbTextDoodadRec text; XkbIndicatorDoodadRec indicator; XkbLogoDoodadRec logo; } XkbDoodadRec, *XkbDoodadPtr; .fi .SH "SEE ALSO" .BR XkbAllocGeomDoodads (__libmansuffix__), .BR XkbAllocGeomSectionDoodads (__libmansuffix__) libX11-1.8.12/man/xkb/XkbChangeEnabledControls.man0000644014310600000120000001571514763154126015223 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbChangeEnabledControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbChangeEnabledControls \- Manipulates the EnabledControls control .SH SYNOPSIS .HP .B Bool XkbChangeEnabledControls .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "mask" "\^," .BI "unsigned int " "values" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I device_spec keyboard device to modify .TP .I mask 1 bit -> controls to enable / disable .TP .I values 1 bit => enable, 0 bit => disable .SH DESCRIPTION .LP The EnabledControls control is a bit mask where each bit that is turned on means the corresponding control is enabled, and when turned off, disabled. It corresponds to the .I enabled_ctrls field of an XkbControlsRec structure (see STRUCTURES). The bits describing which controls are turned on or off are defined in Table 1. Table 1 shows the actual values for the individual mask bits used to select controls for modification and to enable and disable the control. Note that the same mask bit is used to specify general modifications to the parameters used to configure the control (which), and to enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column) are for controls that have no configurable attributes; and for controls that are not boolean controls and therefore cannot be enabled or disabled. .bp .TS c s s s l l l l l l l l l l l l. Table 1 Controls Mask Bits _ Mask Bit which or enabled Value changed_ctrls _ctrls _ XkbRepeatKeysMask ok ok (1L<<0) XkbSlowKeysMask ok ok (1L<<1) XkbBounceKeysMask ok ok (1L<<2) XkbStickyKeysMask ok ok (1L<<3) XkbMouseKeysMask ok ok (1L<<4) XkbMouseKeysAccelMask ok ok (1L<<5) XkbAccessXKeysMask ok ok (1L<<6) XkbAccessXTimeoutMask ok ok (1L<<7) XkbAccessXFeedbackMask ok ok (1L<<8) XkbAudibleBellMask ok (1L<<9) XkbOverlay1Mask ok (1L<<10) XkbOverlay2Mask ok (1L<<11) XkbIgnoreGroupLockMask ok (1L<<12) XkbGroupsWrapMask ok (1L<<27) XkbInternalModsMask ok (1L<<28) XkbIgnoreLockModsMask ok (1L<<29) XkbPerKeyRepeatMask ok (1L<<30) XkbControlsEnabledMask ok (1L<<31) XkbAccessXOptionsMask ok ok (XkbStickyKeysMask | XkbAccessXFeedbackMask) XkbAllBooleanCtrlsMask ok (0x00001FFF) XkbAllControlsMask ok (0xF8001FFF) .TE The .I mask parameter specifies the boolean controls to be enabled or disabled, and the .I values mask specifies the new state for those controls. Valid values for both of these masks are composed of a bitwise inclusive OR of bits taken from the set of mask bits in Table 1, using only those masks with "ok" in the .I enabled_ctrls column. If the X server does not support a compatible version of Xkb or the Xkb extension has not been properly initialized, .I XkbChangeEnabledControls returns False; otherwise, it sends the request to the X server and returns True. Note that the EnabledControls control only enables and disables controls; it does not configure them. Some controls, such as the AudibleBell control, have no configuration attributes and are therefore manipulated solely by enabling and disabling them. Others, however, have additional attributes to configure their behavior. For example, the RepeatControl control uses .I repeat_delay and .I repeat_interval fields to describe the timing behavior of keys that repeat. The RepeatControl behavior is turned on or off depending on the value of the XkbRepeatKeysMask bit, but you must use other means, as described in this chapter, to configure its behavior in detail. .SH "RETURN VALUES" .TP 15 True The X server supports a compatible version of Xkb. .TP 15 False The X server does not support a compatible version of Xkb or the Xkb extension has not been properly initialized. .SH STRUCTURES .LP .nf The XkbControlsRec structure is defined as follows: #define XkbMaxLegalKeyCode 255 #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8) typedef struct { unsigned char mk_dflt_btn; /\&* default button for keyboard driven mouse */ unsigned char num_groups; /\&* number of keyboard groups */ unsigned char groups_wrap; /\&* how to wrap out-of-bounds groups */ XkbModsRec internal; /\&* defines server internal modifiers */ XkbModsRec ignore_lock; /\&* modifiers to ignore when checking for grab */ unsigned int enabled_ctrls; /\&* 1 bit => corresponding boolean control enabled */ unsigned short repeat_delay; /\&* ms delay until first repeat */ unsigned short repeat_interval; /\&* ms delay between repeats */ unsigned short slow_keys_delay; /\&* ms minimum time key must be down to be ok */ unsigned short debounce_delay; /\&* ms delay before key reactivated */ unsigned short mk_delay; /\&* ms delay to second mouse motion event */ unsigned short mk_interval; /\&* ms delay between repeat mouse events */ unsigned short mk_time_to_max; /\&* # intervals until constant mouse move */ unsigned short mk_max_speed; /\&* multiplier for maximum mouse speed */ short mk_curve; /\&* determines mouse move curve type */ unsigned short ax_options; /\&* 1 bit => Access X option enabled */ unsigned short ax_timeout; /\&* seconds until Access X disabled */ unsigned short axt_opts_mask; /\&* 1 bit => options to reset on Access X timeout */ unsigned short axt_opts_values; /\&* 1 bit => turn option on, 0=> off */ unsigned int axt_ctrls_mask; /\&* which bits in enabled_ctrls to modify */ unsigned int axt_ctrls_values; /\&* values for new bits in enabled_ctrls */ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\&* per key auto repeat */ } XkbControlsRec, *XkbControlsPtr; .fi libX11-1.8.12/man/xkb/XkbForceBell.man0000644014310600000120000002422414763154126012667 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbForceBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbForceBell \- Overrides user preference settings for audible bells to ring the bell on the default keyboard .SH SYNOPSIS .HP .B Bool XkbForceBell .BI "(\^Display *" "display" "\^," .BI "int " "percent" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I percent volume for the bell, which can range from -100 to 100 inclusive .SH DESCRIPTION .LP The core X protocol allows only applications to explicitly sound the system bell with a given duration, pitch, and volume. Xkb extends this capability by allowing clients to attach symbolic names to bells, disable audible bells, and receive an event whenever the keyboard bell is rung. For the purposes of this document, the .I audible bell is defined to be the system bell, or the default keyboard bell, as opposed to any other audible sound generated elsewhere in the system. You can ask to receive XkbBellNotify events when any client rings any one of the following: .IP \(bu 5 The default bell .IP \(bu 5 Any bell on an input device that can be specified by a bell_class and bell_id pair .IP \(bu 5 Any bell specified only by an arbitrary name. (This is, from the server's point of view, merely a name, and not connected with any physical sound-generating device. Some client application must generate the sound, or visual feedback, if any, that is associated with the name.) .LP You can also ask to receive XkbBellNotify events when the server rings the default bell or if any client has requested events only (without the bell sounding) for any of the bell types previously listed. You can disable audible bells on a global basis. For example, a client that replaces the keyboard bell with some other audible cue might want to turn off the AudibleBell control to prevent the server from also generating a sound and avoid cacophony. If you disable audible bells and request to receive XkbBellNotify events, you can generate feedback different from the default bell. You can, however, override the AudibleBell control by calling one of the functions that force the ringing of a bell in spite of the setting of the AudibleBell control - .I XkbForceDeviceBell or .I XkbForceBell. In this case the server does not generate a bell event. Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeating, Xkb can provide feedback for the controls by using special beep codes. The AccessXFeedback control is used to configure the specific types of operations that generate feedback. .B Bell Names You can associate a name to an act of ringing a bell by converting the name to an Atom and then using this name when you call the functions listed in this chapter. If an event is generated as a result, the name is then passed to all other clients interested in receiving XkbBellNotify events. Note that these are arbitrary names and that there is no binding to any sounds. Any sounds or other effects (such as visual bells on the screen) must be generated by a client application upon receipt of the bell event containing the name. There is no default name for the default keyboard bell. The server does generate some predefined bells for the AccessX controls. These named bells are shown in the Table 1; the name is included in any bell event sent to clients that have requested to receive XkbBellNotify events. .TS c s l l lW(4i) l. Table 1 Predefined Bells _ Action Named Bell _ Indicator turned on AX_IndicatorOn Indicator turned off AX_IndicatorOff More than one indicator changed state AX_IndicatorChange Control turned on AX_FeatureOn Control turned off AX_FeatureOff More than one control changed state AX_FeatureChange T{ SlowKeys and BounceKeys about to be turned on or off T} AX_SlowKeysWarning SlowKeys key pressed AX_SlowKeyPress SlowKeys key accepted AX_SlowKeyAccept SlowKeys key rejected AX_SlowKeyReject Accepted SlowKeys key released AX_SlowKeyRelease BounceKeys key rejected AX_BounceKeyReject StickyKeys key latched AX_StickyLatch StickyKeys key locked AX_StickyLock StickyKeys key unlocked AX_StickyUnlock .TE .B Audible Bells Using Xkb you can generate bell events that do not necessarily ring the system bell. This is useful if you need to use an audio server instead of the system beep. For example, when an audio client starts, it could disable the audible bell (the system bell) and then listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio client could then send a request to an audio server to play a sound. You can control the audible bells feature by passing the XkbAudibleBellMask to .I XkbChangeEnabledControls. If you set XkbAudibleBellMask on, the server rings the system bell when a bell event occurs. This is the default. If you set XkbAudibleBellMask off and a bell event occurs, the server does not ring the system bell unless you call .I XkbForceDeviceBell or .I XkbForceBell. Audible bells are also part of the per-client auto-reset controls. Bell Functions Use the functions described in this section to ring bells and to generate bell events. The input extension has two types of feedbacks that can generate bells - bell feedback and keyboard feedback. Some of the functions in this section have .I bell_class and .I bell_id parameters; set them as follows: Set .I bell_class to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of each type; set .I bell_id to the particular bell feedback of .I bell_class type. Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated when a bell function is called. .TS c s s s l l l l l l l l. Table 2 Bell Sounding and Bell Event Generating _ Function called AudibleBell Server sounds a bell Server sends an XkbBellNotifyEvent _ XkbDeviceBell On Yes Yes XkbDeviceBell Off No Yes XkbBell On Yes Yes XkbBell Off No Yes XkbDeviceBellEvent On or Off No Yes XkbBellEvent On or Off No Yes XkbDeviceForceBell On or Off Yes No XkbForceBell On or Off Yes No .TE If a compatible keyboard extension isn't present in the X server, .I XkbForceBell calls .I XBell with the specified .I display and .I percent and returns False. Otherwise, .I XkbForceBell calls .I XkbForceDeviceBell with the specified .I display and .I percent, device_spec =XkbUseCoreKbd, .I bell_class = XkbDfltXIClass, .I bell_id = XkbDfltXIId, .I window = None, and .I name = NULL, and returns what .I XkbForceDeviceBell returns. .I XkbForceBell does not cause an XkbBellNotify event. You can call .I XkbBell without first initializing the keyboard extension. .SH "RETURNS VALUES" .TP 15 False The .I XkbForceBell function returns False when a compatible keyboard extension isn't present in the X server. .SH STRUCTURES .LP Xkb generates XkbBellNotify events for all bells except for those resulting from calls to .I XkbForceDeviceBell and .I XkbForceBell. To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask in both the .I bits_to_change and .I values_for_bits parameters to .I XkbSelectEvents. The XkbBellNotify event has no event details. It is either selected or it is not. However, you can call .I XkbSelectEventDetails using XkbBellNotify as the .I event_type and specifying XkbAllBellEventsMask in .I bits_to_change and .I values_for_bits. This has the same effect as a call to .I XkbSelectEvents. The structure for the XkbBellNotify event type contains: .nf typedef struct _XkbBellNotify { int type; /\&* Xkb extension base event code */ unsigned long serial; /\&* X server serial number for event */ Bool send_event; /\&* True => synthetically generated */ Display * display; /\&* server connection where event generated */ Time time; /\&* server time when event generated */ int xkb_type; /\&* XkbBellNotify */ unsigned int device; /\&* Xkb device ID, will not be XkbUseCoreKbd */ int percent; /\&* requested volume as % of max */ int pitch; /\&* requested pitch in Hz */ int duration; /\&* requested duration in microseconds */ unsigned int bell_class; /\&* X input extension feedback class */ unsigned int bell_id; /\&* X input extension feedback ID */ Atom name; /\&* "name" of requested bell */ Window window; /\&* window associated with event */ Bool event_only; /\&* False -> the server did not produce a beep */ } XkbBellNotifyEvent; .fi If your application needs to generate visual bell feedback on the screen when it receives a bell event, use the window ID in the XkbBellNotifyEvent, if present. .SH "SEE ALSO" .BR XBell (__libmansuffix__), .BR XkbBell (__libmansuffix__), .BR XkbChangeEnabledControls (__libmansuffix__), .BR XkbForceDeviceBell (__libmansuffix__), .BR XkbSelectEventDetails (__libmansuffix__), .BR XkbSelectEvents (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAllocGeomSections.man0000644014310600000120000000505114763154126014401 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomSections __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomSections \- Allocate geometry sections .SH SYNOPSIS .HP .B Status XkbAllocGeomSections .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry for which sections should be allocated .TP .I num_needed number of new sections required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomSections allocates .I num_needed sections and adds them to the geometry .I geom. No initialization of the sections is done. To free geometry sections, use .I XkbFreeGeomSections. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbFreeGeomSections (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetControlsChanges.man0000644014310600000120000001703714763154126014572 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetControlsChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetControlsChanges \- Updates a local copy of a keyboard description with the changes previously noted by one or more calls to XkbNoteControlsChanges .SH SYNOPSIS .HP XkbGetControlsChanges .BI "(\^Display *" "dpy" "\^," .BI "XkbDescPtr " "xkb" "\^," .BI "XkbNameChangesPtr " "changes" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I xkb xkb->ctrls will be updated .TP .I changes indicates which parts of xkb->ctrls to update .SH DESCRIPTION .LP Whenever a field in the controls structure changes in the server's keyboard description, the server sends an XkbControlsNotify event to all interested clients.To receive XkbControlsNotify events under all possible conditions, use .I XkbSelectEvents and pass XkbControlsNotifyMask in both .I bits_to_change and .I values_for_bits. To receive XkbControlsNotify events only under certain conditions, use .I XkbSelectEventDetails using XkbControlsNotify as the .I event_type and specifying the desired state changes in .I bits_to_change and .I values_for_bits using mask bits from Table 1. Table 1 shows the actual values for the individual mask bits used to select controls for modification and to enable and disable the control. Note that the same mask bit is used to specify general modifications to the parameters used to configure the control (which), and to enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column) are for controls that have no configurable attributes; and for controls that are not boolean controls and therefore cannot be enabled or disabled. .TS c s s s l l l l l l l l l l l l. Table 1 Controls Mask Bits _ Mask Bit which or enabled Value changed_ctrls _ctrls _ XkbRepeatKeysMask ok ok (1L<<0) XkbSlowKeysMask ok ok (1L<<1) XkbBounceKeysMask ok ok (1L<<2) XkbStickyKeysMask ok ok (1L<<3) XkbMouseKeysMask ok ok (1L<<4) XkbMouseKeysAccelMask ok ok (1L<<5) XkbAccessXKeysMask ok ok (1L<<6) XkbAccessXTimeoutMask ok ok (1L<<7) XkbAccessXFeedbackMask ok ok (1L<<8) XkbAudibleBellMask ok (1L<<9) XkbOverlay1Mask ok (1L<<10) XkbOverlay2Mask ok (1L<<11) XkbIgnoreGroupLockMask ok (1L<<12) XkbGroupsWrapMask ok (1L<<27) XkbInternalModsMask ok (1L<<28) XkbIgnoreLockModsMask ok (1L<<29) XkbPerKeyRepeatMask ok (1L<<30) XkbControlsEnabledMask ok (1L<<31) XkbAccessXOptionsMask ok ok (XkbStickyKeysMask | XkbAccessXFeedbackMask) XkbAllBooleanCtrlsMask ok (0x00001FFF) XkbAllControlsMask ok (0xF8001FFF) .TE The .I changed_ctrls field specifies the controls components that have changed and consists of bits taken from the masks defined in Table 10.7 with "ok" in the .I changed_ctrls column. The controls currently enabled in the server are reported in the .I enabled_ctrls field. If any controls were just enabled or disabled (that is, the contents of the .I enabled_ctrls field changed), they are flagged in the .I enabled_ctrl_changes field. The valid bits for these fields are the masks listed in Table 10.7 with "ok" in the .I enabled_ctrls column. The .I num_groups field reports the number of groups bound to the key belonging to the most number of groups and is automatically updated when the keyboard mapping changes. If the change was caused by a request from a client, the .I keycode and .I event_type fields are set to zero and the .I req_major and .I req_minor fields identify the request. The .I req_major value is the same as the major extension opcode. Otherwise, .I event_type is set to the type of event that caused the change (one of KeyPress, KeyRelease, DeviceKeyPress, DeviceKeyRelease, ButtonPress or ButtonRelease), and .I req_major and .I req_minor are undefined. If .I event_type is KeyPress, KeyRelease, DeviceKeyPress, or DeviceKeyRelease, the .I keycode field is set to the key that caused the change. If .I event_type is ButtonPress or ButtonRelease, .I keycode contains the button number. When a client receives an XkbControlsNotify event, it can note the changes in a changes structure using .I XkbNoteControlsChanges. .I XkbGetControlsChanges examines the .I changes parameter, queries the server for the necessary information, and copies the results into the .I xkb->ctrls keyboard description. If the .I ctrls field of .I xkb is NULL, .I XkbGetControlsChanges allocates and initializes it. To free the .I ctrls field, use XkbFreeControls. .I XkbGetControlsChanges returns Success if successful and can generate BadAlloc, BadImplementation, and BadMatch errors. .SH "RETURN VALUES" .TP 15 Success The .I XkbGetControlsChanges function returns Success if the query of the server was successful. .SH STRUCTURES .LP .nf The structure for the XkbControlsNotify event is defined as follows: typedef struct { int type; /\&* Xkb extension base event code */ unsigned long serial; /\&* X server serial number for event */ Bool send_event; /\&* True => synthetically generated */ Display * display; /\&* server connection where event generated */ Time time; /\&* server time when event generated */ int xkb_type; /\&* XkbCompatMapNotify */ int device; /\&* Xkb device ID, will not be XkbUseCoreKbd */ unsigned int changed_ctrls; /\&* bits indicating which controls data have changed*/ unsigned int enabled_ctrls; /\&* controls currently enabled in server */ unsigned int enabled_ctrl_changes; /\&* bits indicating enabled/disabled controls */ int num_groups; /\&* current number of keyboard groups */ KeyCode keycode; /\&* != 0 => keycode of key causing change */ char event_type; /\&* Type of event causing change */ char req_major; /\&* major event code of event causing change */ char req_minor; /\&* minor event code of event causing change */ } XkbControlsNotifyEvent; .fi .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadImplementation Invalid reply from server .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .SH "SEE ALSO" .BR XkbFreeControls (__libmansuffix__), .BR XkbNoteControlsChanges (__libmansuffix__), .BR XkbSelectEventDetails (__libmansuffix__), .BR XkbSelectEvents (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetKeyboardByName.man0000644014310600000120000003277014763154126014333 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetKeyboardByName __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetKeyboardByName \- Build a new keyboard description from a set of named components, and to optionally have the server use the resulting description to replace an active one .SH SYNOPSIS .HP .B XkbDescPtr XkbGetKeyboardByName .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "device_spec" "\^," .BI "XkbComponentNamesPtr " "names" "\^," .BI "unsigned int " "want" "\^," .BI "unsigned int " "need" "\^," .BI "Bool " "load" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I names names of components to fetch .TP .I want desired structures in returned record .TP .I need mandatory structures in returned record .TP .I load True => load into .I device_spec .SH DESCRIPTION .LP A client may request that the server fetch one or more components from its database and use those components to build a new server keyboard description. The new keyboard description may be built from scratch, or it may be built starting with the current keyboard description for a particular device. Once the keyboard description is built, all or part of it may be returned to the client. The parts returned to the client need not include all of the parts used to build the description. At the time it requests the server to build a new keyboard description, a client may also request that the server use the new description internally to replace the current keyboard description for a specific device, in which case the behavior of the device changes accordingly. To build a new keyboard description from a set of named components, and to optionally have the server use the resulting description to replace an active one, use .I XkbGetKeyboardByName. .I names contains a set of expressions describing the keyboard components the server should use to build the new keyboard description. .I want and .I need are bit fields describing the parts of the resulting keyboard description that should be present in the returned XkbDescRec. The individual fields in .I names are .I component expressions composed of keyboard component names (no wildcarding as may be used in .I XkbListComponents), the special component name symbol `%', and the special operator characters `+' and `|'. A component expression is parsed left to right, as follows: .IP \(bu 5 The special component name "computed" may be used in keycodes component expressions and refers to a component consisting of a set of keycodes computed automatically by the server as needed. .IP \(bu 5 The special component name "canonical" may be used in types component expressions and refers to a partial component defining the four standard key types: ALPHABETIC, ONE_LEVEL, TWO_LEVEL, and KEYPAD. .IP \(bu 5 The special component name `%' refers to the keyboard description for the device specified in device_spec or the keymap names component. If a keymap names component is specified that does not begin with `+' or `|' and does not contain `%', then `%' refers to the description generated by the keymap names component. Otherwise, it refers to the keyboard description for device_spec. .IP \(bu 5 The `+' operator specifies that the following component should override the currently assembled description; any definitions that are present in both components are taken from the second. .IP \(bu 5 The `|' operator specifies that the next specified component should augment the currently assembled description; any definitions that are present in both components are taken from the first. .IP \(bu 5 If the component expression begins with an operator, a leading `%' is implied. .IP \(bu 5 If any unknown or illegal characters appear anywhere in the expression, the entire expression is invalid and is ignored. For example, if .I names->symbols contained the expression "+de", it specifies that the default member of the "de" class of symbols should be applied to the current keyboard mapping, overriding any existing definitions (it could also be written "+de(default)"). Here is a slightly more involved example: the expression "acme(ascii)+de(basic)|iso9995-3" constructs a German (de) mapping for the ASCII keyboard supplied by the "acme" vendor. The new definition begins with the symbols for the ASCII keyboard for Acme .I (acme(ascii)), overrides them with definitions for the basic German keyboard .I (de(basic)), and then applies the definitions from the default iso9995-3 keyboard .I (iso9995-3) to any undefined keys or groups of keys (part three of the iso9995 standard defines a common set of bindings for the secondary group, but allows national layouts to override those definitions where necessary). .B NOTE The interpretation of the above expression components (acme, ascii, de, basic, iso9995-3) is not defined by Xkb; only the operations and their ordering are. Note that the presence of a keymap .I names component that does not contain `%' (either explicit or implied by virtue of an expression starting with an operator) indicates a description that is independent of the keyboard description for the device specified in .I device_spec. The same is true of requests in which the keymap names component is empty and all five other names components contain expressions void of references to `%'. Requests of this form allow you to deal with keyboard definitions independent of any actual device. The server parses all non-NULL fields in .I names and uses them to build a keyboard description. However, before parsing the expressions in .I names, the server ORs the bits in .I want and .I need together and examines the result in relationship to the expressions in .I names. Table 1 identifies the components that are required for each of the possible bits in .I want or .I need. If a required component has not been specified in the .I names structure (the corresponding field is NULL), the server substitutes the expression "%", resulting in the component values being taken from .I device_spec. In addition, if .I load is True, the server modifies .I names if necessary (again using a "%" entry) to ensure all of the following fields are non-NULL: .I types, keycodes, symbols, and .I compat. .bp .TS c s s l l l. Table 1 Want and Need Mask Bits and Required Names Components _ want or need mask bit Required names Components value _ XkbGBN_TypesMask Types (1L<<0) XkbGBN_CompatMapMask Compat (1L<<1) XkbGBN_ClientSymbolsMask Types + Symbols + Keycodes (1L<<2) XkbGBN_ServerSymbolsMask Types + Symbols + Keycodes (1L<<3) XkbGBN_SymbolsMask Symbols (1L<<1) XkbGBN_IndicatorMapMask Compat (1L<<4) XkbGBN_KeyNamesMask Keycodes (1L<<5) XkbGBN_GeometryMask Geometry (1L<<6) XkbGBN_OtherNamesMask Types + Symbols + Keycodes + Compat + Geometry (1L<<7) XkbGBN_AllComponentsMask (0xff) .TE .I need specifies a set of keyboard components that the server must be able to resolve in order for .I XkbGetKeyboardByName to succeed; if any of the components specified in .I need cannot be successfully resolved, .I XkbGetKeyboardByName fails. .I want specifies a set of keyboard components that the server should attempt to resolve, but that are not mandatory. If the server is unable to resolve any of these components, .I XkbGetKeyboardByName still succeeds. Bits specified in .I want that are also specified in .I need have no effect in the context of .I want. If .I load is True, the server updates its keyboard description for .I device_spec to match the result of the keyboard description just built. If load is False, the server's description for device .I device_spec is not updated. In all cases, the parts specified by .I want and .I need from the just-built keyboard description are returned. The .I names structure in an XkbDescRec keyboard description record contains one field for each of the five component types used to build a keyboard description. When a keyboard description is built from a set of database components, the corresponding fields in this .I names structure are set to match the expressions used to build the component. Building a New Keyboard Description from the Server Database The information returned to the client in the XkbDescRec is essentially the result of a series of calls to extract information from a fictitious device whose description matches the one just built. The calls corresponding to each of the mask bits are summarized in Table 2, together with the XkbDescRec components that are filled in. .TS c s s l l l. Table 2 XkbDescRec Components Returned for Values of Want & Needs _ Request (want+need) Fills in Xkb components Equivalent Function Call _ XkbGBN_TypesMask map.types XkbGetUpdatedMap(dpy, XkbTypesMask, Xkb) XkbGBN_ServerSymbolsMask server XkbGetUpdatedMap(dpy, XkbAllClientInfoMask, Xkb) XkbGBN_ClientSymbolsMask map, including map.types XkbGetUpdatedMap(dpy, XkbAllServerInfoMask, Xkb) XkbGBN_IndicatorMaps indicators XkbGetIndicatorMap(dpy, XkbAllIndicators, Xkb) XkbGBN_CompatMapMask compat XkbGetCompatMap(dpy, XkbAllCompatMask, Xkb) XkbGBN_GeometryMask geom XkbGetGeometry(dpy, Xkb) XkbGBN_KeyNamesMask names.keys XkbGetNames(dpy, XkbKeyNamesMask | names.key_aliases XkbKeyAliasesMask, Xkb) XkbGBN_OtherNamesMask names.keycodes XkbGetNames(dpy, XkbAllNamesMask & names.geometry ~(XkbKeyNamesMask | XkbKeyAliasesMask), names.symbols Xkb) names.types map.types[*].lvl_names[*] names.compat names.vmods names.indicators names.groups names.radio_groups names.phys_symbols .TE There is no way to determine which components specified in .I want (but not in .I need) were actually fetched, other than breaking the call into successive calls to .I XkbGetKeyboardByName and specifying individual components. .I XkbGetKeyboardByName always sets .I min_key_code and .I max_key_code in the returned XkbDescRec structure. .I XkbGetKeyboardByName is synchronous; it sends the request to the server to build a new keyboard description and waits for the reply. If successful, the return value is non-NULL. .I XkbGetKeyboardByName generates a BadMatch protocol error if errors are encountered when building the keyboard description. .SH STRUCTURES .LP The complete description of an Xkb keyboard is given by an XkbDescRec. The component structures in the XkbDescRec represent the major Xkb components outlined in Figure 1.1. .nf typedef struct { struct _XDisplay * display; /\&* connection to X server */ unsigned short flags; /\&* private to Xkb, do not modify */ unsigned short device_spec; /\&* device of interest */ KeyCode min_key_code; /\&* minimum keycode for device */ KeyCode max_key_code; /\&* maximum keycode for device */ XkbControlsPtr ctrls; /\&* controls */ XkbServerMapPtr server; /\&* server keymap */ XkbClientMapPtr map; /\&* client keymap */ XkbIndicatorPtr indicators; /\&* indicator map */ XkbNamesPtr names; /\&* names for all components */ XkbCompatMapPtr compat; /\&* compatibility map */ XkbGeometryPtr geom; /\&* physical geometry of keyboard */ } XkbDescRec, *XkbDescPtr; .fi The .I display field points to an X display structure. The .I flags field is private to the library: modifying .I flags may yield unpredictable results. The .I device_spec field specifies the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which specifies the core keyboard device. The .I min_key_code and .I max_key_code fields specify the least and greatest keycode that can be returned by the keyboard. Each structure component has a corresponding mask bit that is used in function calls to indicate that the structure should be manipulated in some manner, such as allocating it or freeing it. These masks and their relationships to the fields in the XkbDescRec are shown in Table 3. .TS c s s l l l l l l. Table 3 Mask Bits for XkbDescRec _ Mask Bit XkbDescRec Field Value _ XkbControlsMask ctrls (1L<<0) XkbServerMapMask server (1L<<1) XkbIClientMapMask map (1L<<2) XkbIndicatorMapMask indicators (1L<<3) XkbNamesMask names (1L<<4) XkbCompatMapMask compat (1L<<5) XkbGeometryMask geom (1L<<6) XkbAllComponentsMask All Fields (0x7f) .TE .SH DIAGNOSTICS .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .SH "SEE ALSO" .BR XkbListComponents (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAddSymInterpret.man0000644014310600000120000000432214763154126014105 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddSymInterpret __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddSymInterpret \- Add a symbol interpretation to the list of symbol interpretations in an XkbCompatRec .SH SYNOPSIS .HP .B XkbSymInterpretPtr XkbAddSymInterpret .BI "(\^XkbDescPtr " "xkb" "\^," .BI "XkbSymInterpretPtr " "si" "\^," .BI "Bool " "updateMap" "\^," .BI "XkbChangesPtr " "changes" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description to be updated .TP .I si symbol interpretation to be added .TP .I updateMap True=>apply compatibility map to keys .TP .I changes changes are put here .SH DESCRIPTION .LP .I XkbAddSymInterpret adds .I si to the list of symbol interpretations in .I xkb. If .I updateMap is True, it (re)applies the compatibility map to all of the keys on the keyboard. If .I changes is non-NULL, it reports the parts of the keyboard that were affected (unless .I updateMap is True, not much changes). .I XkbAddSymInterpret returns a pointer to the actual new symbol interpretation in the list or NULL if it failed. libX11-1.8.12/man/xkb/XkbGetDeviceInfo.man0000644014310600000120000002325514763154126013510 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetDeviceInfo \- Determine whether the X server allows Xkb access to particular capabilities of input devices other than the core X keyboard, or to determine the status of indicator maps, indicator names or button actions on a non-KeyClass extension device .SH SYNOPSIS .HP .B XkbDeviceInfoPtr XkbGetDeviceInfo .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "which" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "ind_class" "\^," .BI "unsigned int " "ind_id" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I which mask indicating information to return .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I ind_class feedback class for indicator requests .TP .I ind_id feedback ID for indicator requests .SH DESCRIPTION .LP To determine whether the X server allows Xkb access to particular capabilities of input devices other than the core X keyboard, or to determine the status of indicator maps, indicator names or button actions on a non-KeyClass extension device, use .I XkbGetDeviceInfo. .I XkbGetDeviceInfo returns information about the input device specified by .I device_spec. Unlike the .I device_spec parameter of most Xkb functions, .I device_spec does not need to be a keyboard device. It must, however, indicate either the core keyboard or a valid X Input Extension device. The .I which parameter is a mask specifying optional information to be returned. It is an inclusive OR of one or more of the values from Table 1 and causes the returned XkbDeviceInfoRec to contain values for the corresponding fields specified in the table. .nf Table 1 XkbDeviceInfoRec Mask Bits ____________________________________________________________________________________ Name XkbDeviceInfoRec Value Capability If Set Fields Effected ____________________________________________________________________________________ XkbXI_KeyboardsMask (1L <<0) Clients can use all Xkb requests and events with KeyClass devices supported by the input device extension. XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key btn_acts actions to buttons non-KeyClass input extension devices. XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign names to indicators on non-KeyClass input extension devices. XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign indicator maps to indicators on non-KeyClass input extension devices. XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request the status of indicators on non-KeyClass input extension devices. XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask | num_leds XkbXI_IndicatorMapsMask | leds->* XkbXI_IndicatorStateMask XkbXI_UnsupportedFeaturesMask unsupported (1L <<15) XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask | by Value Column XkbSI_ButtonActionsMask masks XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask | by Value Column XkbSI_KeyboardsMask masks XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask | by Value column XkbXI_UnsupportedFeaturesMask masks .fi The XkbDeviceInfoRec returned by .I XkbGetDeviceInfo always has values for .I name (may be a null string, ""), .I type, supported, unsupported, has_own_state, dflt_kbd_fd, and .I dflt_kbd_fb. Other fields are filled in as specified by .I which. Upon return, the .I supported field will be set to the inclusive OR of zero or more bits from Table 1; each bit set indicates an optional Xkb extension device feature supported by the server implementation, and a client may modify the associated behavior. If the XkbButtonActionsMask bit is set in .I which, the XkbDeviceInfoRec returned will have the button actions .I (btn_acts field) filled in for all buttons. If .I which includes one of the bits in XkbXI_IndicatorsMask, the feedback class of the indicators must be specified in .I ind_class, and the feedback ID of the indicators must be specified in .I ind_id. If the request does not include any of the bits in XkbXI_IndicatorsMask, the .I ind_class and .I ind_id parameters are ignored. The class and ID can be obtained via the input device extension .I XListInputDevices request. If any of the XkbXI_IndicatorsMask bits are set in .I which, the XkbDeviceInfoRec returned will have filled in the portions of the .I leds structure corresponding to the indicator feedback identified by .I ind_class and .I ind_id. The .I leds vector of the XkbDeviceInfoRec is allocated if necessary and .I sz_leds and .I num_leds filled in. The .I led_class, led_id and .I phys_indicators fields of the .I leds entry corresponding to .I ind_class and .I ind_id are always filled in. If .I which contains XkbXI_IndicatorNamesMask, the .I names_present and .I names fields of the .I leds structure corresponding to .I ind_class and .I ind_id are returned. If .I which contains XkbXI_IndicatorStateMask, the corresponding .I state field is updated. If .I which contains XkbXI_IndicatorMapsMask, the .I maps_present and .I maps fields are updated. Xkb provides convenience functions to request subsets of the information available via .I XkbGetDeviceInfo. These convenience functions mirror some of the mask bits. The functions all take an XkbDeviceInfoPtr as an input argument and operate on the X Input Extension device specified by the .I device_spec field of the structure. Only the parts of the structure indicated in the function description are updated. The XkbDeviceInfoRec structure used in the function call can be obtained by calling .I XkbGetDeviceInfo or can be allocated by calling .I XkbAllocDeviceInfo. .SH STRUCTURES .LP Information about X Input Extension devices is transferred between a client program and the Xkb extension in an XkbDeviceInfoRec structure: .nf typedef struct { char * name; /\&* name for device */ Atom type; /\&* name for class of devices */ unsigned short device_spec; /\&* device of interest */ Bool has_own_state; /\&* True=>this device has its own state */ unsigned short supported; /\&* bits indicating supported capabilities */ unsigned short unsupported; /\&* bits indicating unsupported capabilities */ unsigned short num_btns; /\&* number of entries in btn_acts */ XkbAction * btn_acts; /\&* button actions */ unsigned short sz_leds; /\&* total number of entries in LEDs vector */ unsigned short num_leds; /\&* number of valid entries in LEDs vector */ unsigned short dflt_kbd_fb; /\&* input extension ID of default (core kbd) indicator */ unsigned short dflt_led_fb; /\&* input extension ID of default indicator feedback */ XkbDeviceLedInfoPtr leds; /\&* LED descriptions */ } XkbDeviceInfoRec, *XkbDeviceInfoPtr; .fi .SH "SEE ALSO" .BR XkbAllocDeviceInfo (__libmansuffix__), .BR XListInputDevices (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetKeyTypes.man0000644014310600000120000000511214763154126013242 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetKeyTypes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetKeyTypes \- Obtain the list of available key types in the server's keyboard mapping .SH SYNOPSIS .HP .B Status XkbGetKeyTypes .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "first" "\^," .BI "unsigned int " "num" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I first index to first type to get, 0 => 1st type .TP .I num number of key types to be returned .TP .I xkb keyboard description containing client map to update .SH DESCRIPTION .LP .I XkbGetKeyTypes queries the server for the desired types, waits for a reply, and returns the desired types in the .I xkb->map->types. If successful, it returns Success. .I XkbGetKeyTypes returns BadAccess if the Xkb extension has not been properly initialized and BadValue if the combination of .I first and .I num results in numbers out of valid range. .B NOTE: .I XkbGetKeyTypes is used to obtain descriptions of the key types themselves, not the key types bound to individual keys. To obtain the key types bound to an individual key, refer to the .I key_sym_map field of the client map. .SH DIAGNOSTICS .TP 15 .B BadAccess The Xkb extension has not been properly initialized .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbKeyKeyType (__libmansuffix__), .BR XkbKeyKeyTypeIndex (__libmansuffix__) libX11-1.8.12/man/xkb/XkbKeyKeyType.man0000644014310600000120000000475714763154126013106 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyKeyType __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyKeyType \- Obtain the index of a key type or the pointer to a key type .SH SYNOPSIS .HP .B XkbKeyTypePtr XkbKeyKeyType .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^," .BI "int " "group" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .TP .I group group index .SH DESCRIPTION .LP .I XkbKeyKeyType returns a pointer to the key type in the .I types vector of the client map in .I xkb corresponding to the given .I keycode and .I group index. .SH STRUCTURES .LP .nf typedef struct { /\&* Key Type */ XkbModsRec mods; /\&* modifiers used to compute shift level */ unsigned char num_levels; /\&* total # shift levels, do not modify directly */ unsigned char map_count; /\&* # entries in map, preserve (if non-NULL) */ XkbKTMapEntryPtr map; /\&* vector of modifiers for each shift level */ XkbModsPtr preserve; /\&* mods to preserve for corresponding map entry */ Atom name; /\&* name of key type */ Atom * level_names; /\&* array of names of each shift level */ } XkbKeyTypeRec, *XkbKeyTypePtr; .fi libX11-1.8.12/man/xkb/XkbSetDebuggingFlags.man0000644014310600000120000001135114763154126014353 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetDebuggingFlags __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetDebuggingFlags \- Change the values of any of the debug controls .SH SYNOPSIS .HP .B Bool XkbSetDebuggingFlags .BI "(\^Display *" "display" "\^," .BI "unsigned int " "mask" "\^," .BI "unsigned int " "flags" "\^," .BI "char *" "msg" "\^," .BI "unsigned int " "ctrls_mask" "\^," .BI "unsigned int " "ctrls" "\^," .BI "unsigned int *" "ret_flags" "\^," .BI "unsigned int *" "ret_ctrls" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to X server .TP .I mask mask selecting debug output flags to change .TP .I flags values for debug output flags selected by mask .TP .I msg message to print right now .TP .I ctrls_mask mask selecting debug controls to change .TP .I ctrls values for debug controls selected by ctrls_mask .TP .I ret_flags resulting state of all debug output flags .TP .I ret_ctrls resulting state of all debug controls .SH DESCRIPTION .LP The debugging aids are intended for use primarily by Xkb implementors and are optional in any implementation. There are two bitmasks that may be used to control debugging. One bitmask controls the output of debugging information, and the other controls behavior. Both bitmasks are initially all zeros. To change the values of any of the debug controls, use .I XkbSetDebuggingFlags. .I XkbSetDebuggingFlags modifies the debug output flags as specified by .I mask and flags, modifies the debug controls flags as specified by .I ctrls_mask and ctrls, prints the message .I msg, and backfills .I ret_flags and .I ret_ctrls with the resulting debug output and debug controls flags. When bits are set in the debug output masks, .I mask and .I flags, Xkb prints debug information corresponding to each bit at appropriate points during its processing. The device to which the output is written is implementation-dependent, but is normally the same device to which X server error messages are directed; thus the bits that can be set in .I mask and .I flags is implementation-specific. To turn on a debug output selection, set the bit for the output in the .I mask parameter and set the corresponding bit in the .I flags parameter. To turn off event selection for an event, set the bit for the output in the .I mask parameter and do not set the corresponding bit in the .I flags parameter. When bits are set in the debug controls masks, .I ctrls_mask and .I ctrls, Xkb modifies its behavior according to each controls bit. .I ctrls_mask and ctrls are related in the same way that .I mask and .I flags are. The valid controls bits are defined in Table 1. .TS c s s l l l. Table 1 Debug Control Masks _ Debug Control Mask Value Meaning _ XkbDF_DisableLocks (1 << 0) Disable actions that lock modifiers .TE .I XkbSetDebuggingFlags returns True if successful and False otherwise. The only protocol error it may generate is BadAlloc, if for some reason it is unable to allocate storage. .I XkbSetDebuggingFlags is intended for developer use and may be disabled in production X servers. If it is disabled, .I XkbSetDebuggingFlags has no effect and does not generate any protocol errors. The message in .I msg is written immediately. The device to which it is written is implementation dependent but is normally the same device where X server error messages are directed. .SH "RETURN VALUES" .TP 15 True The .I XkbSetDebuggingFlags function returns True when successful. .TP 15 False The .I XkbSetDebuggingFlags function returns False when not successful. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage libX11-1.8.12/man/xkb/XkbResizeKeyType.man0000644014310600000120000000726714763154126013616 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbResizeKeyType __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbResizeKeyType \- Change the number of levels in a key type .SH SYNOPSIS .HP .B Status XkbResizeKeyType .BI "(\^XkbDescPtr " "xkb" "\^," .BI "int " "type_ndx" "\^," .BI "int " "map_count" "\^," .BI "Bool " "want_preserve" "\^," .BI "int " "new_num_lvls" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description containing client map to update .TP .I type_ndx index in xkb->map->types of type to change .TP .I map_count total # of map entries needed for the type .TP .I want_preserve True => list of preserved modifiers is necessary .TP .I new_num_lvls new max # of levels for type .SH DESCRIPTION .LP .I XkbResizeKeyType changes the type specified by .I xkb->map->types[type_ndx], and reallocates the symbols and actions bound to all keys that use the type, if necessary. .I XkbResizeKeyType updates only the local copy of the types in .I xkb; to update the server's copy for the physical device, use .I XkbSetMap or .I XkbChangeMap after calling .I XkbResizeKeyType. The .I map_count parameter specifies the total number of map entries needed for the type, and can be zero or greater. If .I map_count is zero, .I XkbResizeKeyType frees the existing .I map and .I preserve entries for the type if they exist and sets them to NULL. The .I want_preserve parameter specifies whether a .I preserve list for the key should be created. If .I want_preserve is True, the .I preserve list with .I map_count entries is allocated or reallocated if it already exists. Otherwise, if .I want_preserve is False, the .I preserve field is freed if necessary and set to NULL. The .I new_num_lvls parameter specifies the new maximum number of shift levels for the type and is used to calculate and resize the symbols and actions bound to all keys that use the type. If .I type_ndx does not specify a legal type, .I new_num_lvls is less than 1, or the .I map_count is less than zero, .I XkbResizeKeyType returns BadValue. If .I XkbResizeKeyType encounters any problems with allocation, it returns BadAlloc. Otherwise, it returns Success. .SH "RETURN VALUES" .TP 15 Success The .I XkbResizeKeyType function returns Success if .I type_ndx specifies a legal type, .I new_num_lvls is greater than zero and .I map_count is positive. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbChangeMap (__libmansuffix__), .BR XkbSetMap (__libmansuffix__) libX11-1.8.12/man/xkb/XkbNoteControlsChanges.man0000644014310600000120000001563114763154126014756 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbNoteControlsChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbNoteControlsChanges \- Notes the changes in a changes structure when a client receives an XkbControlsNotify event .SH SYNOPSIS .HP .B void XkbNoteControlsChanges .BI "(\^XkbControlsChangesPtr " "changes" "\^," .BI "XkbControlsNotifyEvent *" "new" "\^," .BI "unsigned int " "wanted" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I changes records changes indicated by new .TP .I new tells which things have changed .TP .I wanted tells which parts of new to record in changes .SH DESCRIPTION .LP Whenever a field in the controls structure changes in the server's keyboard description, the server sends an XkbControlsNotify event to all interested clients.To receive XkbControlsNotify events under all possible conditions, use .I XkbSelectEvents and pass XkbControlsNotifyMask in both .I bits_to_change and .I values_for_bits. To receive XkbControlsNotify events only under certain conditions, use .I XkbSelectEventDetails using XkbControlsNotify as the .I event_type and specifying the desired state changes in .I bits_to_change and .I values_for_bits using mask bits from Table 1. Table 1 shows the actual values for the individual mask bits used to select controls for modification and to enable and disable the control. Note that the same mask bit is used to specify general modifications to the parameters used to configure the control (which), and to enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column) are for controls that have no configurable attributes; and for controls that are not boolean controls and therefore cannot be enabled or disabled. .TS c s s s l l l l l l l l l l l l. Table 1 Controls Mask Bits _ Mask Bit which or enabled Value changed_ctrls _ctrls _ XkbRepeatKeysMask ok ok (1L<<0) XkbSlowKeysMask ok ok (1L<<1) XkbBounceKeysMask ok ok (1L<<2) XkbStickyKeysMask ok ok (1L<<3) XkbMouseKeysMask ok ok (1L<<4) XkbMouseKeysAccelMask ok ok (1L<<5) XkbAccessXKeysMask ok ok (1L<<6) XkbAccessXTimeoutMask ok ok (1L<<7) XkbAccessXFeedbackMask ok ok (1L<<8) XkbAudibleBellMask ok (1L<<9) XkbOverlay1Mask ok (1L<<10) XkbOverlay2Mask ok (1L<<11) XkbIgnoreGroupLockMask ok (1L<<12) XkbGroupsWrapMask ok (1L<<27) XkbInternalModsMask ok (1L<<28) XkbIgnoreLockModsMask ok (1L<<29) XkbPerKeyRepeatMask ok (1L<<30) XkbControlsEnabledMask ok (1L<<31) XkbAccessXOptionsMask ok ok (XkbStickyKeysMask | XkbAccessXFeedbackMask) XkbAllBooleanCtrlsMask ok (0x00001FFF) XkbAllControlsMask ok (0xF8001FFF) .TE The .I changed_ctrls field specifies the controls components that have changed and consists of bits taken from the masks defined in Table 1 with "ok" in the .I changed_ctrls column. The controls currently enabled in the server are reported in the .I enabled_ctrls field. If any controls were just enabled or disabled (that is, the contents of the .I enabled_ctrls field changed), they are flagged in the .I enabled_ctrl_changes field. The valid bits for these fields are the masks listed in Table 1 with "ok" in the .I enabled_ctrls column. The .I num_groups field reports the number of groups bound to the key belonging to the most number of groups and is automatically updated when the keyboard mapping changes. If the change was caused by a request from a client, the .I keycode and .I event_type fields are set to zero and the .I req_major and .I req_minor fields identify the request. The .I req_major value is the same as the major extension opcode. Otherwise, .I event_type is set to the type of event that caused the change (one of KeyPress, KeyRelease, DeviceKeyPress, DeviceKeyRelease, ButtonPress or ButtonRelease), and .I req_major and .I req_minor are undefined. If .I event_type is KeyPress, KeyRelease, DeviceKeyPress, or DeviceKeyRelease, the .I keycode field is set to the key that caused the change. If .I event_type is ButtonPress or ButtonRelease, .I keycode contains the button number. When a client receives an XkbControlsNotify event, it can note the changes in a changes structure using .I XkbNoteControlsChanges. The .I wanted parameter is a bitwise inclusive OR of bits taken from the set of masks specified in Table 1 with "ok" in the .I changed_ctrls column. .I XkbNoteControlsChanges copies any changes reported in .I new and specified in .I wanted into the changes record specified by .I old. .SH STRUCTURES .LP .nf The structure for the XkbControlsNotify event is defined as follows: typedef struct { int type; /\&* Xkb extension base event code */ unsigned long serial; /\&* X server serial number for event */ Bool send_event; /\&* True => synthetically generated */ Display * display; /\&* server connection where event generated */ Time time; /\&* server time when event generated */ int xkb_type; /\&* XkbCompatMapNotify */ int device; /\&* Xkb device ID, will not be XkbUseCoreKbd */ unsigned int changed_ctrls; /\&* bits indicating which controls data have changed*/ unsigned int enabled_ctrls; /\&* controls currently enabled in server */ unsigned int enabled_ctrl_changes; /\&* bits indicating enabled/disabled controls */ int num_groups; /\&* current number of keyboard groups */ KeyCode keycode; /\&* != 0 => keycode of key causing change */ char event_type; /\&* Type of event causing change */ char req_major; /\&* major event code of event causing change */ char req_minor; /\&* minor event code of event causing change */ } XkbControlsNotifyEvent; .fi .SH "SEE ALSO" .BR XkbSelectEventDetails (__libmansuffix__), .BR XkbSelectEvents (__libmansuffix__) libX11-1.8.12/man/xkb/XkbSetControls.man0000644014310600000120000001263614763154126013315 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetControls \- Copies changes to the X server based on a modified ctrls structure in a local copy of the keyboard description .SH SYNOPSIS .HP .B Bool XkbSetControls .BI "(\^Display *" "display" "\^," .BI "unsigned long " "which" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to X server .TP .I which mask of controls requested .TP .I xkb keyboard description for controls information .SH DESCRIPTION .LP For each bit that is set in the .I which parameter, .I XkbSetControls sends the corresponding values from the .I xkb->ctrls field to the server. Valid values for .I which are any combination of the masks listed in Table 1 that have "ok" in the .I which column. Table 1 shows the actual values for the individual mask bits used to select controls for modification and to enable and disable the control. Note that the same mask bit is used to specify general modifications to the parameters used to configure the control (which), and to enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column) are for controls that have no configurable attributes; and for controls that are not boolean controls and therefore cannot be enabled or disabled. .TS c s s s l l l l l l l l l l l l. Table 1 Controls Mask Bits _ Mask Bit which or enabled Value changed_ctrls _ctrls _ XkbRepeatKeysMask ok ok (1L<<0) XkbSlowKeysMask ok ok (1L<<1) XkbBounceKeysMask ok ok (1L<<2) XkbStickyKeysMask ok ok (1L<<3) XkbMouseKeysMask ok ok (1L<<4) XkbMouseKeysAccelMask ok ok (1L<<5) XkbAccessXKeysMask ok ok (1L<<6) XkbAccessXTimeoutMask ok ok (1L<<7) XkbAccessXFeedbackMask ok ok (1L<<8) XkbAudibleBellMask ok (1L<<9) XkbOverlay1Mask ok (1L<<10) XkbOverlay2Mask ok (1L<<11) XkbIgnoreGroupLockMask ok (1L<<12) XkbGroupsWrapMask ok (1L<<27) XkbInternalModsMask ok (1L<<28) XkbIgnoreLockModsMask ok (1L<<29) XkbPerKeyRepeatMask ok (1L<<30) XkbControlsEnabledMask ok (1L<<31) XkbAccessXOptionsMask ok ok (XkbStickyKeysMask | XkbAccessXFeedbackMask) XkbAllBooleanCtrlsMask ok (0x00001FFF) XkbAllControlsMask ok (0xF8001FFF) .TE If .I xkb->ctrls is NULL, the server does not support a compatible version of Xkb, or the Xkb extension has not been properly initialized, .I XkbSetControls returns False. Otherwise, it sends the request to the X server and returns True. Note that changes to attributes of controls in the XkbControlsRec structure are apparent only when the associated control is enabled, although the corresponding values are still updated in the X server. For example, the .I repeat_delay and .I repeat_interval fields are ignored unless the RepeatKeys control is enabled (that is, the X server's equivalent of .I xkb->ctrls has XkbRepeatKeyMask set in .I enabled_ctrls). It is permissible to modify the attributes of a control in one call to .I XkbSetControls and enable the control in a subsequent call. See .I XkbChangeEnabledControls for more information on enabling and disabling controls. Note that the .I enabled_ctrls field is itself a control - the EnabledControls control. As such, to set a specific configuration of enabled and disabled boolean controls, you must set .I enabled_ctrls to the appropriate bits to enable only the controls you want and disable all others, then specify the XkbControlsEnabledMask in a call to .I XkbSetControls. Because this is somewhat awkward if all you want to do is enable and disable controls, and not modify any of their attributes, a convenience function is also provided for this purpose, .I XkbChangeEnabledControls. .SH "RETURN VALUES" .TP 15 True The .I XkbSetControls function returns True when it sends the request to the X server. .TP 15 False The .I XkbSetControls function returns False when .I xkb->ctrls is NULL, the server does not support a compatible version of Xkb, or the Xkb extension has not been properly initialized. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .SH "SEE ALSO" .BR XkbChangeEnabledControls (__libmansuffix__), .BR XkbFreeControls (__libmansuffix__) libX11-1.8.12/man/xkb/XkbIgnoreExtension.man0000644014310600000120000000610714763154126014152 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbIgnoreExtension __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbIgnoreExtension \- Prevents core X library keyboard functions from using the X Keyboard Extension .SH SYNOPSIS .HP .B Bool XkbIgnoreExtension .BI "(\^Bool *" "ignore" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I ignore True means ignore the extension .SH DESCRIPTION .LP If a server supports the Xkb extension, the X library normally implements preXkb keyboard functions using the Xkb keyboard description and state. The server Xkb keyboard state may differ from the preXkb keyboard state. This difference does not affect most clients, but there are exceptions. To allow these clients to work properly, you may instruct the extension not to use Xkb functionality. Call .I XkbIgnoreExtension to prevent core X library keyboard functions from using the X Keyboard Extension. You must call .I XkbIgnoreExtension before you open a server connection; Xkb does not provide a way to enable or disable use of the extension once a connection is established. .I XkbIgnoreExtension tells the X library whether to use the X Keyboard Extension on any subsequently opened X display connections. If ignore is True, the library does not initialize the Xkb extension when it opens a new display. This forces the X server to use compatibility mode and communicate with the client using only core protocol requests and events. If ignore is False, the library treats subsequent calls to .I XOpenDisplay normally and uses Xkb extension requests, events, and state. Do not explicitly use Xkb on a connection for which it is disabled. .I XkbIgnoreExtension returns False if it was unable to apply the ignore request. .SH "RETURN VALUES" .TP 15 True The .I XkbIgnoreExtension returns True if .TP 15 False The .I XkbIgnoreExtension function returns False if it was unable to apply the ignore request. .SH "SEE ALSO" .BR XOpenDisplay (__libmansuffix__) libX11-1.8.12/man/xkb/XkbKeyNumActions.man0000644014310600000120000001063414763154126013563 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyNumActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyNumActions \- Computes the number of actions associated with the key corresponding to keycode .SH SYNOPSIS .HP .B int XkbKeyNumActions .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .SH DESCRIPTION .LP A key action defines the effect key presses and releases have on the internal state of the server. For example, the expected key action associated with pressing the Shift key is to set the Shift modifier. There is zero or one key action associated with each keysym bound to each key. Just as the entire list of key symbols for the keyboard mapping is held in the .I syms field of the client map, the entire list of key actions for the keyboard mapping is held in the .I acts array of the server map. The total size of .I acts is specified by .I size_acts, and the number of entries is specified by .I num_acts. The .I key_acts array, indexed by keycode, describes the actions associated with a key. The .I key_acts array has .I min_key_code unused entries at the start to allow direct indexing using a keycode. If a .I key_acts entry is zero, it means the key does not have any actions associated with it. If an entry is not zero, the entry represents an index into the .I acts field of the server map, much as the .I offset field of a KeySymMapRec structure is an index into the .I syms field of the client map. The reason the .I acts field is a linear list of XkbActions is to reduce the memory consumption associated with a keymap. Because Xkb allows individual keys to have multiple shift levels and a different number of groups per key, a single two-dimensional array of KeySyms would potentially be very large and sparse. Instead, Xkb provides a small two-dimensional array of XkbActions for each key. To store all of these individual arrays, Xkb concatenates each array together in the .I acts field of the server map. The key action structures consist only of fields of type char or unsigned char. This is done to optimize data transfer when the server sends bytes over the wire. If the fields are anything but bytes, the server has to sift through all of the actions and swap any nonbyte fields. Because they consist of nothing but bytes, it can just copy them out. .I XkbKeyNumActions computes the number of actions associated with the key corresponding to .I keycode. This should be the same value as the result of .I XkbKeyNumSyms. .SH STRUCTURES .LP The KeySymMapRec structure is defined as follows: .nf #define XkbNumKbdGroups 4 #define XkbMaxKbdGroup (XkbNumKbdGroups-1) typedef struct { /\&* map to keysyms for a single keycode */ unsigned char kt_index[XkbNumKbdGroups]; /\&* key type index for each group */ unsigned char group_info; /\&* # of groups and out of range group handling */ unsigned char width; /\&* max # of shift levels for key */ unsigned short offset; /\&* index to keysym table in syms array */ } XkbSymMapRec, *XkbSymMapPtr; .fi .SH "SEE ALSO" .BR XkbKeyNumSyms (__libmansuffix__) libX11-1.8.12/man/xkb/XkbFreeClientMap.man0000644014310600000120000001447114763154126013513 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeClientMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeClientMap \- Free memory used by the client map member of an XkbDescRec structure .SH SYNOPSIS .HP .B void XkbFreeClientMap .BI "(\^XkbDescPtr " "xkb" "\^," .BI "unsigned int " "which" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description containing client map to free .TP .I which mask identifying components of map to free .TP .I free_all True => free all client components and map itself .SH DESCRIPTION .LP .I XkbFreeClientMap frees the components of client map specified by .I which in the XkbDescRec structure specified by the .I xkb parameter and sets the corresponding structure component values to NULL. The .I which parameter specifies a combination of the client map masks shown in Table 1. If .I free_all is True, .I which is ignored; .I XkbFreeClientMap frees every non-NULL structure component in the client map, frees the XkbClientMapRec structure referenced by the .I map member of the .I xkb parameter, and sets the .I map member to NULL. .TS c s l l l lw(4i). Table 1 XkbAllocClientMap Masks _ Mask Effect _ XkbKeyTypesMask T{ The type_count field specifies the number of entries to preallocate for the types field of the client map. If the type_count field is less than XkbNumRequiredTypes returns BadValue. T} .sp XkbKeySymsMask T{ The min_key_code and max_key_code fields of the xkb parameter are used to allocate the syms and key_sym_map fields of the client map. The fields are allocated to contain the maximum number of entries necessary for max_key_code - min_key_code + 1 keys. T} .sp XkbModifierMapMask T{ The min_key_code and max_key_code fields of the xkb parameter are used to allocate the modmap field of the client map. The field is allocated to contain the maximum number of entries necessary for max_key_code - min_key_code + 1 keys. T} .TE NOTE: The .I min_key_code and .I max_key_code fields of the .I xkb parameter must be legal values if the XkbKeySymsMask or XkbModifierMapMask masks are set in the .I which parameter. If they are not valid, .I XkbAllocClientMap returns BadValue. .SH STRUCTURES .LP The complete description of an Xkb keyboard is given by an XkbDescRec. The component structures in the XkbDescRec represent the major Xkb components. .nf typedef struct { struct _XDisplay * display; /\&* connection to X server */ unsigned short flags; /\&* private to Xkb, do not modify */ unsigned short device_spec; /\&* device of interest */ KeyCode min_key_code; /\&* minimum keycode for device */ KeyCode max_key_code; /\&* maximum keycode for device */ XkbControlsPtr ctrls; /\&* controls */ XkbServerMapPtr server; /\&* server keymap */ XkbClientMapPtr map; /\&* client keymap */ XkbIndicatorPtr indicators; /\&* indicator map */ XkbNamesPtr names; /\&* names for all components */ XkbCompatMapPtr compat; /\&* compatibility map */ XkbGeometryPtr geom; /\&* physical geometry of keyboard */ } XkbDescRec, *XkbDescPtr; .fi The .I display field points to an X display structure. The .I flags field is private to the library: modifying .I flags may yield unpredictable results. The .I device_spec field specifies the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which specifies the core keyboard device. The .I min_key_code and .I max_key_code fields specify the least and greatest keycode that can be returned by the keyboard. Each structure component has a corresponding mask bit that is used in function calls to indicate that the structure should be manipulated in some manner, such as allocating it or freeing it. These masks and their relationships to the fields in the XkbDescRec are shown in Table 2. .TS c s s l l l l l l. Table 2 Mask Bits for XkbDescRec _ Mask Bit XkbDescRec Field Value _ XkbControlsMask ctrls (1L<<0) XkbServerMapMask server (1L<<1) XkbIClientMapMask map (1L<<2) XkbIndicatorMapMask indicators (1L<<3) XkbNamesMask names (1L<<4) XkbCompatMapMask compat (1L<<5) XkbGeometryMask geom (1L<<6) XkbAllComponentsMask All Fields (0x7f) .TE The .I map field of the complete Xkb keyboard description is a pointer to the Xkb client map, which is of type XkbClientMapRec: .nf typedef struct { /\&* Client Map */ unsigned char size_types; /\&* # occupied entries in types */ unsigned char num_types; /\&* # entries in types */ XkbKeyTypePtr types; /\&* vector of key types used by this keymap */ unsigned short size_syms; /\&* length of the syms array */ unsigned short num_syms; /\&* # entries in syms */ KeySym * syms; /\&* linear 2d tables of keysyms, 1 per key */ XkbSymMapPtr key_sym_map; /\&* 1 per keycode, maps keycode to syms */ unsigned char * modmap; /\&* 1 per keycode, real mods bound to key */ } XkbClientMapRec, *XkbClientMapPtr; .fi .SH DIAGNOSTICS .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbAllocClientMap (__libmansuffix__) libX11-1.8.12/man/xkb/XkbTranslateKeyCode.man0000644014310600000120000000516414763154126014235 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbTranslateKeyCode __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbTranslateKeyCode \- Translate a keycode to a key symbol and modifiers .SH SYNOPSIS .HP .B Bool XkbTranslateKeyCode .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "key" "\^," .BI "unsigned int " "mods" "\^," .BI "unsigned int *" "mods_rtrn" "\^," .BI "KeySym *" "keysym_rtrn" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description to use for translation .TP .I key keycode to translate .TP .I mods modifiers to apply when translating key .TP .I mods_rtrn backfilled with consumed modifiers .TP .I keysym_rtrn keysym resulting from translation .SH DESCRIPTION .LP .I mods_rtrn is backfilled with the modifiers consumed by the translation process. .I mods is a bitwise inclusive OR of the legal modifier masks: ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask.The AlwaysConsumeShiftAndLock library control (see below), if enabled, causes .I XkbTranslateKeyCode to consume shift and lock. .I XkbTranslateKeyCode returns True if the translation resulted in a keysym, and False if it resulted in NoSymbol. The AlwaysConsumeShiftAndLock control, if enabled, forces .I XLookupString to consume the Shift and Lock modifiers when processing all keys, even if the definition for the key type does not specify these modifiers. The AlwaysConsumeShiftAndLock control is unset by default. .SH "SEE ALSO" .BR XLookupString (__libmansuffix__) libX11-1.8.12/man/xkb/XkbFreeGeomOverlayKeys.man0000644014310600000120000000537414763154126014726 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomOverlayKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomOverlayKeys \- Free keys in an overlay row .SH SYNOPSIS .HP .B void XkbFreeGeomOverlayKeys .BI "(\^XkbRowPtr " "row" "\^," .BI "int " "first" "\^," .BI "int " "count" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I row row in which keys should be freed .TP .I first first key to be freed .TP .I count number of keys to be freed .TP .I free_all True => all keys are freed .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. If .I free_all is True, all keys are freed regardless of the value of .I first and .I count. Otherwise, the number of keys specified by .I count are freed, beginning with the key specified by .I first in the specified row. .SH "RETURN VALUES" .TP 15 Success The XkbFreeGeomOverlayKeys function returns Success if there are no allocation or argument errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbGetNamedDeviceIndicator.man0000644014310600000120000000007614763154126015472 .so man__libmansuffix__/XkbGetNamedIndicator.__libmansuffix__ libX11-1.8.12/man/xkb/XkbComputeShapeTop.man0000644014310600000120000000540514763154126014112 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbComputeShapeTop __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbComputeShapeTop \- Determines the bounding box of the top surface of a shape .SH SYNOPSIS .HP .B Bool XkbComputeShapeTop .BI "(\^XkbShapePtr " "shape" "\^," .BI "XkbBoundsPtr " "bounds_rtrn" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I shape shape to be examined .TP .I bounds_rtrn backfilled with the bounding box for the shape .SH DESCRIPTION .LP Xkb provides a number of convenience functions to help use a keyboard geometry. These include functions to return the bounding box of a shape's top surface and to update the bounding box of a shape row or section. A shape is made up of a number of outlines. Each outline is a polygon made up of a number of points. The bounding box of a shape is a rectangle that contains all the outlines of that shape. .I XkbComputeShapeTop returns a BoundsRec that contains two x and y coordinates. These coordinates describe the corners of a rectangle that contains the outline that describes the top surface of the shape. The top surface is defined to be the approximating outline if the .I approx field of .I shape is not NULL. If .I approx is NULL, the top surface is defined as the last outline in the .I shape's array of outlines. .I XkbComputeShapeTop returns False if .I shape is NULL or if there are no outlines for the shape; otherwise, it returns True. .SH STRUCTURES .LP .nf typedef struct _XkbBounds { short x1,y1; /\&* upper left corner of the bounds, in mm/10 */ short x2,y2; /\&* lower right corner of the bounds, in mm/10 */ } XkbBoundsRec, *XkbBoundsPtr; .fi libX11-1.8.12/man/xkb/XkbDeviceBell.man0000644014310600000120000002541414763154126013032 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbDeviceBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbDeviceBell \- Rings the bell on an X input extension device or the default keyboard .SH SYNOPSIS .HP .B Bool XkbDeviceBell .BI "(\^Display *" "display" "\^," .BI "Window " "window" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "bell_class" "\^," .BI "unsigned int " "bell_id" "\^," .BI "int " "percent" "\^," .BI "Atom " "name" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I window window for which the bell is generated, or None .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I bell_class X input extension bell class of the bell to be rung .TP .I bell_id X input extension bell ID of the bell to be rung .TP .I percent bell volume, from -100 to 100 inclusive .TP .I name a name for the bell, or NULL .SH DESCRIPTION .LP The core X protocol allows only applications to explicitly sound the system bell with a given duration, pitch, and volume. Xkb extends this capability by allowing clients to attach symbolic names to bells, disable audible bells, and receive an event whenever the keyboard bell is rung. For the purposes of this document, the .I audible bell is defined to be the system bell, or the default keyboard bell, as opposed to any other audible sound generated elsewhere in the system. You can ask to receive XkbBellNotify events when any client rings any one of the following: .IP \(bu 5 The default bell .IP \(bu 5 Any bell on an input device that can be specified by a bell_class and bell_id pair .IP \(bu 5 Any bell specified only by an arbitrary name. (This is, from the server's point of view, merely a name, and not connected with any physical sound-generating device. Some client application must generate the sound, or visual feedback, if any, that is associated with the name.) You can also ask to receive XkbBellNotify events when the server rings the default bell or if any client has requested events only (without the bell sounding) for any of the bell types previously listed. You can disable audible bells on a global basis. For example, a client that replaces the keyboard bell with some other audible cue might want to turn off the AudibleBell control to prevent the server from also generating a sound and avoid cacophony. If you disable audible bells and request to receive XkbBellNotify events, you can generate feedback different from the default bell. You can, however, override the AudibleBell control by calling one of the functions that force the ringing of a bell in spite of the setting of the AudibleBell control - .I XkbForceDeviceBell or .I XkbForceBell. In this case the server does not generate a bell event. Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeating, Xkb can provide feedback for the controls by using special beep codes. The AccessXFeedback control is used to configure the specific types of operations that generate feedback. Bell Names You can associate a name to an act of ringing a bell by converting the name to an Atom and then using this name when you call the functions listed in this chapter. If an event is generated as a result, the name is then passed to all other clients interested in receiving XkbBellNotify events. Note that these are arbitrary names and that there is no binding to any sounds. Any sounds or other effects (such as visual bells on the screen) must be generated by a client application upon receipt of the bell event containing the name. There is no default name for the default keyboard bell. The server does generate some predefined bells for the AccessX controls. These named bells are shown in the Table 1 ; the name is included in any bell event sent to clients that have requested to receive XkbBellNotify events. .TS c s l l lW(4i) l. Table 1 Predefined Bells _ Action Named Bell _ Indicator turned on AX_IndicatorOn Indicator turned off AX_IndicatorOff More than one indicator changed state AX_IndicatorChange Control turned on AX_FeatureOn Control turned off AX_FeatureOff More than one control changed state AX_FeatureChange T{ SlowKeys and BounceKeys about to be turned on or off T} AX_SlowKeysWarning SlowKeys key pressed AX_SlowKeyPress SlowKeys key accepted AX_SlowKeyAccept SlowKeys key rejected AX_SlowKeyReject Accepted SlowKeys key released AX_SlowKeyRelease BounceKeys key rejected AX_BounceKeyReject StickyKeys key latched AX_StickyLatch StickyKeys key locked AX_StickyLock StickyKeys key unlocked AX_StickyUnlock .TE Audible Bells Using Xkb you can generate bell events that do not necessarily ring the system bell. This is useful if you need to use an audio server instead of the system beep. For example, when an audio client starts, it could disable the audible bell (the system bell) and then listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio client could then send a request to an audio server to play a sound. You can control the audible bells feature by passing the XkbAudibleBellMask to .I XkbChangeEnabledControls. If you set XkbAudibleBellMask on, the server rings the system bell when a bell event occurs. This is the default. If you set XkbAudibleBellMask off and a bell event occurs, the server does not ring the system bell unless you call .I XkbForceDeviceBell or .I XkbForceBell. Audible bells are also part of the per-client auto-reset controls. Bell Functions Use the functions described in this section to ring bells and to generate bell events. The input extension has two types of feedbacks that can generate bells - bell feedback and keyboard feedback. Some of the functions in this section have .I bell_class and .I bell_id parameters; set them as follows: Set .I bell_class to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of each type; set .I bell_id to the particular bell feedback of .I bell_class type. The Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated when a bell function is called. .TS c s s s l l l l l l l l. Table 2 Bell Sounding and Bell Event Generating _ Function called AudibleBell Server sounds a bell Server sends an XkbBellNotifyEvent _ XkbDeviceBell On Yes Yes XkbDeviceBell Off No Yes XkbBell On Yes Yes XkbBell Off No Yes XkbDeviceBellEvent On or Off No Yes XkbBellEvent On or Off No Yes XkbDeviceForceBell On or Off Yes No XkbForceBell On or Off Yes No .TE Set .I percent to be the volume relative to the base volume for the keyboard as described for .I XBell. Note that .I bell_class and .I bell_id indicate the bell to physically ring. .I name is simply an arbitrary moniker for the client application's use. To determine the current feedback settings of an extension input device, use .I XGetFeedbackControl. See the X input extension documentation for more information on .I XGetFeedbackControl and related data structures. If a compatible keyboard extension is not present in the X server, .I XkbDeviceBell immediately returns False. Otherwise, .I XkbDeviceBell rings the bell as specified for the display and keyboard device and returns True. If you have disabled the audible bell, the server does not ring the system bell, although it does generate a .I XkbBellNotify event. You can call .I XkbDeviceBell without first initializing the keyboard extension. .SH STRUCTURES Xkb generates XkbBellNotify events for all bells except for those resulting from calls to .I XkbForceDeviceBell and .I XkbForceBell. To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask in both the .I bits_to_change and .I values_for_bits parameters to .I XkbSelectEvents. The XkbBellNotify event has no event details. It is either selected or it is not. However, you can call .I XkbSelectEventDetails using XkbBellNotify as the .I event_type and specifying XkbAllBellEventsMask in .I bits_to_change and .I values_for_bits. This has the same effect as a call to .I XkbSelectEvents. The structure for the XkbBellNotify event type contains: .nf typedef struct _XkbBellNotify { int type; /\&* Xkb extension base event code */ unsigned long serial; /\&* X server serial number for event */ Bool send_event; /\&* True => synthetically generated */ Display * display; /\&* server connection where event generated */ Time time; /\&* server time when event generated */ int xkb_type; /\&* XkbBellNotify */ unsigned int device; /\&* Xkb device ID, will not be XkbUseCoreKbd */ int percent; /\&* requested volume as % of max */ int pitch; /\&* requested pitch in Hz */ int duration; /\&* requested duration in microseconds */ unsigned int bell_class; /\&* X input extension feedback class */ unsigned int bell_id; /\&* X input extension feedback ID */ Atom name; /\&* "name" of requested bell */ Window window; /\&* window associated with event */ Bool event_only; /\&* False -> the server did not produce a beep */ } XkbBellNotifyEvent; .fi If your application needs to generate visual bell feedback on the screen when it receives a bell event, use the window ID in the XkbBellNotifyEvent, if present. .SH "SEE ALSO" .BR XBell (__libmansuffix__), .BR XkbBellNotify (__libmansuffix__), .BR XkbChangeEnabledControls (__libmansuffix__), .BR XkbDeviceBell (__libmansuffix__), .BR XkbForceBell (__libmansuffix__), .BR XkbForceDeviceBell (__libmansuffix__), .BR XGetFeedbackControl (__libmansuffix__), .BR XkbSelectEvents (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAddGeomOverlayKey.man0000644014310600000120000000562714763154126014353 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddGeomOverlayKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddGeomOverlayKey \- Add a key to an existing overlay row .SH SYNOPSIS .HP .B XkbOverlayKeyPtr XkbAddGeomOverlayKey .BI "(\^XkbOverlayPtr " "overlay" "\^," .BI "XkbRowPtr " "row" "\^," .BI "_Xconst char *" "over" "\^," .BI "_Xconst char *" "under" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I overlay overlay to be updated .TP .I row row in overlay to be updated .TP .I under primary name of the key to be considered .SH DESCRIPTION .LP Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the .I num_ * fields of the corresponding structure is incremented by 1. These functions do not change .I sz_* unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements. The top-level geometry description includes a list of .I geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. .I XkbAddGeomOverlayKey adds one key to the .I row in the .I overlay. If there is no key named .I under in the row of the underlying section, .I XkbAddGeomOverlayKey returns NULL. .SH STRUCTURES .LP .nf typedef struct _XkbOverlayKey { XkbKeyNameRec over; /\&* name of this overlay key */ XkbKeyNameRec under; /\&* name of the key under this overlay key */ } XkbOverlayKeyRec,*XkbOverlayKeyPtr; .fi libX11-1.8.12/man/xkb/XkbFindOverlayForKey.man0000644014310600000120000000373714763154126014402 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFindOverlayForKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFindOverlayForKey \- Find the alternate name by using the primary name for a key that is part of an overlay .SH SYNOPSIS .HP .B char * XkbFindOverlayForKey .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "XkbSectionPtr " "section" "\^," .BI "_Xconst char *" "under" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry that contains the section .TP .I section section to be searched for matching keys .TP .I under primary name of the key to be considered .SH DESCRIPTION .LP Keys that can generate multiple keycodes may be associated with multiple names. Such keys have a primary name and an alternate name. .I XkbFindOverlayForKey uses the primary name of the key, .I under, to look up the alternate name, which it returns. libX11-1.8.12/man/xkb/XkbAllocGeomPoints.man0000644014310600000120000000464414763154126014075 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomPoints __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomPoints \- Allocate points in an outline .SH SYNOPSIS .HP .B Status XkbAllocGeomPoints .BI "(\^XkbOutlinePtr " "outline" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I outline outline for which points should be allocated .TP .I num_needed number of new points required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomPoints allocates space for .I num_needed points in the specified .I outline. The points are not initialized. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbSetAutoResetControls.man0000644014310600000120000000641214763154126015144 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetAutoResetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetAutoResetControls \- Changes the current values of the AutoReset control attributes .SH SYNOPSIS .HP .B Bool XkbSetAutoResetControls .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "changes" "\^," .BI "unsigned int *" "auto_ctrls" "\^," .BI "unsigned int *" "auto_values" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I changes controls for which to change auto-reset values .TP .I auto_ctrls controls from changes that should auto reset .TP .I auto_values 1 bit => auto-reset on .SH DESCRIPTION .LP .I XkbSetAutoResetControls changes the auto-reset status and associated auto-reset values for the controls selected by .I changes. For any control selected by .I changes, if the corresponding bit is set in .I auto_ctrls, the control is configured to auto-reset when the client exits. If the corresponding bit in .I auto_values is on, the control is turned on when the client exits; if zero, the control is turned off when the client exits. For any control selected by .I changes, if the corresponding bit is not set in .I auto_ctrls, the control is configured to not reset when the client exits. For example: .nf To leave the auto-reset controls for StickyKeys the way they are: ok = XkbSetAutoResetControls(dpy, 0, 0, 0); To change the auto-reset controls so that StickyKeys are unaffected when the client exits: ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, 0, 0); To change the auto-reset controls so that StickyKeys are turned off when the client exits: ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, XkbStickyKeysMask, 0); To change the auto-reset controls so that StickyKeys are turned on when the client exits: ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, XkbStickyKeysMask, XkbStickyKeysMask); .fi .I XkbSetAutoResetControls backfills .I auto_ctrls and .I auto_values with the auto-reset controls for this particular client. Note that all of the bits are valid in the returned values, not just the ones selected in the .I changes mask. libX11-1.8.12/man/xkb/XkbKeysymToModifiers.man0000644014310600000120000000376714763154126014471 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeysymToModifiers __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeysymToModifiers \- Finds the set of modifiers bound to a particular keysym on the core keyboard .SH SYNOPSIS .HP .B unsigned int XkbKeysymToModifiers .BI "(\^Display *" "dpy" "\^," .BI "KeySym " "ks" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I ks keysym of interest .SH DESCRIPTION .LP .I XkbKeysymToModifiers finds the set of modifiers currently bound to the keysym .I ks on the core keyboard. The value returned is the mask of modifiers bound to the keysym .I ks. If no modifiers are bound to the keysym, .I XkbKeysymToModifiers returns zero; otherwise, it returns the inclusive OR of zero or more of the following: ShiftMask, ControlMask, LockMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, and Mod5Mask. libX11-1.8.12/man/xkb/XkbAllocGeomProps.man0000644014310600000120000000533514763154126013722 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomProps __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomProps \- Allocate geometry properties .SH SYNOPSIS .HP .B Status XkbAllocGeomProps .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry for which properties should be allocated .TP .I num_needed number of new properties required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomProps allocates space for .I num_needed properties and adds them to the specified geometry .I geom. No initialization of the properties is done. A geometry property associates an arbitrary string with an equally arbitrary name. Geometry properties can be used to provide hints to programs that display images of keyboards, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbApplyCompatMapToKey.man0000644014310600000120000003432014763154126014673 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbApplyCompatMapToKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbApplyCompatMapToKey \- Apply the new compatibility mapping to an individual key to get its semantics updated .SH SYNOPSIS .HP .B Bool XkbApplyCompatMapToKey .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "key" "\^," .BI "XkbChangesPtr " "changes" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description to be updated .TP .I key key to be updated .TP .I changes notes changes to the Xkb keyboard description .SH DESCRIPTION .LP .I XkbApplyCompatMapToKey essentially performs the operation described in Core Keyboard Mapping to Xkb Keyboard Mapping Transformation to a specific key. This updates the behavior, actions, repeat status, and virtual modifier bindings of the key. .B Core Keyboard Mapping to Xkb Keyboard Mapping Transformation When a core protocol keyboard mapping request is received by the server, the server's core keyboard map is updated, and then the Xkb map maintained by the server is updated. Because a client may have explicitly configured some of the Xkb keyboard mapping in the server, this automatic regeneration of the Xkb keyboard mapping from the core protocol keyboard mapping should not modify any components of the Xkb keyboard mapping that were explicitly set by a client. The client must set explicit override controls to prevent this from happening (see Explicit Components-Avoiding Automatic Remapping by the Server). The core-to-Xkb mapping is done as follows: .B Explicit Components-Avoiding Automatic Remapping by the Server Whenever a client remaps the keyboard using core protocol requests, Xkb examines the map to determine likely default values for the components that cannot be specified using the core protocol. This automatic remapping might replace definitions explicitly requested by an application, so the Xkb keyboard description defines an explicit components mask for each key. Any aspects of the automatic remapping listed in the explicit components mask for a key are not changed by the automatic keyboard mapping. The explicit components masks are held in the .I explicit field of the server map, which is an array indexed by keycode. Each entry in this array is a mask that is a bitwise inclusive OR of the values shown in Table 1. .TS c s s l l l l l lw(3i). Table 1 Explicit Component Masks _ Bit in Explicit Mask Value Protects Against _ ExplicitKeyType1 (1<<0) T{ Automatic determination of the key type associated with Group1. T} ExplicitKeyType2 (1<<1) T{ Automatic determination of the key type associated with Group2. T} ExplicitKeyType3 (1<<2) T{ Automatic determination of the key type associated with Group3. T} ExplicitKeyType4 (1<<3) T{ Automatic determination of the key type associated with Group4. T} ExplicitInterpret (1<<4) T{ Application of any of the fields of a symbol interpretation to the key in question. T} ExplicitAutoRepeat (1<<5) T{ Automatic determination of auto-repeat status for the key, as specified in a symbol interpretation. T} ExplicitBehavior (1<<6) T{ Automatic assignment of the XkbKB_Lock behavior to the key, if the XkbSI_LockingKey flag is set in a symbol interpretation. T} ExplicitVModMap (1<<7) T{ Automatic determination of the virtual modifier map for the key based on the actions assigned to the key and the symbol interpretations that match the key. T} .TE .TP 4 1. Map the symbols from the keys in the core keyboard map to groups and symbols on keys in the Xkb keyboard map. The core keyboard mapping is of fixed width, so each key in the core mapping has the same number of symbols associated with it. The Xkb mapping allows a different number of symbols to be associated with each key; those symbols may be divided into a different number of groups (1-4) for each key. For each key, this process therefore involves partitioning the fixed number of symbols from the core mapping into a set of variable-length groups with a variable number of symbols in each group. For example, if the core protocol map is of width five, the partition for one key might result in one group with two symbols and another with three symbols. A different key might result in two groups with two symbols plus a third group with one symbol. The core protocol map requires at least two symbols in each of the first two groups. .TP 4 1a. For each changed key, determine the number of groups represented in the new core keyboard map. This results in a tentative group count for each key in the Xkb map. .TP 4 1b. For each changed key, determine the number of symbols in each of the groups found in step 1a. There is one explicit override control associated with each of the four possible groups for each Xkb key, ExplicitKeyType1 through ExplicitKeyType4. If no explicit override control is set for a group, the number of symbols used for that group from the core map is two. If the explicit override control is set for a group on the key, the number of symbols used for that Xkb group from the core map is the width of the Xkb group with one exception: because of the core protocol requirement for at least two symbols in each of groups one and two, the number of symbols used for groups one and two is the maximum of 2 or the width of the Xkb group. .TP 4 1c. For each changed key, assign the symbols in the core map to the appropriate group on the key. If the total number of symbols required by the Xkb map for a particular key needs more symbols than the core protocol map contains, the additional symbols are taken to be NoSymbol keysyms appended to the end of the core set. If the core map contains more symbols than are needed by the Xkb map, trailing symbols in the core map are discarded. In the absence of an explicit override for group one or two, symbols are assigned in order by group; the first symbols in the core map are assigned to group one, in order, followed by group two, and so on. For example, if the core map contained eight symbols per key, and a particular Xkb map contained 2 symbols for G1 and G2 and three for G3, the symbols would be assigned as (G is group, L is shift level): .nf G1L1 G1L2 G2L1 G2L2 G3L1 G3L2 G3L3 .fi If an explicit override control is set for group one or two, the symbols are taken from the core set in a somewhat different order. The first four symbols from the core set are assigned to G1L1, G1L2, G2L1, G2L2, respectively. If group one requires more symbols, they are taken next, and then any additional symbols needed by group two. Group three and four symbols are taken in complete sequence after group two. For example, a key with four groups and three symbols in each group would take symbols from the core set in the following order: .nf G1L1 G1L2 G2L1 G2L2 G1L3 G2L3 G3L1 G3L2 G3L3 G4L1 G4L2 G4L3 .fi As previously noted, the core protocol map requires at lease two symbols in groups one and two. Because of this, if an explicit override control for an Xkb key is set and group one and / or group two is of width one, it is not possible to generate the symbols taken from the core protocol set and assigned to position G1L2 and / or G2L2. .TP 4 1d. For each group on each changed key, assign a key type appropriate for the symbols in the group. .TP 4 1e. For each changed key, remove any empty or redundant groups. At this point, the groups and their associated symbols have been assigned to the corresponding key definitions in the Xkb map. .TP 4 2. Apply symbol interpretations to modify key operation. This phase is completely skipped if the ExplicitInterpret override control bit is set in the explicit controls mask for the Xkb key (see Explicit Components-Avoiding Automatic Remapping by the Server). .TP 4 2a. For each symbol on each changed key, attempt to match the symbol and modifiers from the Xkb map to a symbol interpretation describing how to generate the symbol. .TP 4 2b. When a match is found in step 2a, apply the symbol interpretation to change the semantics associated with the symbol in the Xkb key map. If no match is found, apply a default interpretation. .LP The symbol interpretations used in step 2 are configurable and may be specified using XkbSymInterpretRec structures referenced by the sym_interpret field of an XkbCompatMapRec. .B Symbol Interpretations - the XkbSymInterpretRec Structure Symbol interpretations are used to guide the X server when it modifies the Xkb keymap in step 2. An initial set of symbol interpretations is loaded by the server when it starts. A client may add new ones using XkbSetCompatMap. Symbol interpretations result in key semantics being set. When a symbol interpretation is applied, the following components of server key event processing may be modified for the particular key involved: .nf Virtual modifier map Auto repeat Key behavior (may be set to XkbKB_Lock) Key action .fi The XkbSymInterpretRec structure specifies a symbol interpretation: .nf typedef struct { KeySym sym; /\&* keysym of interest or NULL */ unsigned char flags; /\&* XkbSI_AutoRepeat, XkbSI_LockingKey */ unsigned char match; /\&* specifies how mods is interpreted */ unsigned char mods; /\&* modifier bits, correspond to eight real modifiers */ unsigned char virtual_mod; /\&* 1 modifier to add to key virtual mod map */ XkbAnyAction act; /\&* action to bind to symbol position on key */ } XkbSymInterpretRec,*XkbSymInterpretPtr; .fi If sym is not NULL, it limits the symbol interpretation to keys on which that particular keysym is selected by the modifiers matching the criteria specified by .I mods and .I match. If .I sym is NULL, the interpretation may be applied to any symbol selected on a key when the modifiers match the criteria specified by .I mods and .I match. .I match must be one of the values shown in Table 2 and specifies how the real modifiers specified in .I mods are to be interpreted. .TS c s s l l l l l lw(3i). Table 2 Symbol Interpretation Match Criteria _ Match Criteria Value Effect _ XkbSI_NoneOf (0) T{ None of the bits that are on in mods can be set, but other bits can be. T} XkbSI_AnyOfOrNone (1) T{ Zero or more of the bits that are on in mods can be set, as well as others. T} XkbSI_AnyOf (2) T{ One or more of the bits that are on in mods can be set, as well as any others. T} XkbSI_AllOf (3) T{ All of the bits that are on in mods must be set, but others may be set as well. T} XkbSI_Exactly (4) T{ All of the bits that are on in mods must be set, and no other bits may be set. T} .TE In addition to the above bits, .I match may contain the XkbSI_LevelOneOnly bit, in which case the modifier match criteria specified by .I mods and .I match applies only if .I sym is in level one of its group; otherwise, .I mods and .I match are ignored and the symbol matches a condition where no modifiers are set. .nf \&#define XkbSI_LevelOneOnly (0x80) /\&* use mods + match only if sym is level 1 */ .fi If no matching symbol interpretation is found, the server uses a default interpretation where: .nf sym = 0 flags = XkbSI_AutoRepeat match = XkbSI_AnyOfOrNone mods = 0 virtual_mod = XkbNoModifier act = SA_NoAction .fi When a matching symbol interpretation is found in step 2a, the interpretation is applied to modify the Xkb map as follows. The .I act field specifies a single action to be bound to the symbol position; any key event that selects the symbol causes the action to be taken. Valid actions are defined in Key Actions. If the Xkb keyboard map for the key does not have its ExplicitVModMap control set, the XkbSI_LevelOneOnly bit and symbol position are examined. If the XkbSI_LevelOneOnly bit is not set in .I match or the symbol is in position G1L1, the .I virtual_mod field is examined. If .I virtual_mod is not XkbNoModifier, .I virtual_mod specifies a single virtual modifier to be added to the virtual modifier map for the key. .I virtual_mod is specified as an index in the range [0..15]. If the matching symbol is in position G1L1 of the key, two bits in the flags field potentially specify additional behavior modifications: .nf \&#define XkbSI_AutoRepeat (1<<0) /\&* key repeats if sym is in position G1L1 */ \&#define XkbSI_LockingKey (1<<1) /\&* set KB_Lock behavior if sym is in psn G1L1 */ .fi If the Xkb keyboard map for the key does not have its ExplicitAutoRepeat control set, its auto repeat behavior is set based on the value of the XkbSI_AutoRepeat bit. If the XkbSI_AutoRepeat bit is set, the auto-repeat behavior of the key is turned on; otherwise, it is turned off. If the Xkb keyboard map for the key does not have its ExplicitBehavior control set, its locking behavior is set based on the value of the XkbSI_LockingKey bit. If XkbSI_LockingKey is set, the key behavior is set to KB_Lock; otherwise, it is turned off. .SH "SEE ALSO" .BR XkbKeyAction (__libmansuffix__), .BR XkbKeyActionEntry (__libmansuffix__), .BR XkbKeyActionsPtr (__libmansuffix__), .BR XkbKeyHasActions (__libmansuffix__), .BR XkbKeyNumActions (__libmansuffix__) libX11-1.8.12/man/xkb/XkbChangeNames.man0000644014310600000120000001450514763154126013204 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbChangeNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbChangeNames \- Change symbolic names in the server .SH SYNOPSIS .HP .B Bool XkbChangeNames .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "which" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to the X server .TP .I which mask of names or map components to be updated .TP .I xkb keyboard description to be updated .SH DESCRIPTION .LP .I XkbChangeNames provides a more flexible method for changing symbolic names than .I XkbSetNames and requires the use of an XkbNameChangesRec structure. .I XkbChangeNames copies any names specified by .I changes from the keyboard description, .I xkb, to the X server specified by .I dpy. XkbChangeNames aborts and returns False if any illegal type names or type shift level names are specified by changes. To change the symbolic names in the server, first modify a local copy of the keyboard description and then use either .I XkbSetNames, or, to save network traffic, use a XkbNameChangesRec structure and call .I XkbChangeNames to download the changes to the server. .I XkbSetNames and .I XkbChangeNames can generate BadAlloc, BadAtom, BadLength, BadMatch, and BadImplementation errors. .SH STRUCTURES .LP The XkbNameChangesRec allows applications to identify small modifications to the symbolic names and effectively reduces the amount of traffic sent to the server: .nf typedef struct _XkbNameChanges { unsigned int changed; /\&* name components that have changed */ unsigned char first_type; /\&* first key type with a new name */ unsigned char num_types; /\&* number of types with new names */ unsigned char first_lvl; /\&* first key type with new level names */ unsigned char num_lvls; /\&* number of key types with new level names */ unsigned char num_aliases; /\&* if key aliases changed, total number of key aliases */ unsigned char num_rg; /\&* if radio groups changed, total number of radio groups */ unsigned char first_key; /\&* first key with a new name */ unsigned char num_keys; /\&* number of keys with new names */ unsigned short changed_vmods; /\&* mask of virtual modifiers for which names have changed */ unsigned long changed_indicators; /\&* mask of indicators for which names were changed */ unsigned char changed_groups; /\&* mask of groups for which names were changed */ } XkbNameChangesRec, *XkbNameChangesPtr .fi The .I changed field specifies the name components that have changed and is the bitwise inclusive OR of the valid names mask bits defined in Table 1. The rest of the fields in the structure specify the ranges that have changed for the various kinds of symbolic names, as shown in Table 2. Xkb provides several functions that work with symbolic names. Each of these functions uses a mask to specify individual fields of the structures described above. These masks and their relationships to the fields in a keyboard description are shown in Table 1. .TS c s s s l l l l. Table 1 Symbolic Names Masks _ Mask Bit Value Keyboard Field Component _ XkbKeycodesNameMask (1<<0) Xkb->names keycodes XkbGeometryNameMask (1<<1) Xkb->names geometry XkbSymbolsNameMask (1<<2) Xkb->names symbols XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols XkbTypesNameMask (1<<4) Xkb->names type XkbCompatNameMask (1<<5) Xkb->names compat XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*] XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*] XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*] XkbGroupNamesMask (1<<12) Xkb->names groups[*] XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg XkbComponentNamesMask (0x3f) Xkb->names keycodes, geometry, symbols, physical symbols, types, and compatibility map XkbAllNamesMask (0x3fff) Xkb->names all name components .TE .TS c s s s l l l l. Table 2 XkbNameChanges Fields _ Mask Fields Component Field _ XkbKeyTypeNamesMask first_type, Xkb->map type[*].name num_types XkbKTLevelNamesMask first_lvl, Xkb->map type[*].lvl_names[*] num_lvls XkbKeyAliasesMask num_aliases Xkb->names key_aliases[*] XkbRGNamesMask num_rg Xkb->names radio_groups[*] XkbKeyNamesMask first_key, Xkb->names keys[*] num_keys XkbVirtualModNamesMask changed_vmods Xkb->names vmods[*] XkbIndicatorNamesMask changed_indicators Xkb->names indicators[*] XkbGroupNamesMask changed_groups Xkb->names groups[*] .TE .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadAtom A name is neither a valid Atom or None .TP 15 .B BadImplementation Invalid reply from server .TP 15 .B BadLength The length of a request is shorter or longer than that required to minimally contain the arguments .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .SH "SEE ALSO" .BR XkbSetNames (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAllocGeomDoodads.man0000644014310600000120000000473314763154126014175 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomDoodads __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomDoodads \- Allocate doodads that are global to a keyboard geometry .SH SYNOPSIS .HP .B Status XkbAllocGeomDoodads .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry for which doodads should be allocated .TP .I num_needed number of new doodads required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomDoodads allocates .I num_needed doodads and adds them to the specified geometry .I geom. No initialization of the doodads is done. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbAllocDeviceInfo.man0000644014310600000120000001064214763154126014017 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocDeviceInfo \- Obtain an XkbDeviceInfoRec structure .SH SYNOPSIS .HP .B XkbDeviceInfoPtr XkbAllocDeviceInfo .BI "(\^unsigned int " "device_spec" "\^," .BI "unsigned int " "n_buttons" "\^," .BI "unsigned int " "sz_leds" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I device_spec device ID with which structure will be used .TP .I n_buttons number of button actions to allocate space for .TP .I sz_leds number of LED feedbacks to allocate space for .SH DESCRIPTION .LP .I XkbAllocDeviceInfo allocates space for an XkbDeviceInfoRec structure and initializes that structure's .I device_spec field with the device ID specified by .I device_spec. If .I n_buttons is nonzero, .I n_buttons XkbActions are linked into the XkbDeviceInfoRec structure and initialized to zero. If .I sz_leds is nonzero, .I sz_leds XkbDeviceLedInfoRec structures are also allocated and linked into the XkbDeviceInfoRec structure. If you request XkbDeviceLedInfoRec structures be allocated using this request, you must initialize them explicitly, by using .BR XkbAddDeviceLedInfo (__libmansuffix__). .SH STRUCTURES .LP Information about X Input Extension devices is transferred between a client program and the Xkb extension in an XkbDeviceInfoRec structure: .nf typedef struct { char * name; /\&* name for device */ Atom type; /\&* name for class of devices */ unsigned short device_spec; /\&* device of interest */ Bool has_own_state; /\&* True=>this device has its own state */ unsigned short supported; /\&* bits indicating supported capabilities */ unsigned short unsupported; /\&* bits indicating unsupported capabilities */ unsigned short num_btns; /\&* number of entries in btn_acts */ XkbAction * btn_acts; /\&* button actions */ unsigned short sz_leds; /\&* total number of entries in LEDs vector */ unsigned short num_leds; /\&* number of valid entries in LEDs vector */ unsigned short dflt_kbd_fb; /\&* input extension ID of default (core kbd) indicator */ unsigned short dflt_led_fb; /\&* input extension ID of default indicator feedback */ XkbDeviceLedInfoPtr leds; /\&* LED descriptions */ } XkbDeviceInfoRec, *XkbDeviceInfoPtr; typedef struct { unsigned short led_class; /\&* class for this LED device*/ unsigned short led_id; /\&* ID for this LED device */ unsigned int phys_indicators; /\&* bits for which LEDs physically present */ unsigned int maps_present; /\&* bits for which LEDs have maps in maps */ unsigned int names_present; /\&* bits for which LEDs are in names */ unsigned int state; /\&* 1 bit => corresponding LED is on */ Atom names[XkbNumIndicators]; /\&* names for LEDs */ XkbIndicatorMapRec maps; /\&* indicator maps for each LED */ } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr; .fi .SH "SEE ALSO" .BR XkbAddDeviceLedInfo (__libmansuffix__) libX11-1.8.12/man/xkb/XkbKeyNumSyms.man0000644014310600000120000000450714763154126013120 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyNumSyms __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyNumSyms \- Returns the total number of keysyms for the key corresponding to .I keycode .SH SYNOPSIS .HP .B int XkbKeyNumSyms .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .SH DESCRIPTION .LP The key width and number of groups associated with a key are used to form a small two-dimensional array of KeySyms for a key. This array may be different sizes for different keys. The array for a single key is stored as a linear list, in row-major order. The arrays for all of the keys are stored in the .I syms field of the client map. There is one row for each group associated with a key and one column for each level. The index corresponding to a given group and shift level is computed as: .nf idx = group_index * key_width + shift_level .fi The .I offset field of the .I key_sym_map entry for a key is used to access the beginning of the array. .I XkbKeyNumSyms returns the total number of keysyms for the key corresponding to .I keycode. libX11-1.8.12/man/xkb/XkbKeyNumGroups.man0000644014310600000120000002650614763154126013447 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyNumGroups __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyNumGroups \- Returns the number of groups of symbols bound to the key corresponding to keycode .SH SYNOPSIS .HP .B int XkbKeyNumGroups .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .SH DESCRIPTION .LP The .I group_info field of an XkbSymMapRec is an encoded value containing the number of groups of symbols bound to the key as well as the specification of the treatment of out-of-range groups. It is legal for a key to have zero groups, in which case it also has zero symbols and all events from that key yield NoSymbol. To obtain the number of groups of symbols bound to the key, use .I XkbKeyNumGroups. To change the number of groups bound to a key, use .I XkbChangeTypesOfKey. To obtain a mask that determines the treatment of out-of-range groups, use .I XkbKeyGroupInfo and .I XkbOutOfRangeGroupInfo. The keyboard controls contain a .I groups_wrap field specifying the handling of illegal groups on a global basis. That is, when the user performs an action causing the effective group to go out of the legal range, the .I groups_wrap field specifies how to normalize the effective keyboard group to a group that is legal for the keyboard as a whole, but there is no guarantee that the normalized group will be within the range of legal groups for any individual key. The per-key .I group_info field specifies how a key treats a legal effective group if the key does not have a type specified for the group of concern. For example, the Enter key usually has just one group defined. If the user performs an action causing the global keyboard group to change to Group2, the .I group_info field for the Enter key describes how to handle this situation. Out-of-range groups for individual keys are mapped to a legal group using the same options as are used for the overall keyboard group. The particular type of mapping used is controlled by the bits set in the .I group_info flag, as shown in Table 1. .bp .TS c s l l l l. Table 1 group_info Range Normalization _ Bits set in group_info Normalization method _ XkbRedirectIntoRange XkbRedirectIntoRange XkbClampIntoRange XkbClampIntoRange none of the above XkbWrapIntoRange .TE .LP .\"--- Chapter 10 The Xkb extension is composed of two parts: a server extension, and a client-side X library extension. This chapter discusses functions used to modify controls effecting the behavior of the server portion of the Xkb extension. X Library Controls discusses functions used to modify controls that affect only the behavior of the client portion of the extension; those controls are known as Library Controls. Xkb contains control features that affect the entire keyboard, known as global keyboard controls. Some of the controls may be selectively enabled and disabled; these controls are known as the .I Boolean Controls. Boolean Controls can be turned on or off under program control and can also be automatically set to an on or off condition when a client program exits. The remaining controls, known as the .I Non-Boolean Controls, are always active. The XkbControlsRec structure describes the current state of most of the global controls and the attributes effecting the behavior of each of these Xkb features. This chapter describes the Xkb controls and how to manipulate them. There are two possible components for each of the Boolean Controls: attributes describing how the control should work, and a state describing whether the behavior as a whole is enabled or disabled. The attributes and state for most of these controls are held in the XkbControlsRec structure. You can manipulate the Xkb controls individually, via convenience functions, or as a whole. To treat them as a group, modify an XkbControlsRec structure to describe all of the changes to be made, and then pass that structure and appropriate flags to an Xkb library function, or use a XkbControlsChangesRec to reduce network traffic. When using a convenience function to manipulate one control individually, you do not use an XkbControlsRec structure directly. The Xkb controls are grouped as shown in Table 2. .ad l .TS c s s l l l lw(2i) l l. Table 2 Xkb Keyboard Controls _ Type of Control Control Name Boolean Control? _ T{ Controls for enabling and \%disabling other controls T} EnabledControls No \^ AutoReset No _ T{ Control for bell behavior T} AudibleBell Boolean _ T{ Controls for repeat key behavior T} PerKeyRepeat No \^ RepeatKeys Boolean \^ DetectableAutorepeat Boolean _ T{ Controls for \%keyboard overlays T} Overlay1 Boolean \^ Overlay2 Boolean _ T{ Controls for using the mouse from the keyboard T} MouseKeys Boolean \^ MouseKeysAccel Boolean _ T{ Controls for better keyboard access by physically impaired persons T} AccessXFeedback Boolean \^ AccessXKeys Boolean \^ AccessXTimeout Boolean \^ BounceKeys Boolean \^ SlowKeys Boolean \^ StickyKeys Boolean _ T{ Controls for general keyboard mapping T} GroupsWrap No \^ IgnoreGroupLock Boolean \^ IgnoreLockMods No \^ InternalMods No _ .TE .ad n .LP The individual categories and controls are described first, together with functions for manipulating them. .SH STRUCTURES .LP The KeySymMapRec structure is defined as follows: .nf #define XkbNumKbdGroups 4 #define XkbMaxKbdGroup (XkbNumKbdGroups-1) typedef struct { /\&* map to keysyms for a single keycode */ unsigned char kt_index[XkbNumKbdGroups]; /\&* key type index for each group */ unsigned char group_info; /\&* # of groups and out of range group handling */ unsigned char width; /\&* max # of shift levels for key */ unsigned short offset; /\&* index to keysym table in syms array */ } XkbSymMapRec, *XkbSymMapPtr; .fi .LP The XkbControlsRec structure is defined as follows: .nf #define XkbMaxLegalKeyCode 255 #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8) typedef struct { unsigned char mk_dflt_btn; /\&* default button for keyboard driven mouse */ unsigned char num_groups; /\&* number of keyboard groups */ unsigned char groups_wrap; /\&* how to wrap out-of-bounds groups */ XkbModsRec internal; /\&* defines server internal modifiers */ XkbModsRec ignore_lock; /\&* modifiers to ignore when checking for grab */ unsigned int enabled_ctrls; /\&* 1 bit => corresponding boolean control enabled */ unsigned short repeat_delay; /\&* ms delay until first repeat */ unsigned short repeat_interval; /\&* ms delay between repeats */ unsigned short slow_keys_delay; /\&* ms minimum time key must be down to be ok */ unsigned short debounce_delay; /\&* ms delay before key reactivated */ unsigned short mk_delay; /\&* ms delay to second mouse motion event */ unsigned short mk_interval; /\&* ms delay between repeat mouse events */ unsigned short mk_time_to_max; /\&* # intervals until constant mouse move */ unsigned short mk_max_speed; /\&* multiplier for maximum mouse speed */ short mk_curve; /\&* determines mouse move curve type */ unsigned short ax_options; /\&* 1 bit => Access X option enabled */ unsigned short ax_timeout; /\&* seconds until Access X disabled */ unsigned short axt_opts_mask; /\&* 1 bit => options to reset on Access X timeout */ unsigned short axt_opts_values; /\&* 1 bit => turn option on, 0=> off */ unsigned int axt_ctrls_mask; /\&* which bits in enabled_ctrls to modify */ unsigned int axt_ctrls_values; /\&* values for new bits in enabled_ctrls */ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\&* per key auto repeat */ } XkbControlsRec, *XkbControlsPtr; .fi .nf The XkbControlsRec structure is defined as follows: #define XkbMaxLegalKeyCode 255 #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8) typedef struct { unsigned char mk_dflt_btn; /\&* default button for keyboard driven mouse */ unsigned char num_groups; /\&* number of keyboard groups */ unsigned char groups_wrap; /\&* how to wrap out-of-bounds groups */ XkbModsRec internal; /\&* defines server internal modifiers */ XkbModsRec ignore_lock; /\&* modifiers to ignore when checking for grab */ unsigned int enabled_ctrls; /\&* 1 bit => corresponding booleancontrol enabled */ unsigned short repeat_delay; /\&* ms delay until first repeat */ unsigned short repeat_interval; /\&* ms delay between repeats */ unsigned short slow_keys_delay; /\&* ms minimum time key must be down to be ok */ unsigned short debounce_delay; /\&* ms delay before key reactivated */ unsigned short mk_delay; /\&* ms delay to second mouse motion event */ unsigned short mk_interval; /\&* ms delay between repeat mouse events */ unsigned short mk_time_to_max; /\&* # intervals until constant mouse move */ unsigned short mk_max_speed; /\&* multiplier for maximum mouse speed */ short mk_curve; /\&* determines mouse move curve type */ unsigned short ax_options; /\&* 1 bit => Access X option enabled */ unsigned short ax_timeout; /\&* seconds until Access X disabled */ unsigned short axt_opts_mask; /\&* 1 bit => options to reset on Access X timeout */ unsigned short axt_opts_values; /\&* 1 bit => turn option on, 0=> off */ unsigned int axt_ctrls_mask; /\&* which bits in enabled_ctrls to modify */ unsigned int axt_ctrls_values; /\&* values for new bits in enabled_ctrls */ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\&* per key auto repeat */ } XkbControlsRec, *XkbControlsPtr; .fi .SH "SEE ALSO" .BR XkbChangeTypesOfKey (__libmansuffix__), .BR XkbKeyGroupInfo (__libmansuffix__), .BR XkbOutOfRangeGroupInfo. (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetDeviceButtonActions.man0000644014310600000120000000703714763154126015411 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetDeviceButtonActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetDeviceButtonActions \- Query the button actions associated with an X Input Extension device .SH SYNOPSIS .HP .B Status XkbGetDeviceButtonActions .BI "(\^Display *" "dpy" "\^," .BI "XkbDeviceInfoPtr " "device_info" "\^," .BI "Bool " "all_buttons" "\^," .BI "unsigned int " "first_button" "\^," .BI "unsigned int " "num_buttons" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I device_info structure to update with results .TP .I all_buttons True => get information for all buttons .TP .I first_button number of first button for which info is desired .TP .I num_buttons number of buttons for which info is desired .SH DESCRIPTION .LP .I XkbGetDeviceButtonActions queries the server for the desired button information for the device indicated by the .I device_spec field of .I device_info and waits for a reply. If successful, .I XkbGetDeviceButtonActions backfills the button actions .I (btn_acts field of .I device_info) for only the requested buttons, updates the .I name, type, supported, and .I unsupported fields, and returns Success. .I all_buttons, first_button and .I num_buttons specify the device buttons for which actions should be returned. Setting .I all_buttons to True requests actions for all device buttons; if .I all_buttons is False, .I first_button and .I num_buttons specify a range of buttons for which actions are requested. If a compatible version of Xkb is not available in the server or the Xkb extension has not been properly initialized, .I XkbGetDeviceButtonActions returns BadAccess. If allocation errors occur, a BadAlloc status is returned. If the specified device .I (device_info->device_spec) is invalid, a BadKeyboard status is returned. If the device has no buttons, a BadMatch status is returned. If .I first_button and .I num_buttons specify illegal buttons, a BadValue status is returned. .SH DIAGNOSTICS .TP 15 .B BadAccess The Xkb extension has not been properly initialized .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadKeyboard The device specified was not a valid core or input extension device .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbActionCtrls.man0000644014310600000120000001021014763154126013245 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbActionCtrls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbActionCtrls \- Returns the ctrls fields of act converted to an unsigned int .SH SYNOPSIS .HP .B unsigned int XkbActionCtrls .BI "(\^XkbCtrlsAction " "act" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action from which to extract controls .SH DESCRIPTION .LP Actions associated with the XkbCtrlsAction structure change the state of the boolean controls. The .I type field can have any one of the values shown in Table 1. .TS c s l l l lw(4i). Table 1 Controls Action Types _ Type Effect _ XkbSA_SetControls T{ A key press enables any boolean controls specified in the ctrls fields that were not already enabled at the time of the key press. A key release disables any controls enabled by the key press. This action can cause XkbControlsNotify events. T} XkbSA_LockControls T{ If the XkbSA_LockNoLock bit is not set in the flags field, a key press enables any controls specified in the ctrls fields that were not already enabled at the time of the key press. .br If the XkbSA_LockNoUnlock bit is not set in the flags field, a key release disables any controls specified in the ctrls fields that were not already disabled at the time of the key press. .br This action can cause XkbControlsNotify events. T} .TE The .I flags field is composed of the bitwise inclusive OR of the masks shown in Table 2. .TS c s l l l lw(4i). Table 2 Control Action Flags _ Flag Meaning _ XkbSA_LockNoLock T{ If set, and the action type is XkbSA_LockControls, the server only disables controls. T} XkbSA_LockNoUnlock T{ If set, and the action type is XkbSA_LockControls, the server only enables controls. T} .TE The XkbSA_SetControls action implements a key that enables a boolean control when pressed and disables it when released. The XkbSA_LockControls action is used to implement a key that toggles the state of a boolean control each time it is pressed and released. The XkbSA_LockNoLock and XkbSA_LockNoUnlock flags allow modifying the toggling behavior to only unlock or only lock the boolean control. The .I ctrls0, ctrls1, ctrls2, and .I ctrls3 fields represent the boolean controls in the .I enabled_ctrls field of the controls structure. Xkb macros, to convert between the two formats. .I XkbActionCtrls returns the .I ctrls fields of .I act converted to an unsigned int. .SH STRUCTURES .LP .nf typedef struct _XkbCtrlsAction { unsigned char type; /\&* XkbSA_SetControls, XkbSA_LockControls */ unsigned char flags; /\&* with type, controls enabling and disabling of controls */ unsigned char ctrls3; /\&* ctrls0 through ctrls3 represent the boolean controls */ unsigned char ctrls2; /\&* ctrls0 through ctrls3 represent the boolean controls */ unsigned char ctrls1; /\&* ctrls0 through ctrls3 represent the boolean controls */ unsigned char ctrls0; /\&* ctrls0 through ctrls3 represent the boolean controls */ } XkbCtrlsAction; .fi libX11-1.8.12/man/xkb/XkbAllocGeometry.man0000644014310600000120000000567514763154126013611 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeometry \- Allocate an entire geometry .SH SYNOPSIS .HP .B Status XkbAllocGeometry .BI "(\^XkbDescPtr " "xkb" "\^," .BI "XkbGeometrySizesPtr " "sizes" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description for which geometry is to be allocated .TP .I sizes initial sizes for all geometry components .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeometry allocates a keyboard geometry and adds it to the keyboard description specified by .I xkb. The keyboard description should be obtained via the .I XkbGetKeyboard or .I XkbAllocKeyboard functions. The .I sizes parameter specifies the number of elements to be reserved for the subcomponents of the keyboard geometry and can be zero or more. These subcomponents include the .I properties, colors, shapes, sections, and doodads. To free an entire geometry, use .I XkbFreeGeometry. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbAllocKeyboard (__libmansuffix__), .BR XkbFreeGeometry (__libmansuffix__), .BR XkbGetKeyboard (__libmansuffix__) libX11-1.8.12/man/xkb/XkbResizeDeviceButtonActions.man0000644014310600000120000000742514763154126016134 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbResizeDeviceButtonActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbResizeDeviceButtonActions \- Allocate additional space for button actions in an XkbDeviceInfoRec structure .SH SYNOPSIS .HP .B Status XkbResizeDeviceButtonActions .BI "(\^XkbDeviceInfoPtr " "device_info" "\^," .BI "unsigned int " "new_total" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I device_info structure in which to allocate button actions .TP .I new_total new total number of button actions needed .SH DESCRIPTION .LP .I XkbResizeDeviceButtonActions reallocates space, if necessary, to make sure there is room for a total of .I new_total button actions in the .I device_info structure. Any new entries allocated are zeroed. If successful, .I XkbResizeDeviceButtonActions returns Success. If .I new_total is zero, all button actions are deleted, .I device_info->num_btns is set to zero, and .I device_info->btn_acts is set to NULL. If .I device_info is invalid or .I new_total is greater than 255, BadValue is returned. If a memory allocation failure occurs, a BadAlloc is returned. To free an XkbDeviceInfoRec structure, use .I XkbFreeDeviceInfo. .SH STRUCTURES .LP Information about X Input Extension devices is transferred between a client program and the Xkb extension in an XkbDeviceInfoRec structure: .nf typedef struct { char * name; /\&* name for device */ Atom type; /\&* name for class of devices */ unsigned short device_spec; /\&* device of interest */ Bool has_own_state; /\&* True=>this device has its own state */ unsigned short supported; /\&* bits indicating supported capabilities */ unsigned short unsupported; /\&* bits indicating unsupported capabilities */ unsigned short num_btns; /\&* number of entries in btn_acts */ XkbAction * btn_acts; /\&* button actions */ unsigned short sz_leds; /\&* total number of entries in LEDs vector */ unsigned short num_leds; /\&* number of valid entries in LEDs vector */ unsigned short dflt_kbd_fb; /\&* input extension ID of default (core kbd) indicator */ unsigned short dflt_led_fb; /\&* input extension ID of default indicator feedback */ XkbDeviceLedInfoPtr leds; /\&* LED descriptions */ } XkbDeviceInfoRec, *XkbDeviceInfoPtr; .fi .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbFreeDeviceInfo (__libmansuffix__) libX11-1.8.12/man/xkb/XkbFreeGeomKeyAliases.man0000644014310600000120000000544514763154126014502 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomKeyAliases __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomKeyAliases \- Free geometry key aliases .SH SYNOPSIS .HP .B void XkbFreeGeomKeyAliases .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "int " "first" "\^," .BI "int " "count" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry in which key aliases should be freed .TP .I first first key alias to be freed .TP .I count number of key aliases to be freed .TP .I free_all True => all key aliases are freed .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. If .I free_all is True, all aliases in the top level of the specified geometry .I geom are freed regardless of the value of .I first or .I count. Otherwise, .I count aliases in .I geom are freed beginning with the one specified by .I first. .SH "RETURN VALUES" .TP 15 Success The XkbFreeGeomKeyAliases function returns Success if there are no allocation errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbSelectEventDetails.man0000644014310600000120000001257614763154126014570 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSelectEventDetails __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSelectEventDetails \- Selects or deselects for a specific Xkb event and optionally places conditions on when events of that type are reported to your client .SH SYNOPSIS .HP .B Bool XkbSelectEventDetails .BI "(\^Display *" "display" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "event_type" "\^," .BI "unsigned long int " "bits_to_change" "\^," .BI "unsigned long int " "values_for_bits" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I event_type Xkb event type of interest .TP .I bits_to_change determines events to be selected / deselected .TP .I values_for_bits 1=>select, 0->deselect; for events in bits_to_change .SH DESCRIPTION .LP Xkb events are selected using an event mask, much the same as normal core X events are selected. However, unlike selecting core X events, where you must specify the selection status (on or off) for all possible event types whenever you wish to change the selection criteria for any one event, Xkb allows you to restrict the specification to only the event types you wish to change. This means that you do not need to remember the event selection values for all possible types each time you want to change one of them. Many Xkb event types are generated under several different circumstances. When selecting to receive an Xkb event, you may specify either that you want it delivered under all circumstances, or that you want it delivered only for a subset of the possible circumstances. You can also deselect an event type that was previously selected for, using the same granularity. Xkb provides two functions to select and deselect delivery of Xkb events. .I XkbSelectEvents allows you to select or deselect delivery of more than one Xkb event type at once. Events selected using .I XkbSelectEvents are delivered to your program under all circumstances that generate the events. To restrict delivery of an event to a subset of the conditions under which it occurs, use .I XkbSelectEventDetails. XkbSelectEventDetails only allows you to change the selection conditions for a single event at a time, but it provides a means of fine-tuning the conditions under which the event is delivered. To select or deselect for a specific Xkb event and optionally place conditions on when events of that type are reported to your client, use .I XkbSelectEventDetails. This allows you to exercise a finer granularity of control over delivery of Xkb events with .I XkbSelectEvents. While .I XkbSelectEvents allows multiple events to be selected, .I XkbSelectEventDetails changes the selection criteria for a single type of Xkb event. The interpretation of the .I bits_to_change and .I values_for_bits masks depends on the event type in question. .I XkbSelectEventDetails changes the Xkb event selection mask for the keyboard specified by .I device_spec and the Xkb event specified by .I event_type. To turn on event selection for an event detail, set the bit for the detail in the .I bits_to_change parameter and set the corresponding bit in the .I values_for_bits parameter. To turn off event detail selection for a detail, set the bit for the detail in the .I bits_to_change parameter and do not set the corresponding bit in the .I values_for_bits parameter. If an invalid event type is specified, a BadValue protocol error results. If a bit is not set in the .I bits_to_change parameter, but the corresponding bit is set in the .I values_for_bits parameter, a BadMatch protocol error results. If an undefined bit is set in either the .I bits_to_change or the .I values_for_bits parameter, a BadValue protocol error results. For each type of Xkb event, the legal event details that you can specify in the .I XkbSelectEventDetails request are listed in the chapters that describe each event in detail. .SH DIAGNOSTICS .TP 15 .SM BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .SM BadValue An argument is out of range .SH "SEE ALSO" .BR XkbSelectEvents (__libmansuffix__), .BR XkbUseCoreKbd (__libmansuffix__) libX11-1.8.12/man/xkb/XkbKeyActionsPtr.man0000644014310600000120000001113714763154126013570 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyActionsPtr __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyActionsPtr \- Returns a pointer to the two-dimensional array of key actions associated with the key corresponding to keycode .SH SYNOPSIS .HP .B XkbKeyActionPtr XkbKeyActionsPtr .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .SH DESCRIPTION .LP A key action defines the effect key presses and releases have on the internal state of the server. For example, the expected key action associated with pressing the Shift key is to set the Shift modifier. There is zero or one key action associated with each keysym bound to each key. Just as the entire list of key symbols for the keyboard mapping is held in the .I syms field of the client map, the entire list of key actions for the keyboard mapping is held in the .I acts array of the server map. The total size of .I acts is specified by .I size_acts, and the number of entries is specified by .I num_acts. The .I key_acts array, indexed by keycode, describes the actions associated with a key. The .I key_acts array has .I min_key_code unused entries at the start to allow direct indexing using a keycode. If a .I key_acts entry is zero, it means the key does not have any actions associated with it. If an entry is not zero, the entry represents an index into the .I acts field of the server map, much as the .I offset field of a KeySymMapRec structure is an index into the .I syms field of the client map. The reason the .I acts field is a linear list of XkbActions is to reduce the memory consumption associated with a keymap. Because Xkb allows individual keys to have multiple shift levels and a different number of groups per key, a single two-dimensional array of KeySyms would potentially be very large and sparse. Instead, Xkb provides a small two-dimensional array of XkbActions for each key. To store all of these individual arrays, Xkb concatenates each array together in the .I acts field of the server map. The key action structures consist only of fields of type char or unsigned char. This is done to optimize data transfer when the server sends bytes over the wire. If the fields are anything but bytes, the server has to sift through all of the actions and swap any nonbyte fields. Because they consist of nothing but bytes, it can just copy them out. .I XkbKeyActionsPtr returns a pointer to the two-dimensional array of key actions associated with the key corresponding to .I keycode. Use .I XkbKeyActionsPtr only if the key actually has some actions associated with it, that is, .I XkbKeyNumActions (xkb, keycode) returns something greater than zero. .SH STRUCTURES .LP The KeySymMapRec structure is defined as follows: .nf #define XkbNumKbdGroups 4 #define XkbMaxKbdGroup (XkbNumKbdGroups-1) typedef struct { /\&* map to keysyms for a single keycode */ unsigned char kt_index[XkbNumKbdGroups]; /\&* key type index for each group */ unsigned char group_info; /\&* # of groups and out of range group handling */ unsigned char width; /\&* max # of shift levels for key */ unsigned short offset; /\&* index to keysym table in syms array */ } XkbSymMapRec, *XkbSymMapPtr; .fi .SH "SEE ALSO" .BR XkbKeyNumActions (__libmansuffix__) libX11-1.8.12/man/xkb/XkbFreeServerMap.man0000644014310600000120000001376314763154126013546 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeServerMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeServerMap \- Free memory used by the server member of an XkbDescRec structure .SH SYNOPSIS .HP .B void XkbFreeServerMap .BI "(\^XkbDescPtr " "xkb" "\^," .BI "unsigned int " "which" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description containing server map to free .TP .I which mask identifying components of map to free .TP .I free_all True => free all server map components and server itself .SH DESCRIPTION .LP The .I XkbFreeServerMap function frees the specified components of server map in the XkbDescRec structure specified by the .I xkb parameter and sets the corresponding structure component values to NULL. The .I which parameter specifies a combination of the server map masks and is a bitwise inclusive OR of the masks listed in Table 1. If .I free_all is True, .I which is ignored and .I XkbFreeServerMap frees every non-NULL structure component in the server map, frees the XkbServerMapRec structure referenced by the .I server member of the .I xkb parameter, and sets the .I server member to NULL. .TS c s l l l lw(4i). Table 1 XkbAllocServerMap Masks _ Mask Effect _ XkbExplicitComponentsMask T{ The min_key_code and max_key_code fields of the xkb parameter are used to allocate the explicit field of the server map. T} .sp XkbKeyActionsMask T{ The min_key_code and max_key_code fields of the xkb parameter are used to allocate the key_acts field of the server map. The count_acts parameter is used to allocate the acts field of the server map. T} .sp XkbKeyBehaviorsMask T{ The min_key_code and max_key_code fields of the xkb parameter are used to allocate the behaviors field of the server map. T} .sp XkbVirtualModMapMask T{ The min_key_code and max_key_code fields of the xkb parameter are used to allocate the vmodmap field of the server map. T} .TE .SH STRUCTURES .LP The complete description of an Xkb keyboard is given by an XkbDescRec. The component structures in the XkbDescRec represent the major Xkb components. .nf typedef struct { struct _XDisplay * display; /\&* connection to X server */ unsigned short flags; /\&* private to Xkb, do not modify */ unsigned short device_spec; /\&* device of interest */ KeyCode min_key_code; /\&* minimum keycode for device */ KeyCode max_key_code; /\&* maximum keycode for device */ XkbControlsPtr ctrls; /\&* controls */ XkbServerMapPtr server; /\&* server keymap */ XkbClientMapPtr map; /\&* client keymap */ XkbIndicatorPtr indicators; /\&* indicator map */ XkbNamesPtr names; /\&* names for all components */ XkbCompatMapPtr compat; /\&* compatibility map */ XkbGeometryPtr geom; /\&* physical geometry of keyboard */ } XkbDescRec, *XkbDescPtr; .fi The .I display field points to an X display structure. The .I flags field is private to the library: modifying .I flags may yield unpredictable results. The .I device_spec field specifies the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which specifies the core keyboard device. The .I min_key_code and .I max_key_code fields specify the least and greatest keycode that can be returned by the keyboard. Each structure component has a corresponding mask bit that is used in function calls to indicate that the structure should be manipulated in some manner, such as allocating it or freeing it. These masks and their relationships to the fields in the XkbDescRec are shown in Table 2. .TS c s s l l l l l l. Table 2 Mask Bits for XkbDescRec _ Mask Bit XkbDescRec Field Value _ XkbControlsMask ctrls (1L<<0) XkbServerMapMask server (1L<<1) XkbIClientMapMask map (1L<<2) XkbIndicatorMapMask indicators (1L<<3) XkbNamesMask names (1L<<4) XkbCompatMapMask compat (1L<<5) XkbGeometryMask geom (1L<<6) XkbAllComponentsMask All Fields (0x7f) .TE The Xkb server map contains the information the server needs to interpret key events and is of type XkbServerMapRec: .nf \&#define XkbNumVirtualMods 16 typedef struct { /\&* Server Map */ unsigned short num_acts; /\&* # of occupied entries in acts */ unsigned short size_acts; /\&* # of entries in acts */ XkbAction * acts; /\&* linear 2d tables of key actions, 1 per keycode */ XkbBehavior * behaviors; /\&* key behaviors,1 per keycode */ unsigned short * key_acts; /\&* index into acts, 1 per keycode */ unsigned char * explicit; /\&* explicit overrides of core remapping, 1 per key */ unsigned char vmods[XkbNumVirtualMods]; /\&* real mods bound to virtual mods */ unsigned short * vmodmap; /\&* virtual mods bound to key, 1 per keycode*/ } XkbServerMapRec, *XkbServerMapPtr; .fi libX11-1.8.12/man/xkb/XkbGetNamedIndicator.man0000644014310600000120000001102614763154126014347 .\" Copyright (c) 1999, 2017, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetNamedIndicator __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetNamedIndicator \- Look up the indicator map and other information for an indicator by name .SH SYNOPSIS .HP .B Bool XkbGetNamedDeviceIndicator .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "dev_spec" "\^," .BI "unsigned int " "led_class" "\^," .BI "unsigned int " "led_id" "\^," .BI "Atom " "name" "\^," .BI "int *" "ndx_rtrn" "\^," .BI "Bool *" "state_rtrn" "\^," .BI "XkbIndicatorMapPtr " "map_rtrn" "\^," .BI "Bool *" "real_rtrn" "\^);" .HP .B Bool XkbGetNamedIndicator .BI "(\^Display *" "dpy" "\^," .BI "Atom " "name" "\^," .BI "int *" "ndx_rtrn" "\^," .BI "Bool *" "state_rtrn" "\^," .BI "XkbIndicatorMapPtr " "map_rtrn" "\^," .BI "Bool *" "real_rtrn" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to the X server .TP .I dev_spec keyboard device ID, or XkbUseCoreKbd .TP .I led_class feedback class, or XkbDfltXIClass .TP .I led_id feedback ID, or XkbDfltXIId .TP .I name name of the indicator to be retrieved .TP .I ndx_rtrn backfilled with the index of the retrieved indicator .TP .I state_rtrn backfilled with the current state of the retrieved indicator .TP .I map_rtrn backfilled with the mapping for the retrieved indicator .TP .I real_rtrn backfilled with True if the named indicator is real (physical) .SH DESCRIPTION .LP Xkb also allows applications to refer to indicators by name. Use .I XkbGetNames to get the indicator names. Using names eliminates the need for hard-coding bitmask values for particular keyboards. For example, instead of using vendor-specific constants such as WSKBLed_ScrollLock mask on Digital workstations or XLED_SCROLL_LOCK on Sun workstations, you can instead use .I XkbGetNamedDeviceIndicator to look up information on the indicator named "Scroll Lock." If the device specified by .I device_spec has an indicator named .IR name ", " XkbGetNamedDeviceIndicator returns True and populates the rest of the parameters with information about the indicator. Otherwise, .I XkbGetNamedDeviceIndicator returns False. The .I ndx_rtrn field returns the zero-based index of the named indicator. This index is the bit position to use in any function call that requires a mask of indicator bits, as well as the indicator's index into the XkbIndicatorRec array of indicator maps. .I state_rtrn returns the current state of the named indicator (True = on, False = off). .I map_rtrn returns the indicator map for the named indicator. In addition, if the indicator is mapped to a physical LED, the .I real_rtrn parameter is set to True. Each of the " .I _rtrn " arguments is optional; you can pass NULL for any unneeded " .I _rtrn " arguments. .LP .I XkbGetNamedIndicator is a convenience function that calls .I XkbGetNamedDeviceIndicator with a .I device_spec of .BR XkbUseCoreKbd , a .I led_class of .BR XkbDfltXIClass , and a .I led_id of .BR XkbDfltXIId . It returns the return value from .IR XkbGetNamedDeviceIndicator . .SH "RETURN VALUES" .TP 15 True The .IR XkbGetNamedIndicator " and " XkbGetNamedDeviceIndicator functions return True if the device specified by .I device_spec has an indicator named .IR name . .TP 15 False The .IR XkbGetNamedIndicator " and " XkbGetNamedDeviceIndicator functions return False if the device specified by .I device_spec does not have an indicator named .IR name . .SH "SEE ALSO" .BR XkbGetNames (__libmansuffix__) libX11-1.8.12/man/xkb/XkbSetDetectableAutoRepeat.man0000644014310600000120000001035414763154126015533 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetDetectableAutoRepeat __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetDetectableAutoRepeat \- Sets DetectableAutoRepeat .SH SYNOPSIS .HP .B Bool XkbSetDetectableAutoRepeat .BI "(\^Display *" "display" "\^," .BI "Bool " "detectable" "\^," .BI "Bool *" "supported_rtrn" "\^);" .SH ARGUMENTS .TP .I display connection to X server .TP .I detectable True => set DetectableAutoRepeat .TP .I supported_rtrn backfilled True if DetectableAutoRepeat supported .SH DESCRIPTION .LP Auto-repeat is the generation of multiple key events by a keyboard when the user presses a key and holds it down. Keyboard hardware and device-dependent X server software often implement auto-repeat by generating multiple KeyPress events with no intervening KeyRelease event. The standard behavior of the X server is to generate a KeyRelease event for every KeyPress event. If the keyboard hardware and device-dependent software of the X server implement auto-repeat by generating multiple KeyPress events, the device-independent part of the X server by default synthetically generates a KeyRelease event after each KeyPress event. This provides predictable behavior for X clients, but does not allow those clients to detect the fact that a key is auto-repeating. Xkb allows clients to request .I detectable auto-repeat. If a client requests and the server supports DetectableAutoRepeat, Xkb generates KeyRelease events only when the key is physically released. If DetectableAutoRepeat is not supported or has not been requested, the server synthesizes a KeyRelease event for each repeating KeyPress event it generates. DetectableAutoRepeat, unlike other controls, is not contained in the XkbControlsRec structure, nor can it be enabled or disabled via the EnabledControls control. Instead, query and set DetectableAutoRepeat using .I XkbGetDetectableAutoRepeat and .I XkbSetDetectableAutoRepeat. DetectableAutoRepeat is a condition that applies to all keyboard devices for a client's connection to a given X server; it cannot be selectively set for some devices and not for others. For this reason, none of the Xkb library functions involving DetectableAutoRepeat involve a device specifier. This request affects all keyboard activity for the requesting client only; other clients still see the expected nondetectable auto-repeat behavior, unless they have requested otherwise. .I XkbSetDetectableAutoRepeat sends a request to the server to set DetectableAutoRepeat on for the current client if .I detectable is True, and off if .I detectable is False; it then waits for a reply. If .I supported_rtrn is not NULL, .I XkbSetDetectableAutoRepeat backfills .I supported_rtrn with True if the server supports DetectableAutoRepeat, and False if it does not. .I XkbSetDetectableAutoRepeat returns the current state of DetectableAutoRepeat for the requesting client: True if DetectableAutoRepeat is set, and False otherwise. .SH "RETURN VALUES" .TP 15 True The .I XkbSetDetectableAutoRepeat function returns True if DetectableAutoRepeat is set. .TP 15 False The .I XkbSetDetectableAutoRepeat function returns False if DetectableAutoRepeat is not set. libX11-1.8.12/man/xkb/XkbKeyHasActions.man0000644014310600000120000001120014763154126013525 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyHasActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyHasActions \- Determines if the key corresponding to .I keycode has any actions associated with it .SH SYNOPSIS .HP .B int XkbKeyHasActions .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .SH DESCRIPTION .LP A key action defines the effect key presses and releases have on the internal state of the server. For example, the expected key action associated with pressing the Shift key is to set the Shift modifier. There is zero or one key action associated with each keysym bound to each key. Just as the entire list of key symbols for the keyboard mapping is held in the .I syms field of the client map, the entire list of key actions for the keyboard mapping is held in the .I acts array of the server map. The total size of .I acts is specified by .I size_acts, and the number of entries is specified by .I num_acts. The .I key_acts array, indexed by keycode, describes the actions associated with a key. The .I key_acts array has .I min_key_code unused entries at the start to allow direct indexing using a keycode. If a .I key_acts entry is zero, it means the key does not have any actions associated with it. If an entry is not zero, the entry represents an index into the .I acts field of the server map, much as the .I offset field of a KeySymMapRec structure is an index into the .I syms field of the client map. The reason the .I acts field is a linear list of XkbActions is to reduce the memory consumption associated with a keymap. Because Xkb allows individual keys to have multiple shift levels and a different number of groups per key, a single two-dimensional array of KeySyms would potentially be very large and sparse. Instead, Xkb provides a small two-dimensional array of XkbActions for each key. To store all of these individual arrays, Xkb concatenates each array together in the .I acts field of the server map. The key action structures consist only of fields of type char or unsigned char. This is done to optimize data transfer when the server sends bytes over the wire. If the fields are anything but bytes, the server has to sift through all of the actions and swap any nonbyte fields. Because they consist of nothing but bytes, it can just copy them out. .I XkbKeyHasActions returns True if the key corresponding to .I keycode has any actions associated with it; otherwise, it returns False. .SH "RETURN VALUES" .TP 15 True The .I XkbKeyHasActions function will return True if the key corresponding to .I keycode has any actions associated with it. .TP 15 False The .I XkbKeyHasActions function will return False if the key corresponding to .I keycode does not have any actions associated with it. .SH STRUCTURES .LP The KeySymMapRec structure is defined as follows: .nf #define XkbNumKbdGroups 4 #define XkbMaxKbdGroup (XkbNumKbdGroups-1) typedef struct { /\&* map to keysyms for a single keycode */ unsigned char kt_index[XkbNumKbdGroups]; /\&* key type index for each group */ unsigned char group_info; /\&* # of groups and out of range group handling */ unsigned char width; /\&* max # of shift levels for key */ unsigned short offset; /\&* index to keysym table in syms array */ } XkbSymMapRec, *XkbSymMapPtr; .fi libX11-1.8.12/man/xkb/XkbLibraryVersion.man0000644014310600000120000000725114763154126014005 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbLibraryVersion __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbLibraryVersion \- Determines the compatibility of a library at runtime. .SH SYNOPSIS .HP .B Bool XkbLibraryVersion .BI "(\^int *" "lib_major_in_out" "\^," .BI "int *" "lib_minor_in_out" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I lib_major_in_out Specifies and returns the major Xkb library version. .TP .I lib_minor_in_out Specifies and returns the minor Xkb library version. .SH DESCRIPTION .LP If an application is dynamically linked, both the X server and the client-side X library must contain the Xkb extension in order for the client to use the Xkb extension capabilities. Therefore a dynamically linked application must check both the library and the server for compatibility before using Xkb function calls. A properly written program must check for compatibility between the version of the Xkb library that is dynamically loaded and the one used when the application was built. It must then check the server version for compatibility with the version of Xkb in the library. If your application is statically linked, you must still check for server compatibility and may check library compatibility. (It is possible to compile against one set of header files and link against a different, incompatible, version of the library, although this should not normally occur.) Pass the symbolic value XkbMajorVersion in .I lib_major_in_out and XkbMinorVersion in .I lib_minor_in_out. These arguments represent the version of the library used at compile time. The .I XkbLibraryVersion function backfills the major and minor version numbers of the library used at run time in .I lib_major_in_out and .I lib_minor_in_out. If the versions of the compile time and run time libraries are compatible, .I XkbLibraryVersion returns True, otherwise, it returns False. In addition, in order to use the Xkb extension, you must ensure that the extension is present in the server and that the server supports the version of the extension expected by the client. Use .I XkbQueryExtension to do this, as described in the next section. .SH "RETURN VALUES" .TP 15 True The .I XkbLibraryVersion returns True if the versions of the compile time and run time libraries are compatible. .TP 15 False The .I XkbLibraryVersion returns False if the versions of the compile time and run time libraries are not compatible. .SH "SEE ALSO" .BR XkbMajorVersion (__libmansuffix__), .BR XkbMinorVersion (__libmansuffix__), .BR XkbQueryExtension (__libmansuffix__) libX11-1.8.12/man/xkb/XkbBellEvent.man0000644014310600000120000002432414763154126012713 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbBellEvent __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbBellEvent \- Provides a function that initiates a bell event for the keyboard without ringing the bell .SH SYNOPSIS .HP .B Bool XkbBellEvent .BI "(\^Display *" "display" "\^," .BI "Window " "window" "\^," .BI "int " "percent" "\^," .BI "Atom " "name" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I window the event window, or None .TP .I percent relative volume, which can range from -100 to 100 inclusive .TP .I name a bell name, or NULL .SH DESCRIPTION .LP The core X protocol allows only applications to explicitly sound the system bell with a given duration, pitch, and volume. Xkb extends this capability by allowing clients to attach symbolic names to bells, disable audible bells, and receive an event whenever the keyboard bell is rung. For the purposes of this document, the .I audible bell is defined to be the system bell, or the default keyboard bell, as opposed to any other audible sound generated elsewhere in the system. You can ask to receive XkbBellNotify events when any client rings any one of the following: .IP \(bu 5 The default bell .IP \(bu 5 Any bell on an input device that can be specified by a bell_class and bell_id pair .IP \(bu 5 Any bell specified only by an arbitrary name. (This is, from the server's point of view, merely a name, and not connected with any physical sound-generating device. Some client application must generate the sound, or visual feedback, if any, that is associated with the name.) You can also ask to receive XkbBellNotify events when the server rings the default bell or if any client has requested events only (without the bell sounding) for any of the bell types previously listed. You can disable audible bells on a global basis. For example, a client that replaces the keyboard bell with some other audible cue might want to turn off the AudibleBell control to prevent the server from also generating a sound and avoid cacophony. If you disable audible bells and request to receive XkbBellNotify events, you can generate feedback different from the default bell. You can, however, override the AudibleBell control by calling one of the functions that force the ringing of a bell in spite of the setting of the AudibleBell control - .I XkbForceDeviceBell or .I XkbForceBell. In this case the server does not generate a bell event. Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeating, Xkb can provide feedback for the controls by using special beep codes. The AccessXFeedback control is used to configure the specific types of operations that generate feedback. Bell Names You can associate a name to an act of ringing a bell by converting the name to an Atom and then using this name when you call the functions listed in this chapter. If an event is generated as a result, the name is then passed to all other clients interested in receiving XkbBellNotify events. Note that these are arbitrary names and that there is no binding to any sounds. Any sounds or other effects (such as visual bells on the screen) must be generated by a client application upon receipt of the bell event containing the name. There is no default name for the default keyboard bell. The server does generate some predefined bells for the AccessX controls. These named bells are shown in Table 1; the name is included in any bell event sent to clients that have requested to receive XkbBellNotify events. .TS c s l l lW(4i) l. Table 1 Predefined Bells _ Action Named Bell _ Indicator turned on AX_IndicatorOn Indicator turned off AX_IndicatorOff More than one indicator changed state AX_IndicatorChange Control turned on AX_FeatureOn Control turned off AX_FeatureOff More than one control changed state AX_FeatureChange T{ SlowKeys and BounceKeys about to be turned on or off T} AX_SlowKeysWarning SlowKeys key pressed AX_SlowKeyPress SlowKeys key accepted AX_SlowKeyAccept SlowKeys key rejected AX_SlowKeyReject Accepted SlowKeys key released AX_SlowKeyRelease BounceKeys key rejected AX_BounceKeyReject StickyKeys key latched AX_StickyLatch StickyKeys key locked AX_StickyLock StickyKeys key unlocked AX_StickyUnlock .TE Audible Bells Using Xkb you can generate bell events that do not necessarily ring the system bell. This is useful if you need to use an audio server instead of the system beep. For example, when an audio client starts, it could disable the audible bell (the system bell) and then listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio client could then send a request to an audio server to play a sound. You can control the audible bells feature by passing the XkbAudibleBellMask to .I XkbChangeEnabledControls. If you set XkbAudibleBellMask on, the server rings the system bell when a bell event occurs. This is the default. If you set XkbAudibleBellMask off and a bell event occurs, the server does not ring the system bell unless you call .I XkbForceDeviceBell or .I XkbForceBell. Audible bells are also part of the per-client auto-reset controls. Bell Functions Use the functions described in this section to ring bells and to generate bell events. The input extension has two types of feedbacks that can generate bells - bell feedback and keyboard feedback. Some of the functions in this section have .I bell_class and .I bell_id parameters; set them as follows: Set .I bell_class to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of each type; set .I bell_id to the particular bell feedback of .I bell_class type. Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated when a bell function is called. .TS c s s s l l l l l l l l. Table 2 Bell Sounding and Bell Event Generating _ Function called AudibleBell Server sounds a bell Server sends an XkbBellNotifyEvent _ XkbDeviceBell On Yes Yes XkbDeviceBell Off No Yes XkbBell On Yes Yes XkbBell Off No Yes XkbDeviceBellEvent On or Off No Yes XkbBellEvent On or Off No Yes XkbDeviceForceBell On or Off Yes No XkbForceBell On or Off Yes No .TE If a compatible keyboard extension isn't present in the X server, .I XkbBellEvent immediately returns False. Otherwise, .I XkbBellEvent calls .I XkbDeviceBellEvent with the specified .I display, window, percent, and .I name, a .I device_spec of XkbUseCoreKbd, a .I bell_class of XkbDfltXIClass, and a .I bell_id of XkbDfltXIId, and returns what .I XkbDeviceBellEvent returns. .I XkbBellEvent generates a XkbBellNotify event. You can call .I XkbBellEvent without first initializing the keyboard extension. .SH "RETURN VALUES" .TP 15 False The .I XkbBellEvent immediately returns False, if a compatible keyboard extension isn't present in the X server. .SH STRUCTURES Xkb generates XkbBellNotify events for all bells except for those resulting from calls to .I XkbForceDeviceBell and .I XkbForceBell. To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask in both the .I bits_to_change and .I values_for_bits parameters to .I XkbSelectEvents. The XkbBellNotify event has no event details. It is either selected or it is not. However, you can call .I XkbSelectEventDetails using XkbBellNotify as the .I event_type and specifying XkbAllBellEventsMask in .I bits_to_change and .I values_for_bits. This has the same effect as a call to .I XkbSelectEvents. The structure for the XkbBellNotify event type contains: .nf typedef struct _XkbBellNotify { int type; /\&* Xkb extension base event code */ unsigned long serial; /\&* X server serial number for event */ Bool send_event; /\&* True => synthetically generated */ Display * display; /\&* server connection where event generated */ Time time; /\&* server time when event generated */ int xkb_type; /\&* XkbBellNotify */ unsigned int device; /\&* Xkb device ID, will not be XkbUseCoreKbd */ int percent; /\&* requested volume as % of max */ int pitch; /\&* requested pitch in Hz */ int duration; /\&* requested duration in microseconds */ unsigned int bell_class; /\&* X input extension feedback class */ unsigned int bell_id; /\&* X input extension feedback ID */ Atom name; /\&* "name" of requested bell */ Window window; /\&* window associated with event */ Bool event_only; /\&* False -> the server did not produce a beep */ } XkbBellNotifyEvent; .fi If your application needs to generate visual bell feedback on the screen when it receives a bell event, use the window ID in the XkbBellNotifyEvent, if present. .SH "SEE ALSO" .BR XkbChangeEnabledControls (__libmansuffix__), .BR XkbDeviceBellEvent (__libmansuffix__), .BR XkbForceBell (__libmansuffix__), .BR XkbForceDeviceBell (__libmansuffix__), .BR XkbSelectEventDetails (__libmansuffix__), .BR XkbSelectEvents (__libmansuffix__) libX11-1.8.12/man/xkb/XkbChangeMap.man0000644014310600000120000001131414763154126012651 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbChangeMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbChangeMap \- Update only partial components of a keyboard description, modify the appropriate fields in the server and map components of a local copy of the keyboard description .SH SYNOPSIS .HP .B Bool XkbChangeMap .BI "(\^Display *" "dpy" "\^," .BI "XkbDescPtr " "xkb" "\^," .BI "XkbMapChangesPtr " "changes" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I xkb description from which new values are taken .TP .I changes identifies component parts to update .SH DESCRIPTION .LP To update only partial components of a keyboard description, modify the appropriate fields in the server and map components of a local copy of the keyboard description, then call .I XkbChangeMap with an XkbMapChangesRec structure indicating which components have changed. .I XkbChangeMap copies any components specified by the .I changes structure from the keyboard description, .I xkb, to the X server specified by .I dpy. If any components specified by .I changes are not present in the .I xkb parameter, .I XkbChangeMap returns False. Otherwise, it sends a request to the server and returns True. .I XkbChangeMap can generate BadAlloc, BadLength, and BadValue protocol errors. .SH "RETURN VALUES" .TP 15 True The XkbChangeMap function returns True if the components specified by .I changes are present in the .I xkb parameter. .TP 15 False The XkbChangeMap function returns False if the components specified by .I changes are not present in the .I xkb parameter. .SH STRUCTURES .LP Use the XkbMapChangesRec structure to identify and track partial modifications to the mapping components and to reduce the amount of traffic between the server and clients. .nf typedef struct _XkbMapChanges { unsigned short changed; /\&* identifies valid components in structure */ KeyCode min_key_code; /\&* lowest numbered keycode for device */ KeyCode max_key_code; /\&* highest numbered keycode for device */ unsigned char first_type; /\&* index of first key type modified */ unsigned char num_types; /\&* # types modified */ KeyCode first_key_sym; /\&* first key whose key_sym_map changed */ unsigned char num_key_syms; /\&* # key_sym_map entries changed */ KeyCode first_key_act; /\&* first key whose key_acts entry changed */ unsigned char num_key_acts; /\&* # key_acts entries changed */ KeyCode first_key_behavior; /\&* first key whose behaviors changed */ unsigned char num_key_behaviors; /\&* # behaviors entries changed */ KeyCode first_key_explicit; /\&* first key whose explicit entry changed */ unsigned char num_key_explicit; /\&* # explicit entries changed */ KeyCode first_modmap_key; /\&* first key whose modmap entry changed */ unsigned char num_modmap_keys; /\&* # modmap entries changed */ KeyCode first_vmodmap_key; /\&* first key whose vmodmap changed */ unsigned char num_vmodmap_keys; /\&* # vmodmap entries changed */ unsigned char pad1; /\&* reserved */ unsigned short vmods; /\&* mask indicating which vmods changed */ } XkbMapChangesRec,*XkbMapChangesPtr; .fi .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadLength The length of a request is shorter or longer than that required to minimally contain the arguments .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbNoteDeviceChanges.man0000644014310600000120000001414514763154126014351 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbNoteDeviceChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbNoteDeviceChanges \- Note device changes reported in an XkbExtensionDeviceNotify event .SH SYNOPSIS .HP .B void XkbNoteDeviceChanges .BI "(\^XkbDeviceChangesPtr " "old" "\^," .BI "XkbExtensionDeviceNotifyEvent *" "new" "\^," .BI "unsigned int " "wanted" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I old structure tracking state changes .TP .I new event indicating state changes .TP .I wanted mask indicating changes to note .SH DESCRIPTION .LP The .I wanted field specifies the changes that should be noted in .I old, and is composed of the bitwise inclusive OR of one or more of the masks from Table 1. The .I reason field of the event in .I new indicates the types of changes the event is reporting. .I XkbNoteDeviceChanges updates the XkbDeviceChangesRec specified by .I old with the changes that are both specified in .I wanted and contained in .I new->reason. .nf Table 1 XkbDeviceInfoRec Mask Bits ____________________________________________________________________________________ Name XkbDeviceInfoRec Value Capability If Set Fields Effected ____________________________________________________________________________________ XkbXI_KeyboardsMask (1L <<0) Clients can use all Xkb requests and events with KeyClass devices supported by the input device extension. XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key btn_acts actions to buttons non-KeyClass input extension devices. XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign names to indicators on non-KeyClass input extension devices. XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign indicator maps to indicators on non-KeyClass input extension devices. XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request the status of indicators on non-KeyClass input extension devices. XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask | num_leds XkbXI_IndicatorMapsMask | leds->* XkbXI_IndicatorStateMask XkbXI_UnsupportedFeaturesMask unsupported (1L <<15) XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask | by Value Column XkbSI_ButtonActionsMask masks XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask | by Value Column XkbSI_KeyboardsMask masks XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask | by Value column XkbXI_UnsupportedFeaturesMask masks .fi To update a local copy of the state and configuration of an X input extension device with the changes previously noted in an XkbDeviceChangesRec structure, use .I XkbGetDeviceInfoChanges. .SH STRUCTURES .LP Changes to an Xkb extension device may be tracked by listening to XkbDeviceExtensionNotify events and accumulating the changes in an XkbDeviceChangesRec structure. The changes noted in the structure may then be used in subsequent operations to update either a server configuration or a local copy of an Xkb extension device configuration. The changes structure is defined as follows: .nf typedef struct _XkbDeviceChanges { unsigned int changed; /\&* bits indicating what has changed */ unsigned short first_btn; /\&* number of first button which changed, if any */ unsigned short num_btns; /\&* number of buttons that have changed */ XkbDeviceLedChangesRec leds; } XkbDeviceChangesRec,*XkbDeviceChangesPtr; .fi .SH "SEE ALSO" .BR XkbGetDeviceInfoChanges (__libmansuffix__) libX11-1.8.12/man/xkb/XkbSetAutoRepeatRate.man0000644014310600000120000000657314763154126014402 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetAutoRepeatRate __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetAutoRepeatRate \- Sets the attributes of the RepeatKeys control for a keyboard device .SH SYNOPSIS .HP .B Bool XkbSetAutoRepeatRate .BI "(\^Display *" "display" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "timeout" "\^," .BI "unsigned int " "interval" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to X server .TP .I device_spec device to configure, or XkbUseCoreKbd .TP .I timeout initial delay, ms .TP .I interval delay between repeats, ms .SH DESCRIPTION .LP The core protocol allows only control over whether or not the entire keyboard or individual keys should auto-repeat when held down. RepeatKeys is a boolean control that extends this capability by adding control over the delay until a key begins to repeat and the rate at which it repeats. RepeatKeys is coupled with the core auto-repeat control: when RepeatKeys is enabled or disabled, the core auto-repeat is enabled or disabled and vice versa. Auto-repeating keys are controlled by two attributes. The first, .I timeout, is the delay after the initial press of an auto-repeating key and the first generated repeat event. The second, .I interval, is the delay between all subsequent generated repeat events. As with all boolean controls, configuring the attributes that determine how the control operates does not automatically enable the control as a whole. .I XkbSetAutoRepeatRate sends a request to the X server to configure the AutoRepeat control attributes to the values specified in .I timeout and .I interval. .I XkbSetAutoRepeatRate does not wait for a reply; it normally returns True. Specifying a zero value for either .I timeout or .I interval causes the server to generate a BadValue protocol error. If a compatible version of the Xkb extension is not available in the server, .I XkbSetAutoRepeatRate returns False. .SH "RETURN VALUES" .TP 15 True The .I XkbSetAutoRepeatRate function returns True normally. .TP 15 False The .I XkbSetAutoRepeatRate function returns False if a compatible version of the Xkb extension is not available in the server. .SH DIAGNOSTICS .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbFreeNames.man0000644014310600000120000000614614763154126012702 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeNames \- Free symbolic names structures .SH SYNOPSIS .HP .B void XkbFreeNames .BI "(\^XkbDescPtr " "xkb" "\^," .BI "unsigned int " "which" "\^," .BI "Bool " "free_map" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description for which names are to be freed .TP .I which mask of names components to be freed .TP .I free_map True => XkbNamesRec structure itself should be freed .SH DESCRIPTION .LP Do not free symbolic names structures directly using .I free or .I XFree. Use .I XkbFreeNames instead. The .I which parameter is the bitwise inclusive OR of the valid names mask bits defined in Table 1. Xkb provides several functions that work with symbolic names. Each of these functions uses a mask to specify individual fields of the structures described above. These masks and their relationships to the fields in a keyboard description are shown in Table 1. .TS c s s s l l l l. Table 1 Symbolic Names Masks _ Mask Bit Value Keyboard Field Component _ XkbKeycodesNameMask (1<<0) Xkb->names keycodes XkbGeometryNameMask (1<<1) Xkb->names geometry XkbSymbolsNameMask (1<<2) Xkb->names symbols XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols XkbTypesNameMask (1<<4) Xkb->names type XkbCompatNameMask (1<<5) Xkb->names compat XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*] XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*] XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*] XkbGroupNamesMask (1<<12) Xkb->names groups[*] XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg XkbComponentNamesMask (0x3f) Xkb->names keycodes, geometry, symbols, physical symbols, types, and compatibility map XkbAllNamesMask (0x3fff) Xkb->names all name components .TE libX11-1.8.12/man/xkb/XkbGetUpdatedMap.man0000644014310600000120000001473514763154126013524 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetUpdatedMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetUpdatedMap \- Update the client or server map information in an existing keyboard description .SH SYNOPSIS .HP .B Status XkbGetUpdatedMap .BI "(\^Display *" "display" "\^," .BI "unsigned int " "which" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to X server .TP .I which mask selecting subcomponents to populate .TP .I xkb keyboard description to be updated .SH DESCRIPTION .LP The .I which parameter is a bitwise inclusive OR of the masks in Table 1. If the needed components of the .I xkb structure are not already allocated, .I XkbGetUpdatedMap allocates them. .I XkbGetUpdatedMap fetches the requested information for the device specified in the XkbDescRec passed in the .I xkb parameter. .TS c s s s s c s s s s l l l l l l l l l l lw(3i) l l lw(1i) lw(3i). Table 1 Xkb Mapping Component Masks and Convenience Functions _ Mask Value Map Fields Convenience Functions _ T{ XkbKeyTypesMask T} (1<<0) client T{ types .br size_types .br num_types T} T{ XkbGetKeyTypes .br XkbResizeKeyType .br XkbCopyKeyType .br XkbCopyKeyTypes T} T{ XkbKeySymsMask T} (1<<1) client T{ syms .br size_syms .br num_syms .br key_sym_map T} T{ XkbGetKeySyms .br XkbResizeKeySyms .br XkbChangeTypesOfKey T} T{ XkbModifierMapMask T} (1<<2) client modmap T{ XkbGetKeyModifierMap T} T{ XkbExplicitComponentsMask T} (1<<3) server T{ explicit T} T{ XkbGetKeyExplicitComponents T} T{ XkbKeyActionsMask T} (1<<4) server T{ key_acts .br acts .br num_acts .br size_acts T} T{ XkbGetKeyActions .br XkbResizeKeyActions T} T{ XkbKeyBehaviorsMask T} (1<<5) server T{ behaviors T} T{ XkbGetKeyBehaviors T} T{ XkbVirtualModsMask T} (1<<6) server T{ vmods T} T{ XkbGetVirtualMods T} T{ XkbVirtualModMapMask T} (1<<7) server T{ vmodmap T} T{ XkbGetVirtualModMap T} .TE .I XkbGetUpdatedMap is synchronous; it queries the server for the desired information, waits for a reply, and then returns. If successful, .I XkbGetUpdatedMap returns Success. If unsuccessful, .I XkbGetUpdatedMap returns one of the following: BadAlloc (unable to allocate a component in the XkbDescRec structure), BadValue (some mask bits in .I which are undefined), BadImplementation (a compatible version of the Xkb extension is not available in the server or the reply from the server was invalid). .SH "RETURN VALUES" .TP 15 Success The .I XkbGetUpdatedMap function returns Success if a reply is received to the server query for the desired information. .SH STRUCTURES .LP The complete description of an Xkb keyboard is given by an XkbDescRec. The component structures in the XkbDescRec represent the major Xkb components. .nf typedef struct { struct _XDisplay * display; /\&* connection to X server */ unsigned short flags; /\&* private to Xkb, do not modify */ unsigned short device_spec; /\&* device of interest */ KeyCode min_key_code; /\&* minimum keycode for device */ KeyCode max_key_code; /\&* maximum keycode for device */ XkbControlsPtr ctrls; /\&* controls */ XkbServerMapPtr server; /\&* server keymap */ XkbClientMapPtr map; /\&* client keymap */ XkbIndicatorPtr indicators; /\&* indicator map */ XkbNamesPtr names; /\&* names for all components */ XkbCompatMapPtr compat; /\&* compatibility map */ XkbGeometryPtr geom; /\&* physical geometry of keyboard */ } XkbDescRec, *XkbDescPtr; .fi The .I display field points to an X display structure. The .I flags field is private to the library: modifying .I flags may yield unpredictable results. The .I device_spec field specifies the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which specifies the core keyboard device. The .I min_key_code and .I max_key_code fields specify the least and greatest keycode that can be returned by the keyboard. Each structure component has a corresponding mask bit that is used in function calls to indicate that the structure should be manipulated in some manner, such as allocating it or freeing it. These masks and their relationships to the fields in the XkbDescRec are shown in Table 2. .bp .TS c s s l l l l l l. Table 2 Mask Bits for XkbDescRec _ Mask Bit XkbDescRec Field Value _ XkbControlsMask ctrls (1L<<0) XkbServerMapMask server (1L<<1) XkbIClientMapMask map (1L<<2) XkbIndicatorMapMask indicators (1L<<3) XkbNamesMask names (1L<<4) XkbCompatMapMask compat (1L<<5) XkbGeometryMask geom (1L<<6) XkbAllComponentsMask All Fields (0x7f) .TE .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadImplementation Invalid reply from server .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbChangeTypesOfKey (__libmansuffix__), .BR XkbCopyKeyType (__libmansuffix__), .BR XkbCopyKeyTypes (__libmansuffix__), .BR XkbGetKeyActions (__libmansuffix__), .BR XkbGetKeyBehaviors (__libmansuffix__), .BR XkbGetKeyExplicitComponents (__libmansuffix__), .BR XkbGetKeyModifierMap (__libmansuffix__), .BR XkbGetKeySyms (__libmansuffix__), .BR XkbGetKeyTypes (__libmansuffix__), .BR XkbResizeKeyActions (__libmansuffix__), .BR XkbResizeKeySyms (__libmansuffix__), .BR XkbResizeKeyType (__libmansuffix__), .BR XkbGetVirtualModMap (__libmansuffix__), .BR XkbGetVirtualMods (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAddDeviceLedInfo.man0000644014310600000120000001140014763154126014073 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddDeviceLedInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddDeviceLedInfo \- Initialize an XkbDeviceLedInfoRec structure .SH SYNOPSIS .HP .B XkbDeviceLedInfoPtr XkbAddDeviceLedInfo .BI "(\^XkbDeviceInfoPtr " "device_info" "\^," .BI "unsigned int " "led_class" "\^," .BI "unsigned int " "led_id" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I device_info structure in which to add LED info .TP .I led_class input extension class for LED device of interest .TP .I led_id input extension ID for LED device of interest .SH DESCRIPTION .LP .I XkbAddDeviceLedInfo first checks to see whether an entry matching .I led_class and .I led_id already exists in the .I device_info->leds array. If it finds a matching entry, it returns a pointer to that entry. Otherwise, it checks to be sure there is at least one empty entry in .I device_info->leds and extends it if there is not enough room. It then increments .I device_info->num_leds and fills in the next available entry in .I device_info->leds with .I led_class and .I led_id. If successful, .I XkbAddDeviceLedInfo returns a pointer to the XkbDeviceLedInfoRec structure that was initialized. If unable to allocate sufficient storage, or if .I device_info points to an invalid XkbDeviceInfoRec structure, or if .I led_class or .I led_id are inappropriate, .I XkbAddDeviceLedInfo returns NULL. To allocate additional space for button actions in an XkbDeviceInfoRec structure, use .I XkbResizeDeviceButtonActions. .SH STRUCTURES .LP Information about X Input Extension devices is transferred between a client program and the Xkb extension in an XkbDeviceInfoRec structure: .nf typedef struct { char * name; /\&* name for device */ Atom type; /\&* name for class of devices */ unsigned short device_spec; /\&* device of interest */ Bool has_own_state; /\&* True=>this device has its own state */ unsigned short supported; /\&* bits indicating supported capabilities */ unsigned short unsupported; /\&* bits indicating unsupported capabilities */ unsigned short num_btns; /\&* number of entries in btn_acts */ XkbAction * btn_acts; /\&* button actions */ unsigned short sz_leds; /\&* total number of entries in LEDs vector */ unsigned short num_leds; /\&* number of valid entries in LEDs vector */ unsigned short dflt_kbd_fb; /\&* input extension ID of default (core kbd) indicator */ unsigned short dflt_led_fb; /\&* input extension ID of default indicator feedback */ XkbDeviceLedInfoPtr leds; /\&* LED descriptions */ } XkbDeviceInfoRec, *XkbDeviceInfoPtr; typedef struct { unsigned short led_class; /\&* class for this LED device*/ unsigned short led_id; /\&* ID for this LED device */ unsigned int phys_indicators; /\&* bits for which LEDs physically present */ unsigned int maps_present; /\&* bits for which LEDs have maps in maps */ unsigned int names_present; /\&* bits for which LEDs are in names */ unsigned int state; /\&* 1 bit => corresponding LED is on */ Atom names[XkbNumIndicators]; /\&* names for LEDs */ XkbIndicatorMapRec maps; /\&* indicator maps for each LED */ } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr; .fi .SH "SEE ALSO" .BR XkbResizeDeviceButtonActions (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetMap.man0000644014310600000120000002106014763154126012202 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetMap \- Allocate an XkbDescRec structure and populate it with the server's keyboard client map and server map .SH SYNOPSIS .HP .B XkbDescPtr XkbGetMap .BI "(\^Display *" "display" "\^," .BI "unsigned int " "which" "\^," .BI "unsigned int " "device_spec" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to X server .TP .I which mask selecting subcomponents to populate .TP .I device_spec device_id, or XkbUseCoreKbd .SH DESCRIPTION .LP Xkb provides two functions to obtain the keyboard mapping components from the server. The first function, .I XkbGetMap, allocates an XkbDescRec structure, retrieves mapping components from the server, and stores them in the XkbDescRec structure it just allocated. The second function, .I XkbGetUpdatedMap, retrieves mapping components from the server and stores them in an XkbDescRec structure that has previously been allocated. To allocate an XkbDescRec structure and populate it with the server's keyboard client map and server map, use .I XkbGetMap. XkbGetMap is similar to .I XkbGetKeyboard, but is used only for obtaining the address of an XkbDescRec structure that is populated with keyboard mapping components. It allows finer control over which substructures of the keyboard mapping components are to be populated. .I XkbGetKeyboard always returns fully populated components, while .I XkbGetMap can be instructed to return a partially populated component. The .I which mask is a bitwise inclusive OR of the masks defined in Table 14.1. Only those portions of the keyboard server map and the keyboard client maps that are specified in .I which are allocated and populated. In addition to allocating and obtaining the server map and the client map, .I XkbGetMap also sets the .I device_spec, the .I min_key_code, and .I max_key_code fields of the keyboard description. .I XkbGetMap is synchronous; it queries the server for the desired information, waits for a reply, and then returns. If successful, .I XkbGetMap returns a pointer to the XkbDescRec structure it allocated. If unsuccessful, .I XkbGetMap returns NULL. When unsuccessful, one of the following protocol errors is also generated: BadAlloc (unable to allocate the XkbDescRec structure), BadValue (some mask bits in .I which are undefined), or BadImplementation (a compatible version of the Xkb extension is not available in the server). To free the returned data, use .I XkbFreeKeyboard. Xkb also provides convenience functions to get partial component definitions from the server. These functions are specified in the "convenience functions" column in Table 1. Refer to the sections listed in the table for more information on these functions. .TS c s s s s c s s s s l l l l l l l l l l lw(3i) l l lw(1i) lw(3i). Table 1 Xkb Mapping Component Masks and Convenience Functions _ Mask Value Map Fields Convenience Functions _ T{ XkbKeyTypesMask T} (1<<0) client T{ types .br size_types .br num_types T} T{ XkbGetKeyTypes .br XkbResizeKeyType .br XkbCopyKeyType .br XkbCopyKeyTypes T} T{ XkbKeySymsMask T} (1<<1) client T{ syms .br size_syms .br num_syms .br key_sym_map T} T{ XkbGetKeySyms .br XkbResizeKeySyms .br XkbChangeTypesOfKey T} T{ XkbModifierMapMask T} (1<<2) client modmap T{ XkbGetKeyModifierMap T} T{ XkbExplicitComponentsMask T} (1<<3) server T{ explicit T} T{ XkbGetKeyExplicitComponents T} T{ XkbKeyActionsMask T} (1<<4) server T{ key_acts .br acts .br num_acts .br size_acts T} T{ XkbGetKeyActions .br XkbResizeKeyActions T} T{ XkbKeyBehaviorsMask T} (1<<5) server T{ behaviors T} T{ XkbGetKeyBehaviors T} T{ XkbVirtualModsMask T} (1<<6) server T{ vmods T} T{ XkbGetVirtualMods T} T{ XkbVirtualModMapMask T} (1<<7) server T{ vmodmap T} T{ XkbGetVirtualModMap T} .TE .nf .bp Xkb defines combinations of these masks for convenience: #define XkbResizableInfoMask (XkbKeyTypesMask) #define XkbAllClientInfoMask (XkbKeyTypesMask | XkbKeySymsMask | XkbModifierMapMask) #define XkbAllServerInfoMask (XkbExplicitComponentsMask | XkbKeyActionsMask | XkbKeyBehaviorsMask | XkbVirtualModsMask | XkbVirtualModMapMask) #define XkbAllMapComponentsMask XkbAllClientInfoMask | XkbAllServerInfoMask) .fi Key types, symbol maps, and actions are all interrelated: changes in one require changes in the others. The convenience functions make it easier to edit these components and handle the interdependencies. .SH STRUCTURES .LP The complete description of an Xkb keyboard is given by an XkbDescRec. The component structures in the XkbDescRec represent the major Xkb components. .nf typedef struct { struct _XDisplay * display; /\&* connection to X server */ unsigned short flags; /\&* private to Xkb, do not modify */ unsigned short device_spec; /\&* device of interest */ KeyCode min_key_code; /\&* minimum keycode for device */ KeyCode max_key_code; /\&* maximum keycode for device */ XkbControlsPtr ctrls; /\&* controls */ XkbServerMapPtr server; /\&* server keymap */ XkbClientMapPtr map; /\&* client keymap */ XkbIndicatorPtr indicators; /\&* indicator map */ XkbNamesPtr names; /\&* names for all components */ XkbCompatMapPtr compat; /\&* compatibility map */ XkbGeometryPtr geom; /\&* physical geometry of keyboard */ } XkbDescRec, *XkbDescPtr; .fi The .I display field points to an X display structure. The .I flags field is private to the library: modifying .I flags may yield unpredictable results. The .I device_spec field specifies the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which specifies the core keyboard device. The .I min_key_code and .I max_key_code fields specify the least and greatest keycode that can be returned by the keyboard. Each structure component has a corresponding mask bit that is used in function calls to indicate that the structure should be manipulated in some manner, such as allocating it or freeing it. These masks and their relationships to the fields in the XkbDescRec are shown in Table 2. .TS c s s l l l l l l. Table 2 Mask Bits for XkbDescRec _ Mask Bit XkbDescRec Field Value _ XkbControlsMask ctrls (1L<<0) XkbServerMapMask server (1L<<1) XkbIClientMapMask map (1L<<2) XkbIndicatorMapMask indicators (1L<<3) XkbNamesMask names (1L<<4) XkbCompatMapMask compat (1L<<5) XkbGeometryMask geom (1L<<6) XkbAllComponentsMask All Fields (0x7f) .TE .SH "SEE ALSO" .BR XkbChangeTypesOfKey (__libmansuffix__), .BR XkbCopyKeyType (__libmansuffix__), .BR XkbCopyKeyTypes (__libmansuffix__), .BR XkbFreeClientMap (__libmansuffix__), .BR XkbGetKeyActions (__libmansuffix__), .BR XkbGetKeyBehaviors (__libmansuffix__), .BR XkbGetKeyboard (__libmansuffix__), .BR XkbGetKeyExplicitComponents (__libmansuffix__), .BR XkbGetKeyModifierMap (__libmansuffix__), .BR XkbGetKeySyms (__libmansuffix__), .BR XkbGetKeyTypes (__libmansuffix__), .BR XkbGetUpdatedMap (__libmansuffix__), .BR XkbGetVirtualModMap (__libmansuffix__), .BR XkbGetVirtualMods (__libmansuffix__), .BR XkbResizeKeyActions (__libmansuffix__), .BR XkbResizeKeySyms (__libmansuffix__), .BR XkbResizeKeyType (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAllocCompatMap.man0000644014310600000120000000746514763154126013676 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocCompatMap \- Allocate a new compatibility map if you do not already have one available .SH SYNOPSIS .HP .B Status XkbAllocCompatMap .BI "(\^XkbDescPtr " "xkb" "\^," .BI "unsigned int " "which" "\^," .BI "unsigned int " "num_si" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description in which to allocate compat map .TP .I which mask of compatibility map components to allocate .TP .I num_si number of symbol interpretations to allocate .SH DESCRIPTION .LP .I xkb specifies the keyboard description for which compatibility maps are to be allocated. The compatibility map is the .I compat field in this structure. .I which specifies the compatibility map components to be allocated (see XkbGetCompatMap). .I which is an inclusive OR of the bits shown in Table 1. .TS c s s l l l. Table 1 Compatibility Map Component Masks _ Mask Value Affecting _ XkbSymInterpMask (1<<0) Symbol interpretations XkbGroupCompatMask (1<<1) Group maps XkbAllCompatMask (0x3) All compatibility map components .TE .I num_si specifies the total number of entries to allocate in the symbol interpretation vector .I (xkb.compat.sym_interpret). .I XkbAllocCompatMap returns Success if successful, BadMatch if .I xkb is NULL, or BadAlloc if errors are encountered when attempting to allocate storage. .SH STRUCTURES .LP .nf typedef struct { KeySym sym; /\&* keysym of interest or NULL */ unsigned char flags; /\&* XkbSI_AutoRepeat, XkbSI_LockingKey */ unsigned char match; /\&* specifies how mods is interpreted */ unsigned char mods; /\&* modifier bits, correspond to eight real modifiers */ unsigned char virtual_mod; /\&* 1 modifier to add to key virtual mod map */ XkbAnyAction act; /\&* action to bind to symbol position on key */ } XkbSymInterpretRec,*XkbSymInterpretPtr; .fi .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .SH "SEE ALSO" .BR XkbGetCompatMap (__libmansuffix__) .SH NOTES .LP Note that symbol interpretations in a compatibility map (the .I sym_interpret vector of XkbSymInterpretRec structures) are also allocated using this same function. To ensure that there is sufficient space in the symbol interpretation vector for entries to be added, use .I XkbAllocCompatMap specifying .I which as XkbSymInterpretMask and the number of free symbol interpretations needed in .I num_si. libX11-1.8.12/man/xkb/XkbGetXlibControls.man0000644014310600000120000000424114763154126014111 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetXlibControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetXlibControls \- Determines the current state of the Library Controls .SH SYNOPSIS .HP .B unsigned int XkbGetXlibControls .BI "(\^Display *" "display" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to X server .SH DESCRIPTION .LP .I XkbGetXlibControls returns the current state of the Library Controls as a bit mask that is an inclusive OR of the control masks from Table 1 for the controls that are enabled. For the optional compose processing controls, the fact that a control is enabled does not imply that it is actually implemented. .TS c s l l l l. Table 1 Library Control Masks _ Library Control Mask Value _ XkbLC_ForceLatin1Lookup (1 << 0) XkbLC_ConsumeLookupMods (1 << 1) XkbLC_AlwaysConsumeShiftAndLock (1 << 2) XkbLC_IgnoreNewKeyboards (1 << 3) XkbLC_ConsumeKeysOnComposeFail (1 << 29) XkbLC_ComposeLED (1 << 30) XkbLC_BeepOnComposeFail (1 << 31) XkbLC_AllControls (0xc0000007) .TE libX11-1.8.12/man/xkb/XkbFreeGeomKeys.man0000644014310600000120000000351214763154126013354 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomKeys \- Free geometry keys .SH SYNOPSIS .HP .B void XkbFreeGeomKeys .BI "(\^XkbRowPtr " "row" "\^," .BI "int " "first" "\^," .BI "int " "count" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I row row in which keys should be freed .TP .I first first key to be freed .TP .I count number of keys to be freed .TP .I free_all True => all keys are freed .SH DESCRIPTION .LP If .I free_all is True, all keys are freed regardless of the value of .I first or .I count. Otherwise, .I count keys are freed beginning with the one specified by .I first. libX11-1.8.12/man/xkb/XkbAllocGeomOverlayKeys.man0000644014310600000120000000465514763154126015100 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomOverlayKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomOverlayKeys \- Allocate keys in an overlay row .SH SYNOPSIS .HP .B Status XkbAllocGeomOverlayKeys .BI "(\^XkbOverlayRowPtr " "row" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I row section for which rows should be allocated .TP .I num_needed number of new rows required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomOverlayKeys allocates .I num_needed keys and adds them to the .I row. No initialization of the keys is done. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbGetControls.man0000644014310600000120000001101314763154126013265 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetControls \- Finds the current state of Xkb server controls .SH SYNOPSIS .HP .B Status XkbGetControls .BI "(\^Display *" "display" "\^," .BI "unsigned long " "which" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to X server .TP .I which mask of controls requested .TP .I xkb keyboard description for controls information .SH DESCRIPTION .LP .I XkbGetControls queries the server for the requested control information, waits for a reply, and then copies the server's values for the requested information into the .I ctrls structure of the .I xkb argument. Only those components specified by the .I which parameter are copied. Valid values for .I which are any combination of the masks listed in Table 1 that have "ok" in the .I which column. Table 1 shows the actual values for the individual mask bits used to select controls for modification and to enable and disable the control. Note that the same mask bit is used to specify general modifications to the parameters used to configure the control (which), and to enable and disable the control (enabled_ctrls). The anomalies in Table 1 (no "ok" in column) are for controls that have no configurable attributes; and for controls that are not boolean controls and therefore cannot be enabled or disabled. .TS c s s s l l l l l l l l l l l l. Table 1 Controls Mask Bits _ Mask Bit which or enabled Value changed_ctrls _ctrls _ XkbRepeatKeysMask ok ok (1L<<0) XkbSlowKeysMask ok ok (1L<<1) XkbBounceKeysMask ok ok (1L<<2) XkbStickyKeysMask ok ok (1L<<3) XkbMouseKeysMask ok ok (1L<<4) XkbMouseKeysAccelMask ok ok (1L<<5) XkbAccessXKeysMask ok ok (1L<<6) XkbAccessXTimeoutMask ok ok (1L<<7) XkbAccessXFeedbackMask ok ok (1L<<8) XkbAudibleBellMask ok (1L<<9) XkbOverlay1Mask ok (1L<<10) XkbOverlay2Mask ok (1L<<11) XkbIgnoreGroupLockMask ok (1L<<12) XkbGroupsWrapMask ok (1L<<27) XkbInternalModsMask ok (1L<<28) XkbIgnoreLockModsMask ok (1L<<29) XkbPerKeyRepeatMask ok (1L<<30) XkbControlsEnabledMask ok (1L<<31) XkbAccessXOptionsMask ok ok (XkbStickyKeysMask | XkbAccessXFeedbackMask) XkbAllBooleanCtrlsMask ok (0x00001FFF) XkbAllControlsMask ok (0xF8001FFF) .TE If .I xkb->ctrls is NULL, .I XkbGetControls allocates and initializes it before obtaining the values specified by .I which. If .I xkb->ctrls is not NULL, .I XkbGetControls modifies only those portions of .I xkb->ctrls corresponding to the values specified by .I which. .I XkbGetControls returns Success if successful; otherwise, it returns BadAlloc if it cannot obtain sufficient storage, BadMatch if .I xkb is NULL or .I which is empty, or BadImplementation. To free the .I ctrls member of a keyboard description, use .I XkbFreeControls. The .I num_groups field in the .I ctrls structure is always filled in by .I XkbGetControls, regardless of which bits are selected by .I which. .SH "RETURN VALUES" .TP 15 Success The .I XkbGetControls function returns Success if successful. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadImplementation Invalid reply from server .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .SH "SEE ALSO" .BR XkbFreeControls (__libmansuffix__) libX11-1.8.12/man/xkb/XkbComputeRowBounds.man0000644014310600000120000000355114763154126014311 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbComputeRowBounds __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbComputeRowBounds \- Update the bounding box of a row .SH SYNOPSIS .HP .B Bool XkbComputeRowBounds .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "XkbSectionPtr " "section" "\^," .BI "XkbRowPtr " "row" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry that contains the section .TP .I section section that contains the row .TP .I row row to be examined and updated .SH DESCRIPTION .LP .I XkbComputeRowBounds checks the bounds of all keys in the .I row and updates the bounding box of the row if necessary. .I XkbComputeRowBounds returns False if any of the arguments is NULL; otherwise, it returns True. libX11-1.8.12/man/xkb/XkbLockGroup.man0000644014310600000120000000437714763154126012746 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbLockGroup __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbLockGroup \- Locks the keysym group .SH SYNOPSIS .HP .B Bool XkbLockGroup .BI "(\^Display *" "display" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "group" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I group index of the keysym group to lock .SH DESCRIPTION .LP .I XkbLockGroup sends a request to the server to lock the specified .I group and does not wait for a reply. It returns True if the request was sent and False otherwise. Reference the keysym group indices with these symbolic constants: .TS c s l l l l. Table 1 Symbolic Group Names _ Symbolic Name Value _ XkbGroup1Index 0 XkbGroup2Index 1 XkbGroup3Index 2 XkbGroup4Index 3 .TE .SH "RETURN VALUES" .TP 15 True The .I XkbLockGroup function returns True when a request was sent to the server to lock the specified .I group and does not wait for a reply. .TP 15 False The .I XkbLockGroup function returns False if the request was not sent. libX11-1.8.12/man/xkb/XkbAddGeomKeyAlias.man0000644014310600000120000000620014763154126013747 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddGeomKeyAlias __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddGeomKeyAlias \- Add one key alias to an existing keyboard geometry description .SH SYNOPSIS .HP .B XkbKeyAliasPtr XkbAddGeomKeyAlias .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "_Xconst char *" "alias" "\^," .BI "_Xconst char *" "real" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry to be updated .TP .I alias alias to be added .TP .I real real name to be bound to the new alias .SH DESCRIPTION .LP Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the .I num_ * fields of the corresponding structure is incremented by 1. These functions do not change .I sz_* unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements. The top-level geometry description includes a list of .I geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. .I XkbAddGeomKeyAlias adds one key alias with the value .I alias to the geometry .I geom, and associates it with the key whose real name is .I real. XkbAddGeomKeyAlias returns NULL if any of the parameters is empty or if it was not able to allocate space for the alias. To allocate space for an arbitrary number of aliases, use the .I XkbAllocGeomKeyAliases function. .SH STRUCTURES .LP .nf typedef struct { char real[XkbKeyNameLength]; /\&* this key name must be in the keys array */ char alias[XkbKeyNameLength]; /\&* symbolic key name as alias for the key */ } XkbKeyAliasRec,*XkbKeyAliasPtr; .fi .SH "SEE ALSO" .BR XkbAllocGeomKeyAliases (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAddGeomShape.man0000644014310600000120000000726614763154126013322 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddGeomShape __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddGeomShape \- Add a shape to a keyboard geometry .SH SYNOPSIS .HP .B XkbShapePtr XkbAddGeomShape .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "Atom " "name" "\^," .BI "int " "sz_outlines" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry to be updated .TP .I name name of the new shape .TP .I sz_outlines number of outlines to be reserved .SH DESCRIPTION .LP Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the .I num_ * fields of the corresponding structure is incremented by 1. These functions do not change .I sz_* unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements. The top-level geometry description includes a list of .I geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. A geometry contains an arbitrary number of shapes, each of which is made up of an arbitrary number of outlines. .I XkbAddGeomShape adds a shape to a geometry .I geom by allocating space for .I sz_outlines outlines for it and giving it the name specified by .I name. If a shape with name .I name already exists in the geometry, a pointer to the existing shape is returned. .I XkbAddGeomShape returns NULL if any of the parameters is empty or if it was not able to allocate space. To allocate space for an arbitrary number of geometry shapes, use .I XkbAllocGeomShapes. .SH STRUCTURES .LP .nf typedef struct _XkbShape { Atom name; /\&* shape's name */ unsigned short num_outlines; /\&* number of outlines for the shape */ unsigned short sz_outlines; /\&* size of the outlines array */ XkbOutlinePtr outlines; /\&* array of outlines for the shape */ XkbOutlinePtr approx; /\&* pointer into the array to the approximating outline */ XkbOutlinePtr primary; /\&* pointer into the array to the primary outline */ XkbBoundsRec bounds; /\&* bounding box for the shape; encompasses all outlines */ } XkbShapeRec, *XkbShapePtr; .fi .SH "SEE ALSO" .BR XkbAllocGeomShapes (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetAutoResetControls.man0000644014310600000120000000664014763154126015133 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetAutoResetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetAutoResetControls \- Gets the current values of the auto-reset controls .SH SYNOPSIS .HP .B Bool XkbGetAutoResetControls .BI "(\^Display *" "dpy" "\^," .BI "unsigned int *" "auto_ctrls" "\^," .BI "unsigned int *" "auto_values" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I auto_ctrls specifies which bits in auto_values are relevant .TP .I auto_values 1 bit => corresponding control has auto-reset on .SH DESCRIPTION .LP You can configure the boolean controls to automatically be enabled or disabled when a program exits. This capability is controlled via two masks maintained in the X server on a per-client basis. There is no client-side Xkb data structure corresponding to these masks. Whenever the client exits for any reason, any boolean controls specified in the .I auto-reset mask are set to the corresponding value from the .I auto-reset values mask. This makes it possible for clients to "clean up after themselves" automatically, even if abnormally terminated. The bits used in the masks correspond to the EnabledControls control bits. For example, a client that replaces the keyboard bell with some other audible cue might want to turn off the AudibleBell control to prevent the server from also generating a sound and avoid cacophony. If the client were to exit without resetting the AudibleBell control, the user would be left without any feedback at all. Setting AudibleBell in both the auto-reset mask and auto-reset values guarantees that the audible bell will be turned back on when the client exits. .I XkbGetAutoResetControls backfills .I auto_ctrls and .I auto_values with the AutoReset control attributes for this particular client. It returns True if successful, and False otherwise. .SH "RETURN VALUES" .TP 15 True The .I XkbGetAutoResetControls function returns True when it successfully backfills .I auto_ctrls and .I auto_values with the AutoReset control attributes for this particular client. .TP 15 False The .I XkbGetAutoResetControls function returns False when it does not successfully backfill .I auto_ctrls and .I auto_values with the AutoReset control attributes for this particular client. libX11-1.8.12/man/xkb/XkbAllocKeyboard.man0000644014310600000120000000423014763154126013540 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocKeyboard __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocKeyboard \- Creates a keyboard description from scratch .SH SYNOPSIS .HP .B XkbDescRec XkbAllocKeyboard .BI "(\^void\^);" .if n .ti +5n .if t .ti +.5i .SH DESCRIPTION .LP Applications seldom need to directly allocate a keyboard description; calling .I XkbGetKeyboard usually suffices. In the event you need to create a keyboard description from scratch, however, use .I XkbAllocKeyboard rather than directly calling .I malloc. If .I XkbAllocKeyboard fails to allocate the keyboard description, it returns NULL. Otherwise, it returns a pointer to an empty keyboard description structure. The .I device_spec field will have been initialized to XkbUseCoreKbd. You may then either fill in the structure components or use Xkb functions to obtain values for the structure components from a keyboard device. .SH "SEE ALSO" .BR malloc (3F), .BR XkbUseCoreKbd (__libmansuffix__), .BR XkbGetKeyboard (__libmansuffix__) libX11-1.8.12/man/xkb/XkbKeySymEntry.man0000644014310600000120000000514314763154126013274 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeySymEntry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeySymEntry \- Returns the keysym corresponding to shift level .I shift and group .I grp from the two-dimensional array of keysyms for the key corresponding to .I keycode .SH SYNOPSIS .HP .B KeySym XkbKeySymEntry .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^," .BI "int " "shift" "\^," .BI "int " "grp" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .TP .I shift shift level of interest .TP .I grp group of interest .SH DESCRIPTION .LP The key width and number of groups associated with a key are used to form a small two-dimensional array of KeySyms for a key. This array may be different sizes for different keys. The array for a single key is stored as a linear list, in row-major order. The arrays for all of the keys are stored in the .I syms field of the client map. There is one row for each group associated with a key and one column for each level. The index corresponding to a given group and shift level is computed as: .nf idx = group_index * key_width + shift_level .fi The .I offset field of the .I key_sym_map entry for a key is used to access the beginning of the array. .I XkbKeySymEntry returns the keysym corresponding to shift level .I shift and group .I grp from the two-dimensional array of keysyms for the key corresponding to .I keycode. libX11-1.8.12/man/xkb/XkbFreeGeomProperties.man0000644014310600000120000000536514763154126014605 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomProperties __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomProperties \- Free geometry properties .SH SYNOPSIS .HP .B void XkbFreeGeomProperties .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "int " "first" "\^," .BI "int " "count" "\^," .BI "Bool *" "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry in which properties should be freed .TP .I first first property to be freed .TP .I count number of properties to be freed .TP .I free_all True => all properties are freed .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. If .I free_all is True, all properties are freed regardless of the value of .I first or .I count. Otherwise, .I count properties are freed beginning with the one specified by .I first. .SH "RETURN VALUES" .TP 15 Success The XkbFreeGeomProperties function returns Success when there are no allocation or argument errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbCopyKeyTypes.man0000644014310600000120000000702414763154126013441 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbCopyKeyTypes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbCopyKeyTypes \- Copy more than one XkbKeyTypeRec structure .SH SYNOPSIS .HP .B Status XkbCopyKeyTypes .BI "(\^XkbKeyTypePtr " "from" "\^," .BI "XkbKeyTypePtr " "into" "\^," .BI "int " "num_types" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I from pointer to array of XkbKeyTypeRecs to copy .TP .I into pointer to array of XkbKeyTypeRecs to change .TP .I num_types number of types to copy .SH DESCRIPTION .LP .I XkbCopyKeyTypes copies .I num_types XkbKeyTypeRec structures from the array specified by .I from into the array specified by .I into. It is intended for copying between, rather than within, keyboard descriptions, so it doesn't check for overlaps. The same rules that apply to the .I from and .I into parameters in .I XkbCopyKeyType apply to each entry of the .I from and .I into arrays of .I XkbCopyKeyTypes. If any allocation errors occur while copying .I from to .I into, XkbCopyKeyTypes returns BadAlloc. Otherwise, .I XkbCopyKeyTypes copies .I from to .I into and returns Success. .SH "RETURN VALUES" .TP 15 Success The XkbCopyKeyTypes function returns Success when there are no allocation errors. .SH STRUCTURES .LP Key types are used to determine the shift level of a key given the current state of the keyboard. The set of all possible key types for the Xkb keyboard description are held in the .I types field of the client map, whose total size is stored in .I size_types, and whose total number of valid entries is stored in .I num_types. Key types are defined using the following structure: .nf typedef struct { /\&* Key Type */ XkbModsRec mods; /\&* modifiers used to compute shift level */ unsigned char num_levels; /\&* total # shift levels, do not modify directly */ unsigned char map_count; /\&* # entries in map, preserve (if non-NULL) */ XkbKTMapEntryPtr map; /\&* vector of modifiers for each shift level */ XkbModsPtr preserve; /\&* mods to preserve for corresponding map entry */ Atom name; /\&* name of key type */ Atom * level_names; /\&* array of names of each shift level */ } XkbKeyTypeRec, *XkbKeyTypePtr; .fi .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .SH "SEE ALSO" .BR XkbCopyKeyType (__libmansuffix__) libX11-1.8.12/man/xkb/XkbKeyAction.man0000644014310600000120000001075014763154126012717 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyAction __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyAction \- Returns the key action .SH SYNOPSIS .HP .B XkbAction XkbKeyAction .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^," .BI "int " "idx" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .TP .I idx index for group and shift level .SH DESCRIPTION .LP A key action defines the effect key presses and releases have on the internal state of the server. For example, the expected key action associated with pressing the Shift key is to set the Shift modifier. There is zero or one key action associated with each keysym bound to each key. Just as the entire list of key symbols for the keyboard mapping is held in the .I syms field of the client map, the entire list of key actions for the keyboard mapping is held in the .I acts array of the server map. The total size of .I acts is specified by .I size_acts, and the number of entries is specified by .I num_acts. The .I key_acts array, indexed by keycode, describes the actions associated with a key. The .I key_acts array has .I min_key_code unused entries at the start to allow direct indexing using a keycode. If a .I key_acts entry is zero, it means the key does not have any actions associated with it. If an entry is not zero, the entry represents an index into the .I acts field of the server map, much as the .I offset field of a KeySymMapRec structure is an index into the .I syms field of the client map. The reason the .I acts field is a linear list of XkbActions is to reduce the memory consumption associated with a keymap. Because Xkb allows individual keys to have multiple shift levels and a different number of groups per key, a single two-dimensional array of KeySyms would potentially be very large and sparse. Instead, Xkb provides a small two-dimensional array of XkbActions for each key. To store all of these individual arrays, Xkb concatenates each array together in the .I acts field of the server map. The key action structures consist only of fields of type char or unsigned char. This is done to optimize data transfer when the server sends bytes over the wire. If the fields are anything but bytes, the server has to sift through all of the actions and swap any nonbyte fields. Because they consist of nothing but bytes, it can just copy them out. .I XkbKeyAction returns the key action indexed by .I idx in the two-dimensional array of key actions associated with the key corresponding to .I keycode.idx may be computed from the group and shift level of interest as follows: .nf idx = group_index * key_width + shift_level .fi .SH STRUCTURES .LP The KeySymMapRec structure is defined as follows: .nf #define XkbNumKbdGroups 4 #define XkbMaxKbdGroup (XkbNumKbdGroups-1) typedef struct { /\&* map to keysyms for a single keycode */ unsigned char kt_index[XkbNumKbdGroups]; /\&* key type index for each group */ unsigned char group_info; /\&* # of groups and out of range group handling */ unsigned char width; /\&* max # of shift levels for key */ unsigned short offset; /\&* index to keysym table in syms array */ } XkbSymMapRec, *XkbSymMapPtr; .fi libX11-1.8.12/man/xkb/XkbKeyKeyTypeIndex.man0000644014310600000120000000340714763154126014065 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyKeyTypeIndex __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyKeyTypeIndex \- Obtain the index of a key type or the pointer to a key type .SH SYNOPSIS .HP .B int XkbKeyKeyTypeIndex .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^," .BI "int " "group" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .TP .I group group index .SH DESCRIPTION .LP .I XkbKeyKeyTypeIndex computes an index into the .I types vector of the client map in .I xkb from the given .I keycode and .I group index. libX11-1.8.12/man/xkb/XkbResizeKeySyms.man0000644014310600000120000000656114763154126013624 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbResizeKeySyms __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbResizeKeySyms \- Change the number of symbols bound to a key .SH SYNOPSIS .HP .B KeySym * XkbResizeKeySyms .BI "(\^XkbDescRec *" "xkb" "\^," .BI "int " "key" "\^," .BI "int " "needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description to be changed .TP .I key keycode for key to modify .TP .I needed new number of keysyms required for key .SH DESCRIPTION .LP .I XkbResizeKeySyms reserves the space needed for .I needed keysyms and returns a pointer to the beginning of the new array that holds the keysyms. It adjusts the .I offset field of the .I key_sym_map entry for the key if necessary and can also change the .I syms, num_syms, and .I size_syms fields of .I xkb->map if it is necessary to reallocate the .I syms array. .I XkbResizeKeySyms does not modify either the width or number of groups associated with the key. If .I needed is greater than the current number of keysyms for the key, .I XkbResizeKeySyms initializes all new keysyms in the array to NoSymbol. Because the number of symbols needed by a key is normally computed as width * number of groups, and .I XkbResizeKeySyms does not modify either the width or number of groups for the key, a discrepancy exists upon return from .I XkbResizeKeySyms between the space allocated for the keysyms and the number required. The unused entries in the list of symbols returned by .I XkbResizeKeySyms are not preserved across future calls to any of the map editing functions, so you must update the key symbol mapping (which updates the width and number of groups for the key) before calling another allocator function. A call to .I XkbChangeTypesOfKey will update the mapping. If any allocation errors occur while resizing the number of symbols bound to the key, .I XkbResizeKeySyms returns NULL. .SH "SEE ALSO" .BR XkbChangeTypesOfKey (__libmansuffix__), .BR XkbResizeKeyActions (__libmansuffix__) .SH NOTES .LP A change to the number of symbols bound to a key should be accompanied by a change in the number of actions bound to a key. Refer to XkbResizeKeyActions for more information on changing the number of actions bound to a key. libX11-1.8.12/man/xkb/XkbAddGeomOverlay.man0000644014310600000120000000704214763154126013673 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddGeomOverlay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddGeomOverlay \- Add one overlay to a section .SH SYNOPSIS .HP .B XkbOverlayPtr XkbAddGeomOverlay .BI "(\^XkbSectionPtr " "section" "\^," .BI "Atom " "name" "\^," .BI "int " "sz_rows" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I section section to which an overlay will be added .TP .I name name of the overlay .TP .I sz_rows number of rows to reserve in the overlay .SH DESCRIPTION .LP Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the .I num_ * fields of the corresponding structure is incremented by 1. These functions do not change .I sz_* unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements. The top-level geometry description includes a list of .I geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. .I XkbAddGeomOverlay adds an overlay with the specified name to the specified .I section. The new overlay is created with space allocated for .I sz_rows rows. If an overlay with name .I name already exists in the section, a pointer to the existing overlay is returned. .I XkbAddGeomOverlay returns NULL if any of the parameters is empty or if it was not able to allocate space for the overlay. To allocate space for an arbitrary number of overlays to a section, use the .I XkbAllocGeomOverlay function. .SH STRUCTURES .LP .nf typedef struct _XkbOverlayRec { Atom name; /\&* overlay name */ XkbSectionPtr section_under; /\&* the section under this overlay */ unsigned short num_rows; /\&* number of rows in the rows array */ unsigned short sz_rows; /\&* size of the rows array */ XkbOverlayRowPtr rows; /\&* array of rows in the overlay */ XkbBoundsPtr bounds; /\&* bounding box for the overlay */ } XkbOverlayRec,*XkbOverlayPtr; .fi .SH "SEE ALSO" .BR XkbAllocGeomOverlay (__libmansuffix__) libX11-1.8.12/man/xkb/XkbAddGeomKey.man0000644014310600000120000000601114763154126012775 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddGeomKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddGeomKey \- Add one key at the end of an existing row of keys .SH SYNOPSIS .HP .B XkbKeyPtr XkbAddGeomKey .BI "(\^XkbRowPtr " "row" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I row row to be updated .SH DESCRIPTION .LP Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the .I num_ * fields of the corresponding structure is incremented by 1. These functions do not change .I sz_* unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements. The top-level geometry description includes a list of .I geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. Keys are grouped into rows. .I XkbAddGeomKey adds one key to the end of the specified .I row. The key is allocated and zeroed. .I XkbAddGeomKey returns NULL if .I row is empty or if it was not able to allocate space for the key. To allocate space for an arbitrary number of keys to a row, use .I XkbAllocGeomKeys. .SH STRUCTURES .LP .nf typedef struct _XkbKey { /\&* key in a row */ XkbKeyNameRec name; /\&* key name */ short gap; /\&* gap in mm/10 from previous key in row */ unsigned char shape_ndx; /\&* index of shape for key */ unsigned char color_ndx; /\&* index of color for key body */ } XkbKeyRec, *XkbKeyPtr; .fi .SH "SEE ALSO" .BR XkbAllocGeomKeys (__libmansuffix__) libX11-1.8.12/man/xkb/XkbComputeSectionBounds.man0000644014310600000120000000400114763154126015135 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbComputeSectionBounds __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbComputeSectionBounds \- Update the bounding box of a section .SH SYNOPSIS .HP .B Bool XkbComputeSectionBounds .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "XkbSectionPtr " "section" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry that contains the section .TP .I section section to be examined and updated .SH DESCRIPTION .LP If you add or delete a row to or from a section, or if you change the geometry of any of the rows in that section, you may need to update the bounding box for that section. .I XkbComputeSectionBounds examines all the rows of the .I section and updates the bounding box of that section so that it contains all rows. .I XkbComputeSectionBounds returns False if any of the arguments is NULL; otherwise, it returns True. libX11-1.8.12/man/xkb/XkbModActionVMods.man0000644014310600000120000000332614763154126013660 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbModActionVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbModActionVMods \- Returns the vmods1 and vmods2 fields of act converted to the vmods format of an Xkb modifier description .SH SYNOPSIS .HP .B unsigned short XkbModActionVMods .BI "(\^XkbAction " "act" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action from which to extract virtual mods .SH DESCRIPTION .LP .I XkbModActionVMods returns the .I vmods1 and .I vmods2 fields of .I act converted to the .I vmods format of an Xkb modifier description. libX11-1.8.12/man/xkb/XkbAddGeomSection.man0000644014310600000120000001155714763154126013664 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAddGeomSection __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAddGeomSection \- Add one section to an existing keyboard geometry .SH SYNOPSIS .HP .B XkbSectionPtr XkbAddGeomSection .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "Atom " "name" "\^," .BI "int " "sz_rows" "\^," .BI "int " "sz_doodads" "\^," .BI "int " "sz_overlays" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry to be updated .TP .I name name of the new section .TP .I sz_rows number of rows to reserve in the section .TP .I sz_doodads number of doodads to reserve in the section .TP .I sz_overlays number of overlays to reserve in the section .SH DESCRIPTION .LP Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the .I num_ * fields of the corresponding structure is incremented by 1. These functions do not change .I sz_* unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements. The top-level geometry description includes a list of .I geometry properties. A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties. A keyboard geometry contains an arbitrary number of sections. .I XkbAddGeomSection adds one section to an existing keyboard geometry .I geom. The new section contains space for the number of rows, doodads, and overlays specified by .I sz_rows, sz_doodads, and .I sz_overlays. The new section is allocated and zeroed and given the name specified by .I name. If a section with name .I name already exists in the geometry, a pointer to the existing section is returned. .I XkbAddGeomSection returns NULL if any of the parameters is empty or if it was not able to allocate space for the section. To allocate space for an arbitrary number of sections to a geometry, use .I XkbAllocGeomSections. .SH STRUCTURES .LP .nf typedef struct _XkbSection { Atom name; /\&* section name */ unsigned char priority; /\&* drawing priority, 0=>highest, 255=>lowest */ short top; /\&* top coordinate of section origin */ short left; /\&* left coordinate of row origin */ unsigned short width; /\&* section width, in mm/10 */ unsigned short height; /\&* section height, in mm/10 */ short angle; /\&* angle of section rotation, counterclockwise */ unsigned short num_rows; /\&* number of rows in the rows array */ unsigned short num_doodads; /\&* number of doodads in the doodads array */ unsigned short num_overlays; /\&* number of overlays in the overlays array */ unsigned short sz_rows; /\&* size of the rows array */ unsigned short sz_doodads; /\&* size of the doodads array */ unsigned short sz_overlays; /\&* size of the overlays array */ XkbRowPtr rows; /\&* section rows array */ XkbDoodadPtr doodads; /\&* section doodads array */ XkbBoundsRec bounds; /\&* bounding box for the section, before rotation*/ XkbOverlayPtr overlays; /\&* section overlays array */ } XkbSectionRec, *XkbSectionPtr; .fi .I top and .I left are the origin of the section, relative to the origin of the keyboard, in mm/10. angle is in 1/10 degrees. .SH "SEE ALSO" .BR XkbAllocGeomSections (__libmansuffix__) libX11-1.8.12/man/xkb/XkbSARedirectVModsMask.man0000644014310600000120000001030414763154126014576 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSARedirectVModsMask __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSARedirectVModsMask \- Returns the vmods_mask0 and vmods_mask1 fields of act converted to an unsigned int .SH SYNOPSIS .HP .B unsigned int XkbSARedirectVModsMask .BI "(\^XkbRedirectKeyAction " "act" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action from which to extract vmods .SH DESCRIPTION .LP Actions associated with the XkbRedirectKeyAction structure generate KeyPress and KeyRelease events containing a keycode different from the key that was pressed or released. The .I type field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey. Key presses cause a KeyPress event for the key specified by the .I new_key field instead of the actual key. The state reported in this event reports the current effective modifiers changed as follows: any real modifiers selected by the .I mods_mask field are set to corresponding values from the .I mods field. Any real modifiers bound to the virtual modifiers specified by the .I vmods_mask0 and .I vmods_mask1 fields are either set or cleared, depending on the corresponding values in the .I vmods0 and .I vmods1 fields. If the real and virtual modifier definitions specify conflicting values for a single modifier, the real modifier definition has priority. Key releases cause a KeyRelease event for the key specified by the .I new_key field instead of the actual key. The state for this event consists of the effective keyboard modifiers at the time of the release, changed as described previously. The XkbSA_RedirectKey action normally redirects to another key on the same device as the key that caused the event, unless that device does not belong to the input extension KeyClass, in which case this action causes an event on the core keyboard device. (The input extension categorizes devices by breaking them into classes. Keyboards, and other input devices with keys, are classified as KeyClass devices by the input extension.) The .I vmods_mask0 and .I vmods_mask1 fields actually represent one .I vmods_mask value. Xkb provides macros to convert between the two formats. .I XkbSARedirectVModsMask returns the .I vmods_mask0 and .I vmods_mask1 fields of .I act converted to an unsigned int. .bp .SH STRUCTURES .LP .nf typedef struct_XkbRedirectKeyAction { unsigned char type; /\&* XkbSA_RedirectKey */ unsigned char new_key; /\&* keycode to be put in event */ unsigned char mods_mask; /\&* mask of real mods to be reset */ unsigned char mods; /\&* mask of real mods to take values from */ unsigned char vmods_mask0; /\&* first half of mask of virtual mods to be reset */ unsigned char vmods_mask1; /\&* other half of mask of virtual mods to be reset */ unsigned char vmods0; /\&* first half of mask of virtual mods to take values from */ unsigned char vmods1; /\&* other half of mask of virtual mods to take values from */ } XkbRedirectKeyAction; .fi libX11-1.8.12/man/xkb/XkbVirtualModsToReal.man0000644014310600000120000001067314763154126014415 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbVirtualModsToReal __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbVirtualModsToReal \- Determines the mapping of virtual modifiers to core X protocol modifiers .SH SYNOPSIS .HP .B Bool XkbVirtualModsToReal .BI "(\^XkbDescPtr " "xkb" "\^," .BI "unsigned int " "virtual_mask" "\^," .BI "unsigned int *" "mask_rtrn" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb keyboard description for input device .TP .I virtual_mask virtual modifier mask to translate .TP .I mask_rtrn backfilled with real modifiers .SH DESCRIPTION .LP Xkb maintains a .I virtual modifier mapping, which lists the virtual modifiers associated with, or bound to, each key. The real modifiers bound to a virtual modifier always include all of the modifiers bound to any of the keys that specify that virtual modifier in their virtual modifier mapping. The .I server.vmodmap array indicates which virtual modifiers are bound to each key; each entry is a bitmask for the virtual modifier bits. The .I server.vmodmap array is indexed by keycode. The .I vmodmap and .I vmods members of the server map are the "master" virtual modifier definitions. Xkb automatically propagates any changes to these fields to all other fields that use virtual modifier mappings. For example, if Mod3 is bound to the Num_Lock key by the core protocol modifier mapping, and the NumLock virtual modifier is bound to they Num_Lock key by the virtual modifier mapping, Mod3 is added to the set of modifiers associated with NumLock. The virtual modifier mapping is normally updated whenever actions are automatically applied to symbols and few applications should need to change the virtual modifier mapping explicitly. Use .I XkbGetMap to get the virtual modifiers from the server or use .I XkbGetVirtualMods to update a local copy of the virtual modifiers bindings from the server. To set the binding of a virtual modifier to a real modifier, use .I XkbGetVirtualMods If the keyboard description defined by .I xkb includes bindings for virtual modifiers, .I XkbVirtualModsToReal uses those bindings to determine the set of real modifiers that correspond to the set of virtual modifiers specified in .I virtual_mask. The .I virtual_mask parameter is a mask specifying the virtual modifiers to translate; the i-th bit (0 relative) of the mask represents the i-th virtual modifier. If .I mask_rtrn is non-NULL, .I XkbVirtualModsToReal backfills it with the resulting real modifier mask. If the keyboard description in .I xkb does not include virtual modifier bindings, .I XkbVirtualModsToReal returns False; otherwise, it returns True. .SH "RETURN VALUES" .TP 15 True The .I XkbVirtualModsToReal function returns True if the keyboard description in .I xkb does include virtual modifier bindings. .TP 15 False The .I XkbVirtualModsToReal function returns False if the keyboard description in .I xkb does not include virtual modifier bindings. .SH "SEE ALSO" .BR XkbGetMap (__libmansuffix__), .BR XkbGetVirtualMods (__libmansuffix__) .SH NOTES .LP It is possible for a local (client-side) keyboard description (the .I xkb parameter) to not contain any virtual modifier information (simply because the client has not requested it) while the server's corresponding definition may contain virtual modifier information. libX11-1.8.12/man/xkb/XkbOutOfRangeGroupInfo.man0000644014310600000120000002110614763154126014670 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbOutOfRangeGroupInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbOutOfRangeGroupInfo \- Returns only the out-of-range processing information from the group_info field of an XkbSymMapRec structure .SH SYNOPSIS .HP .B unsigned char XkbOutOfRangeGroupInfo .BI "(\^unsigned char " "grp_inf" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I grp_inf Xkb description of interest .SH DESCRIPTION .LP .I XkbOutOfRangeGroupInfo returns only the out-of-range processing information from the .I group_info field of an XkbSymMapRec structure. The .I group_info field of an XkbSymMapRec is an encoded value containing the number of groups of symbols bound to the key as well as the specification of the treatment of out-of-range groups. It is legal for a key to have zero groups, in which case it also has zero symbols and all events from that key yield NoSymbol. To obtain the number of groups of symbols bound to the key, use .I XkbKeyNumGroups. To change the number of groups bound to a key, use .I XkbChangeTypesOfKey. To obtain a mask that determines the treatment of out-of-range groups, use .I XkbKeyGroupInfo and .I XkbOutOfRangeGroupInfo. The keyboard controls contain a .I groups_wrap field specifying the handling of illegal groups on a global basis. That is, when the user performs an action causing the effective group to go out of the legal range, the .I groups_wrap field specifies how to normalize the effective keyboard group to a group that is legal for the keyboard as a whole, but there is no guarantee that the normalized group will be within the range of legal groups for any individual key. The per-key .I group_info field specifies how a key treats a legal effective group if the key does not have a type specified for the group of concern. For example, the Enter key usually has just one group defined. If the user performs an action causing the global keyboard group to change to Group2, the .I group_info field for the Enter key describes how to handle this situation. Out-of-range groups for individual keys are mapped to a legal group using the same options as are used for the overall keyboard group. The particular type of mapping used is controlled by the bits set in the .I group_info flag, as shown in Table 1. .bp .TS c s l l l l. Table 1 group_info Range Normalization _ Bits set in group_info Normalization method _ XkbRedirectIntoRange XkbRedirectIntoRange XkbClampIntoRange XkbClampIntoRange none of the above XkbWrapIntoRange .TE .SH STRUCTURES .LP The KeySymMapRec structure is defined as follows: .nf #define XkbNumKbdGroups 4 #define XkbMaxKbdGroup (XkbNumKbdGroups-1) typedef struct { /\&* map to keysyms for a single keycode */ unsigned char kt_index[XkbNumKbdGroups]; /\&* key type index for each group */ unsigned char group_info; /\&* # of groups and out of range group handling */ unsigned char width; /\&* max # of shift levels for key */ unsigned short offset; /\&* index to keysym table in syms array */ } XkbSymMapRec, *XkbSymMapPtr; .fi .nf The XkbControlsRec structure is defined as follows: #define XkbMaxLegalKeyCode 255 #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8) typedef struct { unsigned char mk_dflt_btn; /\&* default button for keyboard driven mouse */ unsigned char num_groups; /\&* number of keyboard groups */ unsigned char groups_wrap; /\&* how to wrap out-of-bounds groups */ XkbModsRec internal; /\&* defines server internal modifiers */ XkbModsRec ignore_lock; /\&* modifiers to ignore when checking for grab */ unsigned int enabled_ctrls; /\&* 1 bit => corresponding boolean control enabled */ unsigned short repeat_delay; /\&* ms delay until first repeat */ unsigned short repeat_interval; /\&* ms delay between repeats */ unsigned short slow_keys_delay; /\&* ms minimum time key must be down to be ok */ unsigned short debounce_delay; /\&* ms delay before key reactivated */ unsigned short mk_delay; /\&* ms delay to second mouse motion event */ unsigned short mk_interval; /\&* ms delay between repeat mouse events */ unsigned short mk_time_to_max; /\&* # intervals until constant mouse move */ unsigned short mk_max_speed; /\&* multiplier for maximum mouse speed */ short mk_curve; /\&* determines mouse move curve type */ unsigned short ax_options; /\&* 1 bit => Access X option enabled */ unsigned short ax_timeout; /\&* seconds until Access X disabled */ unsigned short axt_opts_mask; /\&* 1 bit => options to reset on Access X timeout */ unsigned short axt_opts_values; /\&* 1 bit => turn option on, 0=> off */ unsigned int axt_ctrls_mask; /\&* which bits in enabled_ctrls to modify */ unsigned int axt_ctrls_values; /\&* values for new bits in enabled_ctrls */ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\&* per key auto repeat */ } XkbControlsRec, *XkbControlsPtr; .fi .nf The XkbControlsRec structure is defined as follows: #define XkbMaxLegalKeyCode 255 #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8) typedef struct { unsigned char mk_dflt_btn; /\&* default button for keyboard driven mouse */ unsigned char num_groups; /\&* number of keyboard groups */ unsigned char groups_wrap; /\&* how to wrap out-of-bounds groups */ XkbModsRec internal; /\&* defines server internal modifiers */ XkbModsRec ignore_lock; /\&* modifiers to ignore when checking for grab */ unsigned int enabled_ctrls; /\&* 1 bit => corresponding boolean control enabled */ unsigned short repeat_delay; /\&* ms delay until first repeat */ unsigned short repeat_interval; /\&* ms delay between repeats */ unsigned short slow_keys_delay; /\&* ms minimum time key must be down to be ok */ unsigned short debounce_delay; /\&* ms delay before key reactivated */ unsigned short mk_delay; /\&* ms delay to second mouse motion event */ unsigned short mk_interval; /\&* ms delay between repeat mouse events */ unsigned short mk_time_to_max; /\&* # intervals until constant mouse move */ unsigned short mk_max_speed; /\&* multiplier for maximum mouse speed */ short mk_curve; /\&* determines mouse move curve type */ unsigned short ax_options; /\&* 1 bit => Access X option enabled */ unsigned short ax_timeout; /\&* seconds until Access X disabled */ unsigned short axt_opts_mask; /\&* 1 bit => options to reset on Access X timeout */ unsigned short axt_opts_values; /\&* 1 bit => turn option on, 0=> off */ unsigned int axt_ctrls_mask; /\&* which bits in enabled_ctrls to modify */ unsigned int axt_ctrls_values; /\&* values for new bits in enabled_ctrls */ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\&* per key auto repeat */ } XkbControlsRec, *XkbControlsPtr; .fi .SH "SEE ALSO" .BR XkbChangeTypesOfKey (__libmansuffix__), .BR XkbKeyGroupInfo (__libmansuffix__), .BR XkbOutOfRangeGroupInfo. (__libmansuffix__) libX11-1.8.12/man/xkb/XkbSARedirectVMods.man0000644014310600000120000001024014763154126013761 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSARedirectVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSARedirectVMods \- Returns the vmods0 and vmods1 fields of act converted to an unsigned int .SH SYNOPSIS .HP .B unsigned int XkbSARedirectVMods .BI "(\^XkbRedirectKeyAction " "act" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action from which to extract vmods .SH DESCRIPTION .LP Actions associated with the XkbRedirectKeyAction structure generate KeyPress and KeyRelease events containing a keycode different from the key that was pressed or released. The .I type field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey. Key presses cause a KeyPress event for the key specified by the .I new_key field instead of the actual key. The state reported in this event reports the current effective modifiers changed as follows: any real modifiers selected by the .I mods_mask field are set to corresponding values from the .I mods field. Any real modifiers bound to the virtual modifiers specified by the .I vmods_mask0 and .I vmods_mask1 fields are either set or cleared, depending on the corresponding values in the .I vmods0 and .I vmods1 fields. If the real and virtual modifier definitions specify conflicting values for a single modifier, the real modifier definition has priority. Key releases cause a KeyRelease event for the key specified by the .I new_key field instead of the actual key. The state for this event consists of the effective keyboard modifiers at the time of the release, changed as described previously. The XkbSA_RedirectKey action normally redirects to another key on the same device as the key that caused the event, unless that device does not belong to the input extension KeyClass, in which case this action causes an event on the core keyboard device. (The input extension categorizes devices by breaking them into classes. Keyboards, and other input devices with keys, are classified as KeyClass devices by the input extension.) The .I vmods_mask0 and .I vmods_mask1 fields actually represent one .I vmods_mask value. Xkb provides macros to convert between the two formats. .I XkbSARedirectVModsMask returns the .I vmods0 and .I vmods1 fields of .I act converted to an unsigned int. .SH STRUCTURES .LP .nf typedef struct_XkbRedirectKeyAction { unsigned char type; /\&* XkbSA_RedirectKey */ unsigned char new_key; /\&* keycode to be put in event */ unsigned char mods_mask; /\&* mask of real mods to be reset */ unsigned char mods; /\&* mask of real mods to take values from */ unsigned char vmods_mask0; /\&* first half of mask of virtual mods to be reset */ unsigned char vmods_mask1; /\&* other half of mask of virtual mods to be reset */ unsigned char vmods0; /\&* first half of mask of virtual mods to take values from */ unsigned char vmods1; /\&* other half of mask of virtual mods to take values from */ } XkbRedirectKeyAction; .fi libX11-1.8.12/man/xkb/XkbKeyGroupsWidth.man0000644014310600000120000000452714763154126013766 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbKeyGroupsWidth __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbKeyGroupsWidth \- Computes the maximum width associated with the key corresponding to .I keycode .SH SYNOPSIS .HP .B int XkbKeyGroupsWidth .BI "(\^XkbDescPtr " "xkb" "\^," .BI "KeyCode " "keycode" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description of interest .TP .I keycode keycode of interest .SH DESCRIPTION .LP The key width and number of groups associated with a key are used to form a small two-dimensional array of KeySyms for a key. This array may be different sizes for different keys. The array for a single key is stored as a linear list, in row-major order. The arrays for all of the keys are stored in the .I syms field of the client map. There is one row for each group associated with a key and one column for each level. The index corresponding to a given group and shift level is computed as: .nf idx = group_index * key_width + shift_level .fi The .I offset field of the .I key_sym_map entry for a key is used to access the beginning of the array. .I XkbKeyGroupsWidth computes the maximum width associated with the key corresponding to .I keycode. libX11-1.8.12/man/xkb/XkbFreeGeomSections.man0000644014310600000120000000543214763154126014233 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeGeomSections __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeGeomSections \- Free geometry sections .SH SYNOPSIS .HP .B void XkbFreeGeomSections .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "int " "first" "\^," .BI "int " "count" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry in which sections should be freed .TP .I first first section to be freed .TP .I count number of sections to be freed .TP .I free_all True => all sections are freed .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. If .I free_all is True, all sections are freed regardless of the value of .I first and .I count. Otherwise, the number of sections specified by .I count are freed, beginning with the section specified by .I first in the specified geometry. .SH "RETURN VALUES" .TP 15 Success The XkbFreeGeomSections function returns Success when there are no allocation or argument errors. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbAllocGeomKeyAliases.man0000644014310600000120000000523414763154126014647 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbAllocGeomKeyAliases __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbAllocGeomKeyAliases \- Allocate geometry key aliases .SH SYNOPSIS .HP .B Status XkbAllocGeomKeyAliases .BI "(\^XkbGeometryPtr " "geom" "\^," .BI "int " "num_needed" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I geom geometry for which key aliases should be allocated .TP .I num_needed number of new key aliases required .SH DESCRIPTION .LP Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase .I sz_* but never touch .I num_* (unless there is an allocation failure, in which case they reset both .I sz_* and .I num_* to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected. .I XkbAllocGeomKeyAliases allocates space for .I num_needed key aliases and adds them to the specified geometry .I geom. A key alias is a pair of strings that associates an alternate name for a key with the real name for that key. To free geometry key aliases, use .I XkbFreeGeomKeyAliases. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadValue An argument is out of range .SH "SEE ALSO" .BR XkbFreeGeomKeyAliases (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetKeyExplicitComponents.man0000644014310600000120000001176014763154126015773 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetKeyExplicitComponents __libmansuffix__ "20 Jul 1999" "X v11 Rel. 6.4" "XKB FUNCTION" .SH NAME XkbGetKeyExplicitComponents \- Obtain the explicit components (the explicit array) for a subset of the keys in a keyboard description .SH SYNOPSIS .HP .B Status XkbGetKeyExplicitComponents .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "first" "\^," .BI "unsigned int " "num" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to server .TP .I first keycode of first key to fetch .TP .I num number of keys for which to get explicit info .TP .I xkb Xkb description in which to put results .SH DESCRIPTION .LP Whenever a client remaps the keyboard using core protocol requests, Xkb examines the map to determine likely default values for the components that cannot be specified using the core protocol (see Core Keyboard Mapping to Xkb Keyboard Mapping Transformation for more information on how Xkb chooses the default values). DO THE FOUR PAGES OF "CORE KEYBOARD MAPPING TO XKB KEYBOARD MAPPING TRANSFORMATION" NEED TO BE ADDED HERE? This automatic remapping might replace definitions explicitly requested by an application, so the Xkb keyboard description defines an explicit components mask for each key. Any aspects of the automatic remapping listed in the explicit components mask for a key are not changed by the automatic keyboard mapping. The explicit components masks are held in the .I explicit field of the server map, which is an array indexed by keycode. Each entry in this array is a mask that is a bitwise inclusive OR of the values shown in Table 1. .TS c s s l l l l l lw(3i). Table 1 Explicit Component Masks _ Bit in Explicit Mask Value Protects Against _ ExplicitKeyType1 (1<<0) T{ Automatic determination of the key type associated with Group1. T} ExplicitKeyType2 (1<<1) T{ Automatic determination of the key type associated with Group2. T} ExplicitKeyType3 (1<<2) T{ Automatic determination of the key type associated with Group3. T} ExplicitKeyType4 (1<<3) T{ Automatic determination of the key type associated with Group4. T} ExplicitInterpret (1<<4) T{ Application of any of the fields of a symbol interpretation to the key in question. T} ExplicitAutoRepeat (1<<5) T{ Automatic determination of auto-repeat status for the key, as specified in a symbol interpretation. T} ExplicitBehavior (1<<6) T{ Automatic assignment of the XkbKB_Lock behavior to the key, if the XkbSI_LockingKey flag is set in a symbol interpretation. T} ExplicitVModMap (1<<7) T{ Automatic determination of the virtual modifier map for the key based on the actions assigned to the key and the symbol interpretations that match the key. T} .TE .I XkbGetKeyExplicitComponents sends a request to the server to obtain the explicit components for .I num keys on the keyboard starting with key .I first. It waits for a reply and returns the explicit components in the .I server->explicit array of .I xkb. If successful, .I XkbGetKeyExplicitComponents returns Success. The .I xkb parameter must be a pointer to a valid Xkb keyboard description. If the .I server map in the .I xkb parameter has not been allocated, .I XkbGetKeyExplicitComponents allocates and initializes it before obtaining the actions. If the server does not have a compatible version of Xkb, or the Xkb extension has not been properly initialized, .I XkbGetKeyExplicitComponents returns BadMatch. If .I num is less than 1 or greater than XkbMaxKeyCount, .I XkbGetKeyExplicitComponents returns BadValue. If any allocation errors occur, .I XkbGetKeyExplicitComponents returns BadAlloc. .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .TP 15 .B BadValue An argument is out of range libX11-1.8.12/man/xkb/XkbSetNames.man0000644014310600000120000001562314763154126012554 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetNames \- Change the symbolic names in the server .SH SYNOPSIS .HP .B Bool XkbSetNames .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "which" "\^," .BI "unsigned int " "first_type" "\^," .BI "unsigned int " "num_types" "\^," .BI "XkbDescPtr " "xkb" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to the X server .TP .I which mask of names or map components to be changed .TP .I first_type first type whose name is to be changed .TP .I num_types number of types for which names are to be changed .TP .I xkb keyboard description from which names are to be taken .SH DESCRIPTION .LP To change the symbolic names in the server, first modify a local copy of the keyboard description and then use either .I XkbSetNames, or, to save network traffic, use a XkbNameChangesRecstructure and call .I XkbChangeNames to download the changes to the server. .I XkbSetNames and .I XkbChangeNames can generate BadAlloc, BadAtom, BadLength, BadMatch, and BadImplementation errors. Use .I XkbSetNames to change many names at the same time. For each bit set in .I which, XkbSetNames takes the corresponding value (or values in the case of arrays) from the keyboard description .I xkb and sends it to the server. The .I first_type and .I num_types arguments are used only if XkbKeyTypeNamesMask or XkbKTLevelNamesMask is set in .I which and specify a subset of the types for which the corresponding names are to be changed. If either or both of these mask bits are set but the specified types are illegal, .I XkbSetNames returns False and does not update any of the names specified in .I which. The specified types are illegal if .I xkb does not include a map component or if .I first_type and .I num_types specify types that are not defined in the keyboard description. .SH STRUCTURES .LP The XkbNameChangesRec allows applications to identify small modifications to the symbolic names and effectively reduces the amount of traffic sent to the server: .nf typedef struct _XkbNameChanges { unsigned int changed; /\&* name components that have changed */ unsigned char first_type; /\&* first key type with a new name */ unsigned char num_types; /\&* number of types with new names */ unsigned char first_lvl; /\&* first key type with new level names */ unsigned char num_lvls; /\&* number of key types with new level names */ unsigned char num_aliases; /\&* if key aliases changed, total number of key aliases */ unsigned char num_rg; /\&* if radio groups changed, total number of radio groups */ unsigned char first_key; /\&* first key with a new name */ unsigned char num_keys; /\&* number of keys with new names */ unsigned short changed_vmods; /\&* mask of virtual modifiers for which names have changed */ unsigned long changed_indicators; /\&* mask of indicators for which names were changed */ unsigned char changed_groups; /\&* mask of groups for which names were changed */ } XkbNameChangesRec, *XkbNameChangesPtr .fi The .I changed field specifies the name components that have changed and is the bitwise inclusive OR of the valid names mask bits defined in Table 1. The rest of the fields in the structure specify the ranges that have changed for the various kinds of symbolic names, as shown in Table 2. Xkb provides several functions that work with symbolic names. Each of these functions uses a mask to specify individual fields of the structures described above. These masks and their relationships to the fields in a keyboard description are shown in Table 1. .TS c s s s l l l l. Table 1 Symbolic Names Masks _ Mask Bit Value Keyboard Field Component _ XkbKeycodesNameMask (1<<0) Xkb->names keycodes XkbGeometryNameMask (1<<1) Xkb->names geometry XkbSymbolsNameMask (1<<2) Xkb->names symbols XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols XkbTypesNameMask (1<<4) Xkb->names type XkbCompatNameMask (1<<5) Xkb->names compat XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*] XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*] XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*] XkbGroupNamesMask (1<<12) Xkb->names groups[*] XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg XkbComponentNamesMask (0x3f) Xkb->names keycodes, geometry, symbols, physical symbols, types, and compatibility map XkbAllNamesMask (0x3fff) Xkb->names all name components .TE .TS c s s s l l l l. Table 2 XkbNameChanges Fields _ Mask Fields Component Field _ XkbKeyTypeNamesMask first_type, Xkb->map type[*].name num_types XkbKTLevelNamesMask first_lvl, Xkb->map type[*].lvl_names[*] num_lvls XkbKeyAliasesMask num_aliases Xkb->names key_aliases[*] XkbRGNamesMask num_rg Xkb->names radio_groups[*] XkbKeyNamesMask first_key, Xkb->names keys[*] num_keys XkbVirtualModNamesMask changed_vmods Xkb->names vmods[*] XkbIndicatorNamesMask changed_indicators Xkb->names indicators[*] XkbGroupNamesMask changed_groups Xkb->names groups[*] .TE .SH DIAGNOSTICS .TP 15 .B BadAlloc Unable to allocate storage .TP 15 .B BadAtom A name is neither a valid Atom or None .TP 15 .B BadImplementation Invalid reply from server .TP 15 .B BadLength The length of a request is shorter or longer than that required to minimally contain the arguments .TP 15 .B BadMatch A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid .SH "SEE ALSO" .BR XkbChangeNames (__libmansuffix__) libX11-1.8.12/man/xkb/XkbSetIndicatorMap.man0000644014310600000120000001456214763154126014064 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetIndicatorMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetIndicatorMap \- Downloads the changes to the server based on modifications to a local copy of the keyboard description which will update the maps for one or more indicators .SH SYNOPSIS .HP .B Bool XkbSetIndicatorMap .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "which" "\^," .BI "XkbDescPtr " "desc" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to the X server .TP .I which mask of indicators to change .TP .I desc keyboard description from which the maps are taken .SH DESCRIPTION .LP This section discusses the effects of explicitly changing indicators depending upon different settings in the indicator map. See Tables 1 and Table 2 for information on the effects of the indicator map fields when explicit changes are made. .TS c s s c s s l l l l l lw(3i). Table 1 XkbIndicatorMapRec which_groups and groups, Indicator Drives Keyboard _ which_groups New State Effect on Keyboard Group State _ XkbIM_UseNone On or Off No effect XkbIM_UseBase On or Off No effect XkbIM_UseLatched On T{ The groups field is treated as a group mask. The keyboard group latch is changed to the lowest numbered group specified in groups; if groups is empty, the keyboard group latch is changed to zero. T} XkbIM_UseLatched Off T{ The groups field is treated as a group mask. If the indicator is explicitly extinguished, keyboard group latch is changed to the lowest numbered group not specified in groups; if groups is zero, the keyboard group latch is set to the index of the highest legal keyboard group. T} XkbIM_UseLocked or .br XkbIM_UseEffective On T{ If the groups mask is empty, group is not changed; otherwise, the locked keyboard group is changed to the lowest numbered group specified in groups. T} XkbIM_UseLocked or .br XkbIM_UseEffective Off T{ Locked keyboard group is changed to the lowest numbered group that is not specified in the groups mask, or to Group1 if the groups mask contains all keyboard groups. T} .TE .TS c s s c s s l l l l l lw(3i). Table 2 XkbIndicatorMapRec which_mods and mods, Indicator Drives Keyboard _ which_mods New State Effect on Keyboard Modifiers _ XkbIM_UseNone or .br XkbIM_UseBase On or Off No Effect XkbIM_UseLatched On T{ Any modifiers specified in the mask field of mods are added to the latched modifiers. T} XkbIM_UseLatched Off T{ Any modifiers specified in the mask field of mods are removed from the latched modifiers. T} XkbIM_UseLocked, .br XkbIM_UseCompat, or .br XkbIM_UseEffective On T{ Any modifiers specified in the mask field of mods are added to the locked modifiers. T} XkbIM_UseLocked Off T{ Any modifiers specified in the mask field of mods are removed from the locked modifiers. T} XkbIM_UseCompat or .br XkbIM_UseEffective Off T{ Any modifiers specified in the mask field of mods are removed from both the locked and latched modifiers. T} .TE If XkbIM_LEDDrivesKB is set and XkbIM_NoExplicit is not, and if you call a function that updates the server's image of the indicator map (such as .I XkbSetIndicatorMap or .IR XkbSetNamedIndicator ), Xkb changes the keyboard state and controls to reflect the other fields of the indicator map. If you attempt to explicitly change the value of an indicator for which XkbIM_LEDDrivesKB is absent or for which XkbIM_NoExplicit is present, keyboard state or controls are unaffected. If neither XkbIM_NoAutomatic nor XkbIM_NoExplicit is set in an indicator map, Xkb honors any request to change the state of the indicator, but the new state might be immediately superseded by automatic changes to the indicator state if the keyboard state or controls change. The effects of changing an indicator that drives the keyboard are cumulative; it is possible for a single change to affect keyboard group, modifiers, and controls simultaneously. If you change an indicator for which both the XkbIM_LEDDrivesKB and XkbIM_NoAutomatic flags are specified, Xkb applies the keyboard changes specified in the other indicator map fields and changes the indicator to reflect the state that was explicitly requested. The indicator remains in the new state until it is explicitly changed again. If the XkbIM_NoAutomatic flag is not set and XkbIM_LEDDrivesKB is set, Xkb applies the changes specified in the other indicator map fields and sets the state of the indicator to the values specified by the indicator map. Note that it is possible in this case for the indicator to end up in a different state than the one that was explicitly requested. For example, Xkb does not extinguish an indicator with .I which_mods of XkbIM_UseBase and .I mods of Shift if, at the time Xkb processes the request to extinguish the indicator, one of the Shift keys is physically depressed. If you explicitly light an indicator for which XkbIM_LEDDrivesKB is set, Xkb enables all of the boolean controls specified in the .I ctrls field of its indicator map. Explicitly extinguishing such an indicator causes Xkb to disable all of the boolean controls specified in .I ctrls. For each bit set in the .I which parameter, .I XkbSetIndicatorMap sends the corresponding indicator map from the .I desc parameter to the server. .SH "SEE ALSO" .BR XkbSetNamedIndicator (__libmansuffix__) libX11-1.8.12/man/xkb/XkbGetNamedGeometry.man0000644014310600000120000001113114763154126014223 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbGetNamedGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbGetNamedGeometry \- Loads a keyboard geometry description from this database by name .SH SYNOPSIS .HP .B Status XkbGetNamedGeometry .BI "(\^Display *" "dpy" "\^," .BI "XkbDescPtr " "xkb" "\^," .BI "Atom " "name" "\^);" .SH ARGUMENTS .TP .I dpy connection to the X server .TP .I xkb keyboard description into which the geometry should be loaded .TP .I name name of the geometry to be loaded .SH DESCRIPTION .LP It is also possible to load a keyboard geometry by name. The X server maintains a database of keyboard components (see below). .I XkbGetNamedGeometry can return BadName if the name cannot be found. The X server maintains a database of keyboard components, identified by component type. The database contains all the information necessary to build a complete keyboard description for a particular device, as well as to assemble partial descriptions. Table 1 identifies the component types and the type of information they contain. .TS c s s l l l l l l l lw(2i) lw(2i). Table 1 Server Database Keyboard Components _ Component Component Primary Contents May also contain Type _ Keymap T{ Complete keyboard description .br Normally assembled using a complete component from each of the other types T} .sp Keycodes T{ Symbolic name for each key .br Minimum and maximum legal keycodes T} T{ Aliases for some keys .br Symbolic names for indicators .br Description of indicators physically present T} .sp Types Key types T{ Real modifier bindings and symbolic names for some virtual modifiers T} .sp Compatibility T{ Rules used to assign actions to keysyms T} T{ Maps for some indicators .br Real modifier bindings and symbolic names for some virtual modifiers T} .sp Symbols T{ Symbol mapping for keyboard keys .br Modifier mapping .br Symbolic names for groups T} T{ Explicit actions and behaviors for some keys .br Real modifier bindings and symbolic names for some virtual modifiers T} .sp Geometry Layout of the keyboard T{ Aliases for some keys; overrides keycodes component aliases .br Symbolic names for some indicators .br Description of indicators physically present T} .TE While a keymap is a database entry for a complete keyboard description, and therefore logically different from the individual component database entries, the rules for processing keymap entries are identical to those for the individual components. In the discussion that follows, the term component is used to refer to either individual components or a keymap. There may be multiple entries for each of the component types. An entry may be either .I complete or .I partial. Partial entries describe only a piece of the corresponding keyboard component and are designed to be combined with other entries of the same type to form a complete entry. For example, a partial symbols map might describe the differences between a common ASCII keyboard and some national layout. Such a partial map is not useful on its own because it does not include those symbols that are the same on both the ASCII and national layouts (such as function keys). On the other hand, this partial map can be used to configure .I any ASCII keyboard to use a national layout. When a keyboard description is built, the components are processed in the order in which they appear in Table 1; later definitions override earlier ones. .SH DIAGNOSTICS .TP 15 .B BadName A font or color of the specified name does not exist. libX11-1.8.12/man/xkb/XkbTranslateKeySym.man0000644014310600000120000000500014763154126014120 .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbTranslateKeySym __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbTranslateKeySym \- Find the string and symbol associated with a keysym for a given keyboard state .SH SYNOPSIS .HP .B int XkbTranslateKeySym .BI "(\^Display *" "dpy" "\^," .BI "KeySym *" "sym_inout" "\^," .BI "unsigned int " "mods" "\^," .BI "char *" "buf" "\^," .BI "int " "nbytes" "\^," .BI "int *" "extra_rtrn" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I sym_inout symbol to be translated; result of translation .TP .I mods modifiers to apply to sym_inout .TP .I buf buffer into which returned string is written .TP .I nbytes size of buffer in bytes .TP .I extra_rtrn number of bytes overflow .SH DESCRIPTION .LP .I XkbTranslateKeySym applies the transformations specified in .I mods to the symbol specified by .I sym_inout. It returns in .I buf the string, if any, associated with the keysym for the current locale. If the transformations in .I mods changes the keysym, .I sym_inout is updated accordingly. If the string returned is larger than .I nbytes, a count of bytes that does not fit into the buffer is returned in .I extra_rtrn. XkbTranslateKeySym returns the number of bytes it placed into .I buf. .SH "RETURN VALUES" .TP 15 buf Returns the string, if any, associated with the keysym for the current locale. libX11-1.8.12/man/xkb/XkbListComponents.man0000644014310600000120000001662614763154126014022 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbListComponents __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbListComponents \- List of components for one or more component types .SH SYNOPSIS .HP .B XkbComponentListPtr XkbListComponents .BI "(\^Display *" "dpy" "\^," .BI "unsigned int " "device_spec" "\^," .BI "XkbComponentNamesPtr " "ptrns" "\^," .BI "int *" "max_inout" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I dpy connection to X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I ptrns namelist for components of interest .TP .I max_inout max # returned names, # left over .SH DESCRIPTION .LP You may ask the server for a list of components for one or more component types. The request takes the form of a set of patterns, one pattern for each of the component types, including a pattern for the complete keyboard description. To obtain this list, use .I XkbListComponents. .I XkbListComponents queries the server for a list of component names matching the patterns specified in .I ptrns. It waits for a reply and returns the matching component names in an XkbComponentListRec structure. When you are done using the structure, you should free it using .I XkbFreeComponentList. device_spec indicates a particular device in which the caller is interested. A server is allowed (but not required) to restrict its reply to portions of the database that are relevant for that particular device. .I ptrns is a pointer to an XkbComponentNamesRec. Each of the fields in .I ptrns contains a pattern naming the components of interest. Each of the patterns is composed of characters from the ISO Latin1 encoding, but can contain only parentheses, the wildcard characters `?' and `*', and characters permitted in a component class or member name. A pattern may be NULL, in which case no components for that type is returned. Pattern matches with component names are case sensitive. The `?' wildcard matches any single character, except a left or right parenthesis; the `*' wildcard matches any number of characters, except a left or right parenthesis. If an implementation allows additional characters in a component class or member name other than those required by the Xkb extension, the result of comparing one of the additional characters to either of the wildcard characters is implementation-dependent. If a pattern contains illegal characters, the illegal characters are ignored. The matching process is carried out as if the illegal characters were omitted from the pattern. .I max_inout is used to throttle the amount of data passed to and from the server. On input, it specifies the maximum number of names to be returned (the total number of names in all component categories). Upon return from .I XkbListComponents, max_inout contains the number of names that matched the request but were not returned because of the limit. .B Component Names Component names have the form .I "class(member)" where .I class describes a subset of the available components for a particular type and the optional .I member identifies a specific component from that subset. For example, the name "atlantis(acme)" for a symbols component might specify the symbols used for the atlantis national keyboard layout by the vendor "acme." Each class has an optional .I default member - references that specify a class but not a member refer to the default member of the class, if one exists. Xkb places no constraints on the interpretation of the class and member names used in component names. The .I class and .I member names are both specified using characters from the Latin-1 character set. Xkb implementations must accept all alphanumeric characters, minus (`-') and underscore (`_') in class or member names, and must not accept parentheses, plus, vertical bar, percent sign, asterisk, question mark, or white space. The use of other characters is implementation-dependent. .SH STRUCTURES .LP The component name patterns used to describe the request are passed to .I XkbListComponents using an XkbComponentNamesRec structure. This structure has no special allocation constraints or interrelationships with other structures; allocate and free this structure using standard .I malloc and .I free calls or their equivalent: .nf typedef struct _XkbComponentNames { char * keymap; /\&* keymap names */ char * keycodes; /\&* keycode names */ char * types; /\&* type names */ char * compat; /\&* compatibility map names */ char * symbols; /\&* symbol names */ char * geometry; /\&* geometry names */ } XkbComponentNamesRec, *XkbComponentNamesPtr; .fi .I XkbListComponents returns a pointer to an XkbComponentListRec: .nf typedef struct _XkbComponentList { int num_keymaps; /\&* number of entries in keymap */ int num_keycodes; /\&* number of entries in keycodes */ int num_types; /\&* number of entries in types */ int num_compat; /\&* number of entries in compat */ int num_symbols; /\&* number of entries in symbols */ int num_geometry; /\&* number of entries in geometry; XkbComponentNamePtr keymap; /\&* keymap names */ XkbComponentNamePtr keycodes; /\&* keycode names */ XkbComponentNamePtr types; /\&* type names */ XkbComponentNamePtr compat; /\&* compatibility map names */ XkbComponentNamePtr symbols; /\&* symbol names */ XkbComponentNamePtr geometry; /\&* geometry names */ } XkbComponentListRec, *XkbComponentListPtr; typedef struct _XkbComponentName { unsigned short flags; /\&* hints regarding component name */ char * name; /\&* name of component */ } XkbComponentNameRec, *XkbComponentNamePtr; .fi .SH "SEE ALSO" .BR XkbFreeComponentList (__libmansuffix__) .SH NOTES .LP Note that the structure used to specify patterns on input is an XkbComponentNamesRec, and that used to hold the individual component names upon return is an XkbComponentNameRec (no trailing `s' in Name). libX11-1.8.12/man/xkb/XkbActionSetCtrls.man0000644014310600000120000001034614763154126013733 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbActionSetCtrls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbActionSetCtrls \- Sets the .I ctrls0 through .I ctrls3 fields of .I act from .I ctrls .SH SYNOPSIS .HP .B void XkbActionSetCtrls .BI "(\^XkbCtrlsAction " "act" "\^," .BI "unsigned int " "ctrls" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I act action in which to set ctrls0-ctrls3 .TP .I ctrls value to set in ctrls0-ctrls3 .SH DESCRIPTION .LP Actions associated with the XkbCtrlsAction structure change the state of the boolean controls. The .I type field can have any one of the values shown in Table 1. .TS c s l l l lw(4i). Table 1 Controls Action Types _ Type Effect _ XkbSA_SetControls T{ A key press enables any boolean controls specified in the ctrls fields that were not already enabled at the time of the key press. A key release disables any controls enabled by the key press. This action can cause XkbControlsNotify events. T} XkbSA_LockControls T{ If the XkbSA_LockNoLock bit is not set in the flags field, a key press enables any controls specified in the ctrls fields that were not already enabled at the time of the key press. .br If the XkbSA_LockNoUnlock bit is not set in the flags field, a key release disables any controls specified in the ctrls fields that were not already disabled at the time of the key press. .br This action can cause XkbControlsNotify events. T} .TE The .I flags field is composed of the bitwise inclusive OR of the masks shown in Table 2. .TS c s l l l lw(4i). Table 2 Control Action Flags _ Flag Meaning _ XkbSA_LockNoLock T{ If set, and the action type is XkbSA_LockControls, the server only disables controls. T} XkbSA_LockNoUnlock T{ If set, and the action type is XkbSA_LockControls, the server only enables controls. T} .TE The XkbSA_SetControls action implements a key that enables a boolean control when pressed and disables it when released. The XkbSA_LockControls action is used to implement a key that toggles the state of a boolean control each time it is pressed and released. The XkbSA_LockNoLock and XkbSA_LockNoUnlock flags allow modifying the toggling behavior to only unlock or only lock the boolean control. The .I ctrls0, ctrls1, ctrls2, and .I ctrls3 fields represent the boolean controls in the .I enabled_ctrls field of the controls structure. Xkb macros, to convert between the two formats. .I XkbActionSetCtrls sets the .I ctrls0 through .I ctrls3 fields of .I act from .I ctrls. .SH STRUCTURES .LP .nf typedef struct _XkbCtrlsAction { unsigned char type; /\&* XkbSA_SetControls, XkbSA_LockControls */ unsigned char flags; /\&* with type, controls enabling and disabling of controls */ unsigned char ctrls3; /\&* ctrls0 through ctrls3 represent the boolean controls */ unsigned char ctrls2; /\&* ctrls0 through ctrls3 represent the boolean controls */ unsigned char ctrls1; /\&* ctrls0 through ctrls3 represent the boolean controls */ unsigned char ctrls0; /\&* ctrls0 through ctrls3 represent the boolean controls */ } XkbCtrlsAction; .fi libX11-1.8.12/man/xkb/XkbSetCompatMap.man0000644014310600000120000001531714763154126013372 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbSetCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbSetCompatMap \- Modify the server's compatibility map .SH SYNOPSIS .HP .B Bool XkbSetCompatMap .BI "(\^Display *" "display" "\^," .BI "unsigned int " "which" "\^," .BI "XkbDescPtr " "xkb" "\^," .BI "Bool " "update_actions" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to server .TP .I which mask of compat map components to set .TP .I xkb source for compat map components .TP .I update_actions True => apply to server's keyboard map .SH DESCRIPTION To modify the server's compatibility map, first modify a local copy of the Xkb compatibility map, then call .I XkbSetCompatMap. You may allocate a new compatibility map for this purpose using .I XkbAllocCompatMap. You may also use a compatibility map from another server, although you need to adjust the .I device_spec field in the XkbDescRec accordingly. Note that symbol interpretations in a compatibility map ( .IR sym_interpret , the vector of XkbSymInterpretRec structures) are also allocated using this same function. .I XkbSetCompatMap copies compatibility map information from the keyboard description in .I xkb to the server specified in .I display's compatibility map for the device specified by the .I device_spec field of .IR xkb . Unless you have specifically modified this field, it is the default keyboard device. .I which specifies the compatibility map components to be set, and is an inclusive OR of the bits shown in Table 1. .TS c s s l l l l l lw(3i). Table 1 Compatibility Map Component Masks _ Mask Value Affecting _ XkbSymInterpMask (1<<0) Symbol interpretations XkbGroupCompatMask (1<<1) Group maps XkbAllCompatMask (0x3) All compatibility map components .TE After updating its compatibility map for the specified device, if .I update_actions is True, the server applies the new compatibility map to its entire keyboard for the device to generate a new set of key semantics, compatibility state, and a new core keyboard map. If .I update_actions is False, the new compatibility map is not used to generate any modifications to the current device semantics, state, or core keyboard map. One reason for not applying the compatibility map immediately would be if one server was being configured to match another on a piecemeal basis; the map should not be applied until everything is updated. To force an update at a later time, use .I XkbSetCompatMap specifying .I which as zero and .I update_actions as True. .I XkbSetCompatMap returns True if successful and False if unsuccessful. The server may report problems it encounters when processing the request subsequently via protocol errors. .SH "RETURN VALUES" .TP 15 True The .I XkbSetCompatMap function returns True if successful. .TP 15 False The .I XkbSetCompatMap function returns False if unsuccessful. .SH STRUCTURES The complete description of an Xkb keyboard is given by an XkbDescRec. The component structures in the XkbDescRec represent the major Xkb components. .nf typedef struct { struct _XDisplay *display; /\&* connection to X server */ unsigned short flags; /\&* private to Xkb, do not modify */ unsigned short device_spec; /\&* device of interest */ KeyCode min_key_code; /\&* minimum keycode for device */ KeyCode max_key_code; /\&* maximum keycode for device */ XkbControlsPtr ctrls; /\&* controls */ XkbServerMapPtr server; /\&* server keymap */ XkbClientMapPtr map; /\&* client keymap */ XkbIndicatorPtr indicators; /\&* indicator map */ XkbNamesPtr names; /\&* names for all components */ XkbCompatMapPtr compat; /\&* compatibility map */ XkbGeometryPtr geom; /\&* physical geometry of keyboard */ } XkbDescRec, *XkbDescPtr; .fi The .I display field points to an X display structure. The .I flags field is private to the library: modifying .I flags may yield unpredictable results. The .I device_spec field specifies the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which specifies the core keyboard device. The .I min_key_code and .I max_key_code fields specify the least and greatest keycode that can be returned by the keyboard. Each structure component has a corresponding mask bit that is used in function calls to indicate that the structure should be manipulated in some manner, such as allocating it or freeing it. These masks and their relationships to the fields in the XkbDescRec are shown in Table 2. .TS c s s l l l l l l. Table 2 Mask Bits for XkbDescRec _ Mask Bit XkbDescRec Field Value _ XkbControlsMask ctrls (1L<<0) XkbServerMapMask server (1L<<1) XkbIClientMapMask map (1L<<2) XkbIndicatorMapMask indicators (1L<<3) XkbNamesMask names (1L<<4) XkbCompatMapMask compat (1L<<5) XkbGeometryMask geom (1L<<6) XkbAllComponentsMask All Fields (0x7f) .TE The XkbSymInterpretRec structure specifies a symbol interpretation: .EX typedef struct { KeySym sym; /\&* keysym of interest or NULL */ unsigned char flags; /\&* XkbSI_AutoRepeat, XkbSI_LockingKey */ unsigned char match; /\&* specifies how mods is interpreted */ unsigned char mods; /\&* modifier bits, correspond to eight real modifiers */ unsigned char virtual_mod; /\&* 1 modifier to add to key virtual mod map */ XkbAnyAction act; /\&* action to bind to symbol position on key */ } XkbSymInterpretRec,*XkbSymInterpretPtr; .EN .SH "SEE ALSO" .BR XkbAllocCompatMap (__libmansuffix__) libX11-1.8.12/man/xkb/XkbLatchModifiers.man0000644014310600000120000000545114763154126013730 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbLatchModifiers __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbLatchModifiers \- Latches and unlatches any of the eight real keyboard modifiers .SH SYNOPSIS .HP .B Bool XkbLatchModifiers .BI "(\^Display *" "display" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "affect" "\^," .BI "unsigned int " "values" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I affect mask of real modifiers whose lock state is to change .TP .I values 1 => lock, 0 => unlock; only for modifiers selected by affect .SH DESCRIPTION .LP .I XkbLatchModifiers sends a request to the server to latch the real modifiers selected by both .I affect and .I values and to unlatch the real modifiers selected by .I affect , but not selected by .I values. .I XkbLatchModifiers does not wait for a reply from the server. It returns True if the request was sent, and False otherwise. The functions in this section that change the use of modifiers use a mask in the parameter affect. It is a bitwise inclusive OR of the legal modifier masks: .TS c l l. Table 1 Real Modifier Masks _ Mask _ ShiftMask LockMask ControlMask Mod1Mask Mod2Mask Mod3Mask Mod4Mask Mod5Mask .TE .SH "RETURN VALUES" .TP 15 True The .I XkbLatchModifiers function returns True if a request was sent to the server to latch the real modifiers selected by both .I affect and .I values and to unlatch the real modifiers selected by .I affect , but not selected by .I values. .TP 15 False The .I XkbLatchModifiers function returns False if the request was not sent. libX11-1.8.12/man/xkb/XkbForceDeviceBell.man0000644014310600000120000002456614763154126014020 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbForceDeviceBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbForceDeviceBell \- Rings the bell on any keyboard, overriding user preference settings for audible bells .SH SYNOPSIS .HP .B Bool XkbForceDeviceBell .BI "(\^Display *" "display" "\^," .BI "Window " "window" "\^," .BI "unsigned int " "device_spec" "\^," .BI "unsigned int " "bell_class" "\^," .BI "unsigned int " "bell_id" "\^," .BI "int " "percent" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I display connection to the X server .TP .I window event window, or None .TP .I device_spec device ID, or XkbUseCoreKbd .TP .I bell_class input extension class of the bell to be rung .TP .I bell_id input extension ID of the bell to be rung .TP .I percent relative volume, which can range from -100 to 100 inclusive .SH DESCRIPTION .LP The core X protocol allows only applications to explicitly sound the system bell with a given duration, pitch, and volume. Xkb extends this capability by allowing clients to attach symbolic names to bells, disable audible bells, and receive an event whenever the keyboard bell is rung. For the purposes of this document, the .I audible bell is defined to be the system bell, or the default keyboard bell, as opposed to any other audible sound generated elsewhere in the system. You can ask to receive XkbBellNotify events when any client rings any one of the following: .IP \(bu 5 The default bell .IP \(bu 5 Any bell on an input device that can be specified by a bell_class and bell_id pair .IP \(bu 5 Any bell specified only by an arbitrary name. (This is, from the server's point of view, merely a name, and not connected with any physical sound-generating device. Some client application must generate the sound, or visual feedback, if any, that is associated with the name.) .LP You can also ask to receive XkbBellNotify events when the server rings the default bell or if any client has requested events only (without the bell sounding) for any of the bell types previously listed. You can disable audible bells on a global basis. For example, a client that replaces the keyboard bell with some other audible cue might want to turn off the AudibleBell control to prevent the server from also generating a sound and avoid cacophony. If you disable audible bells and request to receive XkbBellNotify events, you can generate feedback different from the default bell. You can, however, override the AudibleBell control by calling one of the functions that force the ringing of a bell in spite of the setting of the AudibleBell control - .I XkbForceDeviceBell or .I XkbForceBell. In this case the server does not generate a bell event. Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeating, Xkb can provide feedback for the controls by using special beep codes. The AccessXFeedback control is used to configure the specific types of operations that generate feedback. Bell Names You can associate a name to an act of ringing a bell by converting the name to an Atom and then using this name when you call the functions listed in this chapter. If an event is generated as a result, the name is then passed to all other clients interested in receiving XkbBellNotify events. Note that these are arbitrary names and that there is no binding to any sounds. Any sounds or other effects (such as visual bells on the screen) must be generated by a client application upon receipt of the bell event containing the name. There is no default name for the default keyboard bell. The server does generate some predefined bells for the AccessX controls. These named bells are shown in Table 1; the name is included in any bell event sent to clients that have requested to receive XkbBellNotify events. .TS c s l l lW(4i) l. Table 1 Predefined Bells _ Action Named Bell _ Indicator turned on AX_IndicatorOn Indicator turned off AX_IndicatorOff More than one indicator changed state AX_IndicatorChange Control turned on AX_FeatureOn Control turned off AX_FeatureOff More than one control changed state AX_FeatureChange T{ SlowKeys and BounceKeys about to be turned on or off T} AX_SlowKeysWarning SlowKeys key pressed AX_SlowKeyPress SlowKeys key accepted AX_SlowKeyAccept SlowKeys key rejected AX_SlowKeyReject Accepted SlowKeys key released AX_SlowKeyRelease BounceKeys key rejected AX_BounceKeyReject StickyKeys key latched AX_StickyLatch StickyKeys key locked AX_StickyLock StickyKeys key unlocked AX_StickyUnlock .TE Audible Bells Using Xkb you can generate bell events that do not necessarily ring the system bell. This is useful if you need to use an audio server instead of the system beep. For example, when an audio client starts, it could disable the audible bell (the system bell) and then listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio client could then send a request to an audio server to play a sound. You can control the audible bells feature by passing the XkbAudibleBellMask to .I XkbChangeEnabledControls. If you set XkbAudibleBellMask on, the server rings the system bell when a bell event occurs. This is the default. If you set XkbAudibleBellMask off and a bell event occurs, the server does not ring the system bell unless you call .I XkbForceDeviceBell or .I XkbForceBell. Audible bells are also part of the per-client auto-reset controls. Bell Functions Use the functions described in this section to ring bells and to generate bell events. The input extension has two types of feedbacks that can generate bells - bell feedback and keyboard feedback. Some of the functions in this section have .I bell_class and .I bell_id parameters; set them as follows: Set .I bell_class to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of each type; set .I bell_id to the particular bell feedback of .I bell_class type. Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated when a bell function is called. .TS c s s s l l l l l l l l. Table 2 Bell Sounding and Bell Event Generating _ Function called AudibleBell Server sounds a bell Server sends an XkbBellNotifyEvent _ XkbDeviceBell On Yes Yes XkbDeviceBell Off No Yes XkbBell On Yes Yes XkbBell Off No Yes XkbDeviceBellEvent On or Off No Yes XkbBellEvent On or Off No Yes XkbDeviceForceBell On or Off Yes No XkbForceBell On or Off Yes No .TE If a compatible keyboard extension isn't present in the X server, .I XkbForceDeviceBell immediately returns False. Otherwise, .I XkbForceDeviceBell rings the bell as specified for the display and keyboard device and returns True. Set .I percent to be the volume relative to the base volume for the keyboard as described for .I XBell. There is no .I name parameter because .I XkbForceDeviceBell does not cause an XkbBellNotify event. You can call .I XkbBell without first initializing the keyboard extension. .SH STRUCTURES .LP Xkb generates XkbBellNotify events for all bells except for those resulting from calls to .I XkbForceDeviceBell and .I XkbForceBell. To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask in both the .I bits_to_change and .I values_for_bits parameters to .I XkbSelectEvents. The XkbBellNotify event has no event details. It is either selected or it is not. However, you can call .I XkbSelectEventDetails using XkbBellNotify as the .I event_type and specifying XkbAllBellEventsMask in .I bits_to_change and .I values_for_bits. This has the same effect as a call to .I XkbSelectEvents. The structure for the XkbBellNotify event type contains: .nf typedef struct _XkbBellNotify { int type; /\&* Xkb extension base event code */ unsigned long serial; /\&* X server serial number for event */ Bool send_event; /\&* True => synthetically generated */ Display * display; /\&* server connection where event generated */ Time time; /\&* server time when event generated */ int xkb_type; /\&* XkbBellNotify */ unsigned int device; /\&* Xkb device ID, will not be XkbUseCoreKbd */ int percent; /\&* requested volume as % of max */ int pitch; /\&* requested pitch in Hz */ int duration; /\&* requested duration in microseconds */ unsigned int bell_class; /\&* X input extension feedback class */ unsigned int bell_id; /\&* X input extension feedback ID */ Atom name; /\&* "name" of requested bell */ Window window; /\&* window associated with event */ Bool event_only; /\&* False -> the server did not produce a beep */ } XkbBellNotifyEvent; .fi If your application needs to generate visual bell feedback on the screen when it receives a bell event, use the window ID in the XkbBellNotifyEvent, if present. .SH "SEE ALSO" .BR XBell (__libmansuffix__), .BR XkbBell (__libmansuffix__), .BR XkbBellNotify (__libmansuffix__), .BR XkbChangeEnabledControls (__libmansuffix__), .BR XkbDeviceBell (__libmansuffix__), .BR XkbForceBell (__libmansuffix__), .BR XkbForceDeviceBell (__libmansuffix__), .BR XkbSelectEventDetails (__libmansuffix__), .BR XkbSelectEvents (__libmansuffix__) libX11-1.8.12/man/xkb/XkbFreeControls.man0000644014310600000120000000711714763154126013441 '\" t .\" Copyright (c) 1999, Oracle and/or its affiliates. .\" .\" 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. .\" .TH XkbFreeControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" .SH NAME XkbFreeControls \- Frees memory used by the ctrls member of an XkbDescRec structure .SH SYNOPSIS .HP .B void XkbFreeControls .BI "(\^XkbDescPtr " "xkb" "\^," .BI "unsigned int " "which" "\^," .BI "Bool " "free_all" "\^);" .if n .ti +5n .if t .ti +.5i .SH ARGUMENTS .TP .I xkb Xkb description in which to free controls components .TP .I which mask of components of ctrls to free .TP .I free_all True => free everything + ctrls itself .SH DESCRIPTION .LP .I XkbFreeControls frees the specified components of the .I ctrls field in the .I xkb keyboard description and sets the corresponding structure component values to NULL or zero. The .I which mask specifies the fields of .I ctrls to be freed and can contain any of the controls components specified in Table 1. Table 1 shows the actual values for the individual mask bits used to select controls for modification and to enable and disable the control. Note that the same mask bit is used to specify general modifications to the parameters used to configure the control (which), and to enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column) are for controls that have no configurable attributes; and for controls that are not boolean controls and therefore cannot be enabled or disabled. .TS c s s s l l l l l l l l l l l l. Table 1 Controls Mask Bits _ Mask Bit which or enabled Value changed_ctrls _ctrls _ XkbRepeatKeysMask ok ok (1L<<0) XkbSlowKeysMask ok ok (1L<<1) XkbBounceKeysMask ok ok (1L<<2) XkbStickyKeysMask ok ok (1L<<3) XkbMouseKeysMask ok ok (1L<<4) XkbMouseKeysAccelMask ok ok (1L<<5) XkbAccessXKeysMask ok ok (1L<<6) XkbAccessXTimeoutMask ok ok (1L<<7) XkbAccessXFeedbackMask ok ok (1L<<8) XkbAudibleBellMask ok (1L<<9) XkbOverlay1Mask ok (1L<<10) XkbOverlay2Mask ok (1L<<11) XkbIgnoreGroupLockMask ok (1L<<12) XkbGroupsWrapMask ok (1L<<27) XkbInternalModsMask ok (1L<<28) XkbIgnoreLockModsMask ok (1L<<29) XkbPerKeyRepeatMask ok (1L<<30) XkbControlsEnabledMask ok (1L<<31) XkbAccessXOptionsMask ok ok (XkbStickyKeysMask | XkbAccessXFeedbackMask) XkbAllBooleanCtrlsMask ok (0x00001FFF) XkbAllControlsMask ok (0xF8001FFF) .TE If .I free_all is True, .I XkbFreeControls frees every non-NULL structure component in the controls, frees the XkbControlsRec structure referenced by the .I ctrls member of .I xkb, and sets .I ctrls to NULL. libX11-1.8.12/man/XAllocWMHints.man0000644014310600000120000002157514763154126012243 '\" t .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface, \fRO'Reilly and Associates, Sebastopol, 1991. .ds xC Inter-Client Communication Conventions Manual '\" t .TH XAllocWMHints __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllocWMHints, XSetWMHints, XGetWMHints, XWMHints \- allocate window manager hints structure and set or read a window's WM_HINTS property .SH SYNTAX .HP XWMHints *XAllocWMHints\^(void\^); .HP int XSetWMHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XWMHints *\fIwmhints\fP\^); .HP XWMHints *XGetWMHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIw\fP 1i Specifies the window. .IP \fIwmhints\fP 1i Specifies the .B XWMHints structure to be used. .SH DESCRIPTION The .B XAllocWMHints function allocates and returns a pointer to a .B XWMHints structure. Note that all fields in the .B XWMHints structure are initially set to zero. If insufficient memory is available, .B XAllocWMHints returns NULL. To free the memory allocated to this structure, use .BR XFree . .LP The .B XSetWMHints function sets the window manager hints that include icon information and location, the initial state of the window, and whether the application relies on the window manager to get keyboard input. .LP .B XSetWMHints can generate .B BadAlloc and .B BadWindow errors. .LP The .B XGetWMHints function reads the window manager hints and returns NULL if no WM_HINTS property was set on the window or returns a pointer to a .B XWMHints structure if it succeeds. When finished with the data, free the space used for it by calling .BR XFree . .LP .B XGetWMHints can generate a .B BadWindow error. .SH PROPERTIES .TP 1i \s-1WM_HINTS\s+1 Additional hints set by the client for use by the window manager. The C type of this property is .BR XWMHints . .SH STRUCTURES The .B XWMHints structure contains: .LP /\&* Window manager hints mask bits */ .TS lw(.4i) lw(1.8i) lw(2.5i). T{ \&#define T} T{ .B InputHint T} T{ (1L << 0) T} T{ \&#define T} T{ .B StateHint T} T{ (1L << 1) T} T{ \&#define T} T{ .B IconPixmapHint T} T{ (1L << 2) T} T{ \&#define T} T{ .B IconWindowHint T} T{ (1L << 3) T} T{ \&#define T} T{ .B IconPositionHint T} T{ (1L << 4) T} T{ \&#define T} T{ .B IconMaskHint T} T{ (1L << 5) T} T{ \&#define T} T{ .B WindowGroupHint T} T{ (1L << 6) T} T{ \&#define T} T{ .B XUrgencyHint T} T{ (1L << 8) T} T{ \&#define T} T{ .B AllHints T} T{ (InputHint| .br StateHint| .br IconPixmapHint| .br IconWindowHint| .br IconPositionHint| .br IconMaskHint| .br WindowGroupHint) T} .TE .EX /\&* Values */ typedef struct { long flags; /\&* marks which fields in this structure are defined */ Bool input; /\&* does this application rely on the window manager to get keyboard input? */ int initial_state; /\&* see below */ Pixmap icon_pixmap; /\&* pixmap to be used as icon */ Window icon_window; /\&* window to be used as icon */ int icon_x, icon_y; /\&* initial position of icon */ Pixmap icon_mask; /\&* pixmap to be used as mask for icon_pixmap */ XID window_group; /\&* id of related window group */ /\&* this structure may be extended in the future */ } XWMHints; .EE .LP The input member is used to communicate to the window manager the input focus model used by the application. Applications that expect input but never explicitly set focus to any of their subwindows (that is, use the push model of focus management), such as X Version 10 style applications that use real-estate driven focus, should set this member to .BR True . Similarly, applications that set input focus to their subwindows only when it is given to their top-level window by a window manager should also set this member to .BR True . Applications that manage their own input focus by explicitly setting focus to one of their subwindows whenever they want keyboard input (that is, use the pull model of focus management) should set this member to .BR False . Applications that never expect any keyboard input also should set this member to .BR False . .LP Pull model window managers should make it possible for push model applications to get input by setting input focus to the top-level windows of applications whose input member is .BR True . Push model window managers should make sure that pull model applications do not break them by resetting input focus to .B PointerRoot when it is appropriate (for example, whenever an application whose input member is .B False sets input focus to one of its subwindows). .LP The definitions for the initial_state flag are: .TS lw(.3i) lw(1.5i) lw(.1i) lw(3.9i). T{ \&#define T} T{ .B WithdrawnState T} T{ 0 T} T{ T} T{ \&#define T} T{ .B NormalState T} T{ 1 T} T{ /\&* most applications start this way */ T} T{ \&#define T} T{ .B IconicState T} T{ 3 T} T{ /\&* application wants to start as an icon */ T} .TE The icon_mask specifies which pixels of the icon_pixmap should be used as the icon. This allows for nonrectangular icons. Both icon_pixmap and icon_mask must be bitmaps. The icon_window lets an application provide a window for use as an icon for window managers that support such use. The window_group lets you specify that this window belongs to a group of other windows. For example, if a single application manipulates multiple top-level windows, this allows you to provide enough information that a window manager can iconify all of the windows rather than just the one window. .LP The .B UrgencyHint flag, if set in the flags field, indicates that the client deems the window contents to be urgent, requiring the timely response of the user. The window manager will make some effort to draw the user's attention to this window while this flag is set. The client must provide some means by which the user can cause the urgency flag to be cleared (either mitigating the condition that made the window urgent or merely shutting off the alarm) or the window to be withdrawn. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocIconSize(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XFree(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetTextProperty(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XSetWMProtocols(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XDrawText.man0000644014310600000120000001526114763154126011474 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XDrawText __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawText, XDrawText16, XTextItem, XTextItem16 \- draw polytext text and text drawing structures .SH SYNTAX .HP int XDrawText\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XTextItem *\fIitems\fP\^, int \fInitems\fP\^); .HP int XDrawText16\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XTextItem16 *\fIitems\fP\^, int \fInitems\fP\^); .SH ARGUMENTS .IP \fId\fP 1i Specifies the drawable. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIgc\fP 1i Specifies the GC. .IP \fIitems\fP 1i Specifies an array of text items. .IP \fInitems\fP 1i Specifies the number of text items in the array. .IP \fIx\fP 1i .br .ns .IP \fIy\fP 1i Specify the x and y coordinates, which are relative to the origin of the specified drawable and define the origin of the first character. .SH DESCRIPTION The .B XDrawText16 function is similar to .B XDrawText except that it uses 2-byte or 16-bit characters. Both functions allow complex spacing and font shifts between counted strings. .LP Each text item is processed in turn. A font member other than .B None in an item causes the font to be stored in the GC and used for subsequent text. A text element delta specifies an additional change in the position along the x axis before the string is drawn. The delta is always added to the character origin and is not dependent on any characteristics of the font. Each character image, as defined by the font in the GC, is treated as an additional mask for a fill operation on the drawable. The drawable is modified only where the font character has a bit set to 1. If a text item generates a .B BadFont error, the previous text items may have been drawn. .LP For fonts defined with linear indexing rather than 2-byte matrix indexing, each .B XChar2b structure is interpreted as a 16-bit number with byte1 as the most significant byte. .LP Both functions use these GC components: function, plane-mask, fill-style, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, and tile-stipple-y-origin. .LP .B XDrawText and .B XDrawText16 can generate .BR BadDrawable , .BR BadFont , .BR BadGC , and .B BadMatch errors. .SH STRUCTURES The .B XTextItem and .B XTextItem16 structures contain: .LP .EX typedef struct { char *chars; /\&* pointer to string */ int nchars; /\&* number of characters */ int delta; /\&* delta between strings */ Font font; /\&* Font to print it in, None don't change */ } XTextItem; .EE .LP .EX typedef struct { XChar2b *chars; /\&* pointer to two-byte characters */ int nchars; /\&* number of characters */ int delta; /\&* delta between strings */ Font font; /\&* font to print it in, None don't change */ } XTextItem16; .EE .LP If the font member is not .BR None , the font is changed before printing and also is stored in the GC. If an error was generated during text drawing, the previous items may have been drawn. The baseline of the characters are drawn starting at the x and y coordinates that you pass in the text drawing functions. .LP For example, consider the background rectangle drawn by .BR XDrawImageString . If you want the upper-left corner of the background rectangle to be at pixel coordinate (x,y), pass the (x,y + ascent) as the baseline origin coordinates to the text functions. The ascent is the font ascent, as given in the .B XFontStruct structure. If you want the lower-left corner of the background rectangle to be at pixel coordinate (x,y), pass the (x,y \- descent + 1) as the baseline origin coordinates to the text functions. The descent is the font descent, as given in the .B XFontStruct structure. .SH DIAGNOSTICS .TP 1i .B BadDrawable A value for a Drawable argument does not name a defined Window or Pixmap. .TP 1i .B BadFont A value for a Font or GContext argument does not name a defined Font. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .TP 1i .B BadMatch An .B InputOnly window is used as a Drawable. .SH "SEE ALSO" XDrawImageString(__libmansuffix__), XDrawString(__libmansuffix__), XLoadFont(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSendEvent.man0000644014310600000120000001677414763154126011637 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSendEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSendEvent, XDisplayMotionBufferSize, XGetMotionEvents, XTimeCoord \- send events and pointer motion history structure .SH SYNTAX .HP Status XSendEvent\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Bool \fIpropagate\fP\^, long \fIevent_mask\fP\^, XEvent *\fIevent_send\fP\^); .HP unsigned long XDisplayMotionBufferSize\^(\^Display *\fIdisplay\fP\^); .HP XTimeCoord *XGetMotionEvents\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Time \fIstart\fP\^, Time \fIstop\fP\^, int *\fInevents_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIevent_mask\fP 1i Specifies the event mask. .IP \fIevent_send\fP 1i Specifies the event that is to be sent. .IP \fInevents_return\fP 1i Returns the number of events from the motion history buffer. .IP \fIpropagate\fP 1i Specifies a Boolean value. .IP \fIstart\fP 1i .br .ns .IP \fIstop\fP 1i Specify the time interval in which the events are returned from the motion history buffer. You can pass a timestamp or .BR CurrentTime . .BR PointerWindow , or .BR InputFocus . .IP \fIw\fP 1i Specifies the window the window the event is to be sent to. .SH DESCRIPTION The .B XSendEvent function identifies the destination window, determines which clients should receive the specified events, and ignores any active grabs. This function requires you to pass an event mask. For a discussion of the valid event mask names, see section 10.3. This function uses the w argument to identify the destination window as follows: .IP \(bu 5 If w is .BR PointerWindow , the destination window is the window that contains the pointer. .IP \(bu 5 If w is .B InputFocus and if the focus window contains the pointer, the destination window is the window that contains the pointer; otherwise, the destination window is the focus window. .LP To determine which clients should receive the specified events, .B XSendEvent uses the propagate argument as follows: .IP \(bu 5 If event_mask is the empty set, the event is sent to the client that created the destination window. If that client no longer exists, no event is sent. .IP \(bu 5 If propagate is .BR False , the event is sent to every client selecting on destination any of the event types in the event_mask argument. .IP \(bu 5 If propagate is .B True and no clients have selected on destination any of the event types in event-mask, the destination is replaced with the closest ancestor of destination for which some client has selected a type in event-mask and for which no intervening window has that type in its do-not-propagate-mask. If no such window exists or if the window is an ancestor of the focus window and .B InputFocus was originally specified as the destination, the event is not sent to any clients. Otherwise, the event is reported to every client selecting on the final destination any of the types specified in event_mask. .LP The event in the .B XEvent structure must be one of the core events or one of the events defined by an extension (or a .B BadValue error results) so that the X server can correctly byte-swap the contents as necessary. The contents of the event are otherwise unaltered and unchecked by the X server except to force send_event to .B True in the forwarded event and to set the serial number in the event correctly; therefore these fields and the display field are ignored by .BR XSendEvent . .LP .B XSendEvent returns zero if the conversion to wire protocol format failed and returns nonzero otherwise. .B XSendEvent can generate .B BadValue and .B BadWindow errors. .LP The server may retain the recent history of the pointer motion and do so to a finer granularity than is reported by .B MotionNotify events. The .B XGetMotionEvents function makes this history available. .LP The .B XGetMotionEvents function returns all events in the motion history buffer that fall between the specified start and stop times, inclusive, and that have coordinates that lie within the specified window (including its borders) at its present placement. If the server does not support motion history, if the start time is later than the stop time, or if the start time is in the future, no events are returned; .B XGetMotionEvents returns NULL. If the stop time is in the future, it is equivalent to specifying .BR CurrentTime . .B XGetMotionEvents can generate a .B BadWindow error. .SH STRUCTURES The .B XTimeCoord structure contains: .LP .EX typedef struct { Time time; short x, y; } XTimeCoord; .EE .LP The time member is set to the time, in milliseconds. The x and y members are set to the coordinates of the pointer and are reported relative to the origin of the specified window. .SH DIAGNOSTICS .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XIfEvent(__libmansuffix__), XNextEvent(__libmansuffix__), XPutBackEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XSetFillRule.man0000644014310600000120000000006714763154126012122 .so man__libmansuffix__/XSetFillStyle.__libmansuffix__ libX11-1.8.12/man/XClientMessageEvent.man0000644014310600000120000001253414763154126013457 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XClientMessageEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XClientMessageEvent \- ClientMessage event structure .SH STRUCTURES The structure for .B ClientMessage events contains: .LP .EX typedef struct { int type; /\&* ClientMessage */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; Atom message_type; int format; union { char b[20]; short s[10]; long l[5]; } data; } XClientMessageEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The message_type member is set to an atom that indicates how the data should be interpreted by the receiving client. The format member is set to 8, 16, or 32 and specifies whether the data should be viewed as a list of bytes, shorts, or longs. The data member is a union that contains the members b, s, and l. The b, s, and l members represent data of twenty 8-bit values, ten 16-bit values, and five 32-bit values. Particular message types might not make use of all these values. The X server places no interpretation on the values in the window, message_type, or data members. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XWMGeometry.man0000644014310600000120000000007014763154126011761 .so man__libmansuffix__/XParseGeometry.__libmansuffix__ libX11-1.8.12/man/XGetGeometry.man0000644014310600000120000000007614763154126012163 .so man__libmansuffix__/XGetWindowAttributes.__libmansuffix__ libX11-1.8.12/man/XQueryKeymap.man0000644014310600000120000000010014763154126012170 .so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__ libX11-1.8.12/man/XTextExtents.man0000644014310600000120000001646614763154126012241 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XTextExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XTextExtents, XTextExtents16, XQueryTextExtents, XQueryTextExtents16 \- compute or query text extents .SH SYNTAX .HP int XTextExtents\^(\^XFontStruct *\fIfont_struct\fP\^, _Xconst char *\fIstring\fP\^, int \fInchars\fP\^, int *\fIdirection_return\fP\^, int *\fIfont_ascent_return\fP, int *\fIfont_descent_return\fP\^, XCharStruct *\fIoverall_return\fP\^); .HP int XTextExtents16\^(\^XFontStruct *\fIfont_struct\fP\^, _Xconst XChar2b *\fIstring\fP\^, int \fInchars\fP\^, int *\fIdirection_return\fP\^, int *\fIfont_ascent_return\fP, int *\fIfont_descent_return\fP\^, XCharStruct *\fIoverall_return\fP\^); .HP int XQueryTextExtents\^(\^Display *\fIdisplay\fP\^, XID \fIfont_ID\fP\^, _Xconst char *\fIstring\fP\^, int \fInchars\fP\^, int *\fIdirection_return\fP\^, int *\fIfont_ascent_return\fP, int *\fIfont_descent_return\fP\^, XCharStruct *\fIoverall_return\fP\^); .HP int XQueryTextExtents16\^(\^Display *\fIdisplay\fP\^, XID \fIfont_ID\fP\^, _Xconst XChar2b *\fIstring\fP\^, int \fInchars\fP\^, int *\fIdirection_return\fP\^, int *\fIfont_ascent_return\fP, int *\fIfont_descent_return\fP\^, XCharStruct *\fIoverall_return\fP\^); .SH ARGUMENTS .IP \fIdirection_return\fP 1i Returns the value of the direction hint .RB ( FontLeftToRight or .BR FontRightToLeft ). .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIfont_ID\fP 1i Specifies either the font ID or the .B GContext ID that contains the font. .IP \fIfont_ascent_return\fP 1i Returns the font ascent. .IP \fIfont_descent_return\fP 1i Returns the font descent. .IP \fIfont_struct\fP 1i Specifies the .B XFontStruct structure. .IP \fInchars\fP 1i Specifies the number of characters in the character string. .IP \fIstring\fP 1i Specifies the character string. .IP \fIoverall_return\fP 1i Returns the overall size in the specified .B XCharStruct structure. .SH DESCRIPTION The .B XTextExtents and .B XTextExtents16 functions perform the size computation locally and, thereby, avoid the round-trip overhead of .B XQueryTextExtents and .BR XQueryTextExtents16 . Both functions return an .B XCharStruct structure, whose members are set to the values as follows. .LP The ascent member is set to the maximum of the ascent metrics of all characters in the string. The descent member is set to the maximum of the descent metrics. The width member is set to the sum of the character-width metrics of all characters in the string. For each character in the string, let W be the sum of the character-width metrics of all characters preceding it in the string. Let L be the left-side-bearing metric of the character plus W. Let R be the right-side-bearing metric of the character plus W. The lbearing member is set to the minimum L of all characters in the string. The rbearing member is set to the maximum R. .LP For fonts defined with linear indexing rather than 2-byte matrix indexing, each .B XChar2b structure is interpreted as a 16-bit number with byte1 as the most significant byte. If the font has no defined default character, undefined characters in the string are taken to have all zero metrics. .LP The .B XQueryTextExtents and .B XQueryTextExtents16 functions return the bounding box of the specified 8-bit and 16-bit character string in the specified font or the font contained in the specified GC. These functions query the X server and, therefore, suffer the round-trip overhead that is avoided by .B XTextExtents and .BR XTextExtents16 . Both functions return a .B XCharStruct structure, whose members are set to the values as follows. .LP The ascent member is set to the maximum of the ascent metrics of all characters in the string. The descent member is set to the maximum of the descent metrics. The width member is set to the sum of the character-width metrics of all characters in the string. For each character in the string, let W be the sum of the character-width metrics of all characters preceding it in the string. Let L be the left-side-bearing metric of the character plus W. Let R be the right-side-bearing metric of the character plus W. The lbearing member is set to the minimum L of all characters in the string. The rbearing member is set to the maximum R. .LP For fonts defined with linear indexing rather than 2-byte matrix indexing, each .B XChar2b structure is interpreted as a 16-bit number with byte1 as the most significant byte. If the font has no defined default character, undefined characters in the string are taken to have all zero metrics. .LP Characters with all zero metrics are ignored. If the font has no defined default_char, the undefined characters in the string are also ignored. .LP .B XQueryTextExtents and .B XQueryTextExtents16 can generate .B BadFont and .B BadGC errors. .SH DIAGNOSTICS .TP 1i .B BadFont A value for a Font or GContext argument does not name a defined Font. .TP 1i .B BadGC A value for a GContext argument does not name a defined GContext. .SH "SEE ALSO" XLoadFont(__libmansuffix__), XTextWidth(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XCompose.man0000644014310600000120000000006314763154126011331 .so man__filemansuffix__/Compose.__filemansuffix__ libX11-1.8.12/man/XAllowEvents.man0000644014310600000120000000717714763154126012204 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XAllowEvents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllowEvents \- release queued events .SH SYNTAX .HP int XAllowEvents\^(\^Display *\fIdisplay\fP, int \fIevent_mode\fP\^, Time \fItime\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIevent_mode\fP 1i Specifies the event mode. You can pass .BR AsyncPointer , .BR SyncPointer , .BR AsyncKeyboard , .BR SyncKeyboard , .BR ReplayPointer , .BR ReplayKeyboard , .BR AsyncBoth , or .BR SyncBoth . .IP \fItime\fP 1i Specifies the time. You can pass either a timestamp or .BR CurrentTime . .SH DESCRIPTION The .B XAllowEvents function releases some queued events if the client has caused a device to freeze. It has no effect if the specified time is earlier than the last-grab time of the most recent active grab for the client or if the specified time is later than the current X server time. .LP .B XAllowEvents can generate a .B BadValue error. .SH DIAGNOSTICS .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XSetTextProperty.man0000644014310600000120000001361414763154126013077 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSetTextProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetTextProperty, XGetTextProperty \- set and read text properties .SH SYNTAX .HP void XSetTextProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, XTextProperty *\fItext_prop\fP\^, Atom \fIproperty\fP\^); .HP Status XGetTextProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, XTextProperty *\fItext_prop_return\fP\^, Atom \fIproperty\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIproperty\fP 1i Specifies the property name. .IP \fItext_prop\fP 1i Specifies the .B XTextProperty structure to be used. .IP \fItext_prop_return\fP 1i Returns the .B XTextProperty structure. .SH DESCRIPTION The .B XSetTextProperty function replaces the existing specified property for the named window with the data, type, format, and number of items determined by the value field, the encoding field, the format field, and the nitems field, respectively, of the specified .B XTextProperty structure. If the property does not already exist, .B XSetTextProperty sets it for the specified window. .LP .B XSetTextProperty can generate .BR BadAlloc , .BR BadAtom , .BR BadValue , and .B BadWindow errors. .LP The .B XGetTextProperty function reads the specified property from the window and stores the data in the returned .B XTextProperty structure. It stores the data in the value field, the type of the data in the encoding field, the format of the data in the format field, and the number of items of data in the nitems field. An extra byte containing null (which is not included in the nitems member) is stored at the end of the value field of text_prop_return. The particular interpretation of the property's encoding and data as text is left to the calling application. If the specified property does not exist on the window, .B XGetTextProperty sets the value field to NULL, the encoding field to .BR None , the format field to zero, and the nitems field to zero. .LP If it was able to read and store the data in the .B XTextProperty structure, .B XGetTextProperty returns a nonzero status; otherwise, it returns a zero status. .LP .B XGetTextProperty can generate .B BadAtom and .B BadWindow errors. .SH PROPERTIES .TP 1i \s-1WM_CLIENT_MACHINE\s+1 The string name of the machine on which the client application is running. .TP 1i \s-1WM_COMMAND\s+1 The command and arguments, null-separated, used to invoke the application. .TP 1i \s-1WM_ICON_NAME\s+1 The name to be used in an icon. .TP 1i \s-1WM_NAME\s+1 The name of the application. .SH DIAGNOSTICS .TP 1i .B BadAlloc The server failed to allocate the requested resource or server memory. .TP 1i .B BadAtom A value for an Atom argument does not name a defined Atom. .TP 1i .B BadValue Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error. .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocClassHint(__libmansuffix__), XAllocIconSize(__libmansuffix__), XAllocSizeHints(__libmansuffix__), XAllocWMHints(__libmansuffix__), XSetCommand(__libmansuffix__), XSetTransientForHint(__libmansuffix__), XSetWMClientMachine(__libmansuffix__), XSetWMColormapWindows(__libmansuffix__), XSetWMIconName(__libmansuffix__), XSetWMName(__libmansuffix__), XSetWMProperties(__libmansuffix__), XSetWMProtocols(__libmansuffix__), XStringListToTextProperty(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XChangeGC.man0000644014310600000120000000006314763154126011323 .so man__libmansuffix__/XCreateGC.__libmansuffix__ libX11-1.8.12/man/DisplayCells.man0000644014310600000120000000006314763154126012164 .so man__libmansuffix__/AllPlanes.__libmansuffix__ libX11-1.8.12/man/XSetRegion.man0000644014310600000120000000006714763154126011627 .so man__libmansuffix__/XCreateRegion.__libmansuffix__ libX11-1.8.12/man/XCreateWindowEvent.man0000644014310600000120000001303614763154126013325 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XCreateWindowEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateWindowEvent \- CreateNotify event structure .SH STRUCTURES The structure for .B CreateNotify events contains: .LP .EX typedef struct { int type; /\&* CreateNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window parent; /\&* parent of the window */ Window window; /\&* window id of window created */ int x, y; /\&* window location */ int width, height; /\&* size of window */ int border_width; /\&* border width */ Bool override_redirect; /\&* creation should be overridden */ } XCreateWindowEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The parent member is set to the created window's parent. The window member specifies the created window. The x and y members are set to the created window's coordinates relative to the parent window's origin and indicate the position of the upper-left outside corner of the created window. The width and height members are set to the inside size of the created window (not including the border) and are always nonzero. The border_width member is set to the width of the created window's border, in pixels. The override_redirect member is set to the override-redirect attribute of the window. Window manager clients normally should ignore this window if the override_redirect member is .BR True . .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XAutoRepeatOn.man0000644014310600000120000000010014763154126012262 .so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__ libX11-1.8.12/man/XSelectionEvent.man0000644014310600000120000001236214763154126012660 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XSelectionEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSelectionEvent \- SelectionNotify event structure .SH STRUCTURES The structure for .B SelectionNotify events contains: .LP .EX typedef struct { int type; /\&* SelectionNotify */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window requestor; Atom selection; Atom target; Atom property; /\&* atom or None */ Time time; } XSelectionEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The requestor member is set to the window associated with the requestor of the selection. The selection member is set to the atom that indicates the selection. For example, PRIMARY is used for the primary selection. The target member is set to the atom that indicates the converted type. For example, PIXMAP is used for a pixmap. The property member is set to the atom that indicates which property the result was stored on. If the conversion failed, the property member is set to .BR None . The time member is set to the time the conversion took place and can be a timestamp or .BR CurrentTime . .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XResizeRequestEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XUnmapWindow.man0000644014310600000120000001027314763154126012200 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XUnmapWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XUnmapWindow, XUnmapSubwindows \- unmap windows .SH SYNTAX .HP int XUnmapWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .HP int XUnmapSubwindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIw\fP 1i Specifies the window. .SH DESCRIPTION The .B XUnmapWindow function unmaps the specified window and causes the X server to generate an .B UnmapNotify event. If the specified window is already unmapped, .B XUnmapWindow has no effect. Normal exposure processing on formerly obscured windows is performed. Any child window will no longer be visible until another map call is made on the parent. In other words, the subwindows are still mapped but are not visible until the parent is mapped. Unmapping a window will generate .B Expose events on windows that were formerly obscured by it. .LP .B XUnmapWindow can generate a .B BadWindow error. .LP The .B XUnmapSubwindows function unmaps all subwindows for the specified window in bottom-to-top stacking order. It causes the X server to generate an .B UnmapNotify event on each subwindow and .B Expose events on formerly obscured windows. Using this function is much more efficient than unmapping multiple windows one at a time because the server needs to perform much of the work only once, for all of the windows, rather than for each window. .LP .B XUnmapSubwindows can generate a .B BadWindow error. .SH DIAGNOSTICS .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XChangeWindowAttributes(__libmansuffix__), XConfigureWindow(__libmansuffix__), XCreateWindow(__libmansuffix__), XDestroyWindow(__libmansuffix__), XMapWindow(__libmansuffix__) XRaiseWindow(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XTranslateCoordinates.man0000644014310600000120000000773214763154126014066 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XTranslateCoordinates __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XTranslateCoordinates \- translate window coordinates .SH SYNTAX .HP Bool XTranslateCoordinates\^(\^Display *\fIdisplay\fP\^, Window \fIsrc_w\fP\^, \fIdest_w\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, int *\fIdest_x_return\fP\^, int *\fIdest_y_return\fP\^, Window *\fIchild_return\fP\^); .SH ARGUMENTS .IP \fIchild_return\fP 1i Returns the child if the coordinates are contained in a mapped child of the destination window. .IP \fIdest_w\fP 1i Specifies the destination window. .IP \fIdest_x_return\fP 1i .br .ns .IP \fIdest_y_return\fP 1i Return the x and y coordinates within the destination window. .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIsrc_w\fP 1i Specifies the source window. .IP \fIsrc_x\fP 1i .br .ns .IP \fIsrc_y\fP 1i Specify the x and y coordinates within the source window. .SH DESCRIPTION If .B XTranslateCoordinates returns .BR True , it takes the src_x and src_y coordinates relative to the source window's origin and returns these coordinates to dest_x_return and dest_y_return relative to the destination window's origin. If .B XTranslateCoordinates returns .BR False , src_w and dest_w are on different screens, and dest_x_return and dest_y_return are zero. If the coordinates are contained in a mapped child of dest_w, that child is returned to child_return. Otherwise, child_return is set to .BR None . .LP .B XTranslateCoordinates can generate a .B BadWindow error. .SH DIAGNOSTICS .TP 1i .B BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" \fI\*(xL\fP libX11-1.8.12/man/XResizeRequestEvent.man0000644014310600000120000001137514763154126013550 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XResizeRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XResizeRequestEvent \- ResizeRequest event structure .SH STRUCTURES The structure for .B ResizeRequest events contains: .LP .EX typedef struct { int type; /\&* ResizeRequest */ unsigned long serial; /\&* # of last request processed by server */ Bool send_event; /\&* true if this came from a SendEvent request */ Display *display; /\&* Display the event was read from */ Window window; int width, height; } XResizeRequestEvent; .EE .LP When you receive this event, the structure members are set as follows. .LP The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a .B GraphicsExpose event to a client application, it sends an .B XGraphicsExposeEvent structure with the type member set to .BR GraphicsExpose . The display member is set to a pointer to the display the event was read on. The send_event member is set to .B True if the event came from a .B SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers. .LP The window member is set to the window whose size another client attempted to change. The width and height members are set to the inside size of the window, excluding the border. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XButtonEvent(__libmansuffix__), XCreateWindowEvent(__libmansuffix__), XCirculateEvent(__libmansuffix__), XCirculateRequestEvent(__libmansuffix__), XColormapEvent(__libmansuffix__), XConfigureEvent(__libmansuffix__), XConfigureRequestEvent(__libmansuffix__), XCrossingEvent(__libmansuffix__), XDestroyWindowEvent(__libmansuffix__), XErrorEvent(__libmansuffix__), XExposeEvent(__libmansuffix__), XFocusChangeEvent(__libmansuffix__), XGraphicsExposeEvent(__libmansuffix__), XGravityEvent(__libmansuffix__), XKeymapEvent(__libmansuffix__), XMapEvent(__libmansuffix__), XMapRequestEvent(__libmansuffix__), XPropertyEvent(__libmansuffix__), XReparentEvent(__libmansuffix__), XSelectionClearEvent(__libmansuffix__), XSelectionEvent(__libmansuffix__), XSelectionRequestEvent(__libmansuffix__), XUnmapEvent(__libmansuffix__), XVisibilityEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XDrawSegments.man0000644014310600000120000000006314763154126012327 .so man__libmansuffix__/XDrawLine.__libmansuffix__ libX11-1.8.12/man/XNextEvent.man0000644014310600000120000001665314763154126011660 .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" .\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by .\" Digital Equipment Corporation .\" .\" Portions Copyright \(co 1990, 1991 by .\" Tektronix, Inc. .\" .\" Permission to use, copy, modify and distribute this documentation for .\" any purpose and without fee is hereby granted, provided that the above .\" copyright notice appears in all copies and that both that copyright notice .\" and this permission notice appear in all copies, and that the names of .\" Digital and Tektronix not be used in in advertising or publicity pertaining .\" to this documentation without specific, written prior permission. .\" Digital and Tektronix makes no representations about the suitability .\" of this documentation for any purpose. .\" It is provided "as is" without express or implied warranty. .\" .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface .ds xL Xlib \- C Language X Interface .ds xC Inter-Client Communication Conventions Manual .TH XNextEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XNextEvent, XPeekEvent, XWindowEvent, XCheckWindowEvent, XMaskEvent, XCheckMaskEvent, XCheckTypedEvent, XCheckTypedWindowEvent \- select events by type .SH SYNTAX .HP int XNextEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^); .HP int XPeekEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^); .HP int XWindowEvent\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, long \fIevent_mask\fP\^, XEvent *\fIevent_return\fP\^); .HP Bool XCheckWindowEvent\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, long \fIevent_mask\fP\^, XEvent *\fIevent_return\fP\^); .HP int XMaskEvent\^(\^Display *\fIdisplay\fP\^, long \fIevent_mask\fP\^, XEvent *\fIevent_return\fP\^); .HP Bool XCheckMaskEvent\^(\^Display *\fIdisplay\fP\^, long \fIevent_mask\fP\^, XEvent *\fIevent_return\fP\^); .HP Bool XCheckTypedEvent\^(\^Display *\fIdisplay\fP\^, int \fIevent_type\fP\^, XEvent *\fIevent_return\fP\^); .HP Bool XCheckTypedWindowEvent\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIevent_type\fP\^, XEvent *\fIevent_return\fP\^); .SH ARGUMENTS .IP \fIdisplay\fP 1i Specifies the connection to the X server. .IP \fIevent_mask\fP 1i Specifies the event mask. .IP \fIevent_return\fP 1i Returns the matched event's associated structure. .IP \fIevent_return\fP 1i Returns the next event in the queue. .IP \fIevent_return\fP 1i Returns a copy of the matched event's associated structure. .IP \fIevent_type\fP 1i Specifies the event type to be compared. .IP \fIw\fP 1i Specifies the window whose event you are interested in. .SH DESCRIPTION The .B XNextEvent function copies the first event from the event queue into the specified .B XEvent structure and then removes it from the queue. If the event queue is empty, .B XNextEvent flushes the output buffer and blocks until an event is received. .LP The .B XPeekEvent function returns the first event from the event queue, but it does not remove the event from the queue. If the queue is empty, .B XPeekEvent flushes the output buffer and blocks until an event is received. It then copies the event into the client-supplied .B XEvent structure without removing it from the event queue. .LP The .B XWindowEvent function searches the event queue for an event that matches both the specified window and event mask. When it finds a match, .B XWindowEvent removes that event from the queue and copies it into the specified .B XEvent structure. The other events stored in the queue are not discarded. If a matching event is not in the queue, .B XWindowEvent flushes the output buffer and blocks until one is received. .LP The .B XCheckWindowEvent function searches the event queue and then the events available on the server connection for the first event that matches the specified window and event mask. If it finds a match, .B XCheckWindowEvent removes that event, copies it into the specified .B XEvent structure, and returns .BR True . The other events stored in the queue are not discarded. If the event you requested is not available, .B XCheckWindowEvent returns .BR False , and the output buffer will have been flushed. .LP The .B XMaskEvent function searches the event queue for the events associated with the specified mask. When it finds a match, .B XMaskEvent removes that event and copies it into the specified .B XEvent structure. The other events stored in the queue are not discarded. If the event you requested is not in the queue, .B XMaskEvent flushes the output buffer and blocks until one is received. .LP The .B XCheckMaskEvent function searches the event queue and then any events available on the server connection for the first event that matches the specified mask. If it finds a match, .B XCheckMaskEvent removes that event, copies it into the specified .B XEvent structure, and returns .BR True . The other events stored in the queue are not discarded. If the event you requested is not available, .B XCheckMaskEvent returns .BR False , and the output buffer will have been flushed. .LP The .B XCheckTypedEvent function searches the event queue and then any events available on the server connection for the first event that matches the specified type. If it finds a match, .B XCheckTypedEvent removes that event, copies it into the specified .B XEvent structure, and returns .BR True . The other events in the queue are not discarded. If the event is not available, .B XCheckTypedEvent returns .BR False , and the output buffer will have been flushed. .LP The .B XCheckTypedWindowEvent function searches the event queue and then any events available on the server connection for the first event that matches the specified type and window. If it finds a match, .B XCheckTypedWindowEvent removes the event from the queue, copies it into the specified .B XEvent structure, and returns .BR True . The other events in the queue are not discarded. If the event is not available, .B XCheckTypedWindowEvent returns .BR False , and the output buffer will have been flushed. .SH "SEE ALSO" XAnyEvent(__libmansuffix__), XIfEvent(__libmansuffix__), XPutBackEvent(__libmansuffix__), XSendEvent(__libmansuffix__) .br \fI\*(xL\fP libX11-1.8.12/man/XGetAtomName.man0000644014310600000120000000006514763154126012067 .so man__libmansuffix__/XInternAtom.__libmansuffix__ libX11-1.8.12/man/XcmsTekHVCQueryMaxVSamples.man0000644014310600000120000000007514763154126014665 .so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__ libX11-1.8.12/man/XPutPixel.man0000644014310600000120000000006414763154126011477 .so man__libmansuffix__/XInitImage.__libmansuffix__ libX11-1.8.12/man/XCreateImage.man0000644014310600000120000000006414763154126012073 .so man__libmansuffix__/XInitImage.__libmansuffix__ libX11-1.8.12/config.sub0000755014310600000120000010775614763154146010332 #! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2024 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2024-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ | windows-* ) basic_machine=$field1 basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown basic_os=linux-android ;; *) basic_machine=$field1-$field2 basic_os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec basic_os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 basic_os=$field2 ;; zephyr*) basic_machine=$field1-unknown basic_os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 basic_os= ;; *) basic_machine=$field1 basic_os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc basic_os=bsd ;; a29khif) basic_machine=a29k-amd basic_os=udi ;; adobe68k) basic_machine=m68010-adobe basic_os=scout ;; alliant) basic_machine=fx80-alliant basic_os= ;; altos | altos3068) basic_machine=m68k-altos basic_os= ;; am29k) basic_machine=a29k-none basic_os=bsd ;; amdahl) basic_machine=580-amdahl basic_os=sysv ;; amiga) basic_machine=m68k-unknown basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo basic_os=bsd ;; aros) basic_machine=i386-pc basic_os=aros ;; aux) basic_machine=m68k-apple basic_os=aux ;; balance) basic_machine=ns32k-sequent basic_os=dynix ;; blackfin) basic_machine=bfin-unknown basic_os=linux ;; cegcc) basic_machine=arm-unknown basic_os=cegcc ;; convex-c1) basic_machine=c1-convex basic_os=bsd ;; convex-c2) basic_machine=c2-convex basic_os=bsd ;; convex-c32) basic_machine=c32-convex basic_os=bsd ;; convex-c34) basic_machine=c34-convex basic_os=bsd ;; convex-c38) basic_machine=c38-convex basic_os=bsd ;; cray) basic_machine=j90-cray basic_os=unicos ;; crds | unos) basic_machine=m68k-crds basic_os= ;; da30) basic_machine=m68k-da30 basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec basic_os= ;; delta88) basic_machine=m88k-motorola basic_os=sysv3 ;; dicos) basic_machine=i686-pc basic_os=dicos ;; djgpp) basic_machine=i586-pc basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson basic_os=ose ;; gmicro) basic_machine=tron-gmicro basic_os=sysv ;; go32) basic_machine=i386-pc basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi basic_os=hms ;; harris) basic_machine=m88k-harris basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp basic_os=osf ;; hppro) basic_machine=hppa1.1-hp basic_os=proelf ;; i386mach) basic_machine=i386-mach basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown basic_os=linux ;; magnum | m3230) basic_machine=mips-mips basic_os=sysv ;; merlin) basic_machine=ns32k-utek basic_os=sysv ;; mingw64) basic_machine=x86_64-pc basic_os=mingw64 ;; mingw32) basic_machine=i686-pc basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k basic_os=coff ;; morphos) basic_machine=powerpc-unknown basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown basic_os=moxiebox ;; msdos) basic_machine=i386-pc basic_os=msdos ;; msys) basic_machine=i686-pc basic_os=msys ;; mvs) basic_machine=i370-ibm basic_os=mvs ;; nacl) basic_machine=le32-unknown basic_os=nacl ;; ncr3000) basic_machine=i486-ncr basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony basic_os=newsos ;; news1000) basic_machine=m68030-sony basic_os=newsos ;; necv70) basic_machine=v70-nec basic_os=sysv ;; nh3000) basic_machine=m68k-harris basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris basic_os=cxux ;; nindy960) basic_machine=i960-intel basic_os=nindy ;; mon960) basic_machine=i960-intel basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson basic_os=ose ;; os68k) basic_machine=m68k-none basic_os=os68k ;; paragon) basic_machine=i860-intel basic_os=osf ;; parisc) basic_machine=hppa-unknown basic_os=linux ;; psp) basic_machine=mipsallegrexel-sony basic_os=psp ;; pw32) basic_machine=i586-unknown basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc basic_os=rdos ;; rdos32) basic_machine=i386-pc basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k basic_os=coff ;; sa29200) basic_machine=a29k-amd basic_os=udi ;; sei) basic_machine=mips-sei basic_os=seiux ;; sequent) basic_machine=i386-sequent basic_os= ;; sps7) basic_machine=m68k-bull basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem basic_os= ;; stratus) basic_machine=i860-stratus basic_os=sysv4 ;; sun2) basic_machine=m68000-sun basic_os= ;; sun2os3) basic_machine=m68000-sun basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun basic_os=sunos4 ;; sun3) basic_machine=m68k-sun basic_os= ;; sun3os3) basic_machine=m68k-sun basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun basic_os=sunos4 ;; sun4) basic_machine=sparc-sun basic_os= ;; sun4os3) basic_machine=sparc-sun basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun basic_os= ;; sv1) basic_machine=sv1-cray basic_os=unicos ;; symmetry) basic_machine=i386-sequent basic_os=dynix ;; t3e) basic_machine=alphaev5-cray basic_os=unicos ;; t90) basic_machine=t90-cray basic_os=unicos ;; toad1) basic_machine=pdp10-xkl basic_os=tops20 ;; tpf) basic_machine=s390x-ibm basic_os=tpf ;; udi29k) basic_machine=a29k-amd basic_os=udi ;; ultra3) basic_machine=a29k-nyu basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec basic_os=none ;; vaxv) basic_machine=vax-dec basic_os=sysv ;; vms) basic_machine=vax-dec basic_os=vms ;; vsta) basic_machine=i386-pc basic_os=vsta ;; vxworks960) basic_machine=i960-wrs basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs basic_os=vxworks ;; xbox) basic_machine=i686-pc basic_os=mingw32 ;; ymp) basic_machine=ymp-cray basic_os=unicos ;; *) basic_machine=$1 basic_os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull basic_os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $basic_os in irix*) ;; *) basic_os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next case $basic_os in openstep*) ;; nextstep*) ;; ns2*) basic_os=nextstep2 ;; *) basic_os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs basic_os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond basic_os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if test x"$basic_os" != x then # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. obj= case $basic_os in gnu/linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` ;; os2-emx) kernel=os2 os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read kernel os <&2 fi ;; *) echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 exit 1 ;; esac case $obj in aout* | coff* | elf* | pe*) ;; '') # empty is fine ;; *) echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 exit 1 ;; esac # Here we handle the constraint that a (synthetic) cpu and os are # valid only in combination with each other and nowhere else. case $cpu-$os in # The "javascript-unknown-ghcjs" triple is used by GHC; we # accept it here in order to tolerate that, but reject any # variations. javascript-ghcjs) ;; javascript-* | *-ghcjs) echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os-$obj in linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ | linux-mlibc*- | linux-musl*- | linux-newlib*- \ | linux-relibc*- | linux-uclibc*- ) ;; uclinux-uclibc*- ) ;; managarm-mlibc*- | managarm-kernel*- ) ;; windows*-msvc*-) ;; -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ | -uclibc*- ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 exit 1 ;; -kernel*- ) echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 exit 1 ;; *-kernel*- ) echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 exit 1 ;; *-msvc*- ) echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 exit 1 ;; kfreebsd*-gnu*- | kopensolaris*-gnu*-) ;; vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) ;; nto-qnx*-) ;; os2-emx-) ;; *-eabi*- | *-gnueabi*-) ;; none--*) # None (no kernel, i.e. freestanding / bare metal), # can be paired with an machine code file format ;; -*-) # Blank kernel with real OS is always fine. ;; --*) # Blank kernel and OS with real machine code file format is always fine. ;; *-*-*) echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 exit 1 ;; esac # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $cpu-$os in *-riscix*) vendor=acorn ;; *-sunos*) vendor=sun ;; *-cnk* | *-aix*) vendor=ibm ;; *-beos*) vendor=be ;; *-hpux*) vendor=hp ;; *-mpeix*) vendor=hp ;; *-hiux*) vendor=hitachi ;; *-unos*) vendor=crds ;; *-dgux*) vendor=dg ;; *-luna*) vendor=omron ;; *-genix*) vendor=ns ;; *-clix*) vendor=intergraph ;; *-mvs* | *-opened*) vendor=ibm ;; *-os400*) vendor=ibm ;; s390-* | s390x-*) vendor=ibm ;; *-ptx*) vendor=sequent ;; *-tpf*) vendor=ibm ;; *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; *-aux*) vendor=apple ;; *-hms*) vendor=hitachi ;; *-mpw* | *-macos*) vendor=apple ;; *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; *-vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libX11-1.8.12/m4/0000755014310600000120000000000014763154164006727 5libX11-1.8.12/m4/ax_define_dir.m40000644014310600000120000000325214763154126011671 # =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_define_dir.html # =========================================================================== # # SYNOPSIS # # AX_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION]) # # DESCRIPTION # # This macro sets VARNAME to the expansion of the DIR variable, taking # care of fixing up ${prefix} and such. # # VARNAME is then offered as both an output variable and a C preprocessor # symbol. # # Example: # # AX_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.]) # # LICENSE # # Copyright (c) 2008 Stepan Kasal # Copyright (c) 2008 Andreas Schwab # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2008 Alexandre Oliva # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 6 AU_ALIAS([AC_DEFINE_DIR], [AX_DEFINE_DIR]) AC_DEFUN([AX_DEFINE_DIR], [ prefix_NONE= exec_prefix_NONE= test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn dnl refers to ${prefix}. Thus we have to use `eval' twice. eval ax_define_dir="\"[$]$2\"" eval ax_define_dir="\"$ax_define_dir\"" AC_SUBST($1, "$ax_define_dir") AC_DEFINE_UNQUOTED($1, "$ax_define_dir", [$3]) test "$prefix_NONE" && prefix=NONE test "$exec_prefix_NONE" && exec_prefix=NONE ]) libX11-1.8.12/m4/ltsugar.m40000644014310600000120000001045314763154136010574 # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2024 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) libX11-1.8.12/m4/libtool.m40000644014310600000120000113730514763154136010566 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2019, 2021-2024 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 2024 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ]) # serial 63 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.64])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_DECL_FILECMD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), in case it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2024 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." while test 0 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) # Feature test to disable chained fixups since it is not # compatible with '-undefined dynamic_lookup' AC_CACHE_CHECK([for -no_fixup_chains linker flag], [lt_cv_support_no_fixup_chains], [ save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains" AC_LINK_IFELSE( [AC_LANG_PROGRAM([],[])], lt_cv_support_no_fixup_chains=yes, lt_cv_support_no_fixup_chains=no ) LDFLAGS=$save_LDFLAGS ] ) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main(void) { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' if test yes = "$lt_cv_support_no_fixup_chains"; then AS_VAR_APPEND([_lt_dar_allow_undefined], [' $wl-no_fixup_chains']) fi ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi _lt_dar_needs_single_mod=no case $host_os in rhapsody* | darwin1.*) _lt_dar_needs_single_mod=yes ;; darwin*) # When targeting Mac OS X 10.4 (darwin 8) or later, # -single_module is the default and -multi_module is unsupported. # The toolchain on macOS 10.14 (darwin 18) and later cannot # target any OS version that needs -single_module. case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*-darwin[[567]].*|10.[[0-3]],*-darwin[[5-9]].*|10.[[0-3]],*-darwin1[[0-7]].*) _lt_dar_needs_single_mod=yes ;; esac ;; esac if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes = "$_lt_dar_needs_single_mod" -a yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then # Trim trailing / since we'll always append absolute paths and we want # to avoid //, if only for less confusing output for the user. lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*|x86_64-gnu*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*|x86_64-gnu*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} _LT_DECL([], [AR], [1], [The archiver]) # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because that's what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS _LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. _LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_REQUIRE([AC_PROG_RANLIB]) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu* | ironclad*) # Under GNU Hurd and Ironclad, this test is not required because there # is no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | windows* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord (void) __attribute__((visibility("default"))); #endif int fnord (void) { return 42; } int main (void) { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | windows* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -z "$STRIP"; then AC_MSG_RESULT([no]) else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --enable-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | windows* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds # If user builds GCC with multilib enabled, # it should just install on $(libdir) # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones. if test xyes = x"$multilib"; then postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ $install_prog $dir/$dlname $destdir/$dlname~ chmod a+x $destdir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib $destdir/$dlname'\'' || exit \$?; fi' else postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' fi postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | windows* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw* | windows*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac case $host_cpu in powerpc64) # On FreeBSD bi-arch platforms, a different variable is used for 32-bit # binaries. See . AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[int test_pointer_size[sizeof (void *) - 5]; ]])], [shlibpath_var=LD_LIBRARY_PATH], [shlibpath_var=LD_32_LIBRARY_PATH]) ;; *) shlibpath_var=LD_LIBRARY_PATH ;; esac case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib' sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib' hardcode_into_libs=no ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # -rpath works at least for libraries that are not overridden by # libraries installed in system locations. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directories which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *-mlibc) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='mlibc ld.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; serenity*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no dynamic_linker='SerenityOS LibELF' ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; emscripten*) version_type=none need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= dynamic_linker="Emscripten linker" _LT_COMPILER_PIC($1)='-fPIC' _LT_TAGVAR(archive_cmds, $1)='$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib -s EXPORTED_FUNCTIONS=@$output_objdir/$soname.expsym' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(no_undefined_flag, $1)= ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw* | *-*-windows*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | windows* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; *-mlibc) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; serenity*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | windows* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw* | windows*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_manifest_tool], [lt_cv_path_manifest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_manifest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_manifest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-mingw* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | windows* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BCDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw* | windows*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(void){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *-mlibc) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; serenity*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *flang* | ftn | f18* | f95*) # Flang compiler. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *-mlibc) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; serenity*) ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | windows* | cegcc*) case $cc_basename in cl* | icl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | windows* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] _LT_TAGVAR(file_list_spec, $1)='@' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=no ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; *-mlibc) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | windows* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly* | midnightbsd*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; esac ;; *-mlibc) ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; osf3*) if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; serenity*) ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e. impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(void){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | windows* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl* | ,icl* | no,icl*) # Native MSVC or ICC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=no ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " [[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; *-mlibc) _LT_TAGVAR(ld_shlibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; serenity*) ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R,l}" and the path. # Remove the space. if test x-L = x"$p" || test x-R = x"$p" || test x-l = x"$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_FILECMD # ---------------- # Check for a file(cmd) program that can be used to detect file type and magic m4_defun([_LT_DECL_FILECMD], [AC_CHECK_PROG([FILECMD], [file], [file], [:]) _LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) ])# _LD_DECL_FILECMD # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* | *-*-windows* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS libX11-1.8.12/m4/lt~obsolete.m40000644014310600000120000001400714763154136011464 # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2024 Free # Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) libX11-1.8.12/m4/ax_gcc_builtin.m40000644014310600000120000001371014763154126012063 # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_gcc_builtin.html # =========================================================================== # # SYNOPSIS # # AX_GCC_BUILTIN(BUILTIN) # # DESCRIPTION # # This macro checks if the compiler supports one of GCC's built-in # functions; many other compilers also provide those same built-ins. # # The BUILTIN parameter is the name of the built-in function. # # If BUILTIN is supported define HAVE_. Keep in mind that since # builtins usually start with two underscores they will be copied over # into the HAVE_ definition (e.g. HAVE___BUILTIN_EXPECT for # __builtin_expect()). # # The macro caches its result in the ax_cv_have_ variable (e.g. # ax_cv_have___builtin_expect). # # The macro currently supports the following built-in functions: # # __builtin_assume_aligned # __builtin_bswap16 # __builtin_bswap32 # __builtin_bswap64 # __builtin_choose_expr # __builtin___clear_cache # __builtin_clrsb # __builtin_clrsbl # __builtin_clrsbll # __builtin_clz # __builtin_clzl # __builtin_clzll # __builtin_complex # __builtin_constant_p # __builtin_cpu_init # __builtin_cpu_is # __builtin_cpu_supports # __builtin_ctz # __builtin_ctzl # __builtin_ctzll # __builtin_expect # __builtin_ffs # __builtin_ffsl # __builtin_ffsll # __builtin_fpclassify # __builtin_huge_val # __builtin_huge_valf # __builtin_huge_vall # __builtin_inf # __builtin_infd128 # __builtin_infd32 # __builtin_infd64 # __builtin_inff # __builtin_infl # __builtin_isinf_sign # __builtin_nan # __builtin_nand128 # __builtin_nand32 # __builtin_nand64 # __builtin_nanf # __builtin_nanl # __builtin_nans # __builtin_nansf # __builtin_nansl # __builtin_object_size # __builtin_parity # __builtin_parityl # __builtin_parityll # __builtin_popcount # __builtin_popcountl # __builtin_popcountll # __builtin_powi # __builtin_powif # __builtin_powil # __builtin_prefetch # __builtin_trap # __builtin_types_compatible_p # __builtin_unreachable # # Unsupported built-ins will be tested with an empty parameter set and the # result of the check might be wrong or meaningless so use with care. # # LICENSE # # Copyright (c) 2013 Gabriele Svelto # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 7 AC_DEFUN([AX_GCC_BUILTIN], [ AS_VAR_PUSHDEF([ac_var], [ax_cv_have_$1]) AC_CACHE_CHECK([for $1], [ac_var], [ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [ m4_case([$1], [__builtin_assume_aligned], [$1("", 0)], [__builtin_bswap16], [$1(0)], [__builtin_bswap32], [$1(0)], [__builtin_bswap64], [$1(0)], [__builtin_choose_expr], [$1(0, 0, 0)], [__builtin___clear_cache], [$1("", "")], [__builtin_clrsb], [$1(0)], [__builtin_clrsbl], [$1(0)], [__builtin_clrsbll], [$1(0)], [__builtin_clz], [$1(0)], [__builtin_clzl], [$1(0)], [__builtin_clzll], [$1(0)], [__builtin_complex], [$1(0.0, 0.0)], [__builtin_constant_p], [$1(0)], [__builtin_cpu_init], [$1()], [__builtin_cpu_is], [$1("intel")], [__builtin_cpu_supports], [$1("sse")], [__builtin_ctz], [$1(0)], [__builtin_ctzl], [$1(0)], [__builtin_ctzll], [$1(0)], [__builtin_expect], [$1(0, 0)], [__builtin_ffs], [$1(0)], [__builtin_ffsl], [$1(0)], [__builtin_ffsll], [$1(0)], [__builtin_fpclassify], [$1(0, 1, 2, 3, 4, 0.0)], [__builtin_huge_val], [$1()], [__builtin_huge_valf], [$1()], [__builtin_huge_vall], [$1()], [__builtin_inf], [$1()], [__builtin_infd128], [$1()], [__builtin_infd32], [$1()], [__builtin_infd64], [$1()], [__builtin_inff], [$1()], [__builtin_infl], [$1()], [__builtin_isinf_sign], [$1(0.0)], [__builtin_nan], [$1("")], [__builtin_nand128], [$1("")], [__builtin_nand32], [$1("")], [__builtin_nand64], [$1("")], [__builtin_nanf], [$1("")], [__builtin_nanl], [$1("")], [__builtin_nans], [$1("")], [__builtin_nansf], [$1("")], [__builtin_nansl], [$1("")], [__builtin_object_size], [$1("", 0)], [__builtin_parity], [$1(0)], [__builtin_parityl], [$1(0)], [__builtin_parityll], [$1(0)], [__builtin_popcount], [$1(0)], [__builtin_popcountl], [$1(0)], [__builtin_popcountll], [$1(0)], [__builtin_powi], [$1(0, 0)], [__builtin_powif], [$1(0, 0)], [__builtin_powil], [$1(0, 0)], [__builtin_prefetch], [$1("")], [__builtin_trap], [$1()], [__builtin_types_compatible_p], [$1(int, int)], [__builtin_unreachable], [$1()], [m4_warn([syntax], [Unsupported built-in $1, the test may fail]) $1()] ) ])], [AS_VAR_SET([ac_var], [yes])], [AS_VAR_SET([ac_var], [no])]) ]) AS_IF([test yes = AS_VAR_GET([ac_var])], [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1), 1, [Define to 1 if the system has the `$1' built-in function])], []) AS_VAR_POPDEF([ac_var]) ]) libX11-1.8.12/m4/ltversion.m40000644014310600000120000000131214763154136011132 # ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2019, 2021-2024 Free Software Foundation, # Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4441 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.5.4]) m4_define([LT_PACKAGE_REVISION], [2.5.4]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.5.4' macro_revision='2.5.4' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) libX11-1.8.12/m4/ltoptions.m40000644014310600000120000003612114763154136011146 # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2024 Free # Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 10 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --enable-aix-soname configure option, and support the # `aix-soname=aix' and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. # DEFAULT is either `aix', `both', or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_ENABLE([aix-soname], [AS_HELP_STRING([--enable-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $enableval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --enable-aix-soname]) ;; esac lt_cv_with_aix_soname=$enable_aix_soname], [_AC_ENABLE_IF([with], [aix-soname], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)]) enable_aix_soname=$lt_cv_with_aix_soname]) with_aix_soname=$enable_aix_soname AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --enable-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_ENABLE([pic], [AS_HELP_STRING([--enable-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $enableval in yes|no) pic_mode=$enableval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $enableval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [dnl Continue to support --with-pic and --without-pic, for backward dnl compatibility. _AC_ENABLE_IF([with], [pic], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])])] ) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) libX11-1.8.12/ChangeLog0000644014310600000120000274367114763154164010125 commit 59917d28a3c41ad22d6fc52e323cafe2cdd596d5 Author: Alan Coopersmith Date: Sat Mar 8 15:23:04 2025 -0800 libX11 1.8.12 Signed-off-by: Alan Coopersmith commit 5f8077b257ea27a5fd6f114d2bc15284b2416b3c Author: Olivier Fourdan Date: Thu Nov 28 14:09:04 2024 +0100 xkb: Fix buffer overflow in XkbChangeTypesOfKey() If XkbChangeTypesOfKey() is called with nGroups == 0, it will resize the key syms to 0 but leave the key actions unchanged. If later, the same function is called with a non-zero value for nGroups, this will cause a buffer overflow because the key actions are of the wrong size. To avoid the issue, make sure to resize both the key syms and key actions when nGroups is 0. (cherry picked from xorg/xserver@0e4ed94952b255c04fe910f6a1d9c852878dcd64) Signed-off-by: Olivier Fourdan Reviewed-by: Peter Hutterer Signed-off-by: Alan Coopersmith Part-of: commit 865fd56aeb5c5d1812cce46ed197873c48b08692 Author: Alan Coopersmith Date: Sun Nov 1 15:45:08 2020 -0800 xkb: always set *mask_rtrn in XkbVirtualModsToReal Resolves warning from Oracle Parfait static analyser: Error: Uninitialised memory Uninitialised memory variable [uninitialised-mem-var] (CWE 457): Possible access to uninitialised memory referenced by variable 'mask' at line 721 of xkb/XKBMisc.c in function 'XkbUpdateKeyTypeVirtualMods'. Path in callee avoiding write at line 720 mask allocated at line 718 (cherry picked from xorg/xserver@a6574033f464c7cde02bce8f1b130ff6b2b2d9eb) Signed-off-by: Alan Coopersmith Part-of: commit 88d1a84ca3c0f87ffcb83b9b96e34a7121d5e2d3 Author: Alan Coopersmith Date: Sat Feb 22 11:59:13 2025 -0800 XkbChangeTypesOfKey: verify newTypesIn is not null before using it Based on xorg/xserver@97c9e6a7139e07a0761be05034fae42fcd65ba36 Fixes: 8ba0ca32 ("Janitor: ansification, make distcheck, compiler warnings.") Signed-off-by: Alan Coopersmith Part-of: commit 48a1335cab13d883e15b4eb5e9a5e080289a5c64 Author: Siddhesh Poyarekar Date: Tue May 29 10:17:50 2012 +0530 xkb: Allocate size_syms correctly when width of a type increases The current code seems to skip syms with width less than type->num_levels when calculating the total size for the new size_syms. This leads to less space being allocated than necessary during the next phase, which is to copy over the syms to the new location. This results in an overflow leading to a crash. (cherry picked from xorg/xserver@42ae2e8199fe875319978249963de7499607988b) Signed-off-by: Siddhesh Poyarekar Signed-off-by: Peter Hutterer Signed-off-by: Alan Coopersmith Part-of: commit 158be3ebd7d1da4d16bfc2dee82aac477fbcb833 Author: Daniel Stone Date: Wed Mar 21 02:04:12 2007 +0200 XKB: Fix size_syms calculation bug Apparently it needed to be nSyms*15/10, not *12/10; make it match the other allocation code. (cherry picked from xorg/xserver@f292de2ef13dc994a38029cee9e2642576893332) Signed-off-by: Alan Coopersmith Part-of: commit d6e1ca046aef42ec5465ece5edbdffe0bc7c0cb6 Author: Alan Coopersmith Date: Sat Feb 22 10:13:52 2025 -0800 XkbFreeKeyboard: set xkb->geom to NULL after freeing it Because XkbFreeGeometry takes a pointer to the geometry structure, and not the overall xkb structure like the other XkbFree*() calls, the caller is responsible for clearing the xkb->geom pointer to ensure it is not used after free. Based on xorg/xserver@629798c73ad76a77fa6a55bc6403fd9b95ade2bb Signed-off-by: Alan Coopersmith Part-of: commit 4a3ca6eeced253aacb0e2ecf640b9eb93863badc Author: Alan Coopersmith Date: Sun Feb 23 15:19:54 2025 -0800 x11.pc: Add URL field Signed-off-by: Alan Coopersmith Part-of: commit 23f0352eca362515d598bfdbd8ecec070dcd1b28 Author: Alan Coopersmith Date: Sun Feb 2 13:54:27 2025 -0800 libX11 1.8.11 Signed-off-by: Alan Coopersmith commit 4665733565eda7ae32302c3abf1aaf5075b8abde Author: Alan Coopersmith Date: Sat Jan 11 10:31:08 2025 -0800 configure: drop `pthread-stubs` dependency on Dragonfly, FreeBSD, & NetBSD syncs with changes to libxcb 1.16 & 1.16.1 Signed-off-by: Alan Coopersmith Part-of: commit ba15d51bfe789e84e291ccfb31d5f0ae6192969e Author: Aaron Muir Hamilton Date: Sun Oct 27 21:42:23 2024 -0400 ximcp/imRm.c: allow XNArea with OnTheSpot Part-of: commit 61175323a8a374aaedb139894987ddaf2bb2ba27 Author: Alan Coopersmith Date: Mon Dec 30 10:27:23 2024 -0800 cmsColNm: remove obsolete comment about FirstCmp being public It was made a static function in May 14, 1991 by rws in commit "make FirstCmp static" for X11R5 Signed-off-by: Alan Coopersmith Part-of: commit 7c75a066454fbafe586f7c24aeee65348f9d2bcc Author: Pierre Le Marre Date: Mon Dec 9 14:51:17 2024 +0100 Fix misuse of UCSConvertCase in XConvertCase There are two issues with the use of `UCSConvertCase` in `XConvertCase`: - Some Latin-1 keysyms do not map within Latin-1, e.g. `ssharp`. Only Latin-1 keysyms have the same value as the Unicode code point of their corresponding character. So `UCSConvertCase` does not work for some Latin-1 keysyms as it returns Unicode code points outside Latin-1 that do not match their corresponding keysyms values. - Some Unicode keysyms should map to Latin-1 keysyms (<0x100). But the Unicode keysym mask 0x01000000 is applied blindly to the result of `UCSConvertCase`, resulting in invalid Unicode keysyms (0x010000nn) while they should be Latin-1 keysyms. Example with ß/ẞ: ```c KeySym lower, upper; XConvertCase(XK_ssharp, &lower, &upper); // Expected: lower == XK_ssharp, upper == U1E9E // Got: lower == XK_ssharp, upper == 0x1E9E XConvertCase(U1E9E, &lower, &upper); // Expected: lower == XK_ssharp, upper == U1E9E // Got: lower == 0x10000df, upper == U1E9E ``` Part-of: commit 5a7d94e07fc7e4a10d6399f5e44793fa0c896af6 Author: Alan Coopersmith Date: Tue Nov 12 12:40:04 2024 -0800 xkb: avoid undefined behavior due to left shift overflow Closes: #225 Signed-off-by: Alan Coopersmith Part-of: commit 1ef3c6f010c03eade038b4e662c0eef47014800d Author: Alan Coopersmith Date: Sun Nov 10 15:38:25 2024 -0800 XIM_SET_PAD: add do ... while (0) to avoid -Wextra-semi-stmt warnings Clears 8 warnings from clang of the form: imDefIc.c:366:29: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] XIM_SET_PAD(&buf_s[2], len); /* pad */ ^ Signed-off-by: Alan Coopersmith Part-of: commit 22ded6890e9d11cc9eca59737fc531d40ec284a6 Author: Alan Coopersmith Date: Sun Nov 10 15:30:48 2024 -0800 Xrm.c: remove unneccessary ; after {} Clears 2 clang warnings: Xrm.c:1186:51: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] while (is_space(bits = next_char(c, str))) {}; ^ Xrm.c:1191:48: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] while (is_space(bits = next_char(c, str))) {}; ^ Signed-off-by: Alan Coopersmith Part-of: commit b7f59114abb4a4766d7fd5805d0435d023cd0c4b Author: Alan Coopersmith Date: Sun Nov 10 15:29:21 2024 -0800 DL_APPEND/DL_DELETE: remove trailing semicolon from definitions Clears 2 clang warnings: XlibInt.c:672:26: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] DL_APPEND(*head, add); ^ XlibInt.c:694:36: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] DL_DELETE(*head, event); ^ Signed-off-by: Alan Coopersmith Part-of: commit da431b8f7ff21d36b5a88237c991ca43b185d65f Author: Alan Coopersmith Date: Sun Nov 10 15:25:40 2024 -0800 xcb_io.c: add do ... while (0) to avoid -Wextra-semi-stmt warnings Clears 10 warnings from clang of the form: xcb_io.c:177:56: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] xcb_xlib_unknown_req_in_deq); ^ Signed-off-by: Alan Coopersmith Part-of: commit a53c45d69e88799e59dfbd324843df65a30cf4a9 Author: Alan Coopersmith Date: Sun Nov 10 13:16:41 2024 -0800 CI_GET_*_INFO_*: add do ... while (0) to avoid -Wextra-semi-stmt warnings Clears 24 warnings from clang of the form: TextExt16.c:63:34: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] CI_GET_DEFAULT_INFO_1D (fs, def); ^ Signed-off-by: Alan Coopersmith Part-of: commit 68912288218527846b04cbe8d647a2c252e82e20 Author: Alan Coopersmith Date: Sun Nov 10 13:11:12 2024 -0800 RETURN: add do ... while (0) to avoid -Wextra-semi-stmt warnings Clears 5 warnings from clang of the form: RdBitF.c:141:32: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] RETURN (BitmapFileInvalid); ^ Signed-off-by: Alan Coopersmith Part-of: commit 38c642c8ebd69f761fdda03664eba6889a331598 Author: Alan Coopersmith Date: Sun Nov 10 13:08:31 2024 -0800 poly.h: add do ... while (0) to avoid -Wextra-semi-stmt warnings Clears 3 warnings from clang of the form: PolyReg.c:224:67: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] BRESINITPGONSTRUCT(dy, top->x, bottom->x, pETEs->bres); ^ Signed-off-by: Alan Coopersmith Part-of: commit 906bf4a86d174ed20fda925d8f82de023aa26d2d Author: Alan Coopersmith Date: Sun Nov 10 12:37:53 2024 -0800 PutCommandResource: add do ... while (0) to avoid -Wextra-semi-stmt warnings Clears 4 warnings from clang of the form: ParseCmd.c:158:43: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] PutCommandResource(options[i].value); ^ Signed-off-by: Alan Coopersmith Part-of: commit c0768ab687fa07f83d0030dd161f4aa49cbe84f8 Author: Alan Coopersmith Date: Sun Nov 10 12:35:44 2024 -0800 GetFunc: add do ... while (0) to avoid -Wextra-semi-stmt warnings Clears 4 warnings from clang of the form: CrGlCur.c:140:64: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] GetFunc (TryShapeCursorFunc, "XcursorTryShapeCursor", func); ^ Signed-off-by: Alan Coopersmith Part-of: commit 49350501687d9633a86ae317d5311228e7d812e8 Author: Alan Coopersmith Date: Sun Nov 10 12:33:01 2024 -0800 _XCreateMutex/_XFreeMutex: remove trailing semicolon from definitions Makes them match the style of the other macros here and clears up 5 clang warnings of the form: Context.c:194:27: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] _XCreateMutex(&db->linfo); ^ Signed-off-by: Alan Coopersmith Part-of: commit 41c4aa408c3488e920e1f08eb946442faa051e6c Author: Alan Coopersmith Date: Sun Nov 10 11:52:19 2024 -0800 OneDataCard32: add do ... while (0) to avoid -Wextra-semi-stmt warnings Clears 13 warnings from clang of the form: Backgnd.c:44:72: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixel); ^ Signed-off-by: Alan Coopersmith Part-of: commit 68e6caad8fcad28143769384536d4529fe0161c4 Author: Alan Coopersmith Date: Sun Nov 10 11:48:41 2024 -0800 _XkbCheckPendingRefresh: add do ... while (0) to avoid -Wextra-semi-stmt Clears 6 warnings from clang of the form: XKBBind.c:74:48: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] _XkbCheckPendingRefresh(dpy, dpy->xkb_info); ^ Signed-off-by: Alan Coopersmith Part-of: commit 563ddd4ff5575e3f8bbf635cbdc339b09a7e285e Author: Alan Coopersmith Date: Sun Nov 10 11:09:56 2024 -0800 BufAlloc: add do { ... } while (0) to avoid -Wextra-semi-stmt warnings Clears 46 warnings from clang of the form: XKB.c:207:69: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] BufAlloc(char *, out, (((size * 2) + (unsigned) 3) / 4) * 4); ^ Signed-off-by: Alan Coopersmith Part-of: commit 5e22c4b3d56d8327d8610faabc8ecfc0c45399de Author: Alan Coopersmith Date: Sun Nov 10 11:06:28 2024 -0800 set_toupper: add do { ... } while (0) to avoid -Wextra-semi-stmt warnings Clears 4 warnings from clang of the form: lcUtil.c:53:18: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] set_toupper(ch1); ^ Signed-off-by: Alan Coopersmith Part-of: commit 4cb567d9a05b4a995a50e2fe178c2e697d339668 Author: Alan Coopersmith Date: Sun Nov 10 10:27:39 2024 -0800 Data: add do ... while (0) to avoid -Wextra-semi-stmt warnings Clears 38 warnings from clang of the form: cmsLkCol.c:155:35: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] Data (dpy, colorname, (long)n); ^ Signed-off-by: Alan Coopersmith Part-of: commit 9ab8f6a5f73cbe0675d1555504f6ec269c9dde8d Author: Alan Coopersmith Date: Sun Nov 10 10:14:49 2024 -0800 DeqAsyncHandler: add do ... while (0) to avoid -Wextra-semi-stmt warnings Clears 12 warnings from clang of the form: cmsCmap.c:194:34: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] DeqAsyncHandler(dpy, &async); ^ Signed-off-by: Alan Coopersmith Part-of: commit 8703ecf105d5bf6e5b105bc25ceaee8f43344c71 Author: Julien Cristau Date: Fri Nov 1 13:03:56 2024 +0100 ximcp: hide internal functions commit 13e9ac4d45 "ximcp: Unmark to fabricate key events with XKeyEvent serial" added new _XimFabricateSerial / _XimUnfabricateSerial / _XimIsFabricatedSerial functions; they don't need to be exported by libX11. Part-of: commit 41bc1a9dbe5b634489539f7779078d4a3b35df5e Author: Alan Coopersmith Date: Sat Oct 26 11:02:42 2024 -0700 ximcp: don't leak window if XGetAtomName() fails Found by Oracle Parfait 13.3 static analyzer: X Resource Leak [X-resource-leak]: Leaked X Resource window at line 306 of imDefIm.c in function '_XimPreConnectionIM'. window initialized at line 300 with XCreateSimpleWindow Signed-off-by: Alan Coopersmith Part-of: commit df1f1a47f90e71fbe68b1fe57bd021ac2320579b Author: Alan Coopersmith Date: Sun Jul 21 12:31:56 2024 -0700 _XGetRequest: Set data field to 0 when initializing new requests Signed-off-by: Alan Coopersmith Part-of: commit f2ebbce6d0978d2d84f840196b03ee35a3ca1736 Author: Alan Coopersmith Date: Sun Sep 29 10:24:23 2024 -0700 _XimStrConversionCallback: use size_t to calculate size to malloc Avoids build failures with gcc 14.2 when MALLOC_0_RETURNS_NULL is defined: imCallbk.c:346:9: error: ‘memcpy’ offset 10 is out of the bounds [0, 1] [-Werror=array-bounds=] 346 | memcpy(&buf[p],&cbrec.text->string.mbs,length_in_bytes); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Alan Coopersmith Part-of: commit 75c5bdee81b3a1147c2f123db7a052a4a79fbea4 Author: Alan Coopersmith Date: Sun Sep 29 10:04:40 2024 -0700 _XimEncodingNegotiation: swap order of arguments to calloc Avoids build failures with gcc 14.2 when MALLOC_0_RETURNS_NULL is defined: imDefIm.c: In function ‘_XimEncodingNegotiation’: imDefIm.c:1739:15: error: ‘memcpy’ offset 8 is out of the bounds [0, 1] [-Werror=array-bounds=] 1739 | (void)memcpy((char *)&buf_s[2], name_ptr, name_len); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Alan Coopersmith Part-of: commit 1f01aafa6d9100c5d4a48636b188334cdb223bd5 Author: Alan Coopersmith Date: Sun Sep 29 09:06:32 2024 -0700 _XlcDefaultMapModifiers: remove conversions between size_t & int Avoids build failures with gcc 14.2 when MALLOC_0_RETURNS_NULL is defined: lcWrap.c: In function ‘_XlcDefaultMapModifiers’: lcWrap.c:149:9: warning: ‘strcpy’ writing between 4294967296 and 9223372036854775806 bytes into a region of size 1 [-Wstringop-overflow=] 149 | strcpy(mods, prog_mods); | ^~~~~~~~~~~~~~~~~~~~~~~ ../../include/X11/Xlibint.h:457:24: note: destination object of size 1 allocated by ‘malloc’ 457 | # define Xmalloc(size) malloc((size_t)((size) == 0 ? 1 : (size))) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ lcWrap.c:147:12: note: in expansion of macro ‘Xmalloc’ 147 | mods = Xmalloc(i); | ^~~~~~~ lcWrap.c:149:9: error: ‘__builtin_memcpy’ forming offset [1, 4294967295] is out of the bounds [0, 1] [-Werror=array-bounds=] 149 | strcpy(mods, prog_mods); | ^~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Alan Coopersmith Part-of: commit 86e71472bc826ac5c850e200cb3820485b5689cf Author: Alan Coopersmith Date: Sat Aug 31 10:49:16 2024 -0700 SetFontPath: if ndirs is 0, skip work to make a list of directories Clears warning from gcc 14.1: SetFPath.c: In function ‘XSetFontPath’: ../include/X11/Xlibint.h:463:24: warning: argument 1 value is zero [-Walloc-zero] 463 | # define Xmalloc(size) malloc((size_t)(size)) | ^~~~~~~~~~~~~~~~~~~~~~ SetFPath.c:61:18: note: in expansion of macro ‘Xmalloc’ 61 | if ((p = Xmalloc (nbytes))) { | ^~~~~~~ Signed-off-by: Alan Coopersmith Part-of: commit 19b2f5c2d0935cbf9c17ecf30604f80592807b59 Author: Olivier Fourdan Date: Fri Aug 9 10:24:13 2024 +0200 Fix indentation Signed-off-by: Olivier Fourdan Part-of: commit f3d6ebac35301d4ad068e307f0fbe6aa12ccbccb Author: Olivier Fourdan Date: Fri Aug 9 09:21:31 2024 +0200 Close xcb connection after freeing display structure Commit 1472048b7 to fix a colormap threading issue added a display lock/unlock and a call to SyncHandle() to _XcmsFreeClientCmaps(). When running synchronized, that means calling XSync(). _XcmsFreeClientCmaps() is called from _XFreeDisplayStructure() via XCloseDisplay() after the xcb connection is closed. So when running synchronized, we may end up calling XSync() after the xcb connection to the display is closed, which will generate a spurious XIO error: | #0 in _XDefaultIOError () at /lib64/libX11.so.6 | #1 in _XIOError () at /lib64/libX11.so.6 | #2 in _XReply () at /lib64/libX11.so.6 | #3 in XSync () at /lib64/libX11.so.6 | #4 in _XSyncFunction () at /lib64/libX11.so.6 | 8#5 in _XFreeDisplayStructure () at /lib64/libX11.so.6 | 8#6 in XCloseDisplay () at /lib64/libX11.so.6 To avoid that issue, closed the xcb connection to the display last. v2: And same in OutOfMemory() as well (José Expósito) Signed-off-by: Olivier Fourdan Reviewed-by: José Expósito Part-of: commit ed9fb5535efe1e5278654b6b3994a34337b4bf1a Author: Alan Coopersmith Date: Sun Jul 28 10:37:55 2024 -0700 libX11 1.8.10 Signed-off-by: Alan Coopersmith commit 92014b39634e0b0aa52d4bff955a7aac3ed0a915 Author: Kelly Roadkill Date: Tue Jul 23 08:12:01 2024 +0500 Revert "nls: add compose seq's for symbols absent from Cyrillic layouts to ru_RU" Testing by multilingual typists revealed that the proposed sequences are too complex for everyday use. It seems that the inherent problems with JCUKEN can only be fixed with better kbd layouts. This reverts commit 174df0b8b6ada7e1c741373c7d686e00f42d8bd5. Part-of: commit be137dffa6f0b7640ce80b4266539009544bb045 Author: Kelly Roadkill Date: Fri Jul 19 16:47:40 2024 +0500 nls: add compose sequences for hryvnia currency Part-of: commit 39d57cbeda627115f7e8bd305b6cbd9df1daa007 Author: Alan Coopersmith Date: Sat Jul 13 10:14:02 2024 -0700 xlibi18n/lcFile.c: avoid use of possibly-NULL pointer with strcpy Fixes gcc warnings: lcFile.c: In function ‘_XlcLocaleLibDirName’: lcFile.c:708:5: warning: use of possibly-NULL ‘last_dir_name’ where non-null expected [CWE-690] [-Wanalyzer-possible-null-argument] 708 | strcpy (last_dir_name, dir_name); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Alan Coopersmith Part-of: commit 8abcaba1a7ee363a35ad8d869715095096995c76 Author: Alan Coopersmith Date: Sat Jul 6 09:37:50 2024 -0700 Revert "unifdef __vax__" This reverts commit 4ce3962b701c502acc96b6eaf104a5ffc317c5d7. Requested by NetBSD which still has a supported VAX port. Part-of: commit 751fbc59c30604980fdd19cb4b333d3cf2eccb24 Author: Olivier Fourdan Date: Fri Jun 21 14:37:24 2024 +0200 Fix deadlock in XRebindKeysym() Xlib is now built with threading support enabled from the constructor by default. XRebindKeysym() acquires the display lock, then calls: | XRebindKeysym() | LockDisplay() | ComputeMaskFromKeytrans() | -> XkbKeysymToModifiers() | -> _XkbLoadDpy() | -> XkbGetMap() | -> XkbGetUpdatedMap() | LockDisplay() And the dead lock: | Xlib ERROR: XKBGetMap.c line 575 thread 1fc6e580: locking display already | locked at KeyBind.c line 937 To avoid the issue, call ComputeMaskFromKeytrans() from outside the display lock. Signed-off-by: Olivier Fourdan Closes: https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues/216 Part-of: commit bc8c908ae8007d0bfe9b58c7752dd00fd282d999 Author: Kelly Roadkill Date: Tue Jun 18 14:49:50 2024 +0500 nls: delete compose sequence with anomalous post-fixed cedilla The only sequence with post-fixed cedilla in the whole en_US.UTF-8 was introduced in cf040016 with the merge of GTK+ compose sequences 12 years ago. It goes against the established patterns. Part-of: commit 1472048b7a02d1b7fc25cfeda761db23fba21eac Author: Olivier Fourdan Date: Fri Jun 7 09:05:55 2024 +0200 Make colormap private interfaces thread safe. Protect access to the dpy structure by a display lock, so that these can be called outside of a global display lock. That allows the XCMS colormap functions to be thread safe without having the whole functions within a display lock, to avoid deadlocks. Signed-off-by: Olivier Fourdan See-also: https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues/215 See-also: https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues/94 Reviewed-by: Adam Jackson Part-of: commit 739fce4c12c7aa39112353d80c8a3bf25bdd5274 Author: Olivier Fourdan Date: Fri Jun 7 09:07:39 2024 +0200 Revert "Protect colormap add/removal with display lock" That commit 99a2cf1aa was moving the calls to the _Xcms*CmapRec*() family of functions within a display lock to make the XCMS colormap functions thread safe. Unfortunately, that causes a deadlock in XCopyColormapAndFree(), because _XcmsCopyCmapRecAndFree() calls CmapRecForColormap() which calls XGetVisualInfo() which also tries to acquire the display lock. So, instead of moving the entire functions within the display lock, let's try to make the functions themselves thread safe in the following commit, and revert this change which causes a deadlock. This reverts commit 99a2cf1aa0b58391078d5d3edf0a7dab18c7745d. Fixes: https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues/215 See-also: https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues/94 Reviewed-by: Adam Jackson Part-of: commit 5dfedaf4aa1a032ea6cb4e871abd2e065f798129 Author: Olivier Fourdan Date: Thu Jun 6 16:25:26 2024 +0200 Revert "Fix XTS regression in XCopyColormapAndFree" This change was to fix the next change that we are to revert as well. This reverts commit 68c72a7341b114277ab232f2499ee3bd035af8a0. Reviewed-by: Adam Jackson Part-of: commit c099d0105f7a4f969cf922f333cb54c177aceacb Author: Alan Coopersmith Date: Sat May 18 11:41:36 2024 -0700 Avoid buffer overflow in _XimLookupMBText & _XimLookupUTF8Text Reported-by: u32i Signed-off-by: Alan Coopersmith Part-of: commit 0af3328dc330cbd8e097e2971b336b44466b1ab0 Author: jmcwilliams403 Date: Sun Jul 16 11:31:22 2023 -0400 NLS: Add 6 Multi_key sequences for Ezh Ezh is a Latin-Script letter belonging to several Uralic, Caucasian, and West-African languages. It is present on some Finnish keyboards, but users of many other layouts cannot presently type it. This commit adds Multi_key sequences for both Capital and lowercase Ezh, as well as Multi_key + dead_caron sequences for Ezh with a caron, which is used in Laz and Skolt Sámi. Part-of: commit 174df0b8b6ada7e1c741373c7d686e00f42d8bd5 Author: Kelly Roadkill Date: Sun Dec 3 00:53:55 2023 +0500 nls: add compose seq's for symbols absent from Cyrillic layouts to ru_RU JCUKEN (ЙЦУКЕН) - the default and de-facto standard layout for most Cyrillic scripts - lacks a number of ASCII symbols from QWERTY counterpart, forcing users to switch back-and-forth between layouts to type them. This adds sequences for them to the ru_RU compose map in an intuitive and consistent manner. Fixes #200 for ru_RU (but other Cyrillic layouts might benefit too) Part-of: commit 763f3f938c24993e9ceb1d6960d939b022fa8dfe Author: Mohamed Akram Date: Fri May 24 18:18:43 2024 +0400 nls: add Arabic hamza compose sequences These sequences are intended for use in the ara(mac-phonetic) and my(phonetic) layouts. They are based on the following layouts listed in the CLDR: - https://github.com/unicode-org/cldr/blob/release-43/keyboards/osx/ar-t-k0-osx-qwerty.xml - https://github.com/unicode-org/cldr/blob/release-43/keyboards/osx/ms-t-k0-osx.xml The sequences are listed in the `` section, and are reproduced below: ``` ``` We limit ourselves to the sequences that strictly combine a character and a hamza, and generate that character with a hamza on it, following the behavior in sequences of other dead keys. Additional sequences, potentially for other layouts as well, could be added later on as necessary. Part-of: commit 97fb5bda3d0777380cd4b964f48771a82ef3f2a7 Author: José Expósito Date: Tue Apr 30 18:21:08 2024 +0200 Fix buffer overrun in parse_omit_name When `num_fields == 12`, if the last character of the pattern is '-', the `buf` array is overrun. This error has been found by a static analysis tool. This is the report: Error: OVERRUN (CWE-119): libX11-1.8.7/modules/om/generic/omGeneric.c:691: cond_at_most: Checking "length > 255" implies that "length" may be up to 255 on the false branch. libX11-1.8.7/modules/om/generic/omGeneric.c:695: alias: Assigning: "last" = "buf + length - 1". "last" may now point to as high as byte 254 of "buf" (which consists of 256 bytes). libX11-1.8.7/modules/om/generic/omGeneric.c:718: ptr_incr: Incrementing "last". "last" may now point to as high as byte 255 of "buf" (which consists of 256 bytes). libX11-1.8.7/modules/om/generic/omGeneric.c:720: ptr_incr: Incrementing "last". "last" may now point to as high as byte 256 of "buf" (which consists of 256 bytes). libX11-1.8.7/modules/om/generic/omGeneric.c:720: overrun-local: Overrunning array of 256 bytes at byte offset 256 by dereferencing pointer "++last". # 718| *++last = '*'; # 719| # 720|-> *++last = '-'; # 721| break; # 722| case 13: Signed-off-by: José Expósito Part-of: commit f67a87dad40141f50f4da35b28a92a974bfdf7e1 Author: José Expósito Date: Tue Apr 30 18:04:35 2024 +0200 Fix memory leak in _XimProtoSetIMValues This error has been found by a static analysis tool. This is the report: Error: RESOURCE_LEAK (CWE-772): libX11-1.8.7/modules/im/ximcp/imDefIm.c:1316: alloc_fn: Storage is returned from allocation function "calloc". libX11-1.8.7/modules/im/ximcp/imDefIm.c:1316: var_assign: Assigning: "tmp" = storage returned from "calloc((size_t)((buf_size + data_len == 0) ? 1 : (buf_size + data_len)), 1UL)". libX11-1.8.7/modules/im/ximcp/imDefIm.c:1319: noescape: Resource "tmp" is not freed or pointed-to in "memcpy". libX11-1.8.7/modules/im/ximcp/imDefIm.c:1320: var_assign: Assigning: "buf" = "tmp". libX11-1.8.7/modules/im/ximcp/imDefIm.c:1302: var_assign: Assigning: "data" = "buf". libX11-1.8.7/modules/im/ximcp/imDefIm.c:1303: noescape: Resource "data" is not freed or pointed-to in "_XimEncodeIMATTRIBUTE". libX11-1.8.7/modules/im/ximcp/imDefIm.c:1333: leaked_storage: Variable "data" going out of scope leaks the storage it points to. libX11-1.8.7/modules/im/ximcp/imDefIm.c:1333: leaked_storage: Variable "buf" going out of scope leaks the storage it points to. libX11-1.8.7/modules/im/ximcp/imDefIm.c:1333: leaked_storage: Variable "tmp" going out of scope leaks the storage it points to. # 1331| # 1332| if (!total) # 1333|-> return (char *)NULL; # 1334| # 1335| buf_s = (CARD16 *)&buf[XIM_HEADER_SIZE]; Signed-off-by: José Expósito Part-of: commit af1312d2873d2ce49b18708a5029895aed477392 Author: José Expósito Date: Tue Apr 30 17:37:39 2024 +0200 XKBMAlloc: Check that needed is >= 0 in XkbResizeKeyActions Passing a negative value in `needed` to the `XkbResizeKeyActions()` function can create a `newActs` array of an unespected size. Check the value and return if it is invalid. This error has been found by a static analysis tool. This is the report: Error: OVERRUN (CWE-119): libX11-1.8.7/src/xkb/XKBMAlloc.c:811: cond_const: Checking "xkb->server->size_acts == 0" implies that "xkb->server->size_acts" is 0 on the true branch. libX11-1.8.7/src/xkb/XKBMAlloc.c:811: buffer_alloc: "calloc" allocates 8 bytes dictated by parameters "(size_t)((xkb->server->size_acts == 0) ? 1 : xkb->server->size_acts)" and "8UL". libX11-1.8.7/src/xkb/XKBMAlloc.c:811: var_assign: Assigning: "newActs" = "calloc((size_t)((xkb->server->size_acts == 0) ? 1 : xkb->server->size_acts), 8UL)". libX11-1.8.7/src/xkb/XKBMAlloc.c:815: assignment: Assigning: "nActs" = "1". libX11-1.8.7/src/xkb/XKBMAlloc.c:829: cond_at_least: Checking "nCopy > 0" implies that "nCopy" is at least 1 on the true branch. libX11-1.8.7/src/xkb/XKBMAlloc.c:830: overrun-buffer-arg: Overrunning buffer pointed to by "&newActs[nActs]" of 8 bytes by passing it to a function which accesses it at byte offset 15 using argument "nCopy * 8UL" (which evaluates to 8). # 828| # 829| if (nCopy > 0) # 830|-> memcpy(&newActs[nActs], XkbKeyActionsPtr(xkb, i), # 831| nCopy * sizeof(XkbAction)); # 832| if (nCopy < nKeyActs) Signed-off-by: José Expósito Part-of: commit 836a8f2cf5e930c8a56b512273fdf9890282ba04 Author: José Expósito Date: Tue Apr 30 16:49:26 2024 +0200 Fix use of uninitialized variable in _XimEncodeICATTRIBUTE In the `res->resource_size == XimType_NEST` code path, if `res->xrm_name != pre_quark` and `res->xrm_name != sts_quark`, `len` can be used uninitialized. This error has been found by a static analysis tool. This is the report: Error: UNINIT (CWE-457): libX11-1.8.7/modules/im/ximcp/imRmAttr.c:1106: var_decl: Declaring variable "len" without initializer. libX11-1.8.7/modules/im/ximcp/imRmAttr.c:1179: uninit_use: Using uninitialized value "len". # 1177| } # 1178| # 1179|-> if (len == 0) { # 1180| continue; # 1181| } else if (len < 0) { Signed-off-by: José Expósito Part-of: commit eaad761e24722b1743d3edee3383294bfb4947d6 Author: José Expósito Date: Tue Apr 30 16:41:40 2024 +0200 Fix use of uninitialized variable in _XimExtension `_XimRead()` is being called with `reply` as target buffer instead of using `preply`, accessing uninitialized memory a few lines later. This error has been found by a static analysis tool. This is the report: Error: UNINIT (CWE-457): libX11-1.8.7/modules/im/ximcp/imExten.c:468: alloc_fn: Calling "malloc" which returns uninitialized memory. libX11-1.8.7/modules/im/ximcp/imExten.c:468: assign: Assigning: "preply" = "malloc((size_t)((buf_size == 0) ? 1 : buf_size))", which points to uninitialized data. libX11-1.8.7/modules/im/ximcp/imExten.c:479: uninit_use: Using uninitialized value "*((CARD8 *)preply)". # 477| return False; # 478| buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE); # 479|-> if (*((CARD8 *)preply) == XIM_ERROR) { # 480| _XimProcError(im, 0, (XPointer)&buf_s[3]); # 481| if(reply != preply) Signed-off-by: José Expósito Part-of: commit 4f5541193dd5a004ed5ea44c12fc25e227113c9b Author: José Expósito Date: Tue Apr 30 16:37:21 2024 +0200 Fix use of uninitialized variable in _XimTriggerNotify `_XimRead()` is being called with `reply` as target buffer instead of using `preply`, accessing uninitialized memory a few lines later. This error has been found by a static analysis tool. This is the report: Error: UNINIT (CWE-457): libX11-1.8.7/modules/im/ximcp/imDefLkup.c:561: alloc_fn: Calling "malloc" which returns uninitialized memory. libX11-1.8.7/modules/im/ximcp/imDefLkup.c:561: assign: Assigning: "preply" = "malloc((size_t)((len == 0) ? 1 : len))", which points to uninitialized data. libX11-1.8.7/modules/im/ximcp/imDefLkup.c:573: uninit_use: Using uninitialized value "*((CARD8 *)preply)". # 571| } # 572| buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE); # 573|-> if (*((CARD8 *)preply) == XIM_ERROR) { # 574| _XimProcError(im, 0, (XPointer)&buf_s[3]); # 575| if(reply != preply) Signed-off-by: José Expósito Part-of: commit 90b8fc65da1e773b0091a50be46b23609591e8b7 Author: Takao Fujiwara Date: Fri Apr 26 01:29:39 2024 +0900 imDefIm: Add LIBX11_ENABLE_FABRICATED_ORDER env If an XIM application does not return the XKeyEvent from XNextEvent() to XFilterEvent(), a timeout is reached and the behavior is fallen back to the previous one with a warning messsage and we can ask the application to send the XKeyEvent to XFilterEvent() but also libX11 provides LIBX11_ENABLE_FABRICATED_ORDER environment variable. If the application runs with LIBX11_ENABLE_FABRICATED_ORDER=0, the previous behavior is available until the application is fixed. Closes: !246 Part-of: commit 898746f9b1fb384d6d24ed827c836ec8a0b3da3b Author: Takao Fujiwara Date: Fri Apr 26 01:29:34 2024 +0900 ximcp: Unmark fabricated with serial 0 and Xic commit_info GTK2 XIM resets the XKeyEvent serial to 0 even if _XimCommitRecv() sets the serial so now checks if the events are sent with Xic->private.proto.commit_info. Closes: !246 Part-of: commit 5a1e62d77b65ba148b1c6d1d22a81dc2b07e7d9e Author: Takao Fujiwara Date: Fri Apr 26 01:29:26 2024 +0900 Accept anon windows in XFilterEvent to update XIM state When input focuses are switched quickly with shortcut keys in a Java window, the focus is sometimes lost and the Window=0 is assigned in XFilterEvent() but the XKeyEvent was forwarded by a XIM serer(IBus) with XIM_FORWARD_EVENT -> XNextEvent() -> XFilterEvent() and the event needs to be forwarded to the XIM XKeyEvent press and release filters to update the XIM state with Window=0 likes _XimPendingFilter() and _XimUnfabricateSerial(). Closes: #205, #206 Fixes: 024d229f ("ximcp: Unmark to fabricate key events with XKeyEvent serial") Part-of: commit 5a14178c7cc408f425fe298aeade3dee749b1ca1 Author: Takao Fujiwara Date: Fri Apr 26 00:49:14 2024 +0900 ximcp: Add fabricated_time in XimProtoPrivate for timeout When users type keys quickly, some applications using Steam or Java do not call XNextEvent() for a key event but _XimFilterKeypress() and _XimFilterKeyrelease() expect to receive the key events forwarded by input methods. Now fabricated_time Time value is added to XimProtoPrivate to check the timeout value. Closes: #205 Fixes: 024d229f ("ximcp: Unmark to fabricate key events with XKeyEvent serial") Part-of: commit 1181abd6ffede3ac5663a3a3d4ee66aef1fa553b Author: Takao Fujiwara Date: Fri Apr 12 10:50:33 2024 +0900 imDefLkup: Mark and unmark fabricated with serial 0 GTK2 applications with GTK_IM_MODULE=xim sets the serial number 0 to the XKeyEvent and the previous _XimFabricateSerial() logic did not work for the applications. Now the API marks to fabricate with the serial 0. Closes: #205 Fixes: 024d229f ("ximcp: Unmark to fabricate key events with XKeyEvent serial") Part-of: commit c7790072657f9fdbe8cda031776617088c5f11db Author: Takao Fujiwara Date: Fri Apr 12 10:21:43 2024 +0900 imDefLkup: Commit first info in XimCommitInfo Xic.private.proto.commit_info can receive multiple XimCommitInfo when typing keys very quickly like an bar code scanner (or evemu-play) and the first info in XimCommitInfo should be committed to keep the typing key order. This and 041b5291 are same patches but the regression issues will be fixed by the later patches. Closes: #198 Fixes: 041b5291 ("imDefLkup: Commit first info in XimCommitInfo") Part-of: commit 13e9ac4d458069c81d795f6b4842814d30431b4b Author: Takao Fujiwara Date: Fri Apr 12 10:21:41 2024 +0900 ximcp: Unmark to fabricate key events with XKeyEvent serial _XimProtoKeypressFilter() and _XimProtoKeyreleaseFilter() can receive XKeyEvent from both the typing on the keyboard and the callback of XIM_FORWARD_EVENT. If the filter functions unmark to fabricate XKeyEvent from the typing on the keyboard during receiving XKeyEvent from the callback of XIM_FORWARD_EVENT with typing keys very quickly likes an bar code scanner (or evemu-play), XIM server cannot receive some key events and it causes the key typing order to get scrambled. Now XIM client saves the serial in XKeyEvent and the filter functions unmark to fabricate XKeyEvent from the callback of XIM_FORWARD_EVENT only. This and 024d229f are same patches but the regression issues will be fixed by the later patches. Closes: #198 Fixes: 024d229f ("ximcp: Unmark to fabricate key events with XKeyEvent serial") Part-of: commit a465588218c1643eedc35b3c24409cb775454eee Author: Alan Coopersmith Date: Fri Apr 5 15:50:06 2024 -0700 libX11 1.8.9 Signed-off-by: Alan Coopersmith commit 52a191ee096e93cf711f77b6a56c508b68afc0b6 Author: Peter Hutterer Date: Fri Apr 5 13:15:32 2024 +1000 Revert "ximcp: Unmark to fabricate key events with XKeyEvent serial" This commit causes a regression, see #205, #206, #207, #208. This reverts commit 024d229fdf88a7755577b01b46af6ef908d599e0. commit 3ea9f4f769fecbbc8c5210c5833ad83ab8d9e97e Author: Peter Hutterer Date: Fri Apr 5 13:14:33 2024 +1000 Revert "imDefLkup: Commit first info in XimCommitInfo" This commit causes a regression, see #205, #206, #207, #208. This reverts commit 041b5291f0956c5cda5054be2981c0d02b009a4c. commit 9afd55ada5d7a3c1d3ed23ff8451629a1d989a7f Author: Alan Coopersmith Date: Mon Mar 25 11:51:03 2024 -0700 xlibi18n: restore parse_line1 for WIN32 builds Accidentally removed by __UNIXOS2__ cleanup Closes: #204 Fixes: 225a4bbb ("unifdef __UNIXOS2__") Signed-off-by: Alan Coopersmith commit e4927d0c4fbf950bc45fc27309290e1911e75f42 Author: Alan Coopersmith Date: Sun Mar 24 15:02:23 2024 -0700 libX11 1.8.8 Signed-off-by: Alan Coopersmith commit 4ab58f26d388c82ffe46ef1c7dd1cee6259eec8a Author: Alan Coopersmith Date: Wed Feb 21 18:23:36 2024 -0800 unifdef NULL_NOT_ZERO I can't find any evidence this was ever defined, should only have been needed for odd-ball pre-C89 compilers. Signed-off-by: Alan Coopersmith commit 7bb2a5050a2f6049c92b301fae1cf89532b70060 Author: Alan Coopersmith Date: Wed Feb 21 18:18:46 2024 -0800 unifdef USL_SHAREDLIB I can't find any history of this being set in the imake or autoconf builds Signed-off-by: Alan Coopersmith commit 4400a68b3a5ecacd1f997d41a0572544fa8fe544 Author: Alan Coopersmith Date: Sat Feb 17 15:37:41 2024 -0800 unifdef Lynx Signed-off-by: Alan Coopersmith commit 1e56b27429667e772b15b0f39863a8467297062b Author: Alan Coopersmith Date: Sun Feb 11 15:15:00 2024 -0800 unifdef __QNX__ Signed-off-by: Alan Coopersmith commit ab0a3014822687da48cd3784253c34dea0a6ad2c Author: Alan Coopersmith Date: Sun Feb 11 15:10:59 2024 -0800 unifdef __uxp__ Signed-off-by: Alan Coopersmith commit 4ce3962b701c502acc96b6eaf104a5ffc317c5d7 Author: Alan Coopersmith Date: Sun Feb 11 15:07:15 2024 -0800 unifdef __vax__ Signed-off-by: Alan Coopersmith commit 65a6f162fd9fee4e647ac49c546c5d6a1655c58c Author: Alan Coopersmith Date: Sun Feb 11 15:03:19 2024 -0800 unifdef __sgi_not_xconsortium Signed-off-by: Alan Coopersmith commit 3296d7b8d14a6c114489d40b76e8da339e11b25c Author: Alan Coopersmith Date: Sun Feb 11 15:01:25 2024 -0800 unifdef __sgi Signed-off-by: Alan Coopersmith commit 4322fff7e125c7975dc1b83c433b904c7d3384b5 Author: Alan Coopersmith Date: Sun Feb 11 15:00:34 2024 -0800 unifdef sgi Signed-off-by: Alan Coopersmith commit 613d3624c2cc0ab2f18206e165a3e4a02e261148 Author: Alan Coopersmith Date: Sun Feb 11 14:59:28 2024 -0800 unifdef hpux Also removes shl_load() support, which was only buildable for HP-UX Signed-off-by: Alan Coopersmith commit 225a4bbbbd174e26cc408640e10f3c37f81f3a3f Author: Alan Coopersmith Date: Sun Feb 11 14:56:22 2024 -0800 unifdef __UNIXOS2__ Signed-off-by: Alan Coopersmith commit 0df284b450933e0239d1a85a7ff2d0c9d44d22af Author: Alan Coopersmith Date: Sun Feb 11 14:50:29 2024 -0800 unifdef ultrix Signed-off-by: Alan Coopersmith commit c3f3eb1284c59305568288923810dc155df6025c Author: Alan Coopersmith Date: Sun Feb 11 14:49:13 2024 -0800 unifdef AIXV3 Signed-off-by: Alan Coopersmith commit b35344c9a74b478509e33384cc99bcc4fd092a2d Author: Alan Coopersmith Date: Sun Feb 11 14:47:31 2024 -0800 unifdef __osf__ Signed-off-by: Alan Coopersmith commit 041b5291f0956c5cda5054be2981c0d02b009a4c Author: Takao Fujiwara Date: Wed Jan 31 20:27:57 2024 +0900 imDefLkup: Commit first info in XimCommitInfo Xic.private.proto.commit_info can receive multiple XimCommitInfo when typing keys very quickly like an bar code scanner (or evemu-play) and the first info in XimCommitInfo should be committed to keep the typing key order. Fixes: #198 commit 024d229fdf88a7755577b01b46af6ef908d599e0 Author: Takao Fujiwara Date: Wed Jan 31 20:26:40 2024 +0900 ximcp: Unmark to fabricate key events with XKeyEvent serial _XimProtoKeypressFilter() and _XimProtoKeyreleaseFilter() can receive XKeyEvent from both the typing on the keyboard and the callback of XIM_FORWARD_EVENT. If the filter functions unmark to fabricate XKeyEvent from the typing on the keyboard during receiving XKeyEvent from the callback of XIM_FORWARD_EVENT with typing keys very quickly likes an bar code scanner (or evemu-play), XIM server cannot receive some key events and it causes the key typing order to get scrambled. Now XIM client saves the serial in XKeyEvent and the filter functions unmark to fabricate XKeyEvent from the callback of XIM_FORWARD_EVENT only. Fixes: #198 commit ae3eca18cec44a953789c7f77ffab888713ed132 Author: Peter Hutterer Date: Thu Nov 30 15:05:51 2023 +1000 Fix _XkbReadGetDeviceInfoReply for nButtons == dev->buttons XkbGetDeviceInfo(dpy, XkbXI_ButtonActionsMask, 2, 0, 0) always returns NULL because the number of buttons on the device equals (unsurpisingly) the number of buttons requested (i.e. first + nBtns == dev->nbuttons). This currently causes it to bail out and return NULL. Fixes f293659d5a4024bda386305bb7ebeb4647c40934 commit 0a951047f64e87c5ab328084310bf27bcd4964f3 Author: Walter Harms Date: Mon Jan 8 17:18:19 2024 +0100 _XimProtoIMFree:no need to check arg for Xfree() Xfree() will happily ignore NULL, no need to check commit dce614623e1f069d79d33a233305e0754fa2fd48 Author: Walter Harms Date: Mon Jan 8 17:01:44 2024 +0100 _XimEncodeString:no need to check arg for Xfree() Xfree() will happily ignore NULL, no need to check commit 4f78b615806fa1cfe2bdcf3f7c868b8a00dede77 Author: Walter Harms Date: Mon Jan 8 16:50:52 2024 +0100 Fix XCreateIC() memory leak (Part 2) Direct leak of 12 byte(s) in 2 object(s) allocated from: #0 0x7f4f25c3f7a7 in strdup (/usr/lib64/libasan.so.6+0x5c7a7) #1 0x7f4f252ce6a1 in _XimEncodeString libX11-1.8.3/modules/im/ximcp/imRm.c:818 #2 0x7f4f252ce6a1 in _XimEncodeString libX11-1.8.3/modules/im/ximcp/imRm.c:807 #3 0x7f4f252d2f0f in _XimSetICValueData libX11-1.8.3/modules/im/ximcp/imRm.c:2912 #4 0x7f4f252b536a in _XimLocalCreateIC libX11-1.8.3/modules/im/ximcp/imLcIc.c:176 #5 0x7f4f251f0105 in XCreateIC libX11-1.8.3/src/xlibi18n/ICWrap.c:251 detected and fix by Patrick Lerda applied with adjustment, do changes when OOM (unlikely but good practise) commit ed0b97e480d7d07c24719007273989b2eb3e4046 Author: Walter Harms Date: Mon Jan 8 16:21:02 2024 +0100 _XimLocalDestroyIC:fix possible mem leak Adapted: Fix XCreateIC() memory leak by Patrick Lerda Part 1 commit 07978634b8f4f7d9537c7f46ddcd48f2ab3efcb8 Author: Walter Harms Date: Mon Jan 8 15:16:11 2024 +0100 _XimLocalCreateIC: get rid of bzero commit 59c9a89e250d479334bdd4d800ca6cfa919b8fc3 Author: Walter Harms Date: Mon Jan 8 15:09:49 2024 +0100 _XimLocalCreateIC: minor cleanup minor cleanup, no code change commit e5b14e59a16fa49c7e7af0acfc1e4311bebec536 Author: Walter Harms Date: Mon Jan 8 13:35:28 2024 +0100 _XimLocalCreateIC:no need to check arg for Xfree() Xfree() will happily ignore NULL, no need to check commit e6310b5212f1dea184e1626ad5eeec167fcb41ac Author: Walter Harms Date: Mon Jan 8 13:06:03 2024 +0100 _XimLocalDestroyIC: no need to check arg for Xfree() Xfree() will happily ignore NULL, no need to check commit 1261802fb316f088504b99ffe80095d13825a85b Author: Walter Harms Date: Sun Jan 7 18:30:30 2024 +0100 fix table width the width of first column was to small and caused a hyphenation. there is only one word, fix for me. commit c745719e23af44a4b40ab4508447637b35d91a1e Author: Alan Coopersmith Date: Tue Oct 3 09:00:01 2023 -0700 libX11 1.8.7 Signed-off-by: Alan Coopersmith commit 7916869d16bdd115ac5be30a67c3749907aea6a0 Author: Yair Mizrahi Date: Thu Sep 7 16:15:32 2023 -0700 CVE-2023-43787: Integer overflow in XCreateImage() leading to a heap overflow When the format is `Pixmap` it calculates the size of the image data as: ROUNDUP((bits_per_pixel * width), image->bitmap_pad); There is no validation on the `width` of the image, and so this calculation exceeds the capacity of a 4-byte integer, causing an overflow. Signed-off-by: Alan Coopersmith commit b4031fc023816aca07fbd592ed97010b9b48784b Author: Alan Coopersmith Date: Thu Sep 7 16:12:27 2023 -0700 XCreatePixmap: trigger BadValue error for out-of-range dimensions The CreatePixmap request specifies height & width of the image as CARD16 (unsigned 16-bit integer), so if either is larger than that, set it to 0 so the X server returns a BadValue error as the protocol requires. Signed-off-by: Alan Coopersmith commit 73a37d5f2fcadd6540159b432a70d80f442ddf4a Author: Alan Coopersmith Date: Thu Sep 7 15:55:04 2023 -0700 XPutImage: clip images to maximum height & width allowed by protocol The PutImage request specifies height & width of the image as CARD16 (unsigned 16-bit integer), same as the maximum dimensions of an X11 Drawable, which the image is being copied to. Signed-off-by: Alan Coopersmith commit 204c3393c4c90a29ed6bef64e43849536e863a86 Author: Alan Coopersmith Date: Thu Sep 7 15:54:30 2023 -0700 CVE-2023-43786: stack exhaustion from infinite recursion in PutSubImage() When splitting a single line of pixels into chunks to send to the X server, be sure to take into account the number of bits per pixel, so we don't just loop forever trying to send more pixels than fit in the given request size and not breaking them down into a small enough chunk to fix. Fixes: "almost complete rewrite" (Dec. 12, 1987) from X11R2 Signed-off-by: Alan Coopersmith commit 6858d468d9ca55fb4c5fd70b223dbc78a3358a7f Author: Alan Coopersmith Date: Sun Sep 17 14:19:40 2023 -0700 CVE-2023-43785: out-of-bounds memory access in _XkbReadKeySyms() Make sure we allocate enough memory in the first place, and also handle error returns from _XkbReadBufferCopyKeySyms() when it detects out-of-bounds issues. Reported-by: Gregory James DUCK Signed-off-by: Alan Coopersmith commit 78b37accff1abbe713349d59fdefd963ffa04bbc Author: Alan Coopersmith Date: Sun Sep 17 10:11:02 2023 -0700 XOpenDisplay: ensure each screen has a valid root_visual pointer Other code assumes this pointer cannot be NULL, so fail the connection if a bug has caused the X server to give a non-existent visual ID for the default visual of any screen. Reported-by: Gregory James DUCK Signed-off-by: Alan Coopersmith commit 3962080b7846d79fd3cf10b16eddacf68eb321b7 Author: Antti Savolainen Date: Tue Aug 8 11:37:03 2023 +0000 Add two compose sequences for dagger/obelisk symbols The dagger symbol has several modern uses such as marking someone as dead or something as extinct. Historically it has been used to indicate a footnote. commit 15bbc81cf6b7c76b8a59cab6d77c9aba88b8562d Author: Christopher Chavez Date: Sat Jul 29 16:58:05 2023 +0000 Xutil.h: use Bool for XEmptyRegion(), XEqualRegion() commit 5433cb93513c31e9cba2a447cf48d4b9aeb53285 Author: Benno Schulenberg Date: Mon Jul 17 08:02:09 2023 +0200 nls: add two compose sequences for currency symbol `฿` (the Thai baht) The compose sequences are obvious: the capital B plus the vertical bar. Signed-off-by: Benno Schulenberg commit 2ff401a472c5f210844cc358d5a27bd340546796 Author: Benno Schulenberg Date: Mon Jul 17 07:56:14 2023 +0200 nls: reshuffle the compose sequences for currencies into ascending order That is: sort them according to code point. commit c0e2d42d411be3245498ffe6484b35421f096c02 Author: Benno Schulenberg Date: Mon Jul 17 07:27:14 2023 +0200 nls: add compose sequences for `₲` (guaraní), `₭` (kip), and `₮` (tugrik) When Ghana, Nigeria, Costa Rica and El Salvador have compose sequences for their currency symbols (cedi: `₵`, naira: `₦`, colón: `₡`), then Paraguay, Laos, and Mongolia deserve to have such sequences as well. The sequences should be obvious: the relevant capital letter of the name of the currency (G, K, T) plus a vertical bar, a minus sign, and an equals sign, respectively. Also add two sequences for `$` (the dollar sign), for consistency. Drop the tentative comments for drachma, penny, and austral, as those currencies have been obsolete for more than twenty years. Signed-off-by: Benno Schulenberg commit d9fe5dc735c75398e36998c226d2418137229673 Author: Benno Schulenberg Date: Mon Jul 17 07:06:51 2023 +0200 nls: change result of sequence ` ` from `¢` (CENT) to `₵` (CEDI) As a cent is a small coin, it makes no sense to use an uppercase letter to compose the `¢` symbol -- having four sequences with a lowercase `c` plus a `bar` or a `slash` available for composing `¢` should be enough. Use the sequence ` commit 031e63060ed11eb8a876aac7515bc5a67371ed6b Author: Antti Savolainen Date: Thu Aug 17 18:25:20 2023 +0300 nls: add a compose sequence with double dead_tilde for ≈ (almost equal to) Some keyboards lack direct asciitilde and instead have only dead tilde. This compose sequence allows those keyboards to type the almost equal to sign. commit df2a18c4643bb4a50f2f795a75a905a1032a004a Author: Benno Schulenberg Date: Mon Jul 17 17:03:16 2023 +0200 nls: delete twenty seven untypable Greek compose sequences Only a few keyboard layouts contain the `dead_iota` keysym, and none of those layouts contains the `acute` keysym, so compose sequences that combine the two symbols cannot be typed and are thus useless. Signed-off-by: Benno Schulenberg commit 44f908d9283710ffc75b22d2ae7a8948119b3e61 Author: Alan Coopersmith Date: Sun Aug 20 15:11:04 2023 -0700 docs: fix names for XkbKeyKeyType & XkbKeyKeyTypeIndex Implementation had "Key" twice in these macro names, but the docs had only listed it once. Signed-off-by: Alan Coopersmith commit 7b16c55063ba4eb258bf91c170e378c1e2d398bd Author: Alan Coopersmith Date: Sun Aug 20 15:01:09 2023 -0700 docs: remove XkbKeySymsOffset This function was documented but never implemented. Signed-off-by: Alan Coopersmith commit 41a157dfeefe943f5a79948e4f9ef93473144fd8 Author: Alan Coopersmith Date: Sun Aug 20 14:52:18 2023 -0700 docs: remove XkbGetNameChanges This function was documented but never implemented. Signed-off-by: Alan Coopersmith commit 3442a8cee25dc0254ee69bcf83a89d287a86c97a Author: Alan Coopersmith Date: Sun Aug 20 14:44:18 2023 -0700 docs: remove XkbChangeIndicators and Xkb{Get,Note}IndicatorChanges These functions were documented but never implemented. Signed-off-by: Alan Coopersmith commit b7a15d6c6efd0bfddc81cf8443073c4bc1c9772d Author: Alan Coopersmith Date: Sun Aug 20 14:31:20 2023 -0700 docs: XkbSAActionSetCtrls is really named XkbActionSetCtrls Signed-off-by: Alan Coopersmith commit a1d8dd726757e00e3a774b92456f5c742492475b Author: Alan Coopersmith Date: Sun Aug 20 14:18:32 2023 -0700 docs: remove XkbGetStickyKeysOptions & XkbSetStickyKeysOptions These functions were documented but never implemented. Signed-off-by: Alan Coopersmith commit bf13f197406fe745c5ff46a4748a41b6646aebf6 Author: Alan Coopersmith Date: Sun Aug 20 14:09:35 2023 -0700 docs: remove XkbGetSlowKeysDelay & XkbSetSlowKeysDelay These functions were documented but never implemented. Signed-off-by: Alan Coopersmith commit caab7321d2ec14ee776ec329ed2facf0816a3136 Author: Alan Coopersmith Date: Sun Aug 20 14:04:15 2023 -0700 docs: remove XkbGetAccessXTimeout & XkbSetAccessXTimeout These functions were documented but never implemented. Signed-off-by: Alan Coopersmith commit 843e89bd2467a58cb454705a09d095726b96d93f Author: Alan Coopersmith Date: Sun Aug 20 12:58:47 2023 -0700 docs: remove XkbAllocDeviceLedInfo This function was documented but never implemented. Signed-off-by: Alan Coopersmith commit 2686dd7a9d6e8e02ce2868e446cdec11617ffab4 Author: Alan Coopersmith Date: Sun Aug 20 12:41:42 2023 -0700 docs: finish removing XkbGetBounceKeysDelay & XkbSetBounceKeysDelay These functions were documented but never implemented. Signed-off-by: Alan Coopersmith commit 188991fe7e41bbf2f384d0875ab2e25c936b0b41 Author: G. Branden Robinson Date: Sat Jul 29 10:10:00 2023 -0700 configure script reports stray, confusing "yes" Closes issue #194 Signed-off-by: Alan Coopersmith commit 70f44d76fd8fad96f33ba5c80a394d68b77dda03 Author: Benno Schulenberg Date: Sun Jul 16 17:08:52 2023 +0200 nls: add, correct, and normalize some comments of compose sequences Add comments for the Khmer digraphs, correct the comments for the Arabic lam-alef decompositions, and normalize the comments for the Breton digraphs and trigraphs. Signed-off-by: Benno Schulenberg commit 2a57c32e14779cf1c0c1d2da98a9cac21c00c095 Author: Benno Schulenberg Date: Sun Jun 25 10:01:05 2023 +0200 nls: harmonize the comments for compose sequences with combining accents Replace the "WITH" with "plus" and lowercase the "AND" in the comments for sequences with combining accents, to make it slightly clearer that the resulting string consists of multiple code points. Also, use the word "COMBINING" in the names of the accents, so that these sequences can be easily grepped, and drop the redundant word "ACCENT". Signed-off-by: Benno Schulenberg commit 757ab5ddd86f6cdce24b8ae2c43206b7beb7ab44 Author: Alan Coopersmith Date: Mon Aug 14 08:33:28 2023 -0700 Remove XkbSetBounceKeysDelay.man from list of man pages to build Fixes: f90e6bfa ("rm XkbSetBounceKeysDelay.man") Signed-off-by: Alan Coopersmith commit f90e6bface92fd192b26f03b7ae745661d9c2690 Author: Walter Harms Date: Sun Aug 13 22:42:50 2023 +0200 rm XkbSetBounceKeysDelay.man there is no function XkbSetBounceKeysDelay(). It is listed in the specs but never implemented if someone does it, feel free to get the file back. closes issue #105 commit b2c3fb7b4dd4c4c7b9d28c7af7776cccc8e0a98b Author: Benno Schulenberg Date: Sat Jul 8 08:11:39 2023 +0200 nls: use the shorter and more consistent name for the dead capital schwa The `dead_SCHWA` name is available since xorgproto-2023.1, which was released last month. commit e45dff5c2a51ad0392061208a8ad33211d952385 Author: jmcwilliams403 Date: Fri Jun 16 11:37:20 2023 -0400 NLS: Drop two math sequences, slightly clean up APL sequences. * Two compose sequences containing `leftshoe` and `rightshoe` are dropped as no keyboard layout uses these keysyms. * The compose sequences for `therefore` and `because` in the APL block are moved to ascending Unicode order. * The comments for the compose sequences for `U2299` are corrected to more accurately reflect its sequence nodes and its real name in Unicode. commit af2b6dfab1616dc85be9c9b196e4c56d00447851 Author: Benno Schulenberg Date: Sun Jun 25 09:09:21 2023 +0200 nls: delete twenty eight compose sequences that cannot be typed The letters `Ǫ` (U+01EA, O with ogonek), `Ȩ` (U+0228, E with cedilla), `Ȯ` (U+022E, O with dot above), `Ạ` (U+1EA0, A with dot below), and their lowercase forms do not occur in any layout of xkeyboard-config, meaning that the compose sequences that contained these letters could not be typed. Delete their dead weight. Signed-off-by: Benno Schulenberg commit ab0442d3fa835ce16559b29532ac7f674f8557f4 Author: Benno Schulenberg Date: Sat Jun 24 09:46:07 2023 +0200 nls: remove four unobvious and redundant compose sequences for ¥ (yen) Composing ¥ with Y and a minus sign seems to have been added in analogy to composing £ with L and a minus sign. But ¥ clearly has a double line through it, so using the equals sign for this is far more logical (and those compose sequences of course exist). Also, L plus an equals sign produces ₤ (lira), not £ (sterling). So... make these sequences more consistent and allow composing ¥ only with Y/y plus an equals sign. Signed-off-by: Benno Schulenberg commit 933912480c08495428d45988eebb48fcbe62f14b Author: Benno Schulenberg Date: Sat Jun 24 10:02:45 2023 +0200 nls: order a few compose sequences left first, and in mirroring pairs commit 178c4fefd3b0b4be5e69274108b86a51f08ec3a6 Author: Benno Schulenberg Date: Fri Jun 16 09:33:03 2023 +0200 nls: remove three duplicated combining acute accents For the Cyrillic YU with combining acute accent, the string between the quotes contained two U+0301 code points, whereas one is enough, like for all the neighboring strings. (This duplication was found by accident with `nano --mini --cons`.) commit 695e90ad26f632feb0f58ad94882fb3a263bf114 Author: Alan Coopersmith Date: Thu Jun 15 09:14:48 2023 -0700 libX11 1.8.6 Signed-off-by: Alan Coopersmith commit 304a654a0d57bf0f00d8998185f0360332cfa36c Author: Alan Coopersmith Date: Sat Jun 10 16:30:07 2023 -0700 InitExt.c: Add bounds checks for extension request, event, & error codes Fixes CVE-2023-3138: X servers could return values from XQueryExtension that would cause Xlib to write entries out-of-bounds of the arrays to store them, though this would only overwrite other parts of the Display struct, not outside the bounds allocated for that structure. Reported-by: Gregory James DUCK Signed-off-by: Alan Coopersmith commit 71b08b8af20474bb704a11affaa8ea39b06d5ddf Author: Alan Coopersmith Date: Wed May 31 17:45:40 2023 -0700 libX11 1.8.5 Signed-off-by: Alan Coopersmith commit 03ba0140940cc76524d83096a47309f5c398541f Author: Benno Schulenberg Date: Mon May 22 12:02:06 2023 +0200 nls: use a slash instead of a combining solidus in compose sequences First: combining diacritics like the combining long solidus (`U+0338`) are not meant to be used in compose sequences. Second: there is just one layout in xkeyboard-config that contains the `U0338` character: the deprecated/obsolete German T3 layout. So, practically speaking, these compose sequences with `U0338` were untypable. So, use a slash instead, that almost all layouts have. This does require that the sequence ` ` changes its meaning from backslash to not-less-than (`≮`). This seems like an acceptable sacrifice, as the sequence ` ` is a faster/easier sequence for the backslash and most layouts contain a backslash already anyway. Signed-off-by: Benno Schulenberg commit 616701317e25b2c0f509f4d93af5dee6de09012d Author: Benno Schulenberg Date: Mon May 22 11:19:32 2023 +0200 nls: delete six compose sequences that cannot be typed None of the layouts in xkeyboard-config contain `Ohook` or `Uhook` or `U+01D3` (U with caron) nor their lowercase forms, so these six sequences cannot be typed on any known keyboard. (Also, the target characters of the sequences with hook and horn seem to occur only in Vietnamese, where the horn is part of the vowel and the hook is a tonal mark. All Vietnamese layouts in xkeyboard-config contain `Ohorn` and `Uhorn`, and then the five tonal marks as dead keys, `dead_hook` among them. It does not make sense to want to apply a horn to a vowel that already has a tonal mark, nor is it possible with the Vietnamese layouts.) Signed-off-by: Benno Schulenberg commit 35d9621d78cb196b4ccd3ee1baa1ce2a21e4674b Author: Benno Schulenberg Date: Sun May 21 16:17:32 2023 +0200 nls: sort three sequences alphabetically in their group, like all others Also, consistently form uppercase+lowercase pairs, like for most others. commit 208d550954c7266fa8093b02a2a97047e1478c00 Author: Benno Schulenberg Date: Thu Apr 13 17:25:35 2023 +0200 nls: make the Amharic compose sequences use the dead-vowel symbols Last year, commit 488b156fe2 changed mistaken ASCII characters to the code points that were actually used in the Ethiopian keyboard layout. But those code points were mistaken too: the intention was not to use the code point U+FE68 in the layout but the raw symbol code 0xfe68 -- and so on for the other codes. The symbols that these raw codes were intended to refer to were `dead_a` and friends. But these dead vowels were added under different codes: 0xfe80 to 0xfe8b. So, correct the Amharic compose sequences to make use of the dead-vowel symbols that were specifically added for them fifteen years ago. (As soon as this is merged, xkeyboard-config wil be changed too to use the dead vowels in the Ethiopian layout.) Signed-off-by: Benno Schulenberg commit 96cbac89a02220eb21e13ca5fa7c8c5adf77028a Author: jmcwilliams403 Date: Fri Mar 31 09:47:03 2023 -0400 nls: add compose sequence for capital schwa, and delete a deviant one This sequence has already been defined in the iso8859-9e compose file meant for the Azerbaijani locale, yet for the longest time, only the lowercase form has existed in the en_US.UTF-8 master compose file. This patch adds one sequence for Latin Capital Letter Schwa for the Azerbaijani language. Additionally, the sequence in the pt_BR.UTF-8 locale for capital schwa has been removed as it uses two lowercase e's as part of its sequence, which in practice would make typing both `Multi_key e e` and `Multi_key E E` output capital schwa. commit a6528d92b3865adb4f9951df91a714f55f56d59e Author: Benno Schulenberg Date: Tue Apr 4 11:35:44 2023 +0200 XSetScreenSaver.man: restore the part that was accidentally snipped Four years ago, while removing private macros, commit fe46eb2871 unintentionally truncated the XSetScreenSaver manpage. Restore the snipped part (minus trailing spaces and a mistaken singular). This fixes issue #187. Reported-by: Sergio Gelato Signed-off-by: Benno Schulenberg commit eb166af8f9f4184108fe8e0611a09af03d12059e Author: jmcwilliams403 Date: Fri Mar 24 08:37:32 2023 -0400 NLS: Remove strange dead_cedilla cedi sign sequences These sequences appear to be a leftover artifact of auto-generating dead_currency sequences for cent and the cedi sign, where chaining with ascii "c" vs "ccedilla" would output cent vs the cedi sign respectively, but somehow this ended up creating strange sequences with dead_cedilla followed by cent or the colon sign to output the cedi sign, the latter sequence of which was already removed recently. Additionally, sequences beginninng with dead_cedilla followed by currency have been removed as they also appear to be related to these artifacts. The two remaining sequences beginning with dead_currency followed by dead_cedilla are maintained and moved to the stretch of dead_currency sequences next to ccedilla, and sorted in order of unicode decompositional complexity. commit 6e889f34679bb96f4d61ef069259c042cb4a9a59 Author: Benno Schulenberg Date: Fri Mar 24 09:41:48 2023 +0100 nls: remove twenty two untypable Greek compose sequences None of the keyboard layouts in xkeyboard-config contains accented Greek characters like `Greek_alphaaccent` or `Greek_iotadieresis` (nor in their Unicode hexadecimal forms, like U03AC or 0x10003CA), so none of these sequences could be typed on an existing layout. Also, the two sequences that started with `Greek_accentdieresis` were plain wrong: making a spacing character into a dead key. Signed-off-by: Benno Schulenberg commit 98be4cb23a5eadc98f81f05c4696f687119152c8 Author: Benno Schulenberg Date: Fri Mar 24 09:00:48 2023 +0100 nls: remove four hundred and sixty untypable Greek compose sequences None of the keyboard layouts in xkeyboard-config contains code points in the range U+1F00..U+1FFF (the Greek Extended block), so none of the removed sequences could be typed on an existing layout. (Of course it is possible that some people have their own private layout that contains some of the Greek Extended characters, but if they do, then they can also define private compose sequences, when needed.) Modern Greek does not use these characters with polytonic diacritics anyway -- they are useful only for typing traditional Greek. The useless sequences were removed with this command: sed -i '//d' nls/en_US.UTF-8/Compose.pre Signed-off-by: Benno Schulenberg commit ff8706a5eae25b8bafce300527079f68a201d27f Author: Benno Schulenberg Date: Wed Jun 15 11:54:54 2022 +0200 nls: delete compose sequences that pointlessly mix upper and lower case It's nice to have compose sequences for things like © and ®, but allowing them to be composed also with letters of different case is unneeded. It is good enough to have sequences of only lowercase and only uppercase. Signed-off-by: Benno Schulenberg commit ca99e338a9b8aad300933b1336f9e3c091392213 Author: jmcwilliams403 Date: Sun Mar 12 15:13:27 2023 +0000 NLS: move dead-caron subscript compositions to the relevant Unicode block commit dac2985b347cebc0f631e43e41eaeddb68de1676 Author: jmcwilliams403 Date: Sun Mar 12 14:49:47 2023 +0000 NLS: implement the expansion of the six Breton N-graph keysyms These one-keysym-to-multiple-characters sequences will allow fully defining the Breton keyboard layout, without needing custom compose sequences. commit e45ca7b41dcd3ace7681d6897505f85d374640f2 Author: Alan Coopersmith Date: Tue Mar 14 10:22:48 2023 -0700 gitlab CI: add workflow rules Needed due to the gitlab config changes described in: https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/438 Signed-off-by: Alan Coopersmith commit 72eeeb6dedc39f68608312eb0001f77fffccd499 Author: jmcwilliams403 Date: Sun Mar 5 13:33:38 2023 +0000 NLS: move long S compositions to respective blocks commit 8bbbed75a20556e41658103265974decee974645 Author: Alan Coopersmith Date: Sat Mar 4 10:44:45 2023 -0800 configure: Use LT_INIT from libtool 2 instead of deprecated AC_PROG_LIBTOOL AC_PROG_LIBTOOL was replaced by LT_INIT in libtool 2 in 2008, so it's time to rely on it. Clears autoconf warnings: configure.ac:20: warning: The macro `AC_PROG_LIBTOOL' is obsolete. configure.ac:20: You should run autoupdate. m4/libtool.m4:100: AC_PROG_LIBTOOL is expanded from... configure.ac:20: the top level Signed-off-by: Alan Coopersmith commit 53bf8584e8d7d5d4a4a8114bff26a6f631c7fac1 Author: Alan Coopersmith Date: Mon Feb 6 14:09:45 2023 -0800 configure: replace deprecated AC_HELP_STRING with AS_HELP_STRING This silences an autoconf warning. Signed-off-by: Alan Coopersmith commit 31a9451111fb1e3ae1199d44f94cd0b134ca455d Author: Alan Coopersmith Date: Mon Feb 6 13:13:21 2023 -0800 configure: raise minimum autoconf requirement to 2.70 Needed for builds on NetBSD to work correctly, since it depends on AC_USE_SYSTEM_EXTENSIONS defining _OPENBSD_SOURCE to expose the prototype for reallocarray() in the system headers. Signed-off-by: Alan Coopersmith commit 1ba02f878f83e3b42389547e01b24371f0a50e60 Author: Alan Coopersmith Date: Mon Feb 6 13:32:02 2023 -0800 gitlab CI: Add libtool to required packages Signed-off-by: Alan Coopersmith commit fc5ec8edda1efdf5d66db4e76796e3c407527b3b Author: Alan Coopersmith Date: Sat Feb 4 12:02:29 2023 -0800 libX11 1.8.4 Signed-off-by: Alan Coopersmith commit ba548ed1688d4d5a83913218155d0ddf616ff176 Author: Alan Coopersmith Date: Sun Jan 15 11:39:20 2023 -0800 configure: options summary should say "libX11", not just "X11" We're not configuring the entire window system here, just one library Signed-off-by: Alan Coopersmith commit eb1c272ab5230d548077b9f59aca4b3457c3a8f8 Author: GaryOderNichts Date: Sat Dec 17 16:28:40 2022 +0100 Fix a9e845 and 797755 Allow X*IfEvent() to reenter libX11 commit 0c7c4ce875ea65160705180ebb68a2c88afb678e Author: Benno Schulenberg Date: Thu Nov 3 17:25:29 2022 +0100 nls: add two compose sequences for capital B with stroke, for consistency Two compose sequences (with plain ASCII characters) existed for the lowercase b with stroke (ƀ) but not for the capital one (Ƀ). This addresses part of issue #166. Reported-by: J. McWilliams Signed-off-by: Benno Schulenberg commit a80ef097e713aba0330b9cf9f3c1e309084b926f Author: Benno Schulenberg Date: Thu Nov 3 16:48:03 2022 +0100 nls: delete twelve compose sequences that cannot be typed There is not any keyboard layout (in xkeyboard-config) that contains `obelowdot` or `ubelowdot`, so having compose sequences that use these symbols is pointless. There are some layouts that contain `otilde` (and one that contains `utilde`), but those layouts then do not contain `dead_horn`, so the compose sequences that combine the two symbols are pointless. There are a few layouts that contain U+0256, U+025C, U+025F or U+0279, but those layouts do not contain `dead_hook`, so the compose sequences that combine the latter with one of the former are pointless. Signed-off-by: Benno Schulenberg commit 078cc39f05ddfd6166762f3166129258ddd07dd3 Author: Benno Schulenberg Date: Thu Nov 3 16:31:04 2022 +0100 nls: delete 88 compose sequences that have the accents in the wrong order The various compose sequences with the accents in their proper order (the highest placed accent first) continue to exist. Signed-off-by: Benno Schulenberg commit aa5ef0ba80558f946871f574d38a15673e66221e Author: Benno Schulenberg Date: Thu Nov 3 16:27:51 2022 +0100 nls: move the compose sequences for Ș and Ț to the fitting Unicode block This addresses a side note of issue #166. Reported-by: J. McWilliams Signed-off-by: Benno Schulenberg commit 82c25879b72f1ba7e9abe00e7bad55add33135cf Author: Alan Coopersmith Date: Wed Jan 4 11:25:48 2023 -0800 xlibi18n: Update Imake instructions to autoconf equivalent in comments Signed-off-by: Alan Coopersmith commit 88399e01be679bfcc9a5e8922ffe2c47f0e56dee Author: Yuxuan Shui Date: Tue Jan 3 15:09:28 2023 +0000 Revert "Update XPutBackEvent() to support clients that put back unpadded events" This reverts commit d6d6cba90215d323567fef13d6565756c9956f60. The reverted commit intended to fix the problem where an unpadded X event struct is passed into XPutBackEvent, by creating a padded struct with _XEventToWire and _XWireToEvent. However, _XWireToEvent updates the last sequence number in Display, which may cause xlib to complain about lost sequence numbers. IMO, the problem that commit tried to solve is a bug in the client library, and workaround it inside Xlib is bad practice, especially given the problem it caused. Plus, the offender cited in the original commit message, freeglut, has already fixed this problem. Fixes: #176 #174 Signed-off-by: Yuxuan Shui commit 48487c4b9028e9eec5371742f51e1d64c2e17296 Author: Alan Coopersmith Date: Thu Dec 15 14:52:20 2022 -0800 libX11 1.8.3 Signed-off-by: Alan Coopersmith commit d6d6cba90215d323567fef13d6565756c9956f60 Author: Keith Packard Date: Sun Dec 11 10:32:26 2022 -0800 Update XPutBackEvent() to support clients that put back unpadded events It seems to be common practice of some X11 clients to pass specific event types into APIs that take XEvent*. For example, freeglut does: XConfigureEvent fakeEvent = {0}; ... XPutBackEvent(fgDisplay.Display, (XEvent*)&fakeEvent); This can result in reads overflowing the input event when libX11 does: XEvent store = *event; ================================================================= ==75304==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x00016ee4a8e8 at pc 0x000101c54d14 bp 0x00016ee4a0d0 sp 0x00016ee49888 READ of size 192 at 0x00016ee4a8e8 thread T0 #0 0x101c54d10 in __asan_memcpy+0x1a4 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x3cd10) #1 0x102848a18 in _XPutBackEvent PutBEvent.c:41 #2 0x1028490a4 in XPutBackEvent PutBEvent.c:84 #3 0x1013295c8 in fgOpenWindow freeglut_window.c:1178 #4 0x101321984 in fgCreateWindow freeglut_structure.c:108 #5 0x10132b138 in glutCreateWindow freeglut_window.c:1551 #6 0x100fb7d94 in main+0x78 (checkeredTriangles:arm64+0x100003d94) #7 0x197de3e4c () Address 0x00016ee4a8e8 is located in stack of thread T0 at offset 840 in frame #0 0x1013282f8 in fgOpenWindow freeglut_window.c:1063 This frame has 8 object(s): [32, 40) 'title.addr' [64, 176) 'winAttr' (line 1066) [208, 240) 'textProperty' (line 1067) [272, 352) 'sizeHints' (line 1068) [384, 440) 'wmHints' (line 1069) [480, 672) 'eventReturnBuffer' (line 1070) [736, 740) 'num_FBConfigs' (line 1072) [752, 840) 'fakeEvent' (line 1074) <== Memory access at offset 840 overflows this variable This change allows XPutBackEvent() to support such clients without risk of memory read overflow. Reviewed-by: Jeremy Huddleston Sequoia Tested-by: Jeremy Huddleston Sequoia commit 496d9bfeedda89a2211ec665f9214c2693c022f4 Author: Jeremy Huddleston Sequoia Date: Sat Dec 3 16:26:47 2022 -0800 ximcp: Address warning found by UBSan when growing an empty tree imLcPrs.c:681:52: runtime error: applying zero offset to null pointer Signed-off-by: Jeremy Huddleston Sequoia commit 7f7bcd7b6f569e9f70e3ddd134924f178e2596b1 Author: Takao Fujiwara Date: Tue Dec 6 16:59:56 2022 +0000 nls: consecutive cs number in en_US.UTF-8/XLC_LOCALE commit ba095967349dff583bd0989d0ba78aa334e9bedf Author: Ulrich Sibiller Date: Wed Nov 30 23:47:29 2022 +0100 ChkIfEv.c: fix wrong handling of dpy->in_ifevent Is no longer a bool but a counter. Signed-off-by: Ulrich Sibiller commit 70eaf1174e2809d1a6c43868d53f8cd844ef636a Author: Ulrich Sibiller Date: Wed Nov 30 23:42:02 2022 +0100 Indentation fixes around recent dpy->in_ifevent changes Use the same indentation as the surrounding code. Signed-off-by: Ulrich Sibiller Reviewed-by: Alan Coopersmith commit a9e845809bcaae22496bc8aa3ca252b410d5f39b Author: Matthieu Herrb Date: Fri Nov 11 18:55:23 2022 +0100 Fix 797755 Allow X*IfEvent() to reenter libX11 - the activation logic is reversed - there is also _XInternalLockDisplay() that needs protection - I've found cases (in fvwm2) where the callback calls XCheckIfEvent() recursively. So the flag needs to be a counter. Reviewed-by: Adam Jackson commit bccd787a565d3a88673bfc06574c1939f98d8d72 Author: Nia Alarie Date: Thu Nov 10 22:31:47 2022 +0100 Don't use pragma inside a function, it breaks compiling with older GCCs. XKBBind.c:230: error: #pragma GCC diagnostic not allowed inside functions Signed-off-by: Thomas Klausner commit 696d19d5db7bcb1c1f582c2b1846520e7e0870cb Author: Oliver Date: Fri Nov 11 17:04:00 2022 +0000 Add XFreeThreads function. commit b4f24b272c6ef888b6fcfcf80670c196b2e8f755 Author: Alan Coopersmith Date: Thu Nov 10 12:18:17 2022 -0800 libX11 1.8.2 Signed-off-by: Alan Coopersmith commit 77629ea5e79fa9b1596438bc36cfc7e0c631af43 Author: Alan Coopersmith Date: Thu Nov 3 13:00:50 2022 -0700 README.md: Add 1.8.2 changes Signed-off-by: Alan Coopersmith commit d1baf2ec4869dea3732d6fe13ba4935cb6caad01 Author: Alan Coopersmith Date: Thu Nov 3 11:22:37 2022 -0700 Remove NEWS file which only covered 2006 & 2007 releases Signed-off-by: Alan Coopersmith commit 1294bfa487bdecfd32621822922fec03203ee188 Author: Po Lu Date: Mon Oct 3 08:44:59 2022 +0800 specs: document change in XIMPreeditCallbacks Signed-off-by: Alan Coopersmith commit 1a7e54609ce4dc0f2d3b933502437a413cf3dea8 Author: Alan Coopersmith Date: Thu Nov 3 14:44:22 2022 -0700 man pages: document XCloseIM frees its argument Signed-off-by: Alan Coopersmith commit a04b84f0f7bb3a78088756759f4b9b8bb363251e Author: Alan Coopersmith Date: Thu Nov 3 20:31:31 2022 +0000 Copyright & license cleanup commit 5e41119d9611504ff7e61c6aa4da1df708096801 Author: Benno Schulenberg Date: Mon Oct 31 12:42:51 2022 +0100 nls: reshuffle a few compose sequences, to have similar ones together It makes more sense to have similar sequences grouped together than to rigidly follow the order of ascending Unicode codes. commit 65d89342f59cfc2eac9bf8010076b937f22554e8 Author: Benno Schulenberg Date: Mon Oct 31 12:50:11 2022 +0100 nls: remove two compose sequences that use deprecated symbols The last few occurrences of `leftcaret` and `rightcaret` were replaced with `less` and `greater` in xkeyboard-config half a year ago. commit 6baccbae5324e7342cb5176cae82f463a6b34eae Author: Benno Schulenberg Date: Mon Oct 31 12:40:12 2022 +0100 nls: let ` ` compose U+2212 (MINUS SIGN) There was not yet any way to compose the Unicode minus sign, U+2212. commit 79775575418fd6f8ee1c5e5bbe403df4606fb5b6 Author: Adam Jackson Date: Fri Aug 5 15:19:08 2022 -0400 Allow X*IfEvent() to reenter libX11 The documentation for this family of functions very clearly says not to call into xlib in your predicate function, but historically single threaded apps could get away with it just fine, and now that we've forced thread-safety on the world such apps will now deadlock instead. That's not an acceptable regression even if the app is technically broken. This has been reported with XFCE and FVWM, and Motif's cut-and-paste code has the same bug by inspection, so this does need to be addressed. This change nerfs LockDisplay/UnlockDisplay while inside the critical bit of an IfEvent function. This is still safe in the sense that the display remains locked and no other thread should be able to change it from under us, but the loop that scans the event queue might not be robust against it being modified as a side effect of protocol emitted by the predicate callback. But that's not new, non-XInitThreads'd xlib would have the same caveat. Closes: xorg/lib/libx11#157 commit 0d1d65bdd98966f52bcac4077f94827b20b229dd Author: Benno Schulenberg Date: Fri Oct 21 12:18:25 2022 +0200 nls: change <^> <-> to mean superscript minus instead of macron Several other ` ` sequences produce the superscript equivalent of the given symbol. So, let ` ` do the same. Also, add two other sequences for producing a plain macron, to compensate a bit the loss of the above sequence. Additionally, make ` ` produce a subscript minus, for consistency. This fixes issue #165. Requested-by: J. McWilliams Signed-off-by: Benno Schulenberg commit 310898270787c1a3a6ab50221324f8654dddce8e Author: Jan Tojnar Date: Thu Oct 20 07:10:58 2022 +0000 nls: Map sr locales to sr_RS compose files Serbian used sr_YU (Yugoslavia) code in the past. Then it was succeeded by sr_CS (Serbia and Montenegro). Finally, it was split into sr_RS (Serbia) and sr_ME (Montenegro). https://gitlab.freedesktop.org/xorg/lib/libx11/-/commit/da95ecbbdcacc483cd0b5fd7db1fb2e2543341bd introduced the modern sr_RS and sr_ME codes. Next, https://gitlab.freedesktop.org/xorg/lib/libx11/-/commit/40761898692e5063957bfa2518cca3d35b2e354a added the Serbian compose table but only for the legacy sr_CS entry. https://gitlab.freedesktop.org/xorg/lib/libx11/-/commit/5cd60398b7787297008b13a848ed3cfbd7ef178d removed the legacy sr_CS entry, the only one pointing to the correct compose file. It also renamed the file to sr_RS, but did not update the compose mapping. Let’s point all Serbian locales to the Compose file again. commit a35d706cd8dc7b498bca2a3fc4a3732047439ed7 Author: Alan Coopersmith Date: Fri Oct 14 13:40:37 2022 -0700 COPYING: remove notice for the removed UIThrStubs.c Fixes: 701e9e9a ("Use same pthread-stubs as libxcb") Signed-off-by: Alan Coopersmith commit 3b1750e982fedce0d61bface68aadcd5b1ea1fae Author: Benno Schulenberg Date: Fri Oct 14 09:28:42 2022 +0200 nls: delete two compose sequences with an anomalous post-fixed breve Two years ago, commit b126bfd7fe allowed using also a lowercase `u` wherever an uppercase `U` was used to represent a breve. But the commit should have limited itself to only the prefixed uses of `U`, as that is how most letters with a breve are composed. Also, group the two compose sequences with an uppercase post-fixed `U` together with the corresponding other post-fixed sequences. Signed-off-by: Benno Schulenberg commit 701e9e9afb88bdc68c84a4611adc533400a3df36 Author: Alan Coopersmith Date: Tue Oct 4 11:24:57 2022 -0700 Use same pthread-stubs as libxcb Avoid conflicts when libX11 calls libxcb and gets its pthread functions overriding our ancient stubs. v2: Keep linking with real threads libraries when thread safety constructor is enabled. Signed-off-by: Alan Coopersmith commit 1d11822601fd24a396b354fa616b04ed3df8b4ef Author: Thomas E. Dickey Date: Tue Oct 4 18:26:17 2022 -0400 fix a memory leak in XRegisterIMInstantiateCallback Analysis: _XimRegisterIMInstantiateCallback() opens an XIM and closes it using the internal function pointers, but the internal close function does not free the pointer to the XIM (this would be done in XCloseIM()). Report/patch: Date: Mon, 03 Oct 2022 18:47:32 +0800 From: Po Lu To: xorg-devel@lists.x.org Subject: Re: Yet another leak in Xlib For reference, here's how I'm calling XRegisterIMInstantiateCallback: XSetLocaleModifiers (""); XRegisterIMInstantiateCallback (compositor.display, XrmGetDatabase (compositor.display), (char *) compositor.resource_name, (char *) compositor.app_name, IMInstantiateCallback, NULL); and XMODIFIERS is: @im=ibus Signed-off-by: Thomas E. Dickey commit 1f8fd7ff1cf688ec1d3b34397c6d58110bb0cae5 Author: Alan Coopersmith Date: Mon Sep 26 16:01:40 2022 -0700 If thread-safety-constructor is enabled, link against pthreads not stubs Only really makes a difference if pthreads is not in libc. Fixes: #162 Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit bfe5d2dd98f705438b0cdddbbf9c12882da89bae Author: Thomas E. Dickey Date: Sun Sep 11 11:44:41 2022 -0400 reduce compiler warnings with casts (no object change) Signed-off-by: Thomas E. Dickey commit 926f2454bca9a7a7d1f4cf0648b0c193f5cef644 Author: Thomas E. Dickey Date: Sun Sep 11 10:35:31 2022 -0400 use casts to reduce compiler warnings (no object change) Signed-off-by: Thomas E. Dickey commit dc553ff908f10832c71dc2b5ba5af7e68589218e Author: Mike FABIAN Date: Fri Jul 22 11:39:01 2022 +0200 Remove KOI8-R character set from en_US.UTF-8/XLC_LOCALE https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/src/xlibi18n/lcCT.c#L58 has no escape sequence for KOI8-R. That makes Xutf8TextListToTextProperty() sometimes fail when trying to convert to COMPOUND_TEXT and when the KOI8-R charset is tried. This is the cause for this bug: https://github.com/ibus/ibus/issues/2422 Removing the KOI8-R charset entry fixes the problem. This commit also fixes a few wrong texts in comments. Signed-off-by: Mike FABIAN commit 1c04ac514196db5e2255d99635fb6e3c36be330d Author: Adam Sampson Date: Sun Jul 4 23:02:04 2021 +0100 xkb: Fix off-by-one error in XKeycodeToKeysym The code here that made indexes greater than 3 refer to XKB symbol groups had an off-by-one error, so it would always leave out the symbol that should have been at index 4. Rewrite the code to fix this and simplify the logic a bit. Signed-off-by: Adam Sampson commit ddaacd219609104f138006db6a8f708226db3874 Author: Thomas E. Dickey Date: Fri Sep 9 20:17:35 2022 -0400 reduce compiler warnings for macros BufAlloc, Data and Data32 using casts Signed-off-by: Thomas E. Dickey commit 62c3337d89d31e0d3ed807004e73ad711fad3342 Author: Kirill Chibisov Date: Thu Sep 8 22:50:30 2022 +0000 ximcp/imRm.c: allow XNSpotLocation with OnTheSpot commit 1272879074ad9612314858a75cf844783c1963b2 Author: Alan Coopersmith Date: Thu Jul 28 17:30:21 2022 -0700 gitlab CI: stop requiring Signed-off-by in commits Signed-off-by: Alan Coopersmith commit 38033b073f393564acf6a04501927002b2b4aa86 Author: David H. Gutteridge Date: Mon Jul 25 19:30:19 2022 -0400 configure.ac: report thread safety constructor build status Signed-off-by: David H. Gutteridge commit 9a90b3a63d02da92dc8692ed3f6269d3e0c7c8cc Author: Alan Coopersmith Date: Sun Jul 10 11:55:11 2022 -0700 doc: Document possible return values for XkbGetKeyboard() Fixes: #160 Signed-off-by: Alan Coopersmith commit 0beb0cf46ae48b0d4322ff8a0221f47bdb7d2296 Author: Alan Coopersmith Date: Sun Jul 10 11:42:19 2022 -0700 xkb: set num_keys when filling in keys in _XkbReadGetNamesReply() Fixes: #160 Signed-off-by: Alan Coopersmith commit 487e9489d1e086cc62c53045206ab6d6d9d02031 Author: Jon Turney Date: Wed Jun 22 16:15:37 2022 +0100 Fix Win32 build with -fno-common /work/xorg/lib/libX11/src/XlibInt.c:1968: multiple definition of `_Xdebug_p'; .libs/globals.o:globals.c:(.bss+0xc): first defined here Avoid redundant definition of _Xdebug_p in globals.c (which is under the influence of _Xdebug being #defined to _Xdebug_p. This appears to be an ancient hack to work around data exports resolving to the address of the import stub, not the import. (See [1]). (This is probably no longer needed or can be done in a better way, as per the discussion under --enable-auto-import in the ld manpage.) [1] https://cygwin.com/pipermail/cygwin-xfree/2001-May/004606.html Signed-off-by: Jon Turney commit 35ad99fad2f65ec2c69bd84bdeb8138329092b57 Author: Benno Schulenberg Date: Fri Jul 15 11:29:46 2022 +0200 nls: add four sequences for the Samogitian E with dot above and macron These sequences each produce two code points: the E-with-dot-above and a combining macron. The XIM input method is required for this to work. (Also add a missing comment for a Unicode block.) This fixes issue #54. Requested-by: Arns Udovīčė Signed-off-by: Benno Schulenberg commit 2732dd20cc2694dd5c32fef292e1f48626011032 Author: Benno Schulenberg Date: Wed Jul 6 16:44:50 2022 +0200 nls: delete eight sequences that pointlessly mix upper and lower case Typing a compose sequence requires some care -- surely the user is able to either keep holding the Shift key or not touch it at all while typing the sequence. Also, compose sequences are not an infinite resource AND take up space and time -- defining redundant ones is a waste. Signed-off-by: Benno Schulenberg commit ea3cc474e1acfed47b9fb856ea151008fa6cfd30 Author: Benno Schulenberg Date: Wed Jul 6 16:36:48 2022 +0200 nls: add compose sequences for the double-struck capitals ℕ ℤ ℚ ℝ ℂ This allows the user to type the symbols for the five number systems. This fixes the reasonable part of issue #159. Signed-off-by: Benno Schulenberg commit 95a03cde434c447fdb41d8cccbbdd41f20750f32 Author: Benno Schulenberg Date: Thu Jul 14 12:00:45 2022 +0200 nls: delete some pointless and wrong compose sequences meant for Bépo Fourteen years ago, commit 7302984642 added some four hundred compose sequences for the benefit of the French Bépo layout. But among these four hundred there are several that use symbols that are not available in the Bépo layout and are thus impossible to type. Some of the used symbols, like Ahook, Ehook and Ohook, are not even present in *any* layout, making these sequences a dead weight in the Compose file. The Amacron and Omacron are available only in the Latvian, Hawaiian, and Maori layouts, and the Omacron also in the Silesian layout. But the Latvian layouts and the Hawaiian do not contain any dead keys. Only in the Maori and Silesian layouts these sequences with Amacron and Omacron could be typed, but that was not why they were added. More importantly, as James Cloos noted in issue #54, sequences like ` ` for generating `ǡ` (that is: the macron above the dot) are questionable, as in compose sequences generally the first accent typed is the uppermost in the composed character. Reference: https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues/54#note_17321 Signed-off-by: Benno Schulenberg commit 9702b836862da6838d725f555e7a1d83faf51740 Author: Matthieu Herrb Date: Fri Jul 1 11:13:13 2022 +0200 Mention that the predicate function is called with the display lock Signed-off-by: Matthieu Herrb commit a5d00f889fadad3f5b11e53fd5c04cf5343fa8a2 Author: Benno Schulenberg Date: Fri Jun 24 16:20:52 2022 +0200 docs: replace three placeholders with something that makes sense Also, uncapitalize two arguments, to match the style of all others. Signed-off-by: Benno Schulenberg commit 9ff8502040e94cb172426d59df722cefa752a401 Author: Benno Schulenberg Date: Fri Jun 24 16:07:22 2022 +0200 docs: remove the unsightly dashes from the overviews of arguments Seventeen months ago, commits 78027fdb7a and 4f15cfc645 removed these dashes from two of the man pages. Now, remove them all. They are unhelpful and just make one wonder why they are there (probably to function as improvised bullet points). Also remove four leading spaces and a trailing comma. Signed-off-by: Benno Schulenberg commit a7968c47e35703446d67d070234fd9adf07f34b0 Author: Benno Schulenberg Date: Thu Jun 23 15:48:05 2022 +0200 docs: hard-wrap some items so that Table 2 fits within 80 characters (Table 1 hard-wraps the first-column items in the same way.) Also, correct the formatting of the subsequent paragraph. Signed-off-by: Benno Schulenberg commit c601c779ca8f46dc4335180ec2829851fb8bbc13 Author: Benno Schulenberg Date: Wed Jun 15 10:55:38 2022 +0200 nls: delete compose sequences that mix top-row digits with numpad digits Compose sequences for circled numbers, like ⑫ or ㉑, are nice to have, but allowing them to be composed by typing one digit on the top row and the other on the numerical keypad (or the other way around) is over the top. Remove these absurd sequences. Keep only the sequences where both digits are either on the top row or on the numerical keypad. Signed-off-by: Benno Schulenberg commit 3a30ada60c5217ada37b143b541c8e6f6284c7fa Author: Alan Coopersmith Date: Wed Jun 8 17:30:14 2022 -0700 libX11 1.8.1 Signed-off-by: Alan Coopersmith commit 70f7403fd3bf362fc50b8de4a2e26300f757c68e Author: Alan Coopersmith Date: Tue May 3 14:45:05 2022 -0700 configure.ac: Fix --enable-thread-safety-constructor Prior to this, --enable-thread-safety-constructor would disable it, while --disable worked as expected, and no option left it enabled as expected by default. This also fixes the --help text to be displayed. Fixes: afcdb6fb0045c6186aa83d9298f327a7ec1b2cb9 Reported-by: @igor.v.kovalenko Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit d0da5a1e0fb214ff911ecff86d35f6673ff70023 Author: Adam Jackson Date: Fri Apr 29 11:27:44 2022 -0400 libX11 1.8 Minor number bump to reflect the thread safety default change. Signed-off-by: Adam Jackson commit afcdb6fb0045c6186aa83d9298f327a7ec1b2cb9 Author: Adam Jackson Date: Tue Mar 22 18:24:29 2022 -0400 global: call XInitThreads() from the library's constructor There is really no point in not being thread safe, I measured, all you can see happen is noop performance gets like twice as slow and you have thread safety bugs. And we're using xcb as the transport which means we should expect threads in our clients anyway. Just do it. This assumes your compiler understands __attribute__((constructor)). If this is not your compiler, you can disable this with the appropriate configure flag, but be aware you're asking for bugs. Signed-off-by: Adam Jackson commit 1ab48f3cc966751d86e434808180beb2dc76c4fa Author: Benno Schulenberg Date: Sun Apr 24 15:06:45 2022 +0200 docs: add release notes for versions 1.7.3, 1.7.4, and 1.7.5 They were forgotten when those releases were made. Signed-off-by: Benno Schulenberg commit 35d1513bc7fdd3ac6f5807feb601efc34ac19163 Author: Alan Coopersmith Date: Sat Apr 16 13:04:23 2022 -0700 XkbOpenDisplay: Add _Xconst qualifier to display name argument Signed-off-by: Alan Coopersmith commit c88ceaad4aaa0439e5cba13c1f5737ad54566e0b Author: Alan Coopersmith Date: Sat Apr 16 12:59:39 2022 -0700 XKBgeom.h: Add _Xconst qualifier to char * arguments in functions Signed-off-by: Alan Coopersmith commit 0ce4425826074b12a58ced432f9d6fb346474737 Author: Alan Coopersmith Date: Sat Apr 16 12:20:51 2022 -0700 XKBgeom.h: Remove XKB_IN_SERVER section The Xserver made its own copy of this file in 2008, and the API's are no longer the same between the server and client forks. Signed-off-by: Alan Coopersmith commit be8c01946ab1a1d4b79fdc5358541d630f14dc0a Author: Benno Schulenberg Date: Wed Apr 20 09:29:09 2022 +0200 lcCT: use the correct index for checking the second byte (Not that it will make any difference, as the checking of these high bits looks like an excess of precaution.) This fixes issue #134. Reported-by: Rafał Mikrut Signed-off-by: Benno Schulenberg commit 488b156fe2cc8aca6946a49236ec7b7698fceda4 Author: Benno Schulenberg Date: Fri Feb 25 16:35:46 2022 +0100 nls: make the Ethiopian compose sequences actually work In the Ethiopian keyboard layout, the dead vowel keys do not produce and and so on, but instead produce and and so on, so the compose sequences should use those latter code points. Also, include the basic compose sequences from en_US.UTF-8/Compose, so that, when switching to a different layout in the Ethiopian locale, all the usual compose sequences work too. Signed-off-by: Benno Schulenberg commit e6f98a3dbd82928e10adaf9d034dc574af1de6e5 Author: Benno Schulenberg Date: Mon Apr 18 17:24:55 2022 +0200 nls: add Multi-key sequences for abovedot, diaeresis, and ogonek These accents by themselves could only be produced when one had a dead key for them, not with the help of the Multi key. [Note that the sequences for apostrophe (') and for double quote (") are anomalies, as normally produces the accent itself.] Signed-off-by: Benno Schulenberg commit d323704e7c57f9ac7fdfea3dc9fa73bf943e72d3 Author: Benno Schulenberg Date: Mon Apr 18 16:57:35 2022 +0200 nls: remove eight pointless self-producing compose sequences Compose sequences are meant to produce certain symbols by combining certain different symbols, not to produce a symbol with the help of the symbol itself. This fixes issue #59. Signed-off-by: Benno Schulenberg commit 3b62c0322c112c03597d850197dbce22d1830bb7 Author: Benno Schulenberg Date: Fri Feb 25 14:12:02 2022 +0100 nls: remove misplaced sequences from Ethiopian and Greek compose files The Khmer digraphs and Arabic ligatures have nothing to do with Amharic or Greek. (Also rewrap a comment and correct two others.) Signed-off-by: Benno Schulenberg commit 479af78f2e5caaf9b98a35ae5ff4ccdd2f040289 Author: Benno Schulenberg Date: Fri Feb 25 14:05:35 2022 +0100 nls: remove redundant Khmer digraphs, already defined in included file This fixes issue #160. Reported-by: Mike Fabian Signed-off-by: Benno Schulenberg commit 6d7d08726f4b0c517041842b27cd7e66e8f371eb Author: Alan Coopersmith Date: Sun Apr 10 14:51:55 2022 -0700 XkbUpdateKeyTypeVirtualMods: always initialize mask XkbVirtualModsToReal should only fail to set mask if the server does not support XKB, but it still made Oracle Parfait complain: Error: Uninitialised memory Uninitialised memory variable [uninitialised-mem-var] (CWE 457): Possible access to uninitialised memory referenced by variable 'mask' at line 863 of lib/libX11/src/xkb/XKBMisc.c in function 'XkbUpdateKeyTypeVirtualMods'. Path in callee avoiding write at line 862 mask allocated at line 860 Signed-off-by: Alan Coopersmith commit 9ac6859c20be2fc5e70c2908de60c6e466ec04e1 Author: Matt Turner Date: Sun Apr 3 10:15:30 2022 -0700 libX11 1.7.5 Signed-off-by: Matt Turner commit 76d1cc3c1ce943c6ff81dc8c62a1d1b30fabf02e Author: Simon McVittie Date: Sun Apr 3 14:23:36 2022 +0100 Don't try to destroy NULL condition variables This avoids a segfault during error-unwinding if an invalid display name is passed to XOpenDisplay(). Fixes: 8a368d80 "Fix two memory leaks in _XFreeX11XCBStructure()" Resolves: #155 Signed-off-by: Simon McVittie commit 80b30d12519ac54fc5b2b05500521d9c8269be9c Author: Matt Turner Date: Wed Mar 30 13:54:13 2022 -0700 libX11 1.7.4 Signed-off-by: Matt Turner commit 8a368d808fec166b5fb3dfe6312aab22c7ee20af Author: Hodong Date: Thu Jan 20 00:57:41 2022 +0900 Fix two memory leaks in _XFreeX11XCBStructure() Even when XCloseDisplay() was called, some memory was leaked. XCloseDisplay() calls _XFreeDisplayStructure(), which calls _XFreeX11XCBStructure(). However, _XFreeX11XCBStructure() did not destroy the condition variables, resulting in the leaking of some 40 bytes. Signed-off-by: Hodong commit da97120f2322882a17f14e5d7da00c1e772679e8 Author: Adam Jackson Date: Tue Mar 22 14:32:49 2022 -0400 xcb: Clarify the XInitThreads error message XInitThreads has been called if _Xglobal_lock != NULL, we may as well check that before printing a misleading error message. Signed-off-by: Adam Jackson commit 257927c51b08242aa5bf239346717fc817b2b286 Author: Giovanni Mascellani Date: Fri Feb 4 10:49:25 2022 +0100 xcb_io: Allow jumps backwards when widening the request number. Request numbers are not always seen in the numeric order by widen(), for example due to Mesa directly calling _XError(). When this happens, widen() adds 2^32 to the reported widened number, triggering failed assertions and bad behavior. With this commit, wrapping of the lower dword is detected in a more robust way, by requiring that a skip of at least 2^31 is seen. This fixes issue #152. Signed-off-by: Giovanni Mascellani commit 918063298cb893bee98040c9dca45ccdb2864773 Author: Benno Schulenberg Date: Thu Mar 3 12:00:45 2022 +0100 nls: add a compose sequence for the peace symbol As the thing in the circle looks a bit like an upside-down Y, use as the sequence, similar to for anarchism. Signed-off-by: Benno Schulenberg commit 4f9eb32709dca705f02ca771bbd47d6c08aba5e0 Author: Benno Schulenberg Date: Fri Feb 25 12:45:06 2022 +0100 nls: remove obsolete locale aliases with uppercase in the language code (These aliases may have been useful on some systems twenty years ago, but nowadays all should have settled on lowercase language code plus uppercase country code.) Signed-off-by: Benno Schulenberg commit ba0d3b437deb2212bc7fc7c6f1c603fa6ced443c Author: Benno Schulenberg Date: Fri Feb 25 12:35:28 2022 +0100 nls: map eo.UTF-8 directly to en_US.UTF-8 instead of using a relay alias Signed-off-by: Benno Schulenberg commit cfddb79981f23650feb0f9a0f4442c9cad584b33 Author: Benno Schulenberg Date: Fri Feb 25 12:12:05 2022 +0100 nls: remove the mistaken eo_EO names -- EO is not a valid country code (Debian has had several of these lines commented out for years.) Signed-off-by: Benno Schulenberg commit eb5885245a1ba6955d058a03e31894c23b9f5490 Author: iyzana Date: Mon Feb 21 13:20:23 2022 +0100 nls: add locale alias from eo.UTF-8 to eo_XX.UTF-8 There is no matching locale in the locale.dir and compose.dir files for the locale eo.UTF-8. Setting it as the locale resulted in compose files not being loaded. Signed-off-by: iyzana commit 24df23dff9d8c1cf5e918a5f040b852bdf2cfb84 Author: Benno Schulenberg Date: Thu Feb 3 17:19:05 2022 +0100 nls: group the compose sequences for tilde, degree, and cedilla together Also, correct the comment for the double quote character ("), and move the soft hyphen and the interrobangs to a special punctuation group. Signed-off-by: Benno Schulenberg commit c0191f020f94907770937bc8ae67ea8acd7d63be Author: Benno Schulenberg Date: Thu Feb 3 16:33:05 2022 +0100 nls: use shape-based compose sequences for hammer-and-sickle instead Using a misspelled abbreviation (CCCP) of an obsolete country's name to compose a fairly general communist symbol does not seem right. https://en.wikipedia.org/wiki/Hammer_and_sickle Many compose sequences instead combine characters that together look similar to the target character. Do the same here: question mark (?) plus backslash (\) look a bit like ☭ . In the bargain, this fixes issue #63. Reported-by: Marc Mezzarobba Signed-off-by: Benno Schulenberg commit 582dc6f89e1f9288710a55cb2b8fbf2af99d7616 Author: Alan Coopersmith Date: Sun Feb 20 11:49:42 2022 -0800 gitlab CI: enable Static Application Security Testing (SAST) Signed-off-by: Alan Coopersmith commit 336e8f72559b489396c5cd503c4586ef800c2a8f Author: Benno Schulenberg Date: Sun Feb 20 15:06:02 2022 +0100 nls: add compose sequences for leftward, upward and downward double arrow These sequences follow the logic of: the arrow shaft (=) first, the arrow head (< or > or ^ or v) second. This is so because the sequence <= is already taken for ≤, and there is no obvious ASCII character for a double vertical line, so we have to make do with a horizontal one. Since commit 6101b967b6 from eight years ago, there is a compose sequence for the rightward double arrow, but not for the other three directions. This fixes issue #138. Requested-by: Mélanie Chauvel Signed-off-by: Benno Schulenberg commit 623b77d4f30b47258a40f89262e5aa5d25e95fa7 Author: Benno Schulenberg Date: Mon Feb 14 11:33:25 2022 +0100 imDefLkup: verify that a pointer isn't NULL before using it It is possible for _XimICOfXICID() to return NULL, so it is necessary to check this isn't actually the case before dereferencing the pointer. All other callers of _XimICOfXICID() do this check too. (The check itself is ugly, but it follows the style of the code in the rest of the module.) Fixes issue #45. Reported-by: Bhavi Dhingra Original-patch-by: Bhavi Dhingra Signed-off-by: Benno Schulenberg commit b83938f7f97aa6210b00835002e6e7d614b2374a Author: Christopher Chavez Date: Mon Feb 14 01:00:45 2022 +0000 Xlib.h: fix spelling in comment Signed-off-by: Christopher Chavez commit 4791055682552b4cc8e775479700fb06980d0b59 Author: Christopher Chavez Date: Sun Feb 13 05:26:14 2022 +0000 Xlib.h: spelling fix in comment commit 9304e645bdcdd3a71ff449a1157c4815e6304d7a Author: Denis Drakhnia Date: Wed Feb 2 11:54:43 2022 +0200 nls: Add ru_UA.utf8 locale alias. Signed-off-by: Denis Drakhnia commit 9ef2551f0c201f9163b66d17189a98076b5be07a Author: Benno Schulenberg Date: Wed Feb 2 16:50:35 2022 +0100 nls: do some manual adjustment of whitespace in the compose sequences This achieves a more consistent vertical alignment (per group) of the target character and the trailing comments. (Most blocks were aligned in some fashion, except the "Greek Extended" block, which has lines of greatly varying lengths.) Signed-off-by: Benno Schulenberg commit 0dad289ead6eb3412027c9365192441cc539d747 Author: Benno Schulenberg Date: Wed Feb 2 14:08:22 2022 +0100 nls: among the compose sequences, replace all runs of spaces with tabs It was done with this script: cat nls/en_US.UTF-8/Compose.pre | sed 's!\(^<.\{6,13\}>\)\s*:!\1\t\t\t\t:!' | sed 's!\(^<.\{14,21\}>\)\s*:!\1\t\t\t:!' | sed 's!\(^<.\{22,29\}>\)\s*:!\1\t\t:!' | sed 's!\(^<.\{30,37\}>\)\s*:!\1\t:!' | sed 's!\(: ".*"\)\s*!\1\t!' | sed 's!\(\s*# \)! # !' > trimmed && mv trimmed nls/en_US.UTF-8/Compose.pre This saves 37 kilobytes of whitespace. Signed-off-by: Benno Schulenberg commit fc79e39c236501357e1fdbe8964882864eeef5d3 Author: Benno Schulenberg Date: Wed Feb 2 14:06:29 2022 +0100 docs: add missing word, wrap line, fix typo, and trim an excess space Signed-off-by: Benno Schulenberg commit 93446455c46dfc019984ab822ffa662cf6e2949c Author: Benno Schulenberg Date: Thu Jan 27 15:01:18 2022 +0100 KeyBind: reshuffle two ifs into the general order of ascending codes Signed-off-by: Benno Schulenberg commit 93f15f5f29378ec4cc1dd011b155104e9a52b058 Author: Benno Schulenberg Date: Thu Jan 27 14:27:41 2022 +0100 KeyBind: slightly speed up some case conversions by adding missing returns This avoids pointlessly tumbling through several more ifs when the conversion has aleady been done. Also remove two redundant conditions (as lower codes have already been handled) and fold two other conditions together. Signed-off-by: Benno Schulenberg commit 317c7abbcc848011393d1336b9d020af8cabb000 Author: Benno Schulenberg Date: Thu Jan 27 13:54:29 2022 +0100 KeyBind: update the Greek case-conversion tables to Unicode Data 14.0 A few symbols, like Heta and Sampi and dotted lunate Sigma, have been assigned code points since Unicode Data 4.0, and need their entries. This fixes issue #132. Reported-by: Ray Vine Original-patch-by: Ray Vine Signed-off-by: Benno Schulenberg commit 402b843fa72166d9ceefd887f5cea4728cbc6995 Author: Benno Schulenberg Date: Wed Jan 26 17:20:28 2022 +0100 remove a commented-out code fragment, and remove a stray blank line Signed-off-by: Benno Schulenberg commit fbbc3cf8b8b03f74f778772d4703fc4fec242282 Author: Benno Schulenberg Date: Wed Jan 26 16:55:50 2022 +0100 XKBCvt: remove an if that never gets triggered The 'if' at the beginning of _XkbHandleSpecialSym() allows only symbols from the numeric keypad and some control symbols to pass -- XK_hyphen is not among them, so the check for XK_hyphen in the later 'if' will always be false. (The corresponding conversion in _XTranslateKeySym() in KeyBind.c was removed in March 1994.) (Also, several keyboard layouts nowadays contain the 'hyphen' symbol, allowing the user to enter soft hyphens into a document. So we really don't want to remap this symbol.) Fixes issue #48. Reported-by: Bhavi Dhingra Signed-off-by: Benno Schulenberg commit 6786744f636b3fc545157a13cb2f6169b5be9fa5 Author: Benno Schulenberg Date: Sun Jan 23 17:12:03 2022 +0100 nls: add the es_CU locale name, for Cuba It was added to glibc ten years ago. This fixes issue #57. Reported-by: Dominique Michel Signed-off-by: Benno Schulenberg commit d241d8af7f24e95949c2cf7ce791e35df7665e98 Author: Benno Schulenberg Date: Sun Jan 23 16:44:03 2022 +0100 nls: remove some obsolete Norwegian and Yugoslavian locale names They have not existed in glibc for more than fifteen years. Signed-off-by: Benno Schulenberg commit 32dd7c03e92e01015744867b9b3148c250cc159a Author: Benno Schulenberg Date: Sat Jan 22 17:56:32 2022 +0100 nls: put some entries in their alphabetical order, and adjust alignment Signed-off-by: Benno Schulenberg commit 46a066f25103bb909259baea25de8dd5c4a2b338 Author: Benno Schulenberg Date: Sat Jan 22 18:00:20 2022 +0100 nls: fix a typo (be_BG => bg_BG) and drop an obsolete comment The typo was only partially fixed in commit 22a5255b80 sixteen years ago, and the internet shows that there was at least one user frustrated that bg_BG.utf8 didn't work but bg_BG.UTF-8 did. Signed-off-by: Benno Schulenberg commit 84efc0aa598c8f7d6dd9a49e7450e85c8bc4773b Author: Benno Schulenberg Date: Wed Jan 19 15:32:15 2022 +0100 nls: remove the compose sequences with the deviant KP_Space symbol Using this KP_Space symbol as a stand-in for the symbol 2 doesn't make sense. It looks like a mistake, or as if someone had a broken keyboard and used KP_Space as a substitute for 2. Also, no keyboard layout in the last fifteen years has contained the KP_Space symbol, so I don't see how anyone could type it. Signed-off-by: Benno Schulenberg commit b76e661ca223489da9027b0ab1ca1586efd0a280 Author: Benno Schulenberg Date: Wed Jan 19 13:49:56 2022 +0100 nls: move the block of Jamo to its logical place (ascending Unicodes) Signed-off-by: Benno Schulenberg commit 21f82fb9c69f8fdbf0bdc1aac6f8c11c2c6d55d1 Author: Benno Schulenberg Date: Wed Jan 19 13:40:56 2022 +0100 nls: delete some ineffective compose sequences (that were commented out) They have never worked; there is no point in keeping them in the file. Signed-off-by: Benno Schulenberg commit 6cc31eafa8095d2117ff1906d7c14c1c01173248 Author: Benno Schulenberg Date: Wed Jan 19 12:18:21 2022 +0100 nls: group some compose sequences better, and add some comments Also, align a few trailing comments more consistently, and change some comments so they will be excluded from the installed file -- there is no need for those comments there. Signed-off-by: Benno Schulenberg commit d60ede7843612f3c2967f83d629bf8272ba09ff1 Author: ArenaL5 Date: Thu Jan 13 01:13:56 2022 +0100 nls: add a compose sequence for the copyleft symbol Probably not used anywhere yet, let alone seriously, as stated in https://en.wikipedia.org/wiki/Copyleft#Symbol Signed-off-by: ArenaL5 commit df4dcdf9125c595f6df3a302356647cb8df38553 Author: Benno Schulenberg Date: Mon Jan 17 17:31:08 2022 +0100 nls: remove redundant compose sequences with deprecated Hebrew symbols The compose sequences with the valid Hebrew key symbols are right there. Also, no keyboard layout in the past seventeen years has contained these deprecated symbols on any key. Signed-off-by: Benno Schulenberg commit 4268472bd11a07a799716fb5833ea46cad3dd479 Author: Benno Schulenberg Date: Sun Jan 16 17:51:29 2022 +0100 nls: remove redundant compose sequences with the deprecated 'underbar' The key symbol 'underbar' is equivalent to 'underscore' -- the mirror compose sequences with the latter symbol continue to exist. Also, no keyboard layout in the past fifteen years has contained the symbol 'underbar' on any key -- except a Telugu layout since a few years, but that will be corrected soon. Signed-off-by: Benno Schulenberg commit 86e9749ef37189486c205ee7f77e43fed655ac70 Author: ArenaL5 Date: Sat Jan 15 16:20:56 2022 +0100 nls: add a compose sequence for the middle dot (·) using dead_circumflex This makes the middle dot compose sequences consistent with others that begin with and , e.g. superscripted 3 (³) Signed-off-by: ArenaL5 commit 1adb531cd5be2b6489c2a8106e850e7418fae056 Author: Benno Schulenberg Date: Fri Jan 14 13:06:10 2022 +0100 docs: unwrap the comments of structure elements in the man pages It doesn't matter that these lines get wider than 80 columns, as it's easy enough to make the pager scroll a bit to the right, or to have a terminal that is a 100 or more columns wide. It looks better to not hard-wrap these comments. Also, fix the layout of two table elements. Signed-off-by: Benno Schulenberg commit da330a1644f10f9669c8dd9ee06489c40f9f0bd1 Author: Benno Schulenberg Date: Fri Jan 14 12:33:23 2022 +0100 docs: unwrap some mistakenly wrapped lines, and correct a comment The wrapped lines messed up the table. Also, add some blank lines to make the table more readable. Elsewhere, add spaces around an operator (for consistency), and correct a copy-paste error. Signed-off-by: Benno Schulenberg commit b9e0346abebb0c9e5c80c780bba4372419e63bde Author: Benno Schulenberg Date: Fri Jan 14 15:57:56 2022 +0100 XKBMAlloc: use the correct first-key variable when extending a key range When extending the range of changed virtual-modifier keys, one should pass the two variables relevant to that range. These two mistakes were found by grepping for 'modmap_key' and then looking for asymmetries between the handling of the plain modmap thing and the virtual modmap thing. Inspired by issue #76. (I suspect these mistakes were at the base of some intractable bugs reported against xkeyboard-config where virtual modifiers refused to work and had to be worked around by making other changes too.) Signed-off-by: Benno Schulenberg commit f15d2a01f75304bc2d9dac109d9a5a47d1ce28e0 Author: Benno Schulenberg Date: Wed Jan 12 11:34:23 2022 +0100 lcUTF8: remove two unneeded ifs and two elses that are never reached When there is a break at the end of the while loop, it means that the loop will finish the first time that _XlcGetCharSetWithSide() returns a non-NULL result, which means that the first '(last_charset == NULL)' will always be true and the else part is redundant. Fixes issue #46. Reported-by: Bhavi Dhingra Signed-off-by: Benno Schulenberg commit 033f37d507801645a8251fd33c25ebd145d22cce Author: Antti Savolainen Date: Wed Jan 12 16:10:21 2022 +0000 nls: add two compose sequences for an upwards arrow using dead_circumflex Signed-off-by: Antti Savolainen commit b7d724df615311c35418afc733e1fcc68c740aba Author: Hodong Date: Fri Jan 7 10:41:15 2022 +0000 specs/XIM: fix a missing "EXT" in the documentation There was an "EXT" in the original text, but it seems to be missing. See: https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/4e66da0783b2e5e3b288aaecd3c89396ed425c20/specs/XIM/xim.ms#L693 Signed-off-by: Hodong Kim commit 4c96f3567a8d045ee57b886fddc9618b71282530 Author: Alan Coopersmith Date: Thu Dec 9 19:51:52 2021 -0800 libX11 1.7.3.1 Signed-off-by: Alan Coopersmith commit c1710589bb00d6f442a383fc41f0d6496b436c88 Author: Alan Coopersmith Date: Tue Dec 7 08:29:43 2021 -0800 specs/XIM: Fix "encording" typos Fixes: #145 Signed-off-by: Alan Coopersmith commit e30771b4bbdd84fc7ff64a1cda483a46edb5707b Author: Alan Coopersmith Date: Mon Dec 6 17:04:14 2021 -0800 libX11 1.7.3 Signed-off-by: Alan Coopersmith commit 934417b1e89fe715b9cf6c0d62a3867fa1f5bccb Author: Liang Chang Date: Tue Sep 7 18:54:10 2021 +0800 Make Xutf8DrawString works correctly with ISO10646 fonts. Signed-off-by: Liang Chang commit 3ad36c5d3ddca3e4c97faaf87b72a53954d1f473 Author: Alan Coopersmith Date: Thu Dec 2 17:48:55 2021 -0800 Build xz tarballs instead of bzip2 Signed-off-by: Alan Coopersmith commit 93a050c3ad2d2264d3880db3791387b1a9bf2e9e Author: Tatu Frisk Date: Tue Mar 14 14:41:27 2017 +0200 Fix hanging issue in _XReply Assume event queue is empty if another thread is blocking waiting for event. If one thread was blocking waiting for an event and another thread sent a reply to the X server, both threads got blocked until an event was received. Signed-off-by: Tatu Frisk Signed-off-by: Jose Alarcon commit 8382253010267b93c9aeffc769e3f5e43d698094 Author: Matthieu Herrb Date: Mon Aug 30 21:47:09 2021 +0200 Avoid NULL pointer deref. Fixes issue #47. Signed-off-by: Matthieu Herrb commit 58d7b540c453601faf942c6f19f8277a5c5f78cc Author: Peter Hutterer Date: Wed Dec 1 14:31:16 2021 +1000 gitlab CI: update to use the ci-fairy image Let's use the pre-prepared image instead of building our own. Signed-off-by: Peter Hutterer commit 150154c994829f9f3734a560f99f70b21d86b49c Author: Hodong Date: Sun Nov 14 06:36:42 2021 +0000 Fix a typo commit 2356e59ff24f8d1b25cdc4dffc5171c65dc2b86e Author: Igor V. Kovalenko Date: Sun Sep 5 10:25:38 2021 +0300 libX11: do not crash in GetResReq() macro When _XGetRequest() detects that requested length exceeds remaining display output buffer capacity it would return NULL. GetResReq() macro obtains "req" pointer from a call to _XGetRequest() and then proceeds to assign request id through "req" pointer which leads to NULL pointer dereference in this case. Fix this by checking if "req" is valid before assigning request id. Signed-off-by: Igor V. Kovalenko commit e92efc63acd7b377faa9e534f4bf52aaa86be2a9 Author: Peter Hutterer Date: Tue Jul 27 11:46:19 2021 +1000 makekeys: handle the new _EVDEVK xorgproto symbols These keys are all defined through a macro in the form: #define XF86XK_BrightnessAuto _EVDEVK(0x0F4) The _EVDEVK macro is simply an offset of 0x10081000. Let's parse these lines correctly so those keysyms end up in our hashtables. Signed-off-by: Peter Hutterer commit d01d23374107f6fc55511f02559cf75be7bdf448 Author: Alex Richardson Date: Wed Jun 16 12:17:04 2021 +0100 Avoid undefined behaviour after realloc() Adding the offset between the realloc result and the old allocation to update pointers into the new allocation is undefined behaviour: the old pointers are no longer valid after realloc() according to the C standard. While this works on almost all architectures and compilers, it causes problems on architectures that track pointer bounds (e.g. CHERI or Arm's Morello): the value_list pointers will still have the bounds of the previous allocation and therefore any dereference will result in a run-time trap. I found this due to a crash (dereferencing an invalid capability) while trying to run `xev` over SSH on a CHERI-RISC-V system. With these two realloc changes, and https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/41 I am able to succesfully run `xev` compiled for CHERI-RISC-V. Signed-off-by: Alex Richardson commit 1c845834a32421abb59408aee259ac0bef054d30 Author: Alex Richardson Date: Tue Jun 15 08:46:53 2021 +0100 Fix cross-compilation from macOS We can't use `LC_CTYPE=C sed` there since /usr/bin/sed is not compatible with the expressions in nls/ (`sed: RE error: illegal byte sequence`). To fix this use $(SED) instead which autotools will set to a GNU version of sed (usually /usr/local/bin/gsed) on macOS. Signed-off-by: Alex Richardson commit 401f58f8ba258d4e7ce56a8f756595b72e544c15 Author: Lev Korol Date: Sun Apr 11 21:57:45 2021 +0300 nls: Add en_IL locale Signed-off-by: Lev Korol commit f906fe8e9769e4313294b68e61c402610ade69da Author: Alan Coopersmith Date: Sat Jun 5 09:12:13 2021 -0700 libX11 1.7.2 Signed-off-by: Alan Coopersmith commit 51b73ac0acda65005c8a9f17ca4ea7281b00ca84 Author: Tobias Stoeckmann Date: Sun May 23 15:05:17 2021 +0200 Protect against overly long strings Checking against upper limit of USHRT_MAX must happen before truncating size_t to int. On 64 bit systems with strings larger than 2 GB this could otherwise lead to negative ints or ints smaller than USHRT_MAX. In XParseColor this could lead to out of boundary access with strings starting with a # (color sequence). A modulo 12 operation is performed to validate the string length, but with an overflown length, the for loop would eventually read behind terminating '\0' character. Signed-off-by: Tobias Stoeckmann commit ab2f59530b16bdfbf023b8e025c7c8aba3b6fd0c Author: Matthieu Herrb Date: Sun May 30 16:33:48 2021 +0200 Check for NULL strings before getting their lengths Problem reported by Karsten Trulsen Signed-off-by: Matthieu Herrb commit a8216e8653a246db664e1443ecf707b27de65067 Author: Matthieu Herrb Date: Sat May 22 17:35:47 2021 +0200 include always, not if HAVE_CONFIG_H is set. via Matthew Green from the NetBSD project Signed-off-by: Matthieu Herrb commit 6953a586df4819143c4d55e011b3a5e5377981b8 Author: Matthieu Herrb Date: Tue May 18 15:27:58 2021 +0200 Version 1.7.1 Release notes in README.md, version bump in configure.ac commit 8d2e02ae650f00c4a53deb625211a0527126c605 Author: Matthieu Herrb Date: Fri Feb 19 15:30:39 2021 +0100 Reject string longer than USHRT_MAX before sending them on the wire The X protocol uses CARD16 values to represent the length so this would overflow. CVE-2021-31535 Signed-off-by: Matthieu Herrb commit 838ea5a5a0267c25b20c095c9a70684edeeefba4 Author: Gaurav Ujjwal Date: Sun May 9 05:04:36 2021 +0000 Fix out-of-bound access in KeySymToUcs4() Array `keysym_to_unicode_590_5fe` is only valid for range [0x590, 0x5fe] but current lower-bound is checked against 0x589. So invalid values from 0x58a to 0x58f are being allowed by current check. If any of these invalid value is passed as `keysym`, `keysym - 0x590` would underflow. Signed-off-by: Gaurav Ujjwal commit 32491b02c76ac22f99dc433a32466e22bdc181a7 Author: Christopher Chavez Date: Mon May 3 15:46:44 2021 +0000 Xlib.h: spelling fix in comment commit 5faa8dc0b364f55f19034c370436074646d9ad54 Author: Benno Schulenberg Date: Tue Nov 24 18:54:24 2020 +0100 nls: adjust three comments about the APL compose sequences Commit 0bbc0d5e605e (from eight years ago) removed the lines that two of these comments referred to. Without those lines, the comments don't make sense any more. Reword and shorten them. Also reword a comment about two sequences that don't work. Signed-off-by: Benno Schulenberg commit b126bfd7fe990b8c1df088f55c31d9b3fd440cde Author: Benno Schulenberg Date: Tue Nov 24 12:23:32 2020 +0100 nls: allow composing all breved letters also with a lowercase "u" The letters ă and ŭ can already be composed with "u a" and "u u", but ĕ, ğ, ĭ, and ŏ can be composed only with an uppercase U. Emancipate the latter four and understand also a lowercase "u" to mean 'breve'. (Yesterday I needed ğ and was annoyed that "u g" did not work.) Signed-off-by: Benno Schulenberg commit 78027fdb7aa07621a3b7cdf37050bae39012f2fb Author: Walter Harms Date: Sat Nov 28 21:05:33 2020 +0100 fix same roff code Signed-off-by: Walter Harms commit 4f15cfc64548098fef3ddd24f7359b76cf1bbda7 Author: Walter Harms Date: Sat Nov 28 20:56:35 2020 +0100 Fix some roff code add see also Signed-off-by: Walter Harms commit daa106927f78e6c5c9c36558a4b951d7cb58a8d1 Author: Walter Harms Date: Sat Nov 28 17:49:25 2020 +0100 fix broken nroff coding for code comments the comments /* */ are code as /\(** */ that does not work. the coding in other X11 man pages is /\&* */ so we do the same here. commit 7bdeae239b17db002964ac73d06f43f216d1cf86 Author: Walter Harms Date: Fri Nov 27 22:43:21 2020 +0100 FIX: warning: macro `hN' not defined Signed-off-by: Walter Harms commit b7ec67d3ea78ab68857328d8f72d923324e68cc2 Author: Walter Harms Date: Fri Nov 27 22:26:15 2020 +0100 FIX: warning: macro `IN' not defined just remove an other dead macro use. commit 7ca3ceb9175a829a40c347cb3b2e98341ec5a2df Author: Walter Harms Date: Fri Nov 27 21:58:04 2020 +0100 fix warning: macro `s' not defined this is caused by bad nroff coding, fix some more issues on the fly commit 14fb4e535626ba934cad5bc4308f511524cd1103 Author: Walter Harms Date: Fri Nov 27 20:04:22 2020 +0100 FIX: warning: macro `hN' not defined this was found by checking man pages with groff -t -mandoc -Z -wmac -Tutf8 $FILE >/dev/null In most cases .hN could be replaced with .BR Signed-off-by: Walter Harms commit cb03da4447aa53e8e5382f124917d89b50148036 Author: Walter Harms Date: Fri Nov 27 19:00:00 2020 +0100 FIX: warning: macro `Pn' not defined The missing macro is found via: roff -t -mandoc -Z -wmac -Tutf8 XAnyEvent.man >/dev/null To fix the problem the macro is replaced with .RB. Signed-off-by: Walter Harms commit cc9f8878f2cbe17c7b4035b4ff4352b52ece38e0 Author: Benno Schulenberg Date: Wed Nov 25 16:58:27 2020 +0100 nls: add 'C.utf8' as an alias for 'en_US.UTF-8' The normal form is 'C.UTF-8', but 'C.utf8' has been seen in the wild. Fixes #102. Reported-by: Tomas Korbar Signed-off-by: Benno Schulenberg commit ca8115186f810eccb7d86b0979980eff3ba95f0b Author: Keith Packard Date: Thu Nov 19 11:30:41 2020 -0800 Version 1.7.0 Release notes in README.md, version bump in configure.ac Signed-off-by: Keith Packard commit 325ac177fb6d38f4c7689d9ce059792eaef388ef Author: Keith Packard Date: Mon Nov 16 15:48:40 2020 -0800 Update libX11 .so version to 6.4.0 There have been API additions since the previous release, so the .so version needs to change. Signed-off-by: Keith Packard commit 103e2e11519984aa5746c06e7d90d1f5bc8174a3 Author: Alan Coopersmith Date: Sat Oct 31 09:24:01 2020 -0700 Don't leave dangling pointers in Free functions While these are mostly called during teardown of larger structures that are about to themselves be freed, there's no guarantee that will always be the case, so try to be safer here. [ This bug was found by the Parfait 4.0 bug checking tool. http://labs.oracle.com/pls/apex/f?p=labs:49:::::P49_PROJECT_ID:13 ] v2: Deduplicate & simplify pointer clearing in _XFreeEventCookies as suggested by @keithp Signed-off-by: Alan Coopersmith commit 7d70e302218e2ec8518548ddcdc02d828e7889af Author: Alan Coopersmith Date: Sat Oct 31 08:56:34 2020 -0700 XimProto.h: wrap XIM_HEADER_SIZE definition in parens Resolves parfait warning of potential macro misinterpretation if expanded in the midst of other arithmetic operations with higher precedence. Signed-off-by: Alan Coopersmith commit a3c0b5dbd6b12ae64bc78b11795647a7f6df0c7a Author: Keith Packard Date: Tue Nov 17 13:15:18 2020 -0800 Copy locale modifiers when creating XimInstCallback [v2] Locale modifiers may be freed whenever XSetLocaleModifiers gets called, even if the locale hasn't changed. This means that we cannot save a pointer to those modifiers in the XimInstCallback record and must, instead, make a copy of them instead. This fixes a problem uncovered when running wish under libasan as follows (on current Debian unstable): $ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so.6 wish Reported-by: Vittorio Zecca Signed-off-by: Keith Packard v2: Remove incorrect 'else' token found by @alanc commit 960e2e0cfac12c3477c672d0d40818a0dc74aca5 Author: Peter Hutterer Date: Mon Nov 16 09:34:57 2020 +1000 gitlab CI: add a basic build test Using Arch as base distribution here because we can expect our dependencies to be up-to-date. We rely on the Arch for our dependencies rather than building those from git (notably: xorg-macros, xtrans and libxcb). Signed-off-by: Peter Hutterer commit dbb55e1a5e82870466b095097d9e46046680ec25 Author: Frediano Ziglio Date: Wed Jan 29 09:06:54 2020 +0000 Fix poll_for_response race condition In poll_for_response is it possible that event replies are skipped and a more up to date message reply is returned. This will cause next poll_for_event call to fail aborting the program. This was proved using some slow ssh tunnel or using some program to slow down server replies (I used a combination of xtrace and strace). How the race happens: - program enters into poll_for_response; - poll_for_event is called but the server didn't still send the reply; - pending_requests is not NULL because we send a request (see call to append_pending_request in _XSend); - xcb_poll_for_reply64 is called from poll_for_response; - xcb_poll_for_reply64 will read from server, at this point server reply with an event (say sequence N) and the reply to our last request (say sequence N+1); - xcb_poll_for_reply64 returns the reply for the request we asked; - last_request_read is set to N+1 sequence in poll_for_response; - poll_for_response returns the response to the request; - poll_for_event is called (for instance from another poll_for_response); - event with sequence N is retrieved; - the N sequence is widen, however, as the "new" number computed from last_request_read is less than N the number is widened to N + 2^32 (assuming last_request_read is still contained in 32 bit); - poll_for_event enters the nested if statement as req is NULL; - we compare the widen N (which now does not fit into 32 bit) with request (which fits into 32 bit) hitting the throw_thread_fail_assert. To avoid the race condition and to avoid the sequence to go back I check again for new events after getting the response and return this last event if present saving the reply to return it later. To test the race and the fix it's helpful to add a delay (I used a "usleep(5000)") before calling xcb_poll_for_reply64. Original patch written by Frediano Ziglio, see https://gitlab.freedesktop.org/xorg/lib/libx11/-/merge_requests/34 Reworked primarily for readability by Peter Hutterer, see https://gitlab.freedesktop.org/xorg/lib/libx11/-/merge_requests/53 Signed-off-by: Peter Hutterer commit 30ccef3a48029bf4fc31d4abda2d2778d0ad6277 Author: Keith Packard Date: Sat Nov 7 22:22:47 2020 -0800 Avoid recursing through _XError due to sequence adjustment This patch is based on research done by Dmitry Osipenko to uncover the cause of a large class of Xlib lockups. _XError must unlock and re-lock the display around the call to the user error handler function. When re-locking the display, two functions are called to ensure that the display is ready to generate a request: _XIDHandler(dpy); _XSeqSyncFunction(dpy); The first ensures that there is at least one XID available to use (possibly calling _xcb_generate_id to do so). The second makes sure a reply is received at least every 65535 requests to keep sequence numbers in sync (possibly generating a GetInputFocus request and synchronously awaiting the reply). If the second of these does generate a GetInputFocus request and wait for the reply, then a pending error will cause recursion into _XError, which deadlocks the display. One seemingly easy fix is to have _XError avoid those calls by invoking InternalLockDisplay instead of LockDisplay. That function does everything that LockDisplay does *except* call those final two functions which may end up receiving an error. However, that doesn't protect the system from applications which call some legal Xlib function from within their error handler. Any Xlib function which cannot generate protocol or wait for events is valid, including many which invoke LockDisplay. What we need to do is make LockDisplay skip these two function calls precisely when it is called from within the _XError context for the same display. This patch accomplishes this by creating a list of threads in the display which are in _XError, and then having LockDisplay check the current thread against those list elements. Inspired-by: Dmitry Osipenko Signed-off-by: Keith Packard Tested-by: Dmitry Osipenko Reviewed-by: Dmitry Osipenko commit c9c4d6efbf92ab51695e2e740319503221d68eed Author: Benno Schulenberg Date: Fri Nov 13 11:34:04 2020 +0100 nls: improve the comments for the Serbian compose sequences Also put an extra space before the lone combining characters so they have some room to breathe. Signed-off-by: Benno Schulenberg commit 3497dae3d9c52a252110b2a0983b82000be0fe8e Author: Benno Schulenberg Date: Fri Nov 13 11:23:09 2020 +0100 nls: remove mistaken Serbian compose sequences with combining diacritics Combining characters are not dead keys -- they have an immediate effect and combine with the preceding character. So they cannot be used in compose sequences. Signed-off-by: Benno Schulenberg commit 5cd60398b7787297008b13a848ed3cfbd7ef178d Author: Benno Schulenberg Date: Mon Nov 2 16:34:39 2020 +0100 nls: rename the obsolete sr_CS locale to sr_RS Fixes #107, for the most part. Signed-off-by: Benno Schulenberg commit 7cf1729590534e257b851899cf03421b65c538e3 Author: Keith Packard Date: Sat Nov 7 17:02:56 2020 -0800 Don't attempt to unload locale context data Most locale context users call _XlcCurrentLC, which returns a pointer which never needs to be passed to _XCloseLC, meaning it has unbounded lifetime, so that locale data can never be freed. Remove all reference counting and just leave all locales that were ever used in memory. Signed-off-by: Keith Packard Acked-by: Martin Peres commit 87a8fd8051b823636c3c4f3c37c4cfd11fdb880d Author: Jacek Caban Date: Mon Aug 14 19:20:19 2017 +0200 Don't cache last lcd in _XlcCurrentLC. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=55678 Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=68538 Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=69088 The way it's currently cached is not thread safe. As long as locale doesn't change, the same object is reused anyway. Signed-off-by: Jacek Caban Signed-off-by: Keith Packard Acked-by: Martin Peres commit 7a38c09b82ee2522d987c3da4af8af186e562c61 Author: Keith Packard Date: Sat Nov 7 16:59:37 2020 -0800 Don't cache converters in _Xlcmbtowc and Xlcwctomb These functions were caching encoding conversion functions in static variables which is not thread safe. Let the conversion loader do its job and cache locale to converters there. It's less efficient, but it's also (now) thread safe. Signed-off-by: Keith Packard Acked-by: Martin Peres commit b52ba5c209165fc2c533b77b86147b31763299f3 Author: Jacek Caban Date: Mon Aug 14 19:20:20 2017 +0200 Make conv_list thread safe. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=55678 Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=68538 Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=69088 Signed-off-by: Jacek Caban Signed-off-by: Keith Packard Acked-by: Martin Peres commit 8b5ce3a9b1219c81711944880e5a1e1cfad3d956 Author: Antti Savolainen Date: Wed Sep 16 07:47:26 2020 +0000 Added DOWNWARD ARROW support commit 7138826dccba9d538dfb142ce9af1a40d64ea849 Author: Antti Savolainen Date: Tue Sep 8 00:54:23 2020 +0300 Added support for UPWARDS ARROW and ALMOST EQUAL TO Signed-off-by: Antti Savolainen commit 56d59299f7433cdeb88bac970b06eb7df44df5bb Author: Jonathan Belsewir Date: Thu Nov 5 22:57:50 2020 +0000 Add less and greater to characters that are difficult to access on some keyboards commit 5caf45f8d3bebad5b72ac88545adc156ccfd754d Author: Benno Schulenberg Date: Fri Oct 23 17:12:22 2020 +0200 nls: Allow all letters with a caron to be composed also with v. It was strange that the accented letters Ž and ž can be composed with sequences that start with "v" ("v Z" and "v z"), but not Č and č and Š and š (and other letters with a caron). For these letters, compose sequences that start with a "c" had to be used, which was frustrating because it is hard to remember that "c" stands for "caron", AND the graphically more obvious "v" is right next to it. (Unfortunately, the sequence "v l" is already taken for vertical line. Maybe the compose sequences for vertical line could be reduced to just "V L" and "L V"?) Signed-off-by: Benno Schulenberg commit 62de4ac9025e2cb3f62a890241c06ebc75acce62 Author: Benno Schulenberg Date: Sun Nov 1 20:23:55 2020 +0100 nls: vertically align the target column of aliases Also improve the grammar of the initial comment. Signed-off-by: Benno Schulenberg commit f5b26a16ef959fc6860e9cf58b97a042600900b4 Author: Benno Schulenberg Date: Sun Nov 1 20:17:05 2020 +0100 nls: remove some twenty aliases that have been obsolete for fifteen years Signed-off-by: Benno Schulenberg commit 3e61f3b49660e081108f06bc514366f1784cb2e0 Author: Benno Schulenberg Date: Sun Nov 1 19:50:56 2020 +0100 nls: remove country-specific aliases for two constructed languages These artificial languages are meant to be international and are thus not specific to any country. If one would want to support aliases like ia_FR or ia_CH, then one would also have to support ia_AU, ia_DE, ia_ES, et cetera, et cetera. That would be silly. Signed-off-by: Benno Schulenberg commit 3f9c43adde22bb2ab4bef5837bc8401af9bb537c Author: Benno Schulenberg Date: Sun Nov 1 17:28:24 2020 +0100 nls: remove four aliases where the name is identical to the definition They were found with: while read one two; do if [[ $one == $two: ]]; then echo $two; fi; done commit 9f9c5365816bdd036fd80d54b22e86764ea4b7a7 Author: Carlos Garnacho Date: Fri Jun 14 17:55:14 2019 +0200 Add XSetIOErrorExitHandler() function This function complements XSetIOErrorHandler(), allowing to override the default behavior that trusts on I/O errors never coming back (i.e. exit()ing the process). This is meant as a mechanism for Wayland compositors (that are too a X11 client + compositing manager) to unfasten seatbelts and jump through the car window. It might get lucky and land on a stack of pillows. In consequence, some functions labeled as _X_NORETURN can as a matter of fact return. So those hints were removed. Signed-off-by: Carlos Garnacho Reviewed-by: Michel Dänzer commit 4cb758019e374fa7c022fe79d28444e13441717b Author: Carlos Garnacho Date: Fri Jun 14 17:54:47 2019 +0200 Prepare for _XIOError() possibly returning Ensure current state is cut short on _XIOError(), possible reentrancy should be skipped through the XlibDisplayIOError flag checks. Signed-off-by: Carlos Garnacho Reviewed-by: Michel Dänzer commit a37986f7a7d4ae9b8292b132dbb0da2885ea919c Author: Ross Burton Date: Wed Jan 22 17:11:23 2020 +0000 cpprules.in: squash whitespace in generated files CPP is used to generate files, but as cpp reads files from the build host the output has a number of blank lines at the beginning which varies depending on what GCC and friends is used. Pathalogical example: $ cpp -undef -traditional /dev/null # 1 "/dev/null" # 1 "" # 1 "" # 31 "" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 17 "/usr/include/stdc-predef.h" 3 4 [ 40 blank line ] # 32 "" 2 # 1 "/dev/null" So depending on the content of stdc-predef.h and what other headers CPP will load, the amount of whitespace in the generates files varies. This can result in differences in reproducible environments, and file conflicts in multilib environments. As whitespace is irrelevant to these machine-readable files, extend the sed to just delete blank lines. commit 16192ce2a7e462e09f95aa45ce9eaa180e483c43 Author: Carmina16 Date: Sun Jun 16 02:54:25 2019 +0000 Adding ia and ie locales commit caa71668af7fd3ebdd56353c8f0ab90824773969 Author: Alan Coopersmith Date: Mon Sep 28 16:16:07 2020 -0700 Use __builtin_popcountl if available to replace Ones() in GetImage.c If the compiler knows of a better algorithm for counting the number of bits set in a word for the target CPU, let it use that, instead of the classic algorithm optimized for PDP-6. Based on libXext commit 490a25e6f8a4d2482af4364c700b68ad11a4d10b Signed-off-by: Alan Coopersmith commit 1a9269a95c353e3de9f4d33bab9f1363d84e79db Author: Krzesimir Nowak Date: Mon Jun 1 12:58:30 2020 +0000 Fix leaking modifiers string. Reported by valgrind: ``` ==118175== 17 bytes in 1 blocks are definitely lost in loss record 13 of 1,675 ==118175== at 0x483A809: malloc (vg_replace_malloc.c:307) ==118175== by 0x5CD1B46: _XlcDefaultMapModifiers (in /usr/lib64/libX11.so.6.3.0) ==118175== by 0x5CD1F1A: XSetLocaleModifiers (in /usr/lib64/libX11.so.6.3.0) ==118175== by 0x496841C: X11_InitKeyboard (SDL_x11keyboard.c:324) ==118175== by 0x496F0CA: X11_VideoInit (SDL_x11video.c:455) ==118175== by 0x494747B: SDL_VideoInit_REAL (SDL_video.c:532) ==118175== by 0x489E886: SDL_InitSubSystem_REAL (SDL.c:206) ==118175== by 0x402634: main (fade.cc:35) ``` commit d127217f26df1bf7566c1f372d8b5329a06754ea Author: Alan Coopersmith Date: Sun Aug 16 17:03:24 2020 -0700 Exempt XLookupKeysym from XKeycodeToKeysym deprecation warnings Gets rid of: src/xkb/XKBBind.c: In function ‘XLookupKeysym’: src/xkb/XKBBind.c:234:5: warning: ‘XKeycodeToKeysym’ is deprecated [https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wdeprecated-declarations-Wdeprecated-declarations] 234 | return XKeycodeToKeysym(dpy, event->keycode, col); | ^~~~~~ src/xkb/XKBBind.c:96:1: note: declared here 96 | XKeycodeToKeysym(Display *dpy, | ^~~~~~~~~~~~~~~~ Signed-off-by: Alan Coopersmith commit a64eb5f478c6ca84ef3457a01f9a7c3db8ecf1e5 Author: Alan Coopersmith Date: Sun Aug 16 16:50:43 2020 -0700 lcUTF8: Increase string buffer size from 20 to 32 bytes While we don't expect large enough ints to need it, we don't enforce a maximum size, so gcc assumes the worst and warns: ../../../src/xlibi18n/lcUTF8.c: In function ‘create_tofontcs_conv’: ../../../src/xlibi18n/lcUTF8.c:1736:34: warning: ‘.charset.name’ directive output may be truncated writing 13 bytes into a region of size between 8 and 17 [-Wformat-truncation=] 1736 | snprintf(buf, sizeof(buf), "fs%d.charset.name", i); | ^~~~~~~~~~~~~ ../../../src/xlibi18n/lcUTF8.c:1736:2: note: ‘snprintf’ output between 17 and 26 bytes into a destination of size 20 1736 | snprintf(buf, sizeof(buf), "fs%d.charset.name", i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../../src/xlibi18n/lcUTF8.c:1739:46: warning: ‘snprintf’ output may be truncated before the last format character [-Wformat-truncation=] 1739 | snprintf(buf, sizeof(buf), "fs%d.charset", i); | ^ ../../../src/xlibi18n/lcUTF8.c:1739:6: note: ‘snprintf’ output between 12 and 21 bytes into a destination of size 20 1739 | snprintf(buf, sizeof(buf), "fs%d.charset", i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../../src/xlibi18n/lcUTF8.c:1754:41: warning: ‘.charset.name’ directive output may be truncated writing 13 bytes into a region of size between 8 and 17 [-Wformat-truncation=] 1754 | snprintf(buf, sizeof(buf), "fs%d.charset.name", i); | ^~~~~~~~~~~~~ ../../../src/xlibi18n/lcUTF8.c:1754:9: note: ‘snprintf’ output between 17 and 26 bytes into a destination of size 20 1754 | snprintf(buf, sizeof(buf), "fs%d.charset.name", i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../../src/xlibi18n/lcUTF8.c:1757:53: warning: ‘snprintf’ output may be truncated before the last format character [-Wformat-truncation=] 1757 | snprintf(buf, sizeof(buf), "fs%d.charset", i); | ^ ../../../src/xlibi18n/lcUTF8.c:1757:13: note: ‘snprintf’ output between 12 and 21 bytes into a destination of size 20 1757 | snprintf(buf, sizeof(buf), "fs%d.charset", i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Alan Coopersmith commit 54925250ad9c825bea671dcade5c913bad88abee Author: Alan Coopersmith Date: Sun Aug 16 16:33:59 2020 -0700 i18n: use memcpy instead of strncpy on unterminated char arrays Avoids gcc warnings that we're using strncpy wrong to copy a known-length set of characters without a terminating '\0' to a buffer whose length we are checking separately. (Should also be imperceptibly faster since we no longer check if each byte is '\0' when we already know it won't be.) Signed-off-by: Alan Coopersmith commit 8754868dbbbc5fa096282df0504aa7880488eeb9 Author: Alan Coopersmith Date: Sun Aug 16 16:02:01 2020 -0700 Mark FreeBlueTblElements label unused in LRGB.c Quiets gcc 10.2 warning of: src/xcms/LRGB.c: In function ‘LINEAR_RGB_InitSCCData’: src/xcms/LRGB.c:798:1: warning: label ‘FreeBlueTblElements’ defined but not used [https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-label-Wunused-label] 798 | FreeBlueTblElements: | ^~~~~~~~~~~~~~~~~~~ Signed-off-by: Alan Coopersmith commit 52b0cd67073f2f4665884b5a7decfedeb3b7ca1e Author: Alan Coopersmith Date: Sun Aug 16 14:54:47 2020 -0700 Raise minimum required xproto version to 7.0.25 (released 2013-11-23) Allows us to depend on _X_COLD directly instead of having to check for it. (Since we also use _X_UNUSED, 7.0.22 or later was implicitly required already but not checked for.) Signed-off-by: Alan Coopersmith commit deafb99fd8faf8b044eaee13d072440ce4db76af Author: Maya Rashish Date: Sun Aug 23 21:19:33 2020 +0300 Avoid the use of "register" keyword in public headers. This causes issues when compiling code for C++17. commit 505420662577749e36640db48f6b6b9ae0236e09 Author: Matthieu Herrb Date: Mon Aug 24 15:42:25 2020 +0200 libX11 1.6.12 Signed-off-by: Matthieu Herrb commit acdaaadcb3d85c61fd43669fc5dddf0f8c3f911d Author: Matthieu Herrb Date: Thu Aug 13 18:02:58 2020 +0200 Fix an integer overflow in init_om() CVE-2020-14363 This can lead to a double free later, as reported by Jayden Rivers. Signed-off-by: Matthieu Herrb commit d15c24c8b44be5e4054c8ecd0ff9dcf2c8e18e5b Author: Niclas Zeising Date: Tue Aug 11 13:44:38 2020 +0200 Fix input clients connecting to server Fix a bug where some input clients can't connect to the input server. This fixes #117. FreeBSD bugzilla reference: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=248549 Signed-off-by: Niclas Zeising commit 6dd618e5ea8e7558dd8e99a2777ab7b69211789c Author: Maya Rashish Date: Sat Aug 15 00:48:56 2020 +0300 Avoid the use of "register" keyword in XkbTranslateKeySym. This causes issues when compiling code for C++17. While here, make function prototype match the header with regards to removal of another register keyword. commit 780d222343098b4bfe3ec529b4a0dc2aadea19bf Author: Christopher Chavez Date: Mon Aug 10 17:08:39 2020 +0000 Fix typo GCCLipYOrigin -> GCClipYOrigin in XCreateGC() manpage commit 29a8251a456bb7dc10146b4713f499a624d6dacd Author: Felix Yan Date: Thu Aug 6 16:03:38 2020 +0000 Correct a typo in GetStCmap.c commit 0d8f038db83f68724a84ef9d4ccd0d5e33ec6a70 Author: Alan Coopersmith Date: Thu Aug 6 08:07:57 2020 -0700 libX11 1.6.11 Signed-off-by: Alan Coopersmith commit 93fce3f4e79cbc737d6468a4f68ba3de1b83953b Author: Yichao Yu Date: Sun Aug 2 13:43:58 2020 -0400 Fix size calculation in `_XimAttributeToValue`. The check here guards the read below. For `XimType_XIMStyles`, these are `num` of `CARD32` and for `XimType_XIMHotKeyTriggers` these are `num` of `XIMTRIGGERKEY` ref[1] which is defined as 3 x `CARD32`. (There are data after the `XIMTRIGGERKEY` according to the spec but they are not read by this function and doesn't need to be checked.) The old code here used the native datatype size instead of the wire protocol size causing the check to always fail. Also fix the size calculation for the header (size). It is 2 x CARD16 for both types despite the unused `CARD16` for `XimType_XIMStyles`. [1] https://www.x.org/releases/X11R7.6/doc/libX11/specs/XIM/xim.html#Input_Method_Styles This fixes a regression caused by 388b303c62aa35a245f1704211a023440ad2c488 in 1.6.10. Fix #116 commit 9949364ea761ab7efa2a9930ec7718f966a740c0 Author: Matthieu Herrb Date: Thu Jul 30 21:36:22 2020 +0200 libX11 1.6.10 Signed-off-by: Matthieu Herrb commit 1703b9f3435079d3c6021e1ee2ec34fd4978103d Author: Matthieu Herrb Date: Fri Jul 24 21:09:10 2020 +0200 Change the data_len parameter of _XimAttributeToValue() to CARD16 It's coming from a length in the protocol (unsigned) and passed to functions that expect unsigned int parameters (_XCopyToArg() and memcpy()). Signed-off-by: Matthieu Herrb Reviewed-by: Todd Carson commit 1a566c9e00e5f35c1f9e7f3d741a02e5170852b2 Author: Todd Carson Date: Fri Jul 24 20:59:32 2020 +0200 Zero out buffers in functions It looks like uninitialized stack or heap memory can leak out via padding bytes. Signed-off-by: Matthieu Herrb Reviewed-by: Matthieu Herrb commit 2fcfcc49f3b1be854bb9085993a01d17c62acf60 Author: Todd Carson Date: Fri Jul 24 20:22:44 2020 +0200 Fix more unchecked lengths Signed-off-by: Matthieu Herrb Reviewed-by: Matthieu Herrb commit 388b303c62aa35a245f1704211a023440ad2c488 Author: Todd Carson Date: Fri Jul 24 19:36:51 2020 +0200 fix integer overflows in _XimAttributeToValue() Signed-off-by: Matthieu Herrb Reviewed-by: Matthieu Herrb commit 0e6561efcfaa0ae7b5c74eac7e064b76d687544e Author: Todd Carson Date: Fri Jul 24 19:33:30 2020 +0200 Fix signed length values in _XimGetAttributeID() The lengths are unsigned according to the specification. Passing negative values can lead to data corruption. Signed-off-by: Matthieu Herrb Reviewed-by: Matthieu Herrb commit 2b7598221d87049d03e9a95fcb541c37c8728184 Author: Alan Coopersmith Date: Wed Jul 22 15:19:58 2020 -0700 Fix spelling/wording issues Found by using: codespell --builtin clear,rare,usage,informal,code,names Signed-off-by: Alan Coopersmith commit f9e3378ebcfc79ff00591b8617a68e97580a741e Author: Samuel Thibault Date: Sun Jul 19 22:19:24 2020 +0200 xlibi18n: Fix converting horizline keysyms to UCS U+23BA - U+23BD are meant to represent the scan lines, and U+2500 is unified with scan line 5. Signed-off-by: Samuel Thibault commit 4385a84c4a79c1b60bf12839899a1544198de975 Author: Samuel Thibault Date: Thu Jun 4 02:19:13 2020 +0200 Braille: Fix default lookup cbb59d172 ('Braille: Fix typing quickly') broke the default lookup that translates Braille keysym patterns to Braille Unicode patterns since it rightfully clears brl_committing, but then we do not have it any more to fill brl_committed. This change saves the committed pattern so we can return it in the default lookup. Signed-off-by: Samuel Thibault commit fb65b67169105c82c243f265e0f993cf72efdacd Author: Marko Myllynen Date: Fri Feb 28 13:59:36 2020 +0200 Update Finnish compose sequences for SFS 5966:2019 standard U0219, U0218, U021B, U021A are now part of the standard. Fixes #70 which was printed incorrectly in the earlier standard version. commit 07724ce046348a21cc82a874853b14b9a285df75 Author: Tristan Miller Date: Wed Sep 25 13:34:01 2019 +0200 Add acute accent compose sequences for Russian vowels. Fixes: https://gitlab.freedesktop.org/xorg/lib/libx11/issues/104 Signed-off-by: Tristan Miller commit 3ec9264d01a3a66c0fa0145a7c1db06a64be1507 Author: Thomas E. Dickey Date: Sat Apr 25 14:40:54 2020 -0400 document an ancient performance problem (see Debian #954845). Signed-off-by: Thomas E. Dickey commit 791c93816ce0520d54925b0b3ccbc29823370041 Author: Thomas E. Dickey Date: Sat Apr 25 14:22:11 2020 -0400 update/correct function prototypes in manpages to match headers Signed-off-by: Thomas E. Dickey commit 844271305a28e87031562dfeb43defbea02960a2 Author: Thomas E. Dickey Date: Tue Apr 21 20:53:35 2020 -0400 reduce gcc-normal warnings using casts (no object change) Signed-off-by: Thomas E. Dickey commit 53b59ddfc114a55d26e9717a1b4822f1b18c40ca Author: Thomas E. Dickey Date: Tue Apr 21 18:13:22 2020 -0400 reduce gcc-normal warnings using casts (no object change) Signed-off-by: Thomas E. Dickey commit 68c72a7341b114277ab232f2499ee3bd035af8a0 Author: Adam Jackson Date: Wed Dec 11 11:53:11 2019 -0500 Fix XTS regression in XCopyColormapAndFree XCopyColormapAndFree/5 threw an assertion: 520|4 5 00014017 1 2|Assertion XCopyColormapAndFree-5.(A) 520|4 5 00014017 1 3|When a colourmap argument does not name a valid colourmap, 520|4 5 00014017 1 4|then a BadColor error occurs. 520|4 5 00014017 1 5|METH: Create a bad colourmap by creating and freeing a colourmap. 520|4 5 00014017 1 6|METH: Call test function using bad colourmap as the colourmap argument. 520|4 5 00014017 1 7|METH: Verify that a BadColor error occurs. 520|4 5 00014017 1 8|unexpected signal 6 (SIGABRT) received 220|4 5 2 15:05:53|UNRESOLVED 410|4 5 1 15:05:53|IC End 510|4|system 0: Abandoning testset: caught unexpected signal 11 (SIGSEGV) More specifically: lt-XCopyColormapAndFree: xcb_io.c:533: _XAllocID: Assertion `ret != inval_id' failed. This bug was introduced (by following my advice, d'oh) in: commit 99a2cf1aa0b58391078d5d3edf0a7dab18c7745d Author: Tapani Pälli Date: Mon May 13 08:29:49 2019 +0300 Protect colormap add/removal with display lock In that patch we moved the call to _XcmsCopyCmapRecAndFree inside the display lock. The problem is said routine has side effects, including trying to implicitly create a colormap in some cases. Since we don't run the XID handler until SyncHandle() we would see inconsistent internal xlib state, triggering the above assert. Fix this by dropping and re-taking the display lock before calling into XCMS. Reviewed-by: Tapani Pälli commit 7f46a38139f66fda734f3a6c445b84ea89c8f310 Author: Alex Henrie Date: Wed Jan 1 14:54:06 2020 -0700 Handle small final sigma in XConvertCase lowercase: GREEK SMALL LETTER FINAL SIGMA (U+03C2) uppercase: GREEK CAPITAL LETTER SIGMA (U+03A3) This mapping was correct in UCSConvertCase, but the "legacy" mapping must also be correct for Caps Lock to work with the final sigma key. https://gitlab.freedesktop.org/xorg/lib/libx11/issues/5 Signed-off-by: Alex Henrie commit a48787d3d155c8a09cead345f5055da30c1db537 Author: Peter Hutterer Date: Wed Dec 11 14:12:27 2019 +1000 Handle ssharp in XConvertCase() lowercase: LATIN SMALL LETTER SHARP S (U+00DF) uppercase: LATIN CAPITAL LETTER SHARP S (U+1E9E) The uppercase sharp s (XK_ssharp) is a relatively recent addition to unicode but was added to the relevant keyboard layouts in xkeyboard-config-2.25 (d1411e5e95c) https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/issues/144 Alas, the CapsLock behavior was broken on the finnish layout (maybe others). This was due to xkbcomp using XConvertCase() to determine whether a key requires the type FOUR_LEVEL_ALPHABETIC or FOUR_LEVEL_SEMIALPHABETIC. Let's make this function return the right lower/upper symbols for the sharp s and hope that the world won't get any worse because of it. https://gitlab.freedesktop.org/xorg/lib/libx11/issues/110 Signed-off-by: Peter Hutterer commit b8766a438461e20b5c6f7a6111b703d4cb71501f Author: Raul Fernandes Date: Wed Oct 9 18:39:26 2019 +0000 Use memcmp and memcpy commit db7cca17ad7807e92a928da9d4c68a00f4836da2 Author: Adam Jackson Date: Wed Oct 9 13:41:29 2019 -0400 libX11 1.6.9 Signed-off-by: Adam Jackson commit f5ba2c632a4c84279bdd48c687271292f5dc4f87 Author: Dmitry Osipenko Date: Sat May 18 19:10:32 2019 +0300 Fix lockup in _XReply() caused by recursive synchronization This patch is based on a suggestion made by Uli Schlachter in a comment to the bug report https://gitlab.freedesktop.org/xorg/lib/libx11/issues/93. Explanation of the bug (given by Uli Schlachter as well): An error was received and handled. Since there was an error callback set, Xlib unlocks the display, runs the error callback, and then locks the display again. This goes through _XLockDisplay and then calls _XSeqSyncFunction. On this "lock the thing"-path, Xlib notices that sequence numbers are close to wrap-around and tries to send a GetInputFocus request. However, the earlier calls already registered themselves as "we are handling replies/errors, do not interfere!" and so the code here waits for "that other thread" to be done before it continues. Only that there is no other thread, but it is this thread itself and thus a deadlock follows. The bug is relatively easy to reproduce on any desktop environment by using actively a touchscreen input that supports multitouch, i.e. practically all mobile devices are affected. Fixes: https://gitlab.freedesktop.org/xorg/lib/libx11/issues/93 Suggested-by: Uli Schlachter Tested-by: Dmitry Osipenko Reported-by: Dmitry Osipenko Signed-off-by: Dmitry Osipenko commit 1f1ca0863fd81fd0538b104eb9d9841ddbc7c905 Author: Adam Jackson Date: Fri Sep 13 16:44:32 2019 -0400 xkb: Provide ourselves This header refers to libX11 types, it doesn't belong in xorgproto and has been moved to legacy in 2019.2. Supply it ourselves. commit edc7680ed5a03cedb5facf14693823455e12c29c Author: Ross Burton Date: Tue Aug 6 14:53:43 2019 +0100 src/util/Makefile: explicitly reset LINK to not use libtool Simply looking at libtool redefines LINK globally to use libtool, which when you're trying to cross-compile to Windows can cause complications. As in src/util/ we're simply building a small binary for the build host, reset LINK to the automake default so that the traditional compile/link steps occur without libtool. Also remove -all-static from LDFLAGS as that is a libtool-specific argument intended to solve this problem. Closes: #100 Signed-off-by: Ross Burton commit f111bf3ac091a3a6d1f094172621d9d033c3833c Author: Thomas E. Dickey Date: Tue Jul 30 16:53:27 2019 -0400 improve some formatting Signed-off-by: Thomas E. Dickey commit 1d0a6fe9126c7ce61c6648cabf43b2de4d6d3ba9 Author: Thomas E. Dickey Date: Tue Jul 30 15:49:09 2019 -0400 fix a substitution error from recent commit, e.g, "s/^\.EE/XDe/" Signed-off-by: Thomas E. Dickey commit 8fe8aafe7e9beffaff0460fe08354dfcde1efe98 Author: Thomas E. Dickey Date: Tue Jul 30 05:07:40 2019 -0400 split lines at sentence endings Signed-off-by: Thomas E. Dickey commit 6f2cbcea5d6dcd1df7ef309481cad1663284c061 Author: Thomas E. Dickey Date: Tue Jul 30 04:52:25 2019 -0400 trim trailing whitespace from manpages Signed-off-by: Thomas E. Dickey commit 4abf482d8e6b0b1ae84e0f528e71066afd6d18b5 Author: Thomas E. Dickey Date: Tue Jul 30 04:36:24 2019 -0400 another fake-quote fix Signed-off-by: Thomas E. Dickey commit c0f0651f2b4dfa9fef86d1374689220125631993 Author: Thomas E. Dickey Date: Tue Jul 30 04:34:54 2019 -0400 the last commit overlooked some fake-quote pairs Signed-off-by: Thomas E. Dickey commit ef31143c9decda54b3ab2937d3300fcf5b493fd6 Author: Walter Harms Date: Mon Jul 29 18:50:19 2019 +0200 fix ``fake quotes'' in text to remove the fake quotes replace them with propper predefined macros \*(lq and \*(rq. this will allow nroff to choose the propper characters when using ps etc. Signed-off-by: Walter Harms commit 705027ea9b17d6552388d2067736ab4b0bf9dfb5 Author: Walter Harms Date: Mon Jul 29 18:27:12 2019 +0200 get rid of ``fake quotes'' these fake quotes are inside a comment and can be replaced with some double quotes Signed-off-by: Walter Harms commit fe46eb287106ad05538e896783a5cf877a4138df Author: Walter Harms Date: Mon Jul 29 17:57:02 2019 +0200 remove all private macro defines after converting everything to st. man page macros there is no need to maintain X11 private nroff macros, so remove them. Signed-off-by: Walter Harms commit b7f09ae19c9a098ecd545b4d4c45a6afe39a8764 Author: Walter Harms Date: Mon Jul 29 17:47:35 2019 +0200 Replace home-grown .Ds .De macro with man page .EX/.EE macro Same pages use the man page .EX/.EE macro. Replace all occurences of .De/.Ds with the std. macros to make the code better to maintain. Signed-off-by: Walter Harms commit 951e772bc8d89bc62c4bbac14adc5d4f5027419f Author: Walter Harms Date: Wed Jul 3 18:23:51 2019 +0200 fix TBL format Signed-off-by: Walter Harms commit 4eb167f5aca4cca05a230c728ffdb4fd382a4e1e Author: Walter Harms Date: Wed Jul 3 18:18:09 2019 +0200 replace home grown .ZN with std, .B and .BR Replace the home grown macro .ZN with std. macros from man macro paket. So we can get rid of the definition an get a clean header. Signed-off-by: Walter Harms commit 08e6b36292ebf01ba2dcc4a48ec371c6f5d13458 Author: Walter Harms Date: Sat Jun 22 18:33:48 2019 +0200 remove in-text macros remove in-text macros an fix a few typos on the way. hopefuly that will make maintenance more easy. Signed-off-by: Walter Harms commit cb0e894fe9927b07bd9d97c067fd0d007accb105 Author: Walter Harms Date: Fri Jun 21 18:01:16 2019 +0200 note that we can handle kbd==NULL Signed-off-by: Walter Harms commit 0327c427d62f671eced067c6d9b69f4e216a8cac Author: Adam Jackson Date: Mon Jun 17 13:36:08 2019 -0400 makekeys: Detach ourselves from X headers entirely Subsequent to a121b7b0c210efe10bf93453b29050282324c906 we are no longer building makekeys with enough -I/foo/bar to find the X11 headers, so if they're not in a system include path, things fail. Since this utility is only needed at build time, there's no real reason to demand the X headers be installed for both the build and target machines if cross- compiling, we can just assume a vaguely ANSI environment instead. Tested-by: Niclas Zeising Reviewed-by: Keith Packard Reviewed-by: Matt Turner commit 57f0d421a1320090d3a4948181fe228d86cc8977 Author: Matt Turner Date: Mon Jun 17 10:45:45 2019 -0400 libX11 1.6.8 Signed-off-by: Matt Turner commit 5464b302bc0c4a055d3eac06c6ab15e209ff7668 Author: Matt Turner Date: Sun Jun 9 14:00:15 2019 -0700 Use AC_SYS_LARGEFILE ... and include config.h in makekeys.c to get the definition of _FILE_OFFSET_BITS. Without it, libX11 can fail to build on a file system with 64-bit inode numbers. Bug: https://bugs.gentoo.org/550502 Bug: https://bugs.gentoo.org/616140 Signed-off-by: Matt Turner commit 33b9148a833ab2ea46e44871da3c031bf1b78f77 Author: Ran Benita Date: Thu Feb 13 20:55:08 2014 +0200 Compose.man: fix escaped hexadecimal char description The man page says: Strings may be direct text encoded in the locale for which the compose file is to be used, or an escaped octal or hexadecimal character code. Octal codes are specified as "\123" and hexadecimal codes as "\0x123a". But the grammar in the parser and the implementation say: ESCAPED_CHAR ::= ('\\' | '\"' | OCTAL | HEX ) HEX ::= '\' (x|X) HEX_CHAR [HEX_CHAR]] HEX_CHAR ::= (0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|a|b|c|d|e|f) So "\0x123a" -> "\x3a". Signed-off-by: Ran Benita Signed-off-by: Alan Coopersmith commit d9b2cc35edf01e4f751a9ccb5ac185745184cec0 Author: ojab Date: Mon Apr 24 20:12:17 2017 +0000 Compose sequences for rouble sign Cyrillic combinations mirror the Qwerty-Jcuken keyboard layout. Signed-off-by: Slava Kardakov Signed-off-by: Alan Coopersmith commit 3f211616f6414bd9958566c0ca137e87a2b6df95 Author: Pavel Labath Date: Fri Nov 30 20:45:04 2012 +0100 Fix a leak in XCreateFontSet a simple snippet like XFreeFontSet(d, XCreateFontSet(d, ...)) will generate lots of memory leaks, as evidenced by the following valgrind output: ==983== HEAP SUMMARY: ==983== in use at exit: 39,409 bytes in 341 blocks ==983== total heap usage: 4,795 allocs, 4,454 frees, 489,086 bytes allocated ==983== ==983== 1,688 (136 direct, 1,552 indirect) bytes in 1 blocks are definitely lost in loss record 40 of 46 ==983== at 0x4C2B042: realloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==983== by 0x56D5A93: add_codeset.clone.9 (in /usr/lib64/libX11.so.6.3.0) ==983== by 0x56D5FE0: load_generic (in /usr/lib64/libX11.so.6.3.0) ==983== by 0x56D7612: initialize (in /usr/lib64/libX11.so.6.3.0) ==983== by 0x56D7E75: _XlcCreateLC (in /usr/lib64/libX11.so.6.3.0) ==983== by 0x56F9A5F: _XlcUtf8Loader (in /usr/lib64/libX11.so.6.3.0) ==983== by 0x56DF815: _XOpenLC (in /usr/lib64/libX11.so.6.3.0) ==983== by 0x56B255A: XOpenOM (in /usr/lib64/libX11.so.6.3.0) ==983== by 0x56A665A: XCreateFontSet (in /usr/lib64/libX11.so.6.3.0) ==983== by 0x4FCA80: conky::x11_output::create_gc() (x11.cc:746) ==983== by 0x4FC3B4: conky::x11_output::use_own_window() (x11.cc:602) ==983== by 0x4FAD42: conky::priv::own_window_setting::set(bool const&, bool) (x11.cc:92) ==983== ==983== LEAK SUMMARY: ==983== definitely lost: 136 bytes in 1 blocks ==983== indirectly lost: 1,552 bytes in 34 blocks ==983== possibly lost: 0 bytes in 0 blocks ==983== still reachable: 37,721 bytes in 306 blocks ==983== suppressed: 0 bytes in 0 blocks This patch makes the leak dissappear (Well, at least the "definitely lost part". The "still reachable" thingy remains). After some analysis, I've discovered that the XLCd structure is destroyed improperly. The "constructor" is in lcGeneric.c, but the structure is destroyed using code from lcPublic.c. I've found that changing the destructor call to _XlcDestroyLC executes the correct code path, and I'm pretty sure this is correct (the object was constructed using _XlcCreateLC, it make sense to destroy it using its conterpart). So far I haven't observed any strange behaviour on my system caused by this change (although, I'm not sure, how many programs actually use this function). Signed-off-by: Pavel Labath Signed-off-by: Alan Coopersmith commit 4645e219133458781e3fb48eaea6a74cccb1b9aa Author: Jon Turney Date: Tue Apr 30 14:39:06 2019 +0100 Avoid using libtool wrapper for makekeys For Windows targets, libtool uses a wrapper executable, not a wrapper script (see [1]), which it compiles with the host compiler. This doesn't work when cross-compiling. Since we don't actually need to link with anything, use the libtool flag -all-static to tell it to stay completely out of this. [1] https://www.gnu.org/software/libtool/manual/html_node/Wrapper-executables.html commit 6886d9ba06826785a8ccb312c04ea82b91bb6a25 Author: Jon Turney Date: Wed Apr 24 12:50:41 2019 +0100 Use EXEEXT_FOR_BUILD for makekeys Use EXEXT_FOR_BUILD, to fix cross-compiling where EXEEXT differs from EXEEXT_FOR_BUILD, such as when building for Windows from unix. (Note: As written, this assumes EXEEXT_FOR_BUILD is always empty when cross-compiling. There could be some elaborate autodetection for EXEXT_FOR_BUILD, but for the moment, if you are cross-compiling from Windows to Unix, you'll need to set EXEEXT_FOR_BUILD explicity...) commit a121b7b0c210efe10bf93453b29050282324c906 Author: Jon Turney Date: Tue Apr 30 14:30:41 2019 +0100 Remove makekeys dependency on X headers This is the patch from https://bugs.freedesktop.org/show_bug.cgi?id=6669 by Pierre Ossman, reworked for master. Avoid using LIBS (which are for host, but we don't need) and rewrite makekeys slightly to avoid needing to include any X headers, which avoids potentially having -I with host paths in CFLAGS, which can cause standard headers e.g. stdio.h for the host to also be used, which can break things... commit cbb59d1727cb1bfcff91b54fd55f4139e360b7ab Author: Samuel Thibault Date: Fri Jun 7 23:35:33 2019 +0200 Braille: Fix typing quickly On finishing releasing Braille keys, we should clear the just-commited pattern, to reset the state to initial state, and avoid having to wait for 0.3s before typing the next pattern. Signed-off-by: Samuel Thibault Tested-by: Jean-Philippe Mengual commit 99a2cf1aa0b58391078d5d3edf0a7dab18c7745d Author: Tapani Pälli Date: Mon May 13 08:29:49 2019 +0300 Protect colormap add/removal with display lock This fixes a bug where concurrent threads call XCreateColormap and XFreeColormap corrupting a linked list where colormap structures are stored. Fixes: https://gitlab.freedesktop.org/xorg/lib/libx11/issues/94 v2: handle XCopyColormapAndFree also (Adam Jackson) Signed-off-by: Tapani Pälli commit fea80d03c381a4de379863c0d41f6d4c00f15e1e Author: Jon Turney Date: Wed Mar 13 13:12:20 2019 +0000 Add autoconf checks for headers we include for FIONREAD Add autoconf checks for the extra headers we include to define FIONREAD. This needs sys/socket.h on Cygwin, and none of the alternatives on Windows. commit 87c77a1e6d7034536e9d25ce24a667ebf53486a7 Author: Matthias Dieter Wallnöfer Date: Mon Mar 11 14:19:52 2019 +0000 locale.alias.pre - add the de_IT locale Signed-off-by: Alan Coopersmith commit 568f77f414072506bbe48646637c872987c97e63 Author: Matthias Dieter Wallnöfer Date: Mon Mar 11 14:17:10 2019 +0000 locale.dir.pre - add the de_IT locale Signed-off-by: Alan Coopersmith commit 38c0c92feaef7dc4a72920b1dd79872e6578086c Author: Matthias Dieter Wallnöfer Date: Mon Mar 11 14:12:07 2019 +0000 compose.dir.pre - add de_IT locale Signed-off-by: Alan Coopersmith commit 49f835611ba6ab82e68b7b851507931c142db7a5 Author: Matthias Dieter Wallnöfer Date: Tue Jan 29 15:34:34 2019 +0000 Update locale.alias.pre - introduce the de_LI aliases (equivalent to de_CH) Signed-off-by: Alan Coopersmith commit ed669234d0cd5933618aa5fd2da697b59845b9be Author: Matthias Dieter Wallnöfer Date: Tue Jan 29 15:28:18 2019 +0000 locale.dir.pre - fix the de_LI latin15 locale Signed-off-by: Alan Coopersmith commit 82b5c1454a49333b4d94984d40db79cff386d37f Author: Josh Triplett Date: Sun Feb 3 08:31:41 2019 +0100 compose.dir.pre: Give the C.UTF-8 locale a full set of UTF-8 compose sequences Signed-off-by: Josh Triplett commit 603c3ab25a692194805fd4b0c62afac8093897fe Author: Alan Coopersmith Date: Sat Mar 9 20:58:07 2019 -0800 Add missing close paren to XrmGetStringDatabase synopsis in man page Fixes: commit 0642e99ac05afb0c Signed-off-by: Alan Coopersmith commit 6590cc41e3c5c5c836a49a2c82774d7cc9ab3c85 Author: Alan Coopersmith Date: Sat Feb 23 11:12:27 2019 -0800 Include reallocarray.h in tarballs so "make distcheck" passes Fixes: commit bcf7b5aa06c23aee Signed-off-by: Alan Coopersmith commit a4a7df06351ce9565d298a84547ff71f2d220fbf Author: Alan Coopersmith Date: Sat Feb 23 11:04:41 2019 -0800 XlibInt.c: include headers needed for ioctl(...FIONREAD...) on Solaris Fixes: commit 5538b3e4ae6dee Signed-off-by: Alan Coopersmith commit 38ec04de7e537dde6b7b1eaca46b1a24fcdbc044 Author: Alan Coopersmith Date: Sat Feb 23 10:48:26 2019 -0800 specs/XKB: Fix misprint in documentation of XkbFreeGeomOverlayKeys() Fixes: https://gitlab.freedesktop.org/xorg/lib/libx11/issues/86 aka: https://bugs.freedesktop.org/show_bug.cgi?id=23550 Signed-off-by: Alan Coopersmith commit 74f2f26811ae82b15dede31504b0eb541f7a3293 Author: Alan Coopersmith Date: Sat Feb 23 10:46:05 2019 -0800 specs/XKB: Fix misprint in documentation of XkbAllocGeomOverlayKeys() Fixes: https://gitlab.freedesktop.org/xorg/lib/libx11/issues/85 aka: https://bugs.freedesktop.org/show_bug.cgi?id=23549 Signed-off-by: Alan Coopersmith commit 66b039a41690f076e962ac6bd46cca017360a7d1 Author: Alan Coopersmith Date: Sat Feb 23 10:44:15 2019 -0800 specs/XKB: Fix misprint in documentation of XkbAllocGeomOverlayRows() Fixes: https://gitlab.freedesktop.org/xorg/lib/libx11/issues/84 aka: https://bugs.freedesktop.org/show_bug.cgi?id=23548 Signed-off-by: Alan Coopersmith commit cdea0e840315171f8390adc63a2397ddf111eea4 Author: Alan Coopersmith Date: Sat Feb 23 10:38:08 2019 -0800 specs/XKB: Fix misprint in documentation of XkbGetNamedGeometry() Fixes: https://gitlab.freedesktop.org/xorg/lib/libx11/issues/82 aka: https://bugs.freedesktop.org/show_bug.cgi?id=23520 Signed-off-by: Alan Coopersmith commit c72d17ada98723cd9e03ddf06680a0e54b2c3089 Author: Alan Coopersmith Date: Sat Feb 23 10:30:32 2019 -0800 XkbAllocGeomOverlayKey man page should be named XkbAllocGeomOverlayKeys Signed-off-by: Alan Coopersmith commit 05002b8aef9544c8545e0823a02cf14f335d2b68 Author: Alan Coopersmith Date: Sun Feb 17 15:13:25 2019 -0800 Fix man page typo: XkbAllBellNotifyMask -> XkbAllBellEventsMask Reported-by: Daniel Hahler Signed-off-by: Alan Coopersmith commit 5538b3e4ae6dee32c47db9dfc85b07bbe7b90f6c Author: Adam Jackson Date: Fri Mar 24 11:07:36 2017 -0400 _XDefaultIOError: Do better at detecting explicit shutdown Currently, when the X server crashes or a client is disconnected with XKillClient, you get a somewhat confusing error message from libX11 along the lines of: XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0" after 98 requests (40 known processed) with 0 events remaining. What's happening here is the previous recvmsg has thrown EAGAIN, since the socket is non-blocking. In this case, check whether the socket has any more data to read, and if not treat it like EPIPE. Signed-off-by: Adam Jackson commit 6d2cde9633b5ee020cb60caea1cf61e090b86dd2 Author: Adam Jackson Date: Fri Mar 24 11:07:35 2017 -0400 _XDefaultIOError: Reformat to be less ugly Signed-off-by: Adam Jackson Reviewed-by: Alan Coopersmith commit 003e30a66a249f5c70b30d1c187385124cd4cdad Author: Alan Coopersmith Date: Tue Jan 1 14:34:04 2019 -0800 Avoid use-after-free in _XimProtoSetIMValues() Fixes gitlab issue #49 Signed-off-by: Alan Coopersmith commit 30656fd66ad47aeaca0bfc237a818f189554f07e Author: Alan Coopersmith Date: Tue Jan 1 12:21:04 2019 -0800 Fix implicit conversion warnings in _XlcCreateDefaultCharSet lcCharSet.c:187:50: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion] tmp = Xmalloc(name_len + 1 + ct_sequence_len + 1); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ ../../include/X11/Xlibint.h:453:32: note: expanded from macro 'Xmalloc' ~~~~~~ ^~~~ lcCharSet.c:192:31: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion] memcpy(tmp, name, name_len+1); ~~~~~~ ~~~~~~~~^~ lcCharSet.c:216:45: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion] memcpy(tmp, ct_sequence, ct_sequence_len+1); ~~~~~~ ~~~~~~~~~~~~~~~^~ lcCharSet.c:183:16: warning: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Wshorten-64-to-32] name_len = strlen(name); ~ ^~~~~~~~~~~~ lcCharSet.c:184:23: warning: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Wshorten-64-to-32] ct_sequence_len = strlen(ct_sequence); ~ ^~~~~~~~~~~~~~~~~~~ lcCharSet.c:198:37: warning: implicit conversion loses integer precision: 'long' to 'unsigned int' [-Wshorten-64-to-32] unsigned int length = colon - charset->name; ~~~~~~ ~~~~~~^~~~~~~~~~~~~~~ Signed-off-by: Alan Coopersmith commit 2e6300905784fa8adfcea019262ea58b3e1ed4ad Author: Alan Coopersmith Date: Tue Jan 1 11:41:47 2019 -0800 Remove no-longer-used name variable in _XGetAtomName Fixes gcc warning: GetAtomNm.c: In function ‘_XGetAtomName’: GetAtomNm.c:39:11: warning: unused variable ‘name’ [-Wunused-variable] char *name; ^~~~ Introduced by commit 336c1e7a505698a8f3bcb6eb96dbbb8ed21ade96 Signed-off-by: Alan Coopersmith commit f077871c2a12cf098b0c50572e112c6dc5e04de0 Author: Alan Coopersmith Date: Sat Dec 29 11:39:29 2018 -0800 Fix out-of-tree builds after commit 8a62e26515e528bb47917ec4a55cc2b492419eeb In-tree builds found reallocarray.h in $(top_builddir)/src but the out-of-tree build didn't find it at all. Reported-by: Emmanuele Bassi from GNOME continuous integration pipeline Signed-off-by: Alan Coopersmith commit ba7f7cc783672784bebc6e69349b55c6c75c1973 Author: Alan Coopersmith Date: Sun Sep 27 18:35:27 2015 -0700 Convert src/xlibi18n to use reallocarray() Signed-off-by: Alan Coopersmith commit 336c1e7a505698a8f3bcb6eb96dbbb8ed21ade96 Author: Alan Coopersmith Date: Sat Sep 26 11:12:47 2015 -0700 Replace Xmalloc+strcpy pairs with strdup calls Signed-off-by: Alan Coopersmith commit 258a8ced681dc1bc50396be7439fce23f9807e2a Author: Alan Coopersmith Date: Sun Jul 19 11:58:50 2015 -0700 Replace _XkbTypedRealloc & _XkbClearElems with new _XkbResizeArray Makes resizing & clearing more consistent and gets rid of some weird quirks like always subtracting 1 from the size passed to _XkbClearElems so it could always add 1 to the size passed in. Signed-off-by: Alan Coopersmith commit f94273e2f4284040306b888e5ca0381ee00591af Author: Alan Coopersmith Date: Sun Jul 19 09:47:29 2015 -0700 Add some missing allocation failure checks in src/xcms Signed-off-by: Alan Coopersmith commit 76850471b4a5a6d30f5660234e87ec2772e7b426 Author: Alan Coopersmith Date: Sun Jul 19 09:33:21 2015 -0700 Convert src/xcms to use reallocarray() Signed-off-by: Alan Coopersmith commit 8a62e26515e528bb47917ec4a55cc2b492419eeb Author: Alan Coopersmith Date: Sun Jul 19 09:24:02 2015 -0700 Convert src/XKB to use reallocarray() Signed-off-by: Alan Coopersmith commit 6d1dc1f6169ebf0ba71785d461bd98129c65c862 Author: Alan Coopersmith Date: Thu Jun 4 23:30:43 2015 -0700 Convert main src directory to use reallocarray() commit bcf7b5aa06c23aee00af7999b58cb96a8571ac42 Author: Alan Coopersmith Date: Thu Jun 4 23:18:23 2015 -0700 Import reallocarray() from OpenBSD Wrapper for realloc() that checks for overflow when multiplying arguments together, so we don't have to add overflow checks to every single call. For documentation on usage, see: http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man3/calloc.3 Signed-off-by: Alan Coopersmith commit 9bdfe9c9af11d77d66e5ff651e82b20e695cb460 Author: Alan Coopersmith Date: Mon Nov 19 21:26:23 2018 -0800 Update README for gitlab migration Signed-off-by: Alan Coopersmith commit c8bcc19970a2cc4ad337de1338c63a07325eefcd Author: Albert Astals Cid Date: Fri Nov 9 22:24:52 2018 +0100 locale.dir: Add ast_ES.UTF-8 With this patch xev properly reports XLookupString gives 2 bytes: (c2 b4) "´" for the dead_acute key when using the Asturian locale commit 117bb310b44ce03802c91a70949eb58dcc702a3c Author: Albert Astals Cid Date: Fri Nov 9 22:18:43 2018 +0100 compose.dir: Add ast_ES.UTF-8 With this patch one can properly type dead keys like á when using the Asturian locale commit d7e22252d68258a63ca537827c99d0ac0bc4b9d8 Author: Alan Coopersmith Date: Sat Nov 10 13:30:47 2018 -0800 Remove documentation of obsolete B16 & B32 tags in specs/libX11 Signed-off-by: Alan Coopersmith commit f3c978476e0be6813268af494efb7ac507451116 Author: Matt Turner Date: Tue Oct 9 10:26:05 2018 -0400 libX11 1.6.7 Signed-off-by: Matt Turner commit 823a0f8a820247b6c1e092f679b49cbdc2ea5c95 Author: Michel Dänzer Date: Fri Sep 28 17:24:17 2018 +0200 poll_for_event: Allow using xcb_poll_for_queued_event It avoids reading from the display connection again in cases where that was already done. Suggested-by: Uli Schlachter Reviewed-by: Uli Schlachter commit 406afe4b0f1b655c0db19bbc9a0c48da9a46acf5 Author: Michel Dänzer Date: Tue Sep 25 17:10:58 2018 +0200 poll_for_response: Call poll_for_event again if xcb_poll_for_reply fails If xcb_poll_for_reply fails to find a reply, poll_for_response would always return NULL. However, xcb_poll_for_reply may have read events from the display connection while looking for a reply. In that case, returning NULL from poll_for_response is wrong and can result in the client hanging, e.g. because it returns to waiting for the display connection file descriptor becoming readable after XPending incorrectly returned 0 pending events. The solution is to call poll_for_event again after xcb_poll_for_reply returned 0. This will return the first of any events read by xcb_poll_for_reply. Fixes issue #79. Reported-by: Yuxuan Shui Bugzilla: https://bugs.freedesktop.org/108008 Bugzilla: https://bugs.freedesktop.org/107992 Reviewed-by: Adam Jackson commit d0416863d5bf75af54ce81f6c30d4c1476b5e04f Author: Bhavi Dhingra Date: Mon Sep 28 08:33:40 2015 +0000 XcmsLookupColor: fully initialize XColor structs passed to _XColor_to_XcmsRGB Fixes https://gitlab.freedesktop.org/xorg/lib/libx11/issues/44 aka https://bugs.freedesktop.org/show_bug.cgi?id=92154 Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 733f64bfeb311c1d040b2f751bfdef9c9d0f89ef Author: Matthieu Herrb Date: Tue Aug 21 16:54:50 2018 +0200 libX11 1.6.6 Signed-off-by: Matthieu Herrb commit 173704243fbcbea0b6de2068b4fb403c7408fb54 Author: Matthieu Herrb Date: Tue Aug 21 16:53:40 2018 +0200 Remove statement with no effect. Signed-off-by: Matthieu Herrb commit e83722768fd5c467ef61fa159e8c6278770b45c2 Author: Tobias Stoeckmann Date: Fri Jul 27 16:38:00 2018 +0200 Fixed crash on invalid reply (CVE-2018-14598). If the server sends a reply in which even the first string would overflow the transmitted bytes, list[0] (or flist[0]) will be set to NULL and a count of 0 is returned. If the resulting list is freed with XFreeExtensionList or XFreeFontPath later on, the first Xfree call: Xfree (list[0]-1) turns into Xfree (NULL-1) which will most likely trigger a segmentation fault. I have modified the code to return NULL if the first string would overflow, thus protecting the freeing functions later on. Signed-off-by: Tobias Stoeckmann commit dbf72805fd9d7b1846fe9a11b46f3994bfc27fea Author: Tobias Stoeckmann Date: Fri Jul 27 16:37:17 2018 +0200 Fixed out of boundary write (CVE-2018-14600). The length value is interpreted as signed char on many systems (depending on default signedness of char), which can lead to an out of boundary write up to 128 bytes in front of the allocated storage, but limited to NUL byte(s). Casting the length value to unsigned char fixes the problem and allows string values with up to 255 characters. Signed-off-by: Tobias Stoeckmann commit b469da1430cdcee06e31c6251b83aede072a1ff0 Author: Tobias Stoeckmann Date: Fri Jul 27 16:36:34 2018 +0200 Fixed off-by-one writes (CVE-2018-14599). The functions XGetFontPath, XListExtensions, and XListFonts are vulnerable to an off-by-one override on malicious server responses. The server replies consist of chunks consisting of a length byte followed by actual string, which is not NUL-terminated. While parsing the response, the length byte is overridden with '\0', thus the memory area can be used as storage of C strings later on. To be able to NUL-terminate the last string, the buffer is reserved with an additional byte of space. For a boundary check, the variable chend (end of ch) was introduced, pointing at the end of the buffer which ch initially points to. Unfortunately there is a difference in handling "the end of ch". While chend points at the first byte that must not be written to, the for-loop uses chend as the last byte that can be written to. Therefore, an off-by-one can occur. I have refactored the code so chend actually points to the last byte that can be written to without an out of boundary access. As it is not possible to achieve "ch + length < chend" and "ch + length + 1 > chend" with the corrected chend meaning, I removed the inner if-check. Signed-off-by: Tobias Stoeckmann commit d81da209fd4d0c2c9ad0596a8078e58864479d0d Author: Tobias Stoeckmann Date: Tue Jul 3 22:31:37 2018 +0200 Validation of server response in XListHosts. If a server sends an incorrect length in its response, a client is prone to perform an out of boundary read while processing the data. The length field of xHostEntry is used to specify the amount of bytes used to represent the address. It is 16 bit, which means that it is not possible to perform an arbitrary memory access, but it might be enough to read sensitive information, e.g. malloc-related pointers and offsets. Signed-off-by: Tobias Stoeckmann Reviewed-by: Matthieu Herrb commit b676e62377483df77bcb6472d26b24f901323fa9 Author: Samuel Thibault Date: Wed Jun 13 15:46:58 2018 +0200 XkbOpenDisplay.3: fix typo XkbOpenDisplay returns a pointer to Display, not a Display. Signed-off-by: Samuel Thibault commit 9c5845ff0dc080ff10bd68af4fc40fcd805728ca Author: Martin Natano Date: Sat Oct 8 19:57:50 2016 +0200 Don't rebuild ks_tables.h if nothing changed. ks_tables.h is always considered out of date due to the forced rebuild of the makekeys util. This means the file is also rebuilt during 'make install', which is usually performed as root, which can to lead permission problems later on. Signed-off-by: Martin Natano Signed-off-by: Alan Coopersmith commit 796f754cba6d75b676a0fc39b97802198fceda4f Author: Alan Coopersmith Date: Sat May 5 14:43:30 2018 -0700 Change fall through comment in lcDB.c to match gcc's requirements Needs to match one of the regexps shown under https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/Warning-Options.html#index-Wimplicit-fallthrough Signed-off-by: Alan Coopersmith commit 82ca6308757126fa7ffc6588f1e5d8e3be04251b Author: Alan Coopersmith Date: Sat Mar 24 19:45:14 2018 -0700 Use size_t for buffer sizes in SetHints.c These variables store values returned from strlen() as a size_t and are passed to Xmalloc, which expects a size_t, so lets stop converting back and forth to int along the way. Reported by: Konstantin SKliarov Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 50a5a98984097d614227d22a49265e12b172cac7 Author: Bhavi Dhingra Date: Tue Jul 5 11:37:50 2016 +0530 Fix possible memory leak in cmsProp.c:140 https://bugs.freedesktop.org/show_bug.cgi?id=96814 Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit a9dafdd57c71473fa3a2ec4887e973e4e9876d83 Author: Michal Srb Date: Thu Mar 15 09:50:58 2018 +0100 Use flexible array member instead of fake size. The _XimCacheStruct structure is followed in memory by two strings containing fname and encoding. The memory was accessed using the last member of the structure `char fname[1]`. That is a lie, prohibits us from using sizeof and confuses checkers. Lets declare it properly as a flexible array, so compilers don't complain about writing past that array. As bonus we can replace the XOffsetOf with regular sizeof. Fixes GCC8 error: In function 'strcpy', inlined from '_XimWriteCachedDefaultTree' at imLcIm.c:479:5, inlined from '_XimCreateDefaultTree' at imLcIm.c:616:2, inlined from '_XimLocalOpenIM' at imLcIm.c:700:5: /usr/include/bits/string_fortified.h:90:10: error: '__builtin_strcpy' forming offset 2 is out of the bounds [0, 1] [-Werror=array-bounds] return __builtin___strcpy_chk (__dest, __src, __bos (__dest)); Caused by this line seemingly writing past the fname[1] array: imLcIm.c:479: strcpy (m->fname+strlen(name)+1, encoding); Reviewed-by: Keith Packard Signed-off-by: Peter Hutterer commit 34f4464f69a4d6ff0d1042500a62f9a5ed7f3647 Author: Alan Coopersmith Date: Tue Mar 6 11:42:27 2018 -0800 If XGetImage fails to create image, don't dereference it to bounds check Reported by gcc 7.3: GetImage.c:110:25: warning: potential null pointer dereference [-Wnull-dereference] if (planes < 1 || image->height < 1 || image->bytes_per_line < 1 || ~~~~~^~~~~~~~ Introduced by 8ea762f94f4c942d898fdeb590a1630c83235c17 in Xlib 1.6.4 Signed-off-by: Alan Coopersmith Reviewed-by: Emil Velikov commit e835a9dcc3362b5e92893be756dd7ae361e64ced Author: wharms Date: Sun Sep 3 14:17:45 2017 +0200 silence gcc warning assignment discards 'const' qualifier from pointer target type commit 36a1ac0253fea82ff79cc52ba56c5691cfd07a3b Author: wharms Date: Sun Aug 20 21:51:57 2017 +0200 remove empty line commit e02dfe54f32b4165351d2712a9d2e0584906a3ce Author: wharms Date: Sun Aug 20 21:50:33 2017 +0200 add _X_UNUSED to avoid unused variable warnings commit 2911c39cecd63ed3747072a5eeeb9eedffc881e9 Author: walter harms Date: Sat Jun 4 17:19:59 2016 +0200 Fixes: warning: variable 'req' set but not,used Fixes: warning: variable 'req' set but not used [-Wunused-but-set-variable] by marking req _X_UNUSED Solution was discussed on xorg-devel ML Peter Hutter, Alan Coopersmith Re: [PATCH libX11 3/5] fix: warning: pointer targets in passing argument 2 of '_XSend' differ in signedness [-Wpointer-sign] Signed-off-by: harms wharms@bfs.de commit bf82ec0402479fd8399d69e7d62fc17d7956699a Author: walter harms Date: Sat Jun 4 17:22:07 2016 +0200 mark _XDefaultIOError as no_return mark _XDefaultIOError as no_return. No one comes back from exit() ... Signed-off-by: harms wharms@bfs.de commit 9abe8380074edea3ac4e72466ec47e921ca05e47 Author: walter harms Date: Sat Jun 4 17:21:52 2016 +0200 no need to check XFree arguments You can save a bit of code. The is no need to check XFree arguments bring free_fontdataOM in line with other free function and check for NULL arg Signed-off-by: harms wharms@bfs.de commit 433477fcb7e07d0c26a22ba78aae88827ed1f440 Author: walter harms Date: Tue Apr 26 16:32:20 2016 +0200 fix memleak in error path free all mem on error Signed-off-by: walter harms commit ed9f0d34abc645eee56e21863f23acb4d0bb8e9a Author: walter harms Date: Tue Apr 26 17:58:16 2016 +0200 fix memleak in error path V2: remove unneeded NULL (reported by eric.engestrom@imgtec.com) fix mem leak in error path Signed-off-by: walter harms commit 7c78fc57693afa94cf26170f0f6276e3b7374ed0 Author: walter harms Date: Tue Apr 26 16:34:11 2016 +0200 no need to check args for Xfree() simplify code Signed-off-by: walter harms commit c1c14af441ae73d1a8e67a971fafcf967e45ac48 Author: walter harms Date: Tue Apr 26 16:23:46 2016 +0200 remove stray extern remove stray extern Signed-off-by: walter harms commit 714921f041a245dc5f37a689268b584226a2ccb9 Author: walter harms Date: Mon Apr 11 18:26:52 2016 +0200 no need to check argument for _XkbFree() simplify code by removing unneeded checks Signed-off-by: walter harms commit d02c2466f65063a03c97dbcee05071c12a3676e6 Author: walter harms Date: Mon Apr 11 18:22:38 2016 +0200 fix more shadow warning Signed-off-by: walter harms commit 0355c3926d5372f9762f235071dbd94a89bbbdad Author: walter harms Date: Thu Mar 31 19:16:33 2016 +0200 fix shadow char_size Signed-off-by: walter harms commit 916dffadf052135df3398651be873c353da629e1 Author: walter harms Date: Thu Mar 31 19:14:32 2016 +0200 remove argument check for free() adjust one inden Signed-off-by: walter harms commit 6ec901ebca3fea6a762e22090dc35b1b90911133 Author: walter harms Date: Thu Mar 31 19:12:17 2016 +0200 _XIOError(dpy); will never return so remore dead Signed-off-by: walter harms commit 83107a677b2ed458e4d62ea4a601e8181d3683d8 Author: walter harms Date: Thu Mar 31 19:10:49 2016 +0200 fix shadow warning Signed-off-by: walter harms commit 4fe66b1c5112b07bd09e28bbc021911d08a9621f Author: Ryan C. Gordon Date: Wed Aug 2 02:41:03 2017 -0400 Valgrind fix for XStoreColor and XStoreColors. If the "pad" field isn't set, Valgrind will report it as uninitialized memory accesses when the struct is copied into the Display's send buffer. In practice, this is (probably) harmless, but Valgrind is correct in believing it's a bug. https://bugs.freedesktop.org/attachment.cgi?id=133189 Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 7d2010fec25c2f52b873ad0572479eb43128b038 Author: Alan Coopersmith Date: Fri Apr 7 00:13:03 2017 -0700 Improve table formatting in XkbChangeControls & XkbKeyNumGroups man pages Includes fix for Solaris Bug 24564279: "XkbKeyNumGroups.3x11 man page contains some malformed text" caused by extra whitespace after .TE macros Signed-off-by: Alan Coopersmith commit b856d5d929047d1ea169814d56e43784ea404c83 Author: Alan Coopersmith Date: Thu Mar 16 00:05:49 2017 -0700 Clarify state parameter to XkbSetNamedDeviceIndicator Checking a Bool to see if it's NULL does not work well in C. Also reported in https://bugs.freedesktop.org/show_bug.cgi?id=251 Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit c6dadd4cebd994aafb37a58b3adbaa82507c2d18 Author: Alan Coopersmith Date: Wed Mar 15 23:50:26 2017 -0700 Make Xkb{Get,Set}NamedIndicator spec & manpages match code The XKB Library spec and the man pages for XkbGetNamedIndicator & XkbSetNamedIndicator included a device_spec argument neither function takes, and do not include the XkbGetNamedDeviceIndicator & XkbSetNamedDeviceIndicator variants that do take it (along with two other arguments). This updates them to match the interfaces the code has provided for decades. This has been reported multiple times, so this fixes: https://bugs.freedesktop.org/show_bug.cgi?id=251 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=729812 Sun Bug 4528016 XkbSetNamedIndicator & XkbGetNamedIndicator man pages are wrong (filed: alan.coopersmith@sun.com 2001-11-15 - now aka Oracle bug 15087506) X.Org Group Defect Id #9418 Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit 2d20890e7ffd3ee88a9ceb25cdd2ac1fe7aaceb6 Author: Arthur Huillet Date: Wed Feb 1 15:02:41 2017 +0100 _XDefaultError: set XlibDisplayIOError flag before calling exit _XReply isn't reentrant, and it can lead to deadlocks when the default error handler is called: _XDefaultError calls exit(1). It is called indirectly by _XReply when a X protocol error comes in that isn't filtered/handled by an extension or the application. This means that if the application (or one of its loaded shared libraries such as the NVIDIA OpenGL driver) has registered any _fini destructor, _fini will get called while still on the call stack of _XReply. If the destructor interacts with the X server and calls _XReply, it will hit a deadlock, looping on the following in _XReply: ConditionWait(dpy, dpy->xcb->reply_notify); It is legal for an application to make Xlib calls during _fini, and that is useful for an OpenGL driver to avoid resource leaks on the X server side, for example in the dlopen/dlclose case. However, the driver can not readily tell whether its _fini is being called because Xlib called exit, or for another reason (dlclose), so it is hard to cleanly work around this issue in the driver. This change makes it so _XReply effectively becomes a no-op when called after _XDefaultError was called, as though an XIOError had happened. The dpy connection isn't broken at that point, but any call to _XReply is going to hang. This is a bit of a kludge, because the more correct solution would be to make _XReply reentrant, maybe by broadcasting the reply_notify condition before calling the default error handler. However, such a change would carry a grater risk of introducing regressions in Xlib. This change will drop some valid requests on the floor, but this should not matter, as it will only do so in the case where the application is dying: X will clean up after it once exit() is done running. There is the case of XSetCloseDownMode(RETAIN_PERMANENT), but an application using that and wishing to clean up resources in _fini would currently be hitting a deadlock, which is hardly a better situation. Signed-off-by: Aaron Plattner Reviewed-by: Jamey Sharp commit 42f4d7af9cf6d1dbfa575552e057328b054a20c9 Author: Matt Turner Date: Sat Feb 25 21:54:22 2017 -0800 libX11 1.6.5 Signed-off-by: Matt Turner commit a0da5835e8078445947c828fe2d86c1a31439012 Author: Adam Jackson Date: Tue Feb 14 15:33:29 2017 -0500 Revert "Compose sequences for rouble sign" This reverts commit d9e34061307748cb7318ed6b5f83ee5ee9b81fd0. Reported to break 'make check': https://lists.freedesktop.org/archives/xorg-devel/2017-February/052720.html commit d9e34061307748cb7318ed6b5f83ee5ee9b81fd0 Author: Mihail Konev Date: Fri Feb 10 18:48:18 2017 +0500 Compose sequences for rouble sign Cyrillic combinations mirror the Qwerty-Jcuken keyboard layout. Also add Cyrillic sequences for hryvnia sign. Submitted-by: Victor V. Kustov Reviewed-by: Victor V. Kustov Signed-off-by: Mihail Konev commit 23d9623c661694aba8cf1e8f277dffa7a86cf065 Author: Petr Písař Date: Sun Oct 30 12:49:11 2016 +0100 Revert cs_CZ.UTF-8 XLC_LOCALE to en_US.UTF-8 The cs_CZ.UTF-8/XLC_LOCALE is an empty file leading to unsupported cs_CZ.UTF-8 locale and reporting this error: Warning: locale not supported by Xlib, locale set to C Therefore this patch reverts to the en_US.UTF-8 definition file that was used before. This patch also deduplicates the cs_CZ.UTF-8 entry. This reverts commit 33840a5465a2e5fecab520bfbdd2d1bd0a456f51 Signed-off-by: Julien Cristau commit 71b0929ebc1f0f877f63e3f6de260f529daa6c69 Author: Mihail Konev Date: Thu Jan 26 13:52:49 2017 +1000 autogen: add default patch prefix Signed-off-by: Mihail Konev commit 2979011bc170c55894b9185b26376f8efc6db7d4 Author: Emil Velikov Date: Mon Mar 9 12:00:52 2015 +0000 autogen.sh: use quoted string variables Place quotes around the $srcdir, $ORIGDIR and $0 variables to prevent fall-outs, when they contain space. Signed-off-by: Emil Velikov Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer commit 4a0082a1b6affa65d38294f0e13511525cd8ad15 Author: Peter Hutterer Date: Tue Jan 24 10:32:07 2017 +1000 autogen.sh: use exec instead of waiting for configure to finish Syncs the invocation of configure with the one from the server. Signed-off-by: Peter Hutterer Reviewed-by: Emil Velikov commit c74b070f2712c95f0db7c320a10232b0e5c83049 Author: Julien Cristau Date: Sat Jan 7 16:20:31 2017 +0100 Fix wrong Xfree in XListFonts failure path 'ch' gets moved inside the allocated buffer as we're looping through fonts, so keep a reference to the start of the buffer so we can pass that to Xfree in the failure case. Fixes: commit 20a3f99eba5001925b8b313da3accb7900eb1927 "Plug a memory leak" Signed-off-by: Julien Cristau Reviewed-by: Alan Coopersmith Signed-off-by: Peter Hutterer commit 663f47075fe67bab4f99bc5d186c49175d4a4334 Author: Alan Coopersmith Date: Sun Jan 1 20:57:58 2017 -0800 specs/libX11: Update Portability Considerations for the 21st century Signed-off-by: Alan Coopersmith Signed-off-by: Peter Hutterer commit 28f4b989b52fcf45c7e75a878d8d9c2583cd6b3c Author: Alan Coopersmith Date: Sun Jan 1 20:39:53 2017 -0800 specs/libX11: Fix broken synopsis for Data/Data16/Data32 Signed-off-by: Alan Coopersmith commit 382561951e3460b09c21a1a23748cde0315fbb19 Author: Alan Coopersmith Date: Sun Jan 1 20:31:54 2017 -0800 specs/libX11: Add missing parameter types for XGetWindowProperty() Signed-off-by: Alan Coopersmith commit 2beaecdb66965b861d6b790d151ba947f65f0a22 Author: Alan Coopersmith Date: Sun Jan 1 20:16:08 2017 -0800 specs/libX11: Make paramdef spacing more consistent Signed-off-by: Alan Coopersmith commit 4c436c6c14cfd4c397b011563bf13c2872861133 Author: Alan Coopersmith Date: Sun Jan 1 20:02:53 2017 -0800 specs/libX11: Fix paramdef entries listing multiple parameters Signed-off-by: Alan Coopersmith commit 1728b1a8a4718315da8e5c9cbc2c04bb75c74107 Author: Alan Coopersmith Date: Sun Jan 1 19:38:40 2017 -0800 specs/libX11: More synopsis fixes Mostly transforming macro definitions and functions taking void arguments from undecorated tags to use tags to get decorations. Signed-off-by: Alan Coopersmith commit f0dc83db7e3a3d4a76c0f9d24763b80f01c893a9 Author: Lucien Gentis Date: Wed Jun 1 17:02:47 2016 +0200 Typos in "Xlib - C Language X Interface" document - Chapter 02 This patch fixes typos and lack of tags in "Xlib - C Language X Interface" document - Chapter 02. Signed-off-by: Lucien Gentis Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 20a3f99eba5001925b8b313da3accb7900eb1927 Author: Emilio Pozuelo Monfort Date: Tue Oct 25 21:30:15 2016 +0200 Plug a memory leak This was introduced in 8ea762f. Reported-by: Julien Cristau Signed-off-by: Emilio Pozuelo Monfort Signed-off-by: Peter Hutterer commit 8f349feac24aacc958bd816afcc52380764e3d92 Author: Matthieu Herrb Date: Tue Oct 4 21:01:39 2016 +0200 libX11 1.6.4 Signed-off-by: Matthieu Herrb commit 8ea762f94f4c942d898fdeb590a1630c83235c17 Author: Tobias Stoeckmann Date: Sun Sep 25 21:25:25 2016 +0200 Validation of server responses in XGetImage() Check if enough bytes were received for specified image type and geometry. Otherwise GetPixel and other functions could trigger an out of boundary read later on. Signed-off-by: Tobias Stoeckmann Reviewed-by: Matthieu Herrb commit 8c29f1607a31dac0911e45a0dd3d74173822b3c9 Author: Tobias Stoeckmann Date: Sun Sep 25 21:22:57 2016 +0200 The validation of server responses avoids out of boundary accesses. v2: FontNames.c return a NULL list whenever a single length field from the server is incohent. Signed-off-by: Tobias Stoeckmann Reviewed-by: Matthieu Herrb commit 78851f6a03130e3c720b60c3cbf96f8eb216d741 Author: walter harms Date: Mon Aug 15 19:18:14 2016 +0200 XFree will accept NULL as argument since Xfree is a define for free(): Xlibint.h:#define Xfree(ptr) free((ptr)) Xfree will accept NULL and do nothing. Signed-off-by: Hans de Goede commit 83adf3d1e3d0d6602244381334f75c216da4ab6e Author: Matthew D. Fuller Date: Sat Jun 4 11:24:01 2016 -0500 Fixup param specification for XChangeProperty() Signed-off-by: Matthew D. Fuller Signed-off-by: Peter Hutterer commit 3129c757f9da8586ab8b8654a56c8f687cc9ef5c Author: Mats Blakstad Date: Sun Feb 28 13:22:03 2016 -0500 New compose keys for local languages in Togo Signed-off-by: James Cloos commit e1011b9e2f6c82255959cf3cc1d8cda402ded0a9 Author: Daniel Albers Date: Wed Mar 9 14:35:48 2016 +0100 Add Compose sequence for U+1F4A9. Signed-off-by: Daniel Albers commit 6d7bb040c928485f2557c2c914b95cffb2354179 Author: Alan Coopersmith Date: Sat Feb 6 14:18:32 2016 -0800 xcms: use size_t for pointer offsets passed to strncmp instead of converting to int and back Fixes clang warnings of the form: HVC.c:190:43: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion] if (strncmp(spec, _XcmsTekHVC_prefix, n) != 0) { ~~~~~~~ Signed-off-by: Alan Coopersmith commit a9266804eed38a83897ab5f0f9f8a8ab82a98882 Author: Alan Coopersmith Date: Sat Feb 6 13:32:44 2016 -0800 xcms: use unsigned indexes when looping through unsigned values Clears many gcc warnings of the form: uvY.c: In function ‘XcmsCIEuvYToCIEXYZ’: uvY.c:263:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (i = 0; i < nColors; i++, pColor++) { ^ Signed-off-by: Alan Coopersmith commit 0ee0d383b4488b7b90d8bd50b75c371e0dc0d397 Author: Alan Coopersmith Date: Sat Feb 6 13:01:25 2016 -0800 xcms: use size_t for strlen/sizeof values instead of converting to int & back Fixes gcc warnings of the form: IdOfPr.c: In function ‘XcmsFormatOfPrefix’: IdOfPr.c:69:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if ((len = strlen(prefix)) >= sizeof(string_buf)) { ^ IdOfPr.c:83:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (len >= sizeof(string_buf)) Xfree(string_lowered); ^ IdOfPr.c:97:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (len >= sizeof(string_buf)) Xfree(string_lowered); ^ IdOfPr.c:104:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (len >= sizeof(string_buf)) Xfree(string_lowered); ^ Signed-off-by: Alan Coopersmith commit 4de6ed3e7b1833c52c9d58ab74d59d57ca2a9f0d Author: Dominik Muth Date: Thu Mar 26 07:52:58 2015 +0100 Xlib.h: Fix macros imitating C functions. The basic rule "put parantheses around macro parameters" should be observed where possible. Otherwise code like ConnectionNumber(foo = bar); fails to compile. (It obviously passes if ConnectionNumber is a C function.) There are several other macros amended for the same reason. This bug appeared while building http://ioccc.org/1993/cmills.c, so historically it was not present. Signed-off-by: Dominik Muth Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 3706b0f2b14cc97578a6bee620266edca2722ebf Author: Alan Coopersmith Date: Fri Nov 15 18:03:25 2013 -0800 Don't need to link libX11-xcb against libX11 libX11-xcb only accesses data structures defined in X11 headers, it doesn't call any functions or reference any global variables in libX11 itself. (Seems to have been left from previous XCL implementation.) Signed-off-by: Alan Coopersmith commit eddf1bbd18872b286a9f939140f0cd9ba4e93804 Author: Alan Coopersmith Date: Fri Jan 22 11:44:25 2016 -0800 Stop checking for preferred order of local transports Removes --with-local-transport-order=... flag to configure. Code which used this ordered list was removed in commit 15e5eaf6289 which outsourced X11 connection handling & authentication to libxcb. Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 1a66c1e964ff8d11382313404f48b5a3d5ed8be8 Author: Alan Coopersmith Date: Fri Jan 22 09:39:28 2016 -0800 Stop checking XTRANS_SECURE_RPC_FLAGS since we no longer use them Removes --enable-secure-rpc & --disable-secure-rpc flags to configure Code that used SECURE_RPC definitions was removed in commit 15e5eaf6289 which outsourced X11 connection handling & authentication to libxcb. Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 7eb724dc24505f1591ef32620fa63f079b540646 Author: Olivier Fourdan Date: Thu Jan 21 11:54:19 2016 +0100 XKB: fix XkbGetKeyboardByName with Xming server XkbGetKeyboardByName relies on flags to read the data from the server. If the X server sends us the wrong flags or if a subreply is smaller than it should be, XkbGetKeyboardByName will not read all the available data and leave data in the buffer, which will cause the next _XReply() to fail with: [xcb] Extra reply data still left in queue [xcb] This is most likely caused by a broken X extension library [xcb] Aborting, sorry about that. xcb_io.c:576: _XReply: Assertion `!xcb_xlib_extra_reply_data_left' failed. Aborted Check if there is some extra data left at the end of XkbGetKeyboardByName() and discard that data if any is found. Many thanks to Peter Hutterer for finding the root cause of the issue and Adam Jackson for helping with the analysis! Signed-off-by: Olivier Fourdan Reviewed-by: Daniel Stone Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer commit 43ba0a68d3d17b496ec1f48d44921122ddd7d7d9 Author: Alan Coopersmith Date: Sat Dec 19 18:03:41 2015 -0800 lcPubWrap: replace malloc(strlen) + strcpy with strdup Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit 6fc95cb12b70c5a67cb4fc5e5749f9f1ec741e2a Author: Alan Coopersmith Date: Sat Dec 19 10:21:04 2015 -0800 XlcDL.c: reduce code duplication Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit f7ecc0856be58608881d2086954cb71857ad64e1 Author: Alan Coopersmith Date: Sat Dec 19 10:19:25 2015 -0800 XlcDL.c: replace strcpy+strcat sequences with snprintf Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit 522989b34398bd6a6ea144c4af0ba69d6dc4faea Author: Alan Coopersmith Date: Sat Dec 19 10:05:42 2015 -0800 XDefaultOMIF: Remove comments referring to ancient Sun bug ids Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit b738a104ae80e4270dd1d215ad0c6a80016982c2 Author: Alan Coopersmith Date: Sat Dec 19 10:00:22 2015 -0800 XDefaultOMIF: additional code simplification Don't need to test for a case that we already returned for, don't need to store a count that will only ever be 1 if we didn't return, don't need to increment pointers to allow storing more than one item when we can only ever possibly do one. Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit 31011cf100419269eae7409581c784638be503cf Author: Alan Coopersmith Date: Sat Dec 19 09:46:31 2015 -0800 XDefaultOMIF: replace strlen+Xmalloc+strcpy with strdup Code seems to have been originally written to handle appending multiple strings, but only ever operates on a single string. Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit c27c46d5e22bbf60fb5608eaabe584b7fdeb0b09 Author: Alan Coopersmith Date: Sat Dec 19 09:20:55 2015 -0800 Use strdup instead of Xmalloc+strcpy in _XDefaultOpenIM Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit 4359dfabc04af082872d2bc2d5b52e26d6d93290 Author: Alan Coopersmith Date: Fri Dec 4 22:20:53 2015 -0800 Delete #if 0 hunks of code Signed-off-by: Alan Coopersmith commit a2f9dfac286f37e54eb47d4736cc3f0150224a84 Author: Alan Coopersmith Date: Thu Dec 3 23:38:07 2015 -0800 Bug 93183: _XDefaultOpenIM memory leaks in out-of-memory error paths Rework code to store allocations directly into XIM struct instead of temporary local variables, so we can use _XCloseIM to unwind instead of duplicating it, and consistently jump to error handler on failure, instead of sometimes leaking and sometimes freeing. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93183 Signed-off-by: Alan Coopersmith commit 07a97b3944467dce085a1efd24706cc851d2caf2 Author: Alan Coopersmith Date: Thu Dec 3 23:19:48 2015 -0800 Bug 93184: read_EncodingInfo invalid free Free the correct bits of memory if we run out and need to unwind Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93184 Signed-off-by: Alan Coopersmith commit 11118e9eb3705fcbe42b6a68d4a8aa86ab0211f1 Author: Alan Coopersmith Date: Sat Nov 28 13:18:11 2015 -0800 Remove unused definition of XCONN_CHECK_FREQ The only use of XCONN_CHECK_FREQ was removed in commit 15e5eaf62897b3179 when we dropped the old Xlib connection handling in favor of xcb's. Signed-off-by: Alan Coopersmith Reviewed-by: Mark Kettenis commit 5f0da8311a61498edf073cc877f5b467bfd5f863 Author: James Cloos Date: Thu Dec 3 18:24:44 2015 -0500 Fix another missing update in cf4d5989383a Reported in: https://bugs.freedesktop.org/show_bug.cgi?id=81875#c7 Signed-off-by: James Cloos commit 33840a5465a2e5fecab520bfbdd2d1bd0a456f51 Author: James Cloos Date: Thu Dec 3 18:15:40 2015 -0500 Fix missing update in cf4d5989383a Reported in: https://bugs.freedesktop.org/show_bug.cgi?id=81875#c7 Signed-off-by: James Cloos commit dbcb847a08c44d99e4e1de2ba777d63238fb0e03 Author: Alan Coopersmith Date: Sun Sep 27 18:38:32 2015 -0700 Get rid of some extraneous ; at the end of C source lines Signed-off-by: Alan Coopersmith Reviewed-by: Thomas Klausner commit 121a1bad334459f66f78bfca6df53dc841cf97f8 Author: Gunnar Hjalmarsson Date: Wed Sep 23 11:44:55 2015 -0400 Add compose file for pt_PT similar to pt_BR This is a forward of the Ubuntu bug https://launchpad.net/bugs/518056 One of the conclusions from the discussion on that bug report, which basically is about typing the ccedilla character easily on a non- Portuguese keyboard, is that X11 should include a compose file for pt_PT.UTF-8 similar to the file for pt_BR.UTF-8. FDO bug: https://bugs.freedesktop.org/show_bug.cgi?id=90300 Signed-off-by: Gunnar Hjalmarsson Signed-off-by: James Cloos commit 3f41d8a7f82eb5ffbd5c5d36472cf7043186b904 Author: Julien Cristau Date: Fri May 1 13:50:15 2015 +0200 Mark _XNextRequest as hidden It's only used inside XNextRequest(), so doesn't need to be exported. Signed-off-by: Julien Cristau Reviewed-by: Alan Coopersmith commit a72d2d06c002b644b7040a0a9936c8525e092ba8 Author: Christian Linhart Date: Mon Sep 7 17:17:32 2015 +0200 fix for Xlib 32-bit request number issues Make use of the new 64-bit sequence number API in XCB 1.11.1 to avoid the 32-bit sequence number wrap in libX11. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71338 Signed-off-by: Christian Linhart Signed-off-by: Olivier Fourdan Reviewed-by: Adam Jackson commit 58af066a764305c506efea7065ef7679369a1a98 Author: Thomas Klausner Date: Sun Jul 19 10:23:21 2015 +0200 Ignore test-driver (used by newer autoconf). Signed-off-by: Thomas Klausner Reviewed-by: Alan Coopersmith commit 80b9a346b9ba200fa4652560282e80d249519287 Author: Thomas Klausner Date: Sun Jul 19 10:22:45 2015 +0200 Do not return() after exit(). Signed-off-by: Thomas Klausner Reviewed-by: Alan Coopersmith commit c827edcd1c4a7f920aa25208083b5b58d60d2b44 Author: Ross Burton Date: Mon May 18 14:49:01 2015 +0100 Add missing NULL checks to ICWrap ICWrap.c dereferences the xim parameter passed in from client code without a NULL check. I have seen mplayer trigger this resulting in a segfault. In this case mplayer had called XOpenIM and NULL was returned which was later passed into XCreateIC. Patch originally by Drew Moseley . Signed-off-by: Ross Burton Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 26e0d2de294f8adf1ce65f1dbff0b59af41a00b9 Author: Alan Coopersmith Date: Thu Jun 4 20:51:17 2015 -0700 Replace Xmalloc+memset pairs with Xcalloc calls Signed-off-by: Alan Coopersmith commit f0286b2770ece10aef5e2e8c004260217f12fd25 Author: Bhavi Dhingra Date: Thu Jun 4 19:07:12 2015 -0700 omGeneric.c: Correct the parameter usage of sizeof Incorrect parameter usage with sizeof. Earlier passed argument FontData will be 4 bytes always as its a pointer hence the change is needed and FontDataRec should be used for memset. Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 47da70d75f9e48e800719c0db752f9ccd2d77aea Author: Peter Hutterer Date: Tue May 19 12:30:22 2015 +1000 Fix three "use of uninitialized variable" coverity warnings False positive, if rlen/nbytes are unset we quit early before using it. Still, initialize it so we don't have to deal with these warnings again. Signed-off-by: Peter Hutterer Reviewed-by: Hans de Goede Reviewed-by: Alan Coopersmith commit 19a30f17f30e9ae9641a7c0634fc52134208b060 Author: Peter Hutterer Date: Mon May 18 07:56:22 2015 +1000 Fix an indentation issue Signed-off-by: Peter Hutterer Reviewed-by: Hans de Goede Reviewed-by: Alan Coopersmith commit 013ccece124b990217ad3bcf2c41688e8fda1df8 Author: Peter Hutterer Date: Mon May 18 07:55:17 2015 +1000 Fix potential memory leak If we hit the depth limit, filename leaks. Move the depth check up before we allocate filename. Introduced in 226622349a4b1e16064649d4444a34fb4be4f464. Signed-off-by: Peter Hutterer Reviewed-by: Hans de Goede Reviewed-by: Alan Coopersmith commit d3415d1f052530760b4617db45affcb984cfe35c Author: Mike FABIAN Date: Mon Apr 20 17:59:30 2015 +0200 Fix spelling mistake introduced by 748d47e69f5c12d8557d56a8a8ec166588da7b93 Sorry, my patch to fix the spelling mistakes in the ks_IN and sd_IN locales fixed it only partly, I introduced a new spelling mistake in the sd_IN locales. This patch fixes this. Signed-off-by: James Cloos commit 748d47e69f5c12d8557d56a8a8ec166588da7b93 Author: Mike FABIAN Date: Wed Feb 19 11:46:45 2014 +0100 fix spelling mistakes in ks_IN and sd_IN devanagari locales The codeset must be *before* the modifier. See also: http://pubs.opengroup.org/onlinepubs/7908799/xbd/envvar.html opengroup> The syntax for these environment variables is thus defined as: opengroup> opengroup> [language[_territory][.codeset][@modifier]] Signed-off-by: James Cloos commit c64fe5553aa4738f9d1d74a795f5651fbb7b1b09 Author: Mike FABIAN Date: Wed Feb 19 11:50:55 2014 +0100 add be_BY.UTF-8@latin and sr_RS.UTF-8@latin to locale.dir See also: https://bugzilla.redhat.com/show_bug.cgi?id=1066910 If these are not in locale.dir, $ LANG=sr_RS.UTF-8@latin xterm and $ LANG=sr_RS@latin xterm give the warning: Warning: locale not supported by Xlib, locale set to C and some programs (like xmms) fail to find translations for Serbian in Latin because of this. Signed-off-by: James Cloos commit c85be01b006126c4407eebd1eb6e01a17312b7b4 Author: Alan Coopersmith Date: Sun Mar 22 16:46:45 2015 -0700 Move Compose \ o / to be with other emoji compose sequences Signed-off-by: Alan Coopersmith commit 5a499ca7b064bf7e6a4fcc169f22862dce0c60c5 Author: Alan Coopersmith Date: Mon Mar 9 15:28:29 2015 -0700 libX11 1.6.3 Signed-off-by: Alan Coopersmith commit c8e19b393defd53f046ddc2da3a16881221b3c34 Author: Joonas Javanainen Date: Thu Feb 5 17:31:04 2015 +0200 Fix XErrorEvent struct field order in man page In the man page the field "resourceid" was in a different place than in the actual struct layout in Xlib.h Signed-off-by: Joonas Javanainen Signed-off-by: Peter Hutterer commit ddf3b09bb262d01b56fbaade421ac85b0e60a69f Author: Ran Benita Date: Tue Feb 3 13:23:50 2015 -0500 compose: fix the description of modifiers in compose sequences The Compose format has a feature which allows specifying certain modifiers must (or must not) be present with a given keysym in the sequence. The grammar in imLcPrs.c and the Compose man page both do not match what the code actually does (see the handling of the variables `modifier_mask` and `modifier` in parseline() in imLcPrs.c, which are eventually matched as `ev->state & modifier_mask == modifier`). Also explicitly list the accepted modifier names, since they are not standard (e.g. "Ctrl" instead of "Control"). Signed-off-by: Ran Benita Signed-off-by: James Cloos commit 129f13f385c50e3d8b53ea7441b17386b0f36aeb Author: Ran Benita Date: Tue Feb 3 13:23:49 2015 -0500 xkb: fix misleading comment about consumed modifiers In the spec and the man page the `mods_rtrn` argument is described as "backfilled with unconsumed modifiers" but actually it is backfilled with the *consumed* modifiers. This is also mentioned a few lines below in each case. Signed-off-by: Ran Benita Signed-off-by: James Cloos commit 446f5f7f41317a85a0cd0efa5e6a1b37bc99fba2 Author: Ingo Schwarze Date: Tue Dec 9 10:44:13 2014 +0100 Fix pasto in XkbGetKeyBehaviors(3) manual Reviewed-by: Thomas Klausner Signed-off-by: Peter Hutterer commit f3831dde6972e4da9e018c6a5f4013d8756a5e78 Author: Benno Schulenberg Date: Sun Nov 23 21:35:36 2014 +0100 nls: Sorting compose sequences rigorously in mirroring pairs, as is custom. Signed-off-by: Benno Schulenberg commit a51681b60c84109fe19f5d449e13080522499324 Author: Benno Schulenberg Date: Thu Sep 19 16:42:01 2013 +0200 nls: Remove a duplicate locale name, and sort some others more strictly. Also improve the grammar of the initial comment. Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit 426b7f850f5376db96a4b12420ee141603fcc3cd Author: Benno Schulenberg Date: Fri Sep 20 12:37:29 2013 +0200 nls: Add a comment to the block of accented Hebrew letters. And align them in a nicer manner. Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit 7474c6f1ee78dd097b1d0b4c7e3e4ea41317e335 Author: Benno Schulenberg Date: Fri Sep 20 12:05:09 2013 +0200 nls: Add one lowercase compose variant for ®, to mirror those for ©. Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit 18dcd13514fa538afefa78c93523d9dbd4688e74 Author: Benno Schulenberg Date: Sat Sep 7 20:10:43 2013 +0200 nls: Adding the visual composing characters to two comment lines. The lines around them also contain the characters in the comments. Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit 18d8307575af748913d5da17e3de45da2a22ede4 Author: Benno Schulenberg Date: Sat Sep 7 20:09:32 2013 +0200 nls: Grouping a lone superscript minus together with its mates. Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit 33301cc45e6a2b8aa841ed6325547af970f8c4db Author: Benno Schulenberg Date: Sat Sep 7 19:53:38 2013 +0200 nls: Grouping the compose sequences for Dstroke/dstroke together. Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit 78fe1becb6c18fa33c0d5f04005b45d856f8952a Author: Gioele Barabucci Date: Sun Sep 21 23:05:55 2014 +0200 Add compose sequence for U+20B9 INDIAN RUPEE SIGN The compose sequence for the new Indian Rupee sign is modelled after the sequence for the Euro sign. Signed-off-by: Gioele Barabucci Signed-off-by: James Cloos commit 6101b967b641355dd863fd1ce52c6a7d58bcbe68 Author: Gabriel Souza Franco Date: Thu Jul 31 22:23:28 2014 -0300 Add double-arrow compose sequence Signed-off-by: Gabriel Souza Franco Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 368a6401c6a3275d3497fec38a3dcbc38cd9df60 Author: James Cloos Date: Fri Aug 1 18:30:42 2014 -0400 Add cs_CZ.UTF-8 locale to configure.ac Commit cf4d5989383a should have included this. Reported-by: Colin Harrison Signed-off-by: James Cloos commit cf4d5989383acc4ed1b7eebadde9f380f2129766 Author: James Cloos Date: Tue Jul 29 15:02:56 2014 -0400 Add nls for cs_CZ.UTF-8 Based on the iso8859-2 compose, and a bug report by Vladimír Marek, override the en_US.UTF-8 use of to enter »ǔ« instead to enter »ů«, and likewise for the majuscule, for the Czech locale. This evidently is the norm for Czech keyboards. Fixes bz#81875. The XI18N_OBJS and XLC_LOCALE.pre files are empty, as they are for several other locales. That may require an update. Reported-by: Vladimír Marek Signed-off-by: James Cloos commit d9f569572bd14db31921471e7b877523b5cf1e4c Author: Alan Coopersmith Date: Sat Jul 26 12:17:47 2014 -0700 Fix source paths for out-of-tree lintlib builds Signed-off-by: Alan Coopersmith commit 0885cad1e4a9ed57266582be320be55259c881bf Author: Alan Coopersmith Date: Sun Jul 20 09:21:20 2014 -0700 specs/XKB: Markup fractions as <{super,sub}script> instead of Matches the way they were styled in original doc, before conversion to DocBook. Signed-off-by: Alan Coopersmith commit d0a9e9d56bb003315787201ee525b4d00fd54e06 Author: Alan Coopersmith Date: Sat Jul 19 23:55:47 2014 -0700 specs/XKB: acknowledge my contributions Signed-off-by: Alan Coopersmith commit 9c0be82017f513e2eb63d59b095f1cf1955f2e2b Author: Alan Coopersmith Date: Sat Jul 19 23:53:48 2014 -0700 specs/XKB: Trim leading spaces off text lines perl -i -p -e 's{/\*(\S)}{/* \1}g;' *.xml Signed-off-by: Alan Coopersmith commit 75b0b10990f38d966c6fcc821bf15e58c5a90c91 Author: Alan Coopersmith Date: Sat Jul 19 20:30:55 2014 -0700 specs/XKB: Add olinks to libX11 for "X Library Functions Affected by Xkb" Signed-off-by: Alan Coopersmith commit 5009621799444e9d1d284719f871d00be13e7330 Author: Alan Coopersmith Date: Sat Jul 19 12:34:28 2014 -0700 specs/XKB: Fix miscelleanous typos & spelling errors Signed-off-by: Alan Coopersmith commit ac219bf1522a592bd3e3283b1a6ea3dfd2c3c48c Author: Alan Coopersmith Date: Sat Jul 19 00:46:41 2014 -0700 specs/XKB: add some more indexterms by hand Signed-off-by: Alan Coopersmith commit 5c3aa4c69e65ecf2e56d5e26f3833fb5d31973c2 Author: Alan Coopersmith Date: Sat Jul 19 00:48:02 2014 -0700 specs/XKB: fixup various formatting issues in s Signed-off-by: Alan Coopersmith commit 70c648ff852fd9bc784967cfc77ea70bd7f14c8d Author: Alan Coopersmith Date: Fri Jul 18 23:56:29 2014 -0700 specs/XKB: fixup various formatting issues in s Including translating some that are really just lists into markup. Signed-off-by: Alan Coopersmith commit 94b56774784ac00b9db02403aecea10bb0814c10 Author: Alan Coopersmith Date: Fri Jul 18 23:18:52 2014 -0700 specs/XKB: add some more links by hand random bits where a link looked handy Signed-off-by: Alan Coopersmith commit 7a15a934cdb07ed1b991bd0ef633f32ee00b1833 Author: Alan Coopersmith Date: Fri Jul 18 23:16:31 2014 -0700 specs/XKB: add links for terms in definition list under figure 1.1 Signed-off-by: Alan Coopersmith commit 92b86fc3c50fbb7ab2e36af10a2fb3fe6284f58c Author: Alan Coopersmith Date: Fri Jul 18 22:52:16 2014 -0700 specs/XKB: add links to more tables listing section references Signed-off-by: Alan Coopersmith commit 06a4483a05053b4f8d8c0d4cc0513c68ea912676 Author: Alan Coopersmith Date: Fri Jul 18 22:49:34 2014 -0700 specs/XKB: Table 4.1: remove page numbers & unnecessary para tags Page numbers refer to old doc format, didn't translate to new one Signed-off-by: Alan Coopersmith commit 61bd55c6d1ab211b89d604bd05555dc417f6e53d Author: Alan Coopersmith Date: Sat Jul 19 11:55:51 2014 -0700 specs/XKB: remove unwanted white space around C -> struct references perl -i -0 -p -e 's{\s*->\s*}{->}g' *xml Signed-off-by: Alan Coopersmith commit 2be0cc0b2abbcc98cfd150210dea415a04787251 Author: Alan Coopersmith Date: Fri Jul 18 22:26:20 2014 -0700 specs/XKB: replace -> with → when used as arrow, not in C structs Signed-off-by: Alan Coopersmith commit bf1f3d6f6f995303624679ae546f507c70967dc0 Author: Alan Coopersmith Date: Fri Jul 18 22:21:10 2014 -0700 specs/XKB: replace => with ⇒ for double arrows Signed-off-by: Alan Coopersmith commit c7ee427fc0a72abd4a4f147ab16a5d1128a6a2ba Author: Alan Coopersmith Date: Sat Jul 19 11:33:35 2014 -0700 specs/XKB: Markup some ranges with – instead of - commit ec4075303c6c0d1d64bfe378e585968f9a137da7 Author: Alan Coopersmith Date: Fri Jul 18 22:10:45 2014 -0700 specs/XKB: Markup some subtractions with − instead of - Signed-off-by: Alan Coopersmith commit 441a267e461132a38abed205245f028686526f1d Author: Alan Coopersmith Date: Fri Jul 18 22:04:40 2014 -0700 specs/XKB: make sure all files have DOCTYPEs so standard entities work Signed-off-by: Alan Coopersmith commit 88fd70bee410f290b4f540405fdc7ecd85c26f25 Author: Alan Coopersmith Date: Fri Jul 18 21:55:41 2014 -0700 specs/XKB: Markup quoted terms as instead of with "" Signed-off-by: Alan Coopersmith commit 3576587ff10334a8f48c34b4fe5b7e829dec9a1b Author: Alan Coopersmith Date: Sat Jul 19 09:01:26 2014 -0700 specs/XKB: fixup newlines between tags and punctuation Get rid of unwanted whitespace before punctuation by moving them to the lines with the tags, instead of before & after. perl -i -0 -p -e 's{\>\s*\n([\.,;:])}{>\1\n}g' *xml Signed-off-by: Alan Coopersmith commit 6d5ec492cd28c206423337f926503349702af5a6 Author: Alan Coopersmith Date: Fri Jul 18 21:29:33 2014 -0700 specs/XKB: fixup newlines between tags and parens Get rid of unwanted whitespace inside parens by moving them to the lines with the tags, instead of before & after. perl -i -0 -p \ -e 's{(? comments out of the way now. Signed-off-by: Alan Coopersmith commit ce95f152eda509263874c53fb7c6b4a6bdab2c29 Author: Alan Coopersmith Date: Mon Jul 7 22:59:25 2014 -0700 specs/XKB: Remove remaining xref comments All the places marked by these have been turned into the appropriate link, xref, or olink tags now. Signed-off-by: Alan Coopersmith commit 6590b66e19af8dff68888ac403ac82f5d585b4e2 Author: Alan Coopersmith Date: Mon Jul 7 22:56:36 2014 -0700 specs/XKB: make olinks to xkbproto for references in section 10.13 Signed-off-by: Alan Coopersmith commit fcda446877a62e7443d7bc704ba3610e90d1e755 Author: Alan Coopersmith Date: Mon Jul 7 22:22:28 2014 -0700 specs/XKB: Add

tags and make Figure references link to them Signed-off-by: Alan Coopersmith commit 087a2338476719e340dc3d5af0df6fdc4a26ce7a Author: Alan Coopersmith Date: Mon Jul 7 21:30:01 2014 -0700 specs/XKB: Turn Table references into links Adds id attributes to all table tags so we can link to them Signed-off-by: Alan Coopersmith commit 135fa07b74cb50172c6a75768d499cd87ddb336e Author: Alan Coopersmith Date: Sun Jul 6 21:29:59 2014 -0700 specs/XKB: Turn section references into xref links Signed-off-by: Alan Coopersmith commit 53e931d79926af8a3996253efd8b5f6c21d9e5d7 Author: Alan Coopersmith Date: Sun Jul 6 21:17:18 2014 -0700 specs/XKB: Turn Chapter references into xref links Signed-off-by: Alan Coopersmith commit b7f00ce5bcb0c00696bb82503ab548e14f04d17d Author: Alan Coopersmith Date: Sun Jul 6 20:40:18 2014 -0700 specs/XKB: Apply to semantic tag transformations from Xlib spec Signed-off-by: Alan Coopersmith commit b00a7ddff2744238fbfe31c2298b02028a45a6ff Author: Alan Coopersmith Date: Sun Jul 6 20:34:51 2014 -0700 specs/XKB: Markup function names as instead of Signed-off-by: Alan Coopersmith commit bfbb58b7679221cb5c9212665209ea9099ad079a Author: Alan Coopersmith Date: Sun Jul 6 20:25:46 2014 -0700 specs/XKB: normalize layout in xml files - Stop placing on empty space, commas, and periods. - Move periods & commas after closing tag - move open & close tags to same line, instead of mirroring nroff layout. Simplifies automating further transformations of these tags. Performed via: perl -i -0 -p \ -e 's{(\s*)}{}msg;' \ -e 's{([\s\.,]*)\s*}{\1}msg;' \ -e 's{\n([\.,])\s*}{\1\n}msg;' \ -e 's{([^\.])([\.,])\s*}{\1\2}msg;' \ -e 's{\s*\n\s*}{\n}msg;' *xml Signed-off-by: Alan Coopersmith commit b16ee69a0103109a661a88140a1765dcd7bda634 Author: Alan Coopersmith Date: Sun Jul 6 15:57:41 2014 -0700 specs/XKB: Convert to funcsynopsis+variablelist instead of informaltable Signed-off-by: Alan Coopersmith commit b41d43d4cf0c0a1a049a171ee8cf6fd8a3ee4335 Author: Alan Coopersmith Date: Sun Jul 6 19:29:38 2014 -0700 specs/XKB: Add index Signed-off-by: Alan Coopersmith commit 72ae1d793be078db521dda60af578ece71f364de Author: Alan Coopersmith Date: Sun Jul 6 13:21:40 2014 -0700 specs/XKB: Fix various markup issues in functiondecl tables - Merge some functionargdecl entries incorrectly split across rows - Add missing parameter name markup to some functionargdecls - Add missing function prototype markup to a functiondecl - Remove stray emphasis tags in a functiondecl Allows them to correctly convert to funcsynopsis markup in next step. Signed-off-by: Alan Coopersmith commit 9fdb973012de80ac60dbc59c39162f4e839fc5a4 Author: Alan Coopersmith Date: Sun Jul 6 12:15:23 2014 -0700 specs/XKB: Convert header filenames to filename tags Signed-off-by: Alan Coopersmith commit 5525e8433f93bce464412f27cffa203ea628f368 Author: Alan Coopersmith Date: Tue Jul 8 00:05:32 2014 -0700 specs/libX11: disengender a user reference Signed-off-by: Alan Coopersmith commit d8679eae9317b389ad4acb0430360ee0663e2af8 Author: Alan Coopersmith Date: Fri Jul 11 18:41:42 2014 -0700 specs/libX11: Correct value of IconicState to match Xutil.h Xutil.h has always had a value of 3 for IconicState, since 2 was previously used for the long-obsolete ZoomState, so make the spec match what programs have used for decades. Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 7ce2b0f12a48fb832f457cbafb0e1144ef557f9a Author: Alan Coopersmith Date: Fri Jul 11 10:34:08 2014 -0700 Use C99 named initializers to fill in events passed to XSendEvent Forces compiler to zero-fill unset fields in the struct (fixing bug 81236) and allows optimizer to order field initialization to best fit cache layout or other considerations. Before & after output of gcc -S on AMD64 shows insertion of "rep stosq" instructions to rapidly zero-fill structs. Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 169805e1dc8743b37b00e24cf3a5eb8748f733ad Author: Alan Coopersmith Date: Sun Jul 6 11:13:49 2014 -0700 Fix validation of ctrls parameter to XkbGetPerClientControls() Nothing in the XKB spec states that the memory pointed to by ctrls has to be initialized to any given value when passed to the function, only that it is set by the function to the values returned by the X server: http://www.x.org/releases/X11R7.7/doc/libX11/XKB/xkblib.html#The_Miscellaneous_Per_client_Controls The check for the incoming value seems to be copied from XkbSetPerClientControls without explanation. Instead change it to checking if ctrls is non-NULL, since there's no point asking the X server to return a value the caller won't even see. Found while investigating report from cppcheck-1.65: [src/xkb/XKB.c:699] -> [src/xkb/XKB.c:719]: (warning) Possible null pointer dereference: ctrls - otherwise it is redundant to check it against null. Signed-off-by: Alan Coopersmith commit 1e362fac92c6688fb42b195ccad16d7a337a34c1 Author: Alan Coopersmith Date: Sun Jul 6 10:54:57 2014 -0700 Fix map->num_types check in XkbAddKeyType() Check is intended to ensure we allocate at least XkbNumRequiredTypes in map, but was accidentally marked with a ! causing the wrong check. Reported-by: Harms Reviewed-by: Matthieu Herrb Signed-off-by: Alan Coopersmith commit ff9a5c199251a84fa59d14fd48dadb3f8920b54b Author: Alan Coopersmith Date: Sun Jul 6 15:08:21 2014 -0700 specs/libX11: Add missing spaces to 'unsignedint' & 'unsignedlong' types Signed-off-by: Alan Coopersmith commit a06ea86773568926c36ae650b188fc818d540db7 Author: Alan Coopersmith Date: Sun Jul 6 15:04:27 2014 -0700 specs/libX11: Fix height & width in parameter lists to be two separate entries "unsigned int width, unsigned int height", not a single parameter "height" of type "unsignedintwidth,". Signed-off-by: Alan Coopersmith commit e4db5e503682b3304fe82e4b17b419a8e0f0a9f2 Author: Alan Coopersmith Date: Sun Jul 6 14:38:10 2014 -0700 specs/libX11: Fix x & y in parameter lists to be two separate parameters "int x, int y" not a single parameter y of type "intx" Signed-off-by: Alan Coopersmith commit aa8bda0db2c6d82515b90ceb4a7d6403e38895e9 Author: walter harms Date: Sat Jun 7 12:03:17 2014 +0200 lcDefConv.c: fix use before check * Do not use variables before checked for NULL. * remove some superfluid spaces (Mark Kettenis) Signed-off-by: Harms Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit c0670e5d3ae330e611ecb05303d579a4f8a3d114 Author: Alan Coopersmith Date: Mon Jun 16 15:16:10 2014 -0700 Start adding Unicode 7.0 support to compose table New characters defined in http://www.unicode.org/charts/PDF/U1F300.pdf Signed-off-by: Alan Coopersmith commit a4679baaa18142576d42d423afe816447f08336c Author: walter harms Date: Sat Jun 7 11:54:34 2014 +0200 rm redundant null checks remove more redundant NULL checks note that _XkbFree() is really Xfree() Signed-off-by: Harms Reviewed-by: Rémi Cardona Signed-off-by: Peter Hutterer commit 602d7f5030fe93b2fe7f29fb7310deb6f50cb6df Author: walter harms Date: Sat Jun 7 15:17:27 2014 +0200 libX11: rm redundante NULL checks This patch removes the last remaining NULL checks for Xfree() Signed-off-by: Harms Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer commit d81fed46144d089bdfa1d916a28dffc9ebffe1e4 Author: walter harms Date: Fri Jun 6 22:53:05 2014 +0200 Remove more redundant null checks before Xfree() Signed-off-by: Harms Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 0b7fd7dbec136bae317bd9a329309eaa089beee3 Author: walter harms Date: Thu Jun 5 18:37:40 2014 +0200 Remove redundant null checks before free This patch removes some redundant null checks before free. It should not change the code otherwise. Be aware that this is only the first series. Signed-off-by: Harms Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 7d452fad5068ba92b964e92bc46708046f4044aa Author: walter harms Date: Wed Jun 4 17:12:31 2014 +0200 libX11/lcUTF8.c fix: dereferenced before check * Do not use variables before checked for NULL. Signed-off-by: Harms Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit a3808f51517a720e7ff738208af60865779dd6ef Author: walter harms Date: Wed Jun 4 17:10:20 2014 +0200 libX11/XKBNames.c fix: dereferenced before check * Do not use variables before checked for NULL. Signed-off-by: Harms Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit b3c9f6a17e430aabe16aecbe097f7312a0f6ff78 Author: walter harms Date: Wed Jun 4 17:08:12 2014 +0200 libX11/lcGenConv.c fix: dereferenced before check * Do not use variables before checked for NULL. Signed-off-by: Harms Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit c6bc28d433243c32b3f74955f1478451b4fd27b5 Author: Andreas Schwab Date: Sun Jan 19 16:59:13 2014 +0100 Restore lost tabs in sed commands Signed-off-by: Andreas Schwab Signed-off-by: Alan Coopersmith commit e3dc0d17339e61eaf0b51b8907510984e3bf23cb Author: Benno Schulenberg Date: Thu Sep 19 11:01:11 2013 +0200 nls: Transform Brazilian compose file to an include plus three overrides. Signed-off-by: James Cloos commit 16c87dda4da2271aaecc5d8b6fe6ecd072cc584c Author: Benno Schulenberg Date: Fri Sep 6 12:10:01 2013 +0200 nls: Adding the missing compose sequences with for O with ogonek. All other vowels with ogoneks can already be composed using . Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit 655b60f48376069750b151c46da836fdd411c83b Author: Benno Schulenberg Date: Fri Sep 6 12:04:24 2013 +0200 nls: Adding the missing postfix sequences for composing vowels with ogoneks. It existed for lowercase i, but not for uppercase I nor the other vowels. Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit 7f8f9a36ef901f31279c385caf960a22daeb33fe Author: Owen W. Taylor Date: Fri May 9 18:21:05 2014 -0400 Fix XNextRequest() after direct usage of XCB When XCB owns the X socket, dpy->request is not updated, so NextRequest() and XNextRequest() return the wrong value. There's nothing we can do to fix NextRequest() while retaining ABI compat, but change XNextRequest() to grab the socket back from XCB, updating dpy->request. Signed-off-by: Owen W. Taylor Reviewed-by: Uli Schlachter Signed-off-by: Alan Coopersmith commit 0f9e734ea96556fe750a4baf354d42d5a87bcd14 Author: Alan Coopersmith Date: Sun May 4 11:54:59 2014 -0700 Add missing .TE tags to end tables in Xkb man pages Signed-off-by: Alan Coopersmith commit 280274e5292e013b43e552274111fab434f5ed4e Author: Alan Coopersmith Date: Sun May 4 11:23:17 2014 -0700 XCreateGC.man: simplify table to work with Solaris tbl Having every table cell be a text diversion (T{...T}) was too much for Solaris tbl to handle, and thus "man XCreateGC" would print the error /usr/man/man3x11/XCreateGC.3x11: line 402: Too many text block diversions tbl quits and not display the table of mask bits or any text in the man page after that table. Since the #define column doesn't need special handling, making it not use text diversions brings the table under the tbl limit. Signed-off-by: Alan Coopersmith commit 93bb325a54025dd15f4744abce54b358960420f9 Author: James Cloos Date: Tue May 20 17:30:10 2014 -0400 Revert "nls: Adding compose sequences (with first) that GTK also has." Parenleft is already in use for sequences of the form <(> <)> to generate circled letters. Eg, generates ⓐ. This reverts commit f020235f4bd91fb6eade82f8c9f7b85a57981768. Signed-off-by: James Cloos commit 060707851be918f2f507a26d17b016f764ddf2b4 Author: Benno Schulenberg Date: Fri Sep 6 11:42:59 2013 +0200 nls: Adding accessible compose sequences for Ș and Ț (with comma below). Compose sequences with exist, but very few keyboard layouts contain that symbol. So a more usual character is needed to be able to easily compose Ș, ș, Ț and ț. The semicolon is normally only used for composing letters with ogoneks -- but only vowels take ogoneks, so the character is free for consonants, and thus is used here to compose commas below. It is somewhat fitting, because on most Romanian keyboards the Ș is placed on that key, and the Ț next to it. (Oh -- the more obvious sequences with were already taken for composing S and T with cedillas.) Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit ca435c2f753aa2961fb35ac448cdb2cc77112755 Author: Benno Schulenberg Date: Tue Sep 3 21:10:33 2013 +0200 nls: Ordering some compose sequences in a more customary way. The custom seems to be: pairing the ones that have only the sequence of two keys reversed, and putting the one with the diacritic first first. Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit f020235f4bd91fb6eade82f8c9f7b85a57981768 Author: Benno Schulenberg Date: Tue Sep 3 20:44:42 2013 +0200 nls: Adding compose sequences (with first) that GTK also has. Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit bda0b3b5bd19154206dc40166364e73d4b6b1374 Author: Benno Schulenberg Date: Tue Sep 3 11:14:16 2013 +0200 nls: Allowing Romanian Ă and ă to be composed also with lowercase . Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit 8be4610939b833587954957f5963eb4191b43d19 Author: Alan Coopersmith Date: Thu Mar 13 23:22:48 2014 -0700 Fix "follwing" typo in en_US.UTF-8/Compose comment Signed-off-by: Alan Coopersmith commit 6f30e9034f29c3ae6ad7e617b3d5e903aa107b6a Author: Reuben Thomas Date: Mon Jan 27 14:18:24 2014 +0000 en_US.UTF-8/Compose: Fix apparent copy-paste-o, changing capital to small A. Signed-off-by: Alan Coopersmith commit d6bd988bc00494914b38b95ee5df77ac4f32f19f Author: Peter Hutterer Date: Mon Mar 3 12:38:48 2014 +1000 man: fix man page for XkbGetMap Returned structure must be freed with XkbFreeKeyboard(). Reported-by: Morten Bøgeskov Signed-off-by: Peter Hutterer commit a6dcf2201a05adbff54122df05a1e6325936abb6 Author: Ran Benita Date: Tue Feb 11 13:26:16 2014 +0200 Remove dead USE_OWN_COMPOSE-protected code The build doesn't provide any way to define this option. It also refers to files (imComp.h) and functions (e.g. XimCompInitTables(), XimCompProcessSym()) which are not found anywhere, and the ordinary Compose implementation in xim doesn't use any of it. Signed-off-by: Ran Benita Reviewed-by: Julien Cristau Signed-off-by: Alan Coopersmith commit b64bee2ddb7b96f00713a8b8435f11ad9ac1c9e0 Author: Ran Benita Date: Sun Feb 16 15:24:58 2014 +0200 nls: always use XCOMM instead of # for comments in Compose.pre files Lines starting with # are considered as preprocessor directives in the .pre files. Fixes warnings like: :3:0: error: invalid preprocessing directive #Khmer Signed-off-by: Ran Benita Signed-off-by: James Cloos commit 470e2289a3ebc59c5a35e54e1adeb0f261d5bf88 Author: Alan Coopersmith Date: Thu Feb 6 13:48:08 2014 -0800 Fix typos in Xrm.c comments Signed-off-by: Alan Coopersmith commit aacf95dacc7c598e7297894580d4d655593813b2 Author: Marko Myllynen Date: Mon Jan 13 16:43:18 2014 +0200 Annotate Finnish Compose map with Unicode code points Scripted annotation, no functional changes. Signed-off-by: James Cloos commit 20fdccd81b54678376d49e00edfebbbe94951f07 Author: Teemu Likonen Date: Fri Jul 20 19:21:04 2012 +0300 Fix "RING ABOVE" key in the Finnish compose file The Finnish keyboard standard defines that must insert the character U+02DA RING ABOVE. Currently the Finnish Compose file inserts U+00B0 DEGREE SIGN even though the line's comment says "RING ABOVE". This commit changes the character to U+02DA RING ABOVE. Signed-off-by: Teemu Likonen Signed-off-by: James Cloos commit 8757e2ac8e04f2932ff437127f3e2ae9ac20c1d7 Author: Ran Benita Date: Wed Jan 29 02:11:47 2014 +0200 nls: remove duplicate 'ohorn' and 'uhorn' compose sequences Since == and == , when translated to keysyms: #define XK_Ohorn 0x10001a0 /* U+01A0 LATIN CAPITAL LETTER O WITH HORN */ #define XK_ohorn 0x10001a1 /* U+01A1 LATIN SMALL LETTER O WITH HORN */ (and similarly for uhorn), there is no need to have both names. Remove the unicode literal ones. Signed-off-by: Ran Benita Signed-off-by: James Cloos commit b98998cb3bea7cb3005f2e9d5bc5332d14b1d5d3 Author: Alan Coopersmith Date: Sat Jan 18 22:35:18 2014 -0800 Add RANDR 1.4 requests & events to XErrorDB Checked against randrproto.txt & randr.h Signed-off-by: Alan Coopersmith commit 321392ded15a7ee9d177d4ebe8846336ba76741c Author: Alan Coopersmith Date: Fri Jan 3 20:04:33 2014 -0800 Remove unused ETEST & ESZTEST macros from XlibInt.c Left behind when 15e5eaf62897 removed support for building without XCB. Signed-off-by: Alan Coopersmith Reviewed-by: Jasper St. Pierre commit 1ffc0c5503d4f419fdbc765243832a53491bf5bc Author: Alan Coopersmith Date: Thu Dec 26 09:26:13 2013 -0800 _XkbReadGeomOverlay: check for NULL first, then use pointer Flagged by cppcheck 1.62: [lib/libX11/src/xkb/XKBGeom.c:479] -> [lib/libX11/src/xkb/XKBGeom.c:480]: (warning) Possible null pointer dereference: row - otherwise it is redundant to check it against null. Signed-off-by: Alan Coopersmith commit ddf5f130cc29bb3bf8b9c757dcbac31bc56e9379 Author: Alan Coopersmith Date: Thu Dec 26 09:22:49 2013 -0800 XkbSelectEventDetails: remove unnecessary assignments clear & selectAll are set to 0 already a few lines earlier, affectWhich is set to XkbMapNotifyMask a few lines later. None are used between the other assignments and the removed ones. Signed-off-by: Alan Coopersmith commit 3d69b0a83e62f8f6fbdd952fc49cdbdf8825e1e6 Author: Jon TURNEY Date: Thu Oct 7 18:46:08 2010 +0100 Don't try so hard to find a matching font with the given encoding See http://sourceware.org/bugzilla/show_bug.cgi?id=10948 Currently, if the locale is UTF-8, no CJK fonts are installed, and someone does XCreateFontSet() with a font name of "*", we end up asking the server to list the (non-existent) fonts 11 times for each CJK encoding, which can take a while. A * wildcard can match multiple components in a XLFD name in XListFonts(), so there's no need to try adding more than one to get a match. We do try once with a leading '*-' in case the fontname isn't a full well-formed XLFD name, maybe even that isn't needed? (See also http://invisible-island.net/xterm/xterm.faq.html#slow_menus) Signed-off-by: Jon TURNEY Signed-off-by: Alan Coopersmith commit 7e163300735d4bcd3386b86eec112acdad139c59 Author: Alan Coopersmith Date: Mon Dec 2 21:51:27 2013 -0800 unifdef -UISC Signed-off-by: Alan Coopersmith commit 1e43c262d13cab2b759665f9f13bdedbc7afbfd4 Author: Benno Schulenberg Date: Thu Sep 19 13:20:05 2013 +0200 nls: Fix transposed locale identifier for Khmer. Signed-off-by: Benno Schulenberg Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 0e45f64766c0557c8e99a979c70ca6f55664dae7 Author: Alan Coopersmith Date: Sat Nov 16 20:21:54 2013 -0800 Drop X_LOCALE fallback for OS'es without setlocale() C89 or bust! This was documented as being needed for "only Lynx, Linux-libc5, OS/2" and has never been enabled in modular builds, since none of those platforms have had anyone step up to add support since the X11R7 conversion to autotools. Mostly performed with unifdef -UX_LOCALE, followed by removal of files left without any purpose, and manual cleanup of remaining references. Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit 6cb02b166361200da35ba14f52cd9aaa493eb0ea Author: Alan Coopersmith Date: Wed Oct 23 10:37:53 2013 -0700 Xcms file parsing should not require the impossible to succeed The field2 helper function, to split lines from Xcms.txt files into two tab delimited fields, contained a check: if ((*pBuf != '\n') || (*pBuf != '\0')) { return(XcmsFailure); which would cause it to return failure unless *pBuf had a value that was simultaneously equal to both \n & \0, and no one wants to live in a world where that could ever be true. This has gone unnoticed since 1991, since this only caused lines in Xcms.txt that started with whitespace to be rejected, but now gcc -Wlogicalop has brought it to our attention, and https://bugs.freedesktop.org/show_bug.cgi?id=70803 was filed. Now that we see it, and cannot unsee it, we change it to use the same logic as the check at other points in this function, to return failure only if we hit \n or \0 before we find the first non-whitespace character, so that lines starting with whitespace will have the space skipped over to get to the color name to be defined. Signed-off-by: Alan Coopersmith Reviewed-by: Dan Nicholson commit 18a5278b008e9faa59b346fcab18a8d74b875fda Author: Gaetan Nadon Date: Sat Sep 28 17:33:52 2013 -0400 makekeys: don't need to use target-specific CFLAGS It's the only thing built in that directory, so we can use AM_CFLAGS and AM_CPPFLAGS as usual. Reviewed-by: Alan Coopersmith Signed-off-by: Gaetan Nadon commit 5dcb40f28d59587597d2ff6e6ac64c71cfe6ff7b Author: James Cloos Date: Tue Sep 17 12:50:42 2013 -0400 nls/en_US.UTF-8/Compose.pre: Fix typo. Fix typo added in 215ce6a67863, s/actute/acute/. Fixes bug #69476. Reported by Jean Krohn. Signed-off-by: James Cloos commit cb107760df33ffc8630677e66e2e50aa37950a5c Author: Alan Coopersmith Date: Sun Sep 8 18:37:01 2013 -0700 libX11 1.6.2 commit 215ce6a67863de7acfd6dd3562b4fd97ef87b411 Author: Benno Schulenberg Date: Sun Sep 1 12:38:30 2013 +0200 nls: Adding more accessible compose sequences for J́ and j́. Few keyboards have an key, so this adds the much more accessible and usual compose sequences with , ánd the most comfortable ones with . Signed-off-by: Benno Schulenberg Signed-off-by: James Cloos commit e9b14d10d0258bfcc273ff8bc84cd349dccda62c Author: Alan Coopersmith Date: Sat Aug 24 17:27:43 2013 -0700 Bug 68413 - [Bisected]Error in `xterm': realloc(): invalid next size Pass *new* size to realloc, not old size. Signed-off-by: Alan Coopersmith commit c2b8e30790c21d6386767265263b3294ce1b1f9a Author: Alan Coopersmith Date: Fri Aug 16 21:04:02 2013 -0700 Stop checking for HAVE_DIX_CONFIG_H on the client side Leftover from when these XKB files were shared with the server sources and could be compiled in either the client or server, with the different autoconf config files in each. Signed-off-by: Alan Coopersmith commit 84276609b2f0aec74fb464c428c7db5714b0fcfc Author: Alan Coopersmith Date: Fri Aug 16 18:27:28 2013 -0700 Rearrange some variable declarations & initializations in XKB Little things noticed during XKB restyling that seemed to make the code easier to read. Signed-off-by: Alan Coopersmith commit b90b7e859cf45ec76921fa21bbfc1f3840d6e8d1 Author: Alan Coopersmith Date: Sun Aug 11 13:29:33 2013 -0700 Reindent XKB code to X.Org standard style Signed-off-by: Alan Coopersmith commit c0a0f78eb49c2e4ad956209de77475c85b9314ea Author: Alan Coopersmith Date: Fri Aug 16 18:14:14 2013 -0700 Fix overflow checks in _XkbReadKeySyms when key_sym_map is already created We were checking to make sure that the largest keysym value was within the range of the allocated buffer, but checking against different limits in the not-yet-allocated vs. the already-allocated branches. The check should be the same in both, and reflect the size used for the allocation, which is based on the maximum key code value, so we move it to be a common check, before we branch, instead of duplicating in each branch. map->key_sym_map is an array of XkbSymMapRec structs, [0..max_key_code] map->syms is the array for which num_syms is recorded, hence is not the right value to check for ensuring our key_sym_map accesses are in range. Signed-off-by: Alan Coopersmith Reported-by: Barry Kauler Tested-by: Barry Kauler commit bea6cbd027973142fc64532274e1d16861b47190 Author: Alan Coopersmith Date: Sun Aug 11 17:02:21 2013 -0700 Remove long unused src/udcInf.c I can find no record of what this file was for. Neither the X11R6.8.2 monolith Imakefile nor any modular release Makefile.am have ever built it and nothing else references it. Signed-off-by: Alan Coopersmith commit bf3501e0395abe890acfea98fdd9f50a6966f118 Author: Alan Coopersmith Date: Sun Aug 11 00:07:33 2013 -0700 Remove unnecessary casts of pointers to (char *) in calls to Xfree() Left one cast behind that is necessary to change from const char * to char * in src/xlibi18n/lcCharSet.c. Signed-off-by: Alan Coopersmith commit 6ead9dd92ab90aabd9f0e328d59597e6b5bc09d3 Author: Alan Coopersmith Date: Sat Aug 10 23:57:55 2013 -0700 Don't cast sizeof() results to unsigned when passing to Xmalloc/Xcalloc sizeof() returns size_t, malloc() & calloc() expect sizes in size_t, don't strip down to unsigned int and re-expand unnecessarily. Signed-off-by: Alan Coopersmith commit 25a7a329def672fc8d26078538173777850c6390 Author: Alan Coopersmith Date: Sat Aug 10 23:51:08 2013 -0700 Remove even more casts of return values from Xmalloc/Xrealloc Signed-off-by: Alan Coopersmith commit f8fa16092a148b74ca35b4beb182053352606f2f Author: Alan Coopersmith Date: Sat Aug 10 23:05:13 2013 -0700 xlibi18n: fix argsize argument to _XlcParsePath The array is defined as having NUM_LOCALEDIR entries, so use that instead of hardcoded 256 value (the other two calls already did this). Reported by parfait: Buffer overflow (CWE 120): In pointer dereference of argv[argc] with index argc Pointer size is 64 elements (of 8 bytes each), index is 255 at line 82 of src/xlibi18n/lcFile.c in function 'parse_line'. called at line 178 in function '_XlcParsePath' with argv = argv. called at line 722 in function '_XlcLocaleLibDirName' with argv = args, argsize = 256. at line 82 of src/xlibi18n/lcFile.c in function 'parse_line'. called at line 178 in function '_XlcParsePath' with argv = argv. called at line 638 in function '_XlcLocaleDirName' with argv = args, argsize = 256. [ This bug was found by the Parfait 1.2.0 bug checking tool. http://labs.oracle.com/pls/apex/f?p=labs:49:::::P49_PROJECT_ID:13 ] Signed-off-by: Alan Coopersmith commit e7d46c6452c0b90fd66ae9f538546b968e0dd608 Author: Alan Coopersmith Date: Sat Aug 10 22:32:42 2013 -0700 i18n modules: Fix some const cast warnings imRm.c: In function '_XimSetICMode': imRm.c:2419:37: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] imRm.c:2420:30: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] lcGenConv.c: In function 'byteM_parse_codeset': lcGenConv.c:345:13: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] Signed-off-by: Alan Coopersmith commit cbd86eccf175dc82a5cbcea54c8bd21ce18b70c0 Author: Alan Coopersmith Date: Sat Aug 10 22:21:54 2013 -0700 xlibi18n: Fix a bunch of const cast warnings Add const qualifiers to casts where needed, remove other casts that are no longer needed. Signed-off-by: Alan Coopersmith commit eb3676113fc2dd0f34d92b89beb81b3f61569aa1 Author: Alan Coopersmith Date: Sat Aug 10 22:18:00 2013 -0700 Fix const handling in XSetLocaleModifiers Instead of reusing the input parameter to store the output, make a result variable instead, so that there's less const confusion. Fixes gcc warnings: lcWrap.c: In function 'XSetLocaleModifiers': lcWrap.c:87:18: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] lcWrap.c:91:25: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] lcWrap.c:93:12: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] Signed-off-by: Alan Coopersmith commit 8ebbffa98563960910152e4f2e31cb032375d871 Author: Alan Coopersmith Date: Sat Aug 10 21:46:37 2013 -0700 Constify lc_name argument to _XlcLocaleDirName() & _XlcLocaleLibDirName() Makes code considerably less crufty and clears gcc warnings: XlcDL.c: In function '_XlcDynamicLoad': XlcDL.c:384:44: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] XlcDL.c:386:51: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] Signed-off-by: Alan Coopersmith commit 07e4e864107b38c2f393564fdacc90f4e858f23f Author: Alan Coopersmith Date: Sat Aug 10 13:37:53 2013 -0700 init_om: remove unneeded extra copy of string to local buffer Strings from the supported_charset_list[] were being copied one by one to a stack buffer, and then strdup called on that buffer. Instead, just strdup the original string, without the local copy, and use a more traditional for loop, so it's easier to figure out what the code is doing (cleaning up a gcc const-cast warning in the process). Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 1cec14dad904ba21a861f4af131be5982ecb83dd Author: Alan Coopersmith Date: Sat Aug 10 12:34:53 2013 -0700 Delete unused XKB_INSURE_SIZE macro from XKBlibint.h Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 5f32182c7c4045540ff3833c48ee24a3a25726e2 Author: Alan Coopersmith Date: Sat Aug 10 12:19:17 2013 -0700 miRegionOp(): ensure region size is not updated if realloc fails This function performs operations on a region, and when finished, checks to see if it should compact the rectangle list. If the number of rectangles for which memory is allocated in the list is more than twice the number used, it tries to shrink. realloc() should not fail in this case, but if it does, might as well keep the correct value for the number of allocated rectangles, so we don't try to grow it unnecessarily later if adding to the region. Signed-off-by: Alan Coopersmith commit bd2a0b5a187798bb2e2f05dc5062ca79e37075dd Author: Alan Coopersmith Date: Sat Aug 10 12:19:17 2013 -0700 miRegionCopy(): handle realloc failure better Zero out the region size when freeing the region so callers don't think there's anything there. (Pointer is already set to NULL from the realloc result itself.) Return 0 to the callers, and have them cascade that back to their callers to indicate failure, instead of their usual return value of 1 on success. Signed-off-by: Alan Coopersmith commit 5dc8b5385d513bbda88697c2372db750d23f46d4 Author: Alan Coopersmith Date: Sat Aug 10 11:27:22 2013 -0700 Avoid memory leak/corruption if realloc fails in Xregion.h:MEMCHECK macro Signed-off-by: Alan Coopersmith commit 453c4ee436ef32d91501d7736d7a91c1aeafc565 Author: Alan Coopersmith Date: Sat Aug 10 12:07:51 2013 -0700 Avoid memory leak/corruption if realloc fails in imLcPrs.c:parseline() Signed-off-by: Alan Coopersmith commit b3fea74ec5b7d4f83755a52a8d49c564b71c6d12 Author: Alan Coopersmith Date: Sat Aug 10 12:30:39 2013 -0700 lcDB.c: ensure buffer size is updated correctly if realloc fails Signed-off-by: Alan Coopersmith commit 43bb822c714a73c3b2d15e621ffb3333cd10da8c Author: Alan Coopersmith Date: Sat Aug 10 11:07:47 2013 -0700 Avoid memory leak/corruption if realloc fails in XlcDL.c:resolve_object() Previously, if realloc failed to increase the size, we'd still record that we had allocated the larger size, but the pointer to it would be NULL, causing future calls to be broken, and the previous allocation to be lost/leaked. Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 5d47a39978e92bb34ec928b1b15d71c0c2434870 Author: Alan Coopersmith Date: Fri Aug 9 23:33:03 2013 -0700 omGeneric.c: convert sprintf calls to snprintf Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 88a27a2aa9b7d35cb79b16334ea3413e572b724a Author: Alan Coopersmith Date: Fri Aug 9 23:30:30 2013 -0700 ximcp/imRm.c: convert sprintf calls to snprintf Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 4fadae243fb485628c9a137f5da3489ed6214b21 Author: Alan Coopersmith Date: Fri Aug 9 23:02:12 2013 -0700 xlibi18n: convert sprintf calls to snprintf Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 36a7edf0e5edfc5ef4ff2c3a8b4fa3dc4796e854 Author: Alan Coopersmith Date: Fri Aug 9 23:02:12 2013 -0700 lcfile: skip over any null entries in args list Previous code seemed to assume that printf("%s", NULL) would result in a 0-length string, not "(null)" or similar, but since there's no point looking for files in "(null)/filepath...", instead we just skip over NULL entries in search paths when generating file names. In the *DirName() functions, this effectively just moves the "bail on NULL in arg[i]" check up from the later code that assigned it to targetdir and then bailed if that was NULL. Not sure how there ever could be a NULL in arg[i], given the current implementation of XlcParsePath, but it's easy enough to check once and reject up front instead of on every reference. Signed-off-by: Alan Coopersmith commit ee0824f24392d5ca3d5fd5f5ed8d78c0d892f7c0 Author: Alan Coopersmith Date: Fri Aug 9 22:00:09 2013 -0700 Fix file leak on malloc error in XlcDL.c:resolve_object() File Leak: Leaked File fp at line 219 of lib/libX11/src/xlibi18n/XlcDL.c in function 'resolve_object'. fp initialized at line 198 with fopen [ This bug was found by the Parfait 1.2.0 bug checking tool. http://labs.oracle.com/pls/apex/f?p=labs:49:::::P49_PROJECT_ID:13 ] Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 9b291044a240e5b9b031ed814e0c84e53a1c3084 Author: Julien Cristau Date: Sat Jun 15 18:02:21 2013 +0200 Add missing locales to configure.ac Commits 40761898692e5063957bfa2518cca3d35b2e354a and f198c6aa98f88ff285d903175a3c4c0fd33a4575 added two new locales (sr_CS.UTF-8 and km_KH.UTF-8), but didn't list them in configure.ac, meaning they're not included in tarballs. Signed-off-by: Julien Cristau Reviewed-by: James Cloos commit 8f58e54a5f46c3cd4897a23b89950f4800ae38d4 Author: ISHIKAWA,chiaki Date: Tue Dec 18 15:28:05 2012 +0000 Fix bogus timestamp generated by XIM Fix bogus timestamp generted by XIM due to uninitialized data field. Also set appropriate serial, too. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=39367 Signed-off-by: Chiaki ISHIKAWA Signed-off-by: Alan Coopersmith commit e7fd6f0eda57300df4d6b695b7064610ca5dec57 Author: Egbert Eich Date: Thu Jun 16 18:47:49 2011 +0200 XIM: Fix sync problem on focus change. XSetICFocus() and XUnsetICFocus() are both asynchronous events. This is a pretty stupid idea: those functions may undo certain settings on the client side for which requests from the server may still be in the queue unprocessed. Thus things may be set in the wrong order ie instead of set -> unest it will be unset -> set. Moreover there is no way for either the client or the server to cause the event queue to be flushed - which is pretty bad as XIM is bidirectional. The scenario is as follows: Two ICs are created: ic1 = XCreateIC(im, XNInputStyle, XIMPreeditCallbacks | XIMStatusCallbacks, XNClientWindow, window, XNPreeditAttributes, preedit_attr, XNStatusAttributes, status_attr, NULL); ic2 = XCreateIC(im, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, XNClientWindow, window, NULL); Then the focus is removed from ic2: XUnsetICFocus(ic2); If SCIM is used as the input server it will send a bunch of requests following an XCreateIC(). One of the requests registers a key release filter. XUnsetICFocus() unsets both key press and release filters. Since it is asynchronous, the input server requests to register key press and release filters may not have been processed, when XUnsetICFocus() is called. Since there is no explicite way for client programs to enforce the request queue to be flushed explicitely before an X[Set/Unset]ICFocus() call it would be safest to make those two calls synchronous in the sense that they ensure the request queue has been handled before they execute. The easiest way to do this from Xlib is thru a call to XGetICValues() which sends a request to the server and subsequently reads the queue from the server to the client. This will cause all outstanding requests in the queue to be read and handled. This is an ugly hack and this could be fixed directly in the client, however it seems to be easier to fix Xlib than to fix numerous clients. This problem arose since there is no well documented way how to handle and synchronize XIM requests and not all input servers send requests when an IC is created. This has been discussed extensively in: https://bugzilla.novell.com/show_bug.cgi?id=221326 Signed-off-by: Egbert Eich commit 26ec7d3821bc19debc73c8c3e42e6e33ef6f856e Author: Egbert Eich Date: Thu Jun 16 17:28:39 2011 +0200 XIM: Fix race on focus change: set 'FABRICATED' only when keyev filters in place. When synthesized key events are sent on commit XIM sets the 'fabricated' flag so that the keypress handler knows that these were not real events. This also happens when committing due to the loss of focus. However in this case the keypress/release filters which consume and unset this flag are no longer in the filter chain. So the flag is erronously set when a real keyboard event is received after focus has been regained. So the first event is wrongly treated as a fabricated key in the keypress handler which will at the same time reset the flag so the second key event is treated correctly. This fix only sets the flag when at least one of the keyboard filters is in place. How to reproduce this bug: run scim, choose a Japanese input method start two instances of xterm: start typing in one xterm (this should pop up an IM window). Without comitting (hitting 'enter') move focus to the other xterm, then move focus back. Start typing again. The first character will be committed immediately without popping up an input window. With this fix this behavior is gone. See also: https://bugzilla.novell.com/show_bug.cgi?id=239698 Signed-off-by: Egbert Eich commit 44f84223f5e2dd46883fcbd352af2798bfa9aeb6 Author: Alan Coopersmith Date: Mon Jul 29 21:29:49 2013 -0700 libX11 1.6.1 Signed-off-by: Alan Coopersmith commit d19cfaca15826943d3c637ef7fa5db0a23d5feed Author: Alan Coopersmith Date: Sat Jul 27 12:19:00 2013 -0700 Fix undefined XCMSDIR error when building lint library Signed-off-by: Alan Coopersmith commit 3083cd43d7dcd59da587975e7cadda681cd8a103 Author: Alan Coopersmith Date: Sat Jul 27 00:36:08 2013 -0700 Add ku_TR.UTF-8 (Kurdish language, Turkey region) to compose/locale.dir Upstreaming from changes originally integrated into OpenSolaris under Sun bug id 6882572. Signed-off-by: Alan Coopersmith Reviewed-by: Thomas Klausner commit 208e586c808e88a2ee819e4450dc27f557afc2bf Author: Alan Coopersmith Date: Sat Jul 27 01:03:18 2013 -0700 omGeneric: remove space between struct name & member name Signed-off-by: Alan Coopersmith commit 7db74514e454d3fc4ff70aa08ddac66bfffda4dd Author: Alan Coopersmith Date: Tue Jul 23 22:18:46 2013 -0700 Refactor common code from XAddHost & XRemoveHost into single function On the Xlib side, the only real difference is the mode flag we send to the server with the address, so just make that an argument to the function with the common code for packing the address into the request. (Aside from labels, gcc 4.7.2 generates identical code before & after this change due to inlining, verified via diff of gcc -S output.) Signed-off-by: Alan Coopersmith commit 3292195a64a9ce4f0d27134cd544651ec647e728 Author: Alan Coopersmith Date: Tue Jul 23 22:11:34 2013 -0700 XSetModifierMapping: Use Data instead of GetReqExtra Handle arbitrary length data in the same fashion as other calls, avoiding need to ensure it fits all in the request buffer. Signed-off-by: Alan Coopersmith commit feb131b18aee31c2c125dc3275b0260940245882 Author: Kees Cook Date: Sun Jun 9 11:13:43 2013 -0700 libX11: check "req" when calling GetReqExtra This fixes the two callers of GetReqExtra to check that "req" is non-NULL to avoid crashing now that GetReqExtra does internal bounds-checking on the resulting buffer sizes. Additionally updates comment describing return values to use names instead of only literal values. Signed-off-by: Kees Cook Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 54540d7cba0c2bfe9176221c7bca910058d304df Author: Kees Cook Date: Sun Jun 9 11:13:42 2013 -0700 libX11: check size of GetReqExtra after XFlush Two users of GetReqExtra pass arbitrarily sized allocations from the caller (ModMap and Host). Adjust _XGetRequest() (called by the GetReqExtra macro) to double-check the requested length and invalidate "req" when this happens. Users of GetReqExtra passing lengths greater than the Xlib buffer size (normally 16K) must check "req" and fail gracefully instead of crashing. Any callers of GetReqExtra that do not check "req" for NULL will experience this change, in the pathological case, as a NULL dereference instead of a buffer overflow. This is an improvement, but the documentation for GetReqExtra has been updated to reflect the need to check the value of "req" after the call. Bug that manifested the problem: https://bugs.launchpad.net/ubuntu/+source/x11-xserver-utils/+bug/792628 Signed-off-by: Kees Cook Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 24d3ee0d08f24e23c91d55702f010f73d7b908e5 Author: Thomas Klausner Date: Tue Jun 25 22:35:29 2013 +0200 Tighten out-of-range comparisons. [For all of these, LONG_MAX was the correct value to prevent overflows for the recent CVEs. Lowering to INT_MAX catches buggy replies from the server that 32-bit clients would reject but 64-bit would accept, so we catch bugs sooner, and really, no sane & working server should ever report more than 2gb of extension names, font path entries, key modifier maps, etc. -alan- ] Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 6d926088d80a08e13e6d6c4ff207b81ad52e667f Author: Thomas Klausner Date: Tue Jun 25 18:34:32 2013 +0200 Fix out-of-range comparison in _XF86BigfontQueryFont clang complained (correctly): warning: comparison of constant 768614336404564650 with expression of type 'CARD32' (aka 'unsigned int') is always true [-Wtautological-constant-out-of-range-compare] [While LONG_MAX is correct, since it's used in size_t math, the numbers have to be limited to 32-bit range to be usable by 32-bit clients, and values beyond that range are far more likely to be bugs in the data from the server than valid numbers of characters in a font. -alan- ] Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 383e2b0d029482a0f4c39fe00e15397538576fc1 Author: Thomas Klausner Date: Tue Jun 25 18:33:56 2013 +0200 Check for symbol existence with #ifdef, not #if Reviewed-by: Jamey Sharp Signed-off-by: Alan Coopersmith commit 9955d1c8de994a90fe7f2e3187e7362611d7d265 Author: Thomas Klausner Date: Tue Jun 25 18:33:07 2013 +0200 Use newer callback-based API for XIM. Let libX11 load and make available the newer (X11R6) callback-based API for XIM (expected by emacs). This patch updates the files to match the other nls/ files. Patch from Ian D. Leroux on pkgsrc-users@NetBSD.org following a hint by Nhat Minh Lê . Reviewed-by: James Cloos Signed-off-by: Alan Coopersmith commit a17ceb7100bd36c2db210473ee701deb5d515731 Author: Thomas Klausner Date: Tue Jun 25 18:31:32 2013 +0200 Stop truncating source to destination length if it is larger. It seems useless to do that since the code tests for both source length and destination to be non-zero. This fixes a cut'n'paste problem in xterm where the paste length was limited to 1024 (BUFSIZ) in button.c. Signed-off-by: Alan Coopersmith commit a336db9a0add3ae0783dda6e52459236622a12af Author: Alan Coopersmith Date: Mon Jun 24 23:02:05 2013 -0700 Require ANSI C89 pre-processor, drop pre-C89 token pasting support Signed-off-by: Alan Coopersmith commit 9dfb0f3c0a761590bcdc1f3396b1e064da4e18e8 Author: Alan Coopersmith Date: Fri Jun 7 11:30:11 2013 -0700 troff macro expansion in specs/libX11 Many of the custom nroff macros (.ds ) were left unsubstituted in the nroff->docbook conversion. This substitution is now performed, via the following perl script: #! /usr/bin/perl -w -i use Text::Wrap; while ($_ = <>) { while ($_ =~ m/\((\w+)\b/g) { my $m = $1; if (exists $macro{$m}) { $_ =~ s/\($m/$macro{$m}/; $_ = wrap('', '', $_); $_ =~ s/[ \t]+$//; } } if ($_ =~ /\/) { my ($m, $s) = ($1, $2); $macro{$m} = $s; while ($macro{$m} =~ /\\\s*$/) { $macro{$m} =~ s/\\\s*$//ms; $macro{$m} .= <>; chomp($macro{$m}); } $macro{$m} =~ s/\\ / /g; } else { print $_; } } Signed-off-by: Alan Coopersmith commit 20c17bd9ebf767a24643279e45866dddcb57b5ce Author: Alan Coopersmith Date: Fri Jun 7 09:27:26 2013 -0700 specs/libX11: correct prototype for XListPixmapFormats/XImageByteOrder The XListPixmapFormats arguments was being shown with XImageByteOrder's name and return types. Appears to have been a glitch in the nroff -> docbook conversion. Reported-by: ZHANG Zhaolong Reviewed-by: Jamey Sharp Signed-off-by: Alan Coopersmith commit ed3d830243c8a0eefaf24e15b11823272ffe5049 Author: Thomas Klausner Date: Sun Jun 2 20:49:55 2013 +0200 Deal with the limited range of VAX floating point numbers when compiling for VAX. Signed-off-by: Alan Coopersmith commit 0a48235d63639fb917c44d27c86e928e79fbac66 Author: Eric S. Raymond Date: Thu Jun 6 16:43:56 2013 -0400 Remove call to undefined macro. commit 9e4719b9b719f2f8d255f6778e2e8c1809e32599 Author: Eric S. Raymond Date: Thu Jun 6 16:42:20 2013 -0400 Remove call to undefined macro. commit 8496122eb00ce6cd5d2308ee54f64b68c378e455 Author: Alan Coopersmith Date: Mon Jun 3 20:06:43 2013 -0700 Update README to reflect where to find the Xlib specs now Signed-off-by: Alan Coopersmith commit 655d631e86c95b14888758b27ed2836ca3e3ce86 Author: Alan Coopersmith Date: Mon Jun 3 19:21:06 2013 -0700 libX11 1.6.0 Signed-off-by: Alan Coopersmith commit 4a89b7ea908554628f374537a79931c8006a2de3 Author: Thomas Klausner Date: Sun Jun 2 11:49:54 2013 -0700 cmsMath.c: Add missing stdio header for printf(3) in DEBUG build. Signed-off-by: Alan Coopersmith commit 96dcf747f13b26b8e4d17b1bc8605d933c3e1dc6 Author: Thomas Klausner Date: Sun Jun 2 20:49:48 2013 +0200 XCreateGC man page: Avoid .TS H and .TH macros Avoid .TS H and .TH for now as it doesn't alter the output in this case, and improve the output with mandoc(1). Signed-off-by: Alan Coopersmith commit 95a388158c9d73df7d24016d6a3d61506d7d53a4 Author: Alan Coopersmith Date: Thu May 23 19:43:35 2013 -0700 libX11 1.5.99.902 (1.6 RC2) Signed-off-by: Alan Coopersmith commit a3bdd2b090915fe0163b062f0e6576fe05dd332e Author: Julien Cristau Date: Thu May 23 20:39:46 2013 +0200 xkb: fix off-by-one in _XkbReadGetNamesReply and _XkbReadVirtualModMap The size of the arrays is max_key_code + 1. This makes these functions consistent with the other checks added for CVE-2013-1997. Also check the XkbGetNames reply when names->keys was just allocated. Signed-off-by: Julien Cristau Tested-by: Colin Walters Reviewed-by: Alan Coopersmith commit 7e30056e78e4b7979ff47f102e00327617266019 Author: Niveditha Rau Date: Fri May 17 15:26:21 2013 -0700 Make sure internal headers include required headers Fixes builds with Solaris Studio 12.3 when lint is enabled, since it no longer ignores *.h files, but complains when they reference undefined typedefs or macros. Signed-off-by: Niveditha Rau Signed-off-by: Alan Coopersmith commit 2820100bf8ba130b94253f415e7fa5ac28bb2037 Author: Alan Coopersmith Date: Thu May 16 23:05:36 2013 -0700 Free fs->properties in _XF86BigfontQueryFont overflow error path Fixes small memory leak introduced in commit 5669a22081 Reported-by: Julien Cristau Signed-off-by: Alan Coopersmith commit 3131740513133a9ff7cb12123d29ceb18584fc38 Author: Matthieu Herrb Date: Wed May 8 19:33:09 2013 +0200 XListFontsWithInfo: Re-decrement flist[0] before calling free() on it. Freeing a pointer that wasn't returned by malloc() is undefined behavior and produces an error with OpenBSD's implementation. Signed-off-by: Matthieu Herrb Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 3fe4bea086149f06a142a8f1d575f627ec1e22c7 Author: Alan Coopersmith Date: Fri Apr 19 14:30:40 2013 -0700 Give GNU & Solaris Studio compilers hints about XEatData branches Try to offset the cost of all the recent checks we've added by giving the compiler a hint that the branches that involve us eating data are less likely to be used than the ones that process it. Signed-off-by: Alan Coopersmith commit e1b457beb8d4e831ef44279dada6c475cb955738 Author: Alan Coopersmith Date: Sun Mar 31 12:22:35 2013 -0700 _XkbReadGetMapReply: reject maxKeyCodes smaller than the minKeyCode Various other bounds checks in the code assume this is true, so enforce it when we first get the data from the X server. Signed-off-by: Alan Coopersmith commit 12ad4c6432496897ff000eb7cfecd0fb4b290331 Author: Alan Coopersmith Date: Sat Mar 16 10:03:13 2013 -0700 Use calloc in XOpenDisplay to initialize structs containing pointers Prevents trying to free uninitialized pointers if we have to bail out partway through setup, such as if we receive a corrupted or incomplete connection setup block from the server. Signed-off-by: Alan Coopersmith commit d38527e25f8b6e2f1174ecc21260c5c5416f972e Author: Alan Coopersmith Date: Thu Mar 7 23:46:05 2013 -0800 Remove more unnecessary casts from Xmalloc/calloc calls Signed-off-by: Alan Coopersmith commit b2c86b582c58f50c7b14da01cf7ebd20ef12a6b2 Author: Alan Coopersmith Date: Sat Mar 2 16:56:16 2013 -0800 Convert more _XEatData callers to _XEatDataWords Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 192bbb9e2fc45df4e17b35b6d14ea0eb418dbd39 Author: Alan Coopersmith Date: Sat Mar 9 11:04:37 2013 -0800 Make XGetWindowProperty() always initialize returned values Avoids memory corruption and other errors when callers access them without checking to see if XGetWindowProperty() returned an error value. Callers are still required to check for errors, this just reduces the damage when they don't. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit db1b1c871da29aa0545182bf888df81627f165a5 Author: Alan Coopersmith Date: Sat Mar 2 15:08:21 2013 -0800 Avoid overflows in XListExtensions() [CVE-2013-1997 15/15] Ensure that when breaking the returned list into individual strings, we don't walk past the end of allocated memory to write the '\0' bytes Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 8d5936594993921acdfec778dd8f41b555e2543a Author: Alan Coopersmith Date: Sat Mar 2 15:08:21 2013 -0800 Avoid overflows in XGetFontPath() [CVE-2013-1997 14/15] Ensure that when breaking the returned list into individual strings, we don't walk past the end of allocated memory to write the '\0' bytes Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 0c404db6a92dc2c198328bf586c02d8abbe02013 Author: Alan Coopersmith Date: Sat Mar 2 15:08:21 2013 -0800 Avoid overflows in XListFonts() [CVE-2013-1997 13/15] Ensure that when breaking the returned list into individual strings, we don't walk past the end of allocated memory to write the '\0' bytes Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 0b0f5d4358c3de7563d6af03f0d2ce454702a06a Author: Alan Coopersmith Date: Sat Mar 2 15:08:21 2013 -0800 integer overflow in XGetModifierMapping() [CVE-2013-1981 13/13] Ensure that we don't underallocate when the server claims a very large reply Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit a351b8103b2ba78882e1c309e85893ca3abe2073 Author: Alan Coopersmith Date: Sat Mar 2 15:08:21 2013 -0800 integer overflow in XGetPointerMapping() & XGetKeyboardMapping() [CVE-2013-1981 12/13] Ensure that we don't underallocate when the server claims a very large reply Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 833f6b70bc789d33607f6dbfee9e0a4178ec4b59 Author: Alan Coopersmith Date: Sat Mar 2 15:08:21 2013 -0800 integer overflow in XGetImage() [CVE-2013-1981 11/13] Ensure that we don't underallocate when the server claims to have sent a very large reply. Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 79d8dc08eb98842173ce239b9dd60df0e9e9ae72 Author: Alan Coopersmith Date: Fri Mar 8 22:25:35 2013 -0800 integer overflow in XGetWindowProperty() [CVE-2013-1981 10/13] If the reported number of properties is too large, the calculations to allocate memory for them may overflow, leaving us returning less memory to the caller than implied by the value written to *nitems. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 164bf4dfe839b1cc75cdeee378a243d04a8200e4 Author: Alan Coopersmith Date: Sat Mar 2 13:18:48 2013 -0800 integer overflows in TransFileName() [CVE-2013-1981 9/13] When trying to process file paths the tokens %H, %L, & %S are expanded to $HOME, the standard compose file path & the xlocaledir path. If enough of these tokens are repeated and values like $HOME are set to very large values, the calculation of the total string size required to hold the expanded path can overflow, resulting in allocating a smaller string than the amount of data we'll write to it. Simply restrict all of these values, and the total path size to PATH_MAX, because really, that's all you should need for a filename path. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 460e8a223b87d4fa0ea1e97823e998a770e0f2a2 Author: Alan Coopersmith Date: Fri Mar 1 18:37:37 2013 -0800 integer truncation in _XimParseStringFile() [CVE-2013-1981 8/13] Called from _XimCreateDefaultTree() which uses getenv("XCOMPOSEFILE") to specify filename. If the size of off_t is larger than the size of unsigned long (as in 32-bit builds with large file flags), a file larger than 4 gigs could have its size truncated, leading to data from that file being written past the end of the undersized buffer allocated for it. While configure.ac does not use AC_SYS_LARGEFILE to set large file mode, builders may have added the large file compilation flags to CFLAGS on their own. size is left limited to an int, because if your Xim file is larger than 2gb, you're doing it wrong. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 226622349a4b1e16064649d4444a34fb4be4f464 Author: Alan Coopersmith Date: Sat Mar 2 12:39:58 2013 -0800 Unbounded recursion in _XimParseStringFile() when parsing include files [CVE-2013-2004 2/2] parseline() can call _XimParseStringFile() which can call parseline() which can call _XimParseStringFile() which can call parseline() .... eventually causing recursive stack overflow and crash. Limit is set to a include depth of 100 files, which should be enough for all known use cases, but could be adjusted later if necessary. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 236b603d235dc264d1c6250dca09c745458a9088 Author: Alan Coopersmith Date: Sat Mar 2 12:01:39 2013 -0800 Unbounded recursion in GetDatabase() when parsing include files [CVE-2013-2004 1/2] GetIncludeFile() can call GetDatabase() which can call GetIncludeFile() which can call GetDatabase() which can call GetIncludeFile() .... eventually causing recursive stack overflow and crash. Easily reproduced with a resource file that #includes itself. Limit is set to a include depth of 100 files, which should be enough for all known use cases, but could be adjusted later if necessary. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 076428918e6c35f66b9b55c3fa097ff06496d155 Author: Alan Coopersmith Date: Fri Mar 1 18:37:37 2013 -0800 integer overflow in ReadInFile() in Xrm.c [CVE-2013-1981 7/13] Called from XrmGetFileDatabase() which gets called from InitDefaults() which gets the filename from getenv ("XENVIRONMENT") If file is exactly 0xffffffff bytes long (or longer and truncates to 0xffffffff, on implementations where off_t is larger than an int), then size may be set to a value which overflows causing less memory to be allocated than is written to by the following read() call. size is left limited to an int, because if your Xresources file is larger than 2gb, you're very definitely doing it wrong. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 90fd5abac2faca86f9f100353a3c9c7b89f31484 Author: Alan Coopersmith Date: Sat Mar 2 11:44:19 2013 -0800 Integer overflows in stringSectionSize() cause buffer overflow in ReadColornameDB() [CVE-2013-1981 6/13] LoadColornameDB() calls stringSectionSize() to do a first pass over the file (which may be provided by the user via XCMSDB environment variable) to determine how much memory needs to be allocated to read in the file, then allocates the returned sizes and calls ReadColornameDB() to load the data from the file into that newly allocated memory. If stringSectionSize() overflows the signed ints used to calculate the file size (say if you have an xcmsdb with ~4 billion lines in or a combined string length of ~4 gig - which while it may have been inconceivable when Xlib was written, is quite possible today), then LoadColornameDB() may allocate a memory buffer much smaller than the amount of data ReadColornameDB() will write to it. The total size is left limited to an int, because if your xcmsdb file is larger than 2gb, you're doing it wrong. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit b9ba832401734e1cbd30a930c0d11d850293f3f9 Author: Alan Coopersmith Date: Sat Mar 2 11:25:25 2013 -0800 unvalidated length in _XimXGetReadData() [CVE-2013-1997 12/15] Check the provided buffer size against the amount of data we're going to write into it, not against the reported length from the ClientMessage. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit de2e6c322c4aca22856b380f67f8e488e7510015 Author: Alan Coopersmith Date: Sat Mar 2 11:11:08 2013 -0800 unvalidated index/length in _XkbReadGetNamesReply() [CVE-2013-1997 11/15] If the X server returns key name indexes outside the range of the number of keys it told us to allocate, out of bounds memory writes could occur. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 2df882eeb3a70256170127a746a9ba26376599a1 Author: Alan Coopersmith Date: Sat Mar 2 11:01:04 2013 -0800 unvalidated index in _XkbReadVirtualModMap() [CVE-2013-1997 10/15] If the X server returns modifier map indexes outside the range of the number of keys it told us to allocate, out of bounds memory writes could occur. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 4d7c422a37eb9617fb22f8e37527c2b34b105665 Author: Alan Coopersmith Date: Sat Mar 2 11:04:44 2013 -0800 unvalidated index in _XkbReadExplicitComponents() [CVE-2013-1997 9/15] If the X server returns key indexes outside the range of the number of keys it told us to allocate, out of bounds memory writes could occur. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit e56a2ada719c5cfac5ed61a52a80ade86c0f5957 Author: Alan Coopersmith Date: Sat Mar 2 10:51:51 2013 -0800 unvalidated index in _XkbReadModifierMap() [CVE-2013-1997 8/15] If the X server returns modifier map indexes outside the range of the number of keys it told us to allocate, out of bounds memory writes could occur. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 06c086e8a1d8374ea9a95ff989f053c96bb1bdca Author: Alan Coopersmith Date: Sat Mar 2 10:39:21 2013 -0800 unvalidated index in _XkbReadKeyBehaviors() [CVE-2013-1997 7/15] If the X server returns key behavior indexes outside the range of the number of keys it told us to allocate, out of bounds memory writes could occur. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 00626c3830b869259098985afa38933d77ccec72 Author: Alan Coopersmith Date: Sat Mar 2 09:40:22 2013 -0800 unvalidated index in _XkbReadKeyActions() [CVE-2013-1997 6/15] If the X server returns key action indexes outside the range of the number of keys it told us to allocate, out of bounds memory access could occur. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit fd7d4956bc7a1c4b5c38661b12777ebee4d685d9 Author: Alan Coopersmith Date: Sat Mar 2 09:28:33 2013 -0800 unvalidated index in _XkbReadKeySyms() [CVE-2013-1997 5/15] If the X server returns keymap indexes outside the range of the number of keys it told us to allocate, out of bounds memory access could occur. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 59ae16a00d18588e98af57d26e442af8ea42b7aa Author: Alan Coopersmith Date: Sat Mar 2 09:18:26 2013 -0800 unvalidated indexes in _XkbReadGetGeometryReply() [CVE-2013-1997 4/15] If the X server returns color indexes outside the range of the number of colors it told us to allocate, out of bounds memory access could occur. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit bff938b9fe1629cbacb726509edfa2a3840b7207 Author: Alan Coopersmith Date: Sat Mar 2 09:12:47 2013 -0800 unvalidated indexes in _XkbReadGeomShapes() [CVE-2013-1997 3/15] If the X server returns shape indexes outside the range of the number of shapes it told us to allocate, out of bounds memory access could occur. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit f293659d5a4024bda386305bb7ebeb4647c40934 Author: Alan Coopersmith Date: Fri Mar 1 22:49:01 2013 -0800 unvalidated index in _XkbReadGetDeviceInfoReply() [CVE-2013-1997 2/15] If the X server returns more buttons than are allocated in the XKB device info structures, out of bounds writes could occur. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit cddc4e7e3cb4b9b7ad25f8591971a86901c249f2 Author: Alan Coopersmith Date: Fri Mar 1 19:30:09 2013 -0800 unvalidated lengths in XAllocColorCells() [CVE-2013-1997 1/15] If a broken server returned larger than requested values for nPixels or nMasks, XAllocColorCells would happily overflow the buffers provided by the caller to write the results into. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 2cd62b5eb99ffbb2fce99f3c459455e630b35bf7 Author: Alan Coopersmith Date: Fri Mar 1 22:49:01 2013 -0800 integer overflow in XListHosts() [CVE-2013-1981 5/13] If the reported number of host entries is too large, the calculations to allocate memory for them may overflow, leaving us writing beyond the bounds of the allocation. Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit 1f6a3dbf699b85c0ea715ef21de7e7095a714e12 Author: Alan Coopersmith Date: Fri Mar 1 22:49:01 2013 -0800 integer overflow in XGetMotionEvents() [CVE-2013-1981 4/13] If the reported number of motion events is too large, the calculations to allocate memory for them may overflow, leaving us writing beyond the bounds of the allocation. v2: Ensure nEvents is set to 0 when returning NULL events pointer Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith commit 39515b7c3ba8cae9021bf6695e378ae19487082f Author: Alan Coopersmith Date: Fri Mar 1 22:49:01 2013 -0800 integer overflow in XListFontsWithInfo() [CVE-2013-1981 3/13] If the reported number of remaining fonts is too large, the calculations to allocate memory for them may overflow, leaving us writing beyond the bounds of the allocation. v2: Fix reply_left calculations, check calculated sizes fit in reply_left v3: On error cases, also set values to be returned in pointer args to 0/NULL Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith commit 5669a220816b7d58fcaf0c302ead16fbe5c87817 Author: Alan Coopersmith Date: Fri Mar 1 21:05:27 2013 -0800 integer overflow in _XF86BigfontQueryFont() [CVE-2013-1981 2/13] Similar to _XQueryFont, but with more ways to go wrong and overflow. Only compiled if libX11 is built with XF86BigFont support. v2: Fix reply_left calculations, check calculated sizes fit in reply_left Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith commit 6df8a63d34b7514077188e2062a13774f920c085 Author: Alan Coopersmith Date: Fri Mar 1 21:05:27 2013 -0800 integer overflow in _XQueryFont() on 32-bit platforms [CVE-2013-1981 1/13] If the CARD32 reply.nCharInfos * sizeof(XCharStruct) overflows an unsigned long, then too small of a buffer will be allocated for the data copied in from the reply. v2: Fix reply_left calculations, check calculated sizes fit in reply_left Reported-by: Ilja Van Sprundel Signed-off-by: Alan Coopersmith commit 9f5d83706543696fc944c1835a403938c06f2cc5 Author: Alan Coopersmith Date: Fri Mar 1 20:54:24 2013 -0800 Add _XEatDataWords to discard a given number of 32-bit words of reply data Matches the units of the length field in X protocol replies, and provides a single implementation of overflow checking to avoid having to replicate those checks in every caller. Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit d7f04c340ade3834e603c23d543132e1ee4e0c63 Author: Alan Coopersmith Date: Sat Mar 2 13:03:55 2013 -0800 Move repeated #ifdef magic to find PATH_MAX into a common header Lets stop duplicating the mess all over Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb commit f3a553a4e4a55d9d19deda1ea01883e1d5d682b1 Author: Pander Date: Tue May 7 18:38:14 2013 -0400 Add compose sequences for J́ and j́. The resulting sequences are: U+004A LATIN CAPITAL LETTER J U+0301 COMBINING ACUTE ACCENT U+006A LATIN SMALL LETTER J U+0301 COMBINING ACUTE ACCENT Used in Dutch, per: http://lists.x.org/archives/xorg-devel/2013-February/035514.html https://nl.wikipedia.org/wiki/Accenttekens_in_de_Nederlandse_spelling Signed-off-by: Pander Signed-off-by: James Cloos commit f49bb2dd6d4ea45c55bd21acc0efe2b764441020 Author: Alan Coopersmith Date: Sat Mar 16 18:30:56 2013 -0700 Move big request comment in XOpenDisplay to the right place Signed-off-by: Alan Coopersmith commit 3996543c1b2919e97d61a5d70fe1ebd7cd76fc83 Author: Alan Coopersmith Date: Sat Mar 9 19:16:03 2013 -0800 libX11 1.5.99.901 (1.6 RC1) Signed-off-by: Alan Coopersmith commit f9cd175a471116a616e681fb0ca1a61b3d84a6a0 Author: Alan Coopersmith Date: Fri Mar 8 22:33:28 2013 -0800 Fix very weird indenting in src/GetFProp.c Signed-off-by: Alan Coopersmith commit e9bd757630368afb374c5d1bcc5d4d85ad3c6c4c Author: Alan Coopersmith Date: Fri Mar 8 15:37:33 2013 -0800 XAllocClassHint: Assume calloc sets pointers in allocated memory to NULL While the C standard technically allows for the compiler to translate pointer = 0 or pointer = NULL into something other than filling the pointer address with 0 bytes, the rest of the Xlib code already assumes that calloc initializes any pointers in the struct to NULL, and there are no known systems supported by X.Org where this is not true. Signed-off-by: Alan Coopersmith commit 39547d600a13713e15429f49768e54c3173c828d Author: Karl Tomlinson Date: Mon Feb 18 01:25:34 2013 +0000 MakeBigReq: don't move the last word, already handled by Data32 MakeBigReq inserts a length field after the first 4 bytes of the request (after req->length), pushing everything else back by 4 bytes. The current memmove moves everything but the first 4 bytes back. If a request aligns to the end of the buffer pointer when MakeBigReq is invoked for that request, this runs over the buffer. Instead, we need to memmove minus the first 4 bytes (which aren't moved), minus the last 4 bytes (so we still align to the previous tail). The 4 bytes that fell out are already handled with Data32, which will handle the buffermax correctly. The case where req->length = 1 was already not functional. Reported by Abhishek Arya . https://bugzilla.mozilla.org/show_bug.cgi?id=803762 Reviewed-by: Jeff Muizelaar Reviewed-by: Peter Hutterer Signed-off-by: Alan Coopersmith Notes: CVE-2013-7439 commit 3cdb6c3a1646f670afa03d424ec12ac418181d1e Author: Quentin Glidic Date: Tue Jan 15 21:07:17 2013 +0000 nls/Makefile.am: Use LOG_COMPILER TESTS_ENVIRONMENT is deprecated Signed-off-by: Quentin Glidic Signed-off-by: Alan Coopersmith commit df66d7a98e2bc7f44fb5583b645df87d525f07f1 Author: Quentin Glidic Date: Tue Jan 15 21:07:16 2013 +0000 nls/Makefile.am: Remove unneeded $(srcdir) Signed-off-by: Quentin Glidic Reviewed-by: Gaetan Nadon Signed-off-by: Alan Coopersmith commit 3facbe5c0df1b5597571b7b00d5f7bdbc92fb278 Author: Alan Coopersmith Date: Sat Mar 2 12:01:39 2013 -0800 Add hint to all Xrm* man pages Help users figure out which header file they need to #include Signed-off-by: Alan Coopersmith commit 466404007f2c8f7166e4faddfea1454c5bfe1e9a Author: Alan Coopersmith Date: Fri Mar 8 17:13:09 2013 -0800 _xudc_code_to_glyph: check for NULL pointer *before* writing to it, not after Signed-off-by: Alan Coopersmith commit 47d2eff64d167b3245d346d7f38ca703be645e26 Author: Ken Moffat Date: Thu Mar 7 18:27:54 2013 -0500 dead_double_grave and dead_inverted_breve should only have one underscore. Correct instances of dead_double_grave and dead_inverted_breve to dead_doublegrave and dead_invertedbreve. Signed-off-by: Ken Moffat Signed-off-by: James Cloos commit c23d61d1b84dca3740bf4786978c7908d0065fb9 Author: Alan Coopersmith Date: Fri Mar 1 18:10:27 2013 -0800 Assume size_t is always available, since it was defined in C89 Don't provide a fallback definition #ifdef X_NOT_POSIX anymore. We already use size_t throughout the rest of Xlib, just had this one instance left in XKBGAlloc.c of a fallback definition. Signed-off-by: Alan Coopersmith commit 9bcfd84aa1410387bc8cf002a5f90f44705aa0d1 Author: Alan Coopersmith Date: Fri Mar 1 18:09:07 2013 -0800 unifdef XKB_IN_SERVER Leftovers from XKB files that were previously shared between the client and server code, but aren't any more. Signed-off-by: Alan Coopersmith Reviewed-by: Peter Hutterer commit 769a0efa2298040fe8316a89fc9e75fb61e288e5 Author: Alan Coopersmith Date: Thu Feb 28 20:04:25 2013 -0800 unifdef CRAY & _CRAY (mostly performed with unifdef, followed by some manual cleanup of the remaining code) Signed-off-by: Alan Coopersmith Reviewed-by: Peter Hutterer commit ca106eb03e5f5468df8033300c5caae3d3c6936b Author: Alan Coopersmith Date: Thu Feb 28 20:04:25 2013 -0800 unifdef WORD64 WORD64 seems to have only been defined in when building for CRAY, to handle int being a 64-bit value (ILP64, not LP64) and having 64-bit alignment requirements. It hadn't been fully supported even before autotooling, as can be seen by removed code such as: #ifdef WORD64 _XkbWriteCopyData32 Not Implemented Yet for sizeof(int)==8 #endif (mostly performed with unifdef, followed by some manual cleanup of the remaining code) Signed-off-by: Alan Coopersmith Reviewed-by: Peter Hutterer commit 9399caf2c12cbe1ed56f4f6b368c5811cb5d0458 Author: Alan Coopersmith Date: Thu Feb 28 20:04:25 2013 -0800 unifdef MUSTCOPY MUSTCOPY seems to have only been defined in when building for CRAY, to handle missing some sizes of integer type. (mostly performed with unifdef, followed by some manual cleanup of spacing/indenting in the remaining code) Signed-off-by: Alan Coopersmith Reviewed-by: Peter Hutterer commit b687440c28c7da6ee0ae44514d20248db5161606 Author: Alan Coopersmith Date: Sat Feb 16 10:42:23 2013 -0800 Convert more sprintf calls to snprintf You could analyze most of these and quickly recognize that there was no chance of buffer overflow already, but why make everyone spend time doing that when we can just make it obviously safe? Signed-off-by: Alan Coopersmith commit b092dabbd712d7b656abcf572d253b9b206c0237 Author: Alan Coopersmith Date: Fri Feb 15 23:43:12 2013 -0800 XKeysymToString: move variable declarations to the scope of their usage Makes it easier for readers to understand scope of variable usage, and clears up gcc warning: KeysymStr.c: In function 'XKeysymToString': KeysymStr.c:128:13: warning: declaration of 'i' shadows a previous local [-Wshadow] KeysymStr.c:73:18: warning: shadowed declaration is here [-Wshadow] Signed-off-by: Alan Coopersmith commit f0b171c8ea7b055ba520272ea9a2604e18841ac7 Author: Alan Coopersmith Date: Fri Feb 15 23:34:40 2013 -0800 Preserve constness in casting arguments through the Data*() routines Casts were annoying gcc by dropping constness when changing types, when routines simply either copy data into the request buffer or send it directly to the X server, and never modify the input. Fixes gcc warnings including: ChProp.c: In function 'XChangeProperty': ChProp.c:65:6: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] ChProp.c:65:6: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] ChProp.c:74:6: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] ChProp.c:74:6: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] ChProp.c:83:6: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] SetHints.c: In function 'XSetStandardProperties': SetHints.c:262:20: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] SetPntMap.c: In function 'XSetPointerMapping': SetPntMap.c:46:5: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] SetPntMap.c:46:5: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] StBytes.c: In function 'XStoreBuffer': StBytes.c:97:33: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] StName.c: In function 'XStoreName': StName.c:40:27: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] StName.c: In function 'XSetIconName': StName.c:51:27: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] Signed-off-by: Alan Coopersmith commit 6c558ee357292dd9dfc6d9006f4525f625327c52 Author: Alan Coopersmith Date: Fri Feb 15 22:58:54 2013 -0800 Fix comment typo & confusing indentation levels in Data() macro definition The final } matches the one on the #define line, not one that doesn't appear after the else statement it was lined up with Signed-off-by: Alan Coopersmith commit afd6593da90e51234d59f8921c411317f91ab48b Author: Alan Coopersmith Date: Fri Feb 15 23:25:38 2013 -0800 XStringToKeysym: preserve constness when casting off unsignedness for strcmp Fixes gcc warning: StrKeysym.c:97:17: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] Signed-off-by: Alan Coopersmith commit 7e3bf4dd83fec22bd568146de75e6d59eff74e21 Author: Alan Coopersmith Date: Fri Feb 15 23:14:40 2013 -0800 XRebindKeysym: Drop unnecessary const-removing cast C89 defines memcpy as taking a const void *, so casting from const unsigned char * to char * simply angers gcc for no benefit: KeyBind.c:1017:24: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] Signed-off-by: Alan Coopersmith commit 54527eab93d46055cf11eb6c18abb353a03ae544 Author: Alan Coopersmith Date: Fri Feb 15 22:45:19 2013 -0800 cmsColNm.c: maintain constness of arguments to qsort helper function Fixes gcc warning: cmsColNm.c: In function 'FirstCmp': cmsColNm.c:257:20: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] cmsColNm.c:257:45: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual] Signed-off-by: Alan Coopersmith commit deedeada53676ee529d700bf96fde0b29a3a1def Author: Nickolai Zeldovich Date: Tue Jan 22 10:03:00 2013 -0500 XListFontsWithInfo: avoid accessing realloc'ed memory If exactly one of the two reallocs in XListFontsWithInfo() fails, the subsequent code accesses memory freed by the other realloc. Signed-off-by: Nickolai Zeldovich Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit f57fd760cba92ad846917f21e94e73e9c846185f Author: Colin Walters Date: Wed Jan 4 17:37:06 2012 -0500 autogen.sh: Implement GNOME Build API http://people.gnome.org/~walters/docs/build-api.txt Signed-off-by: Adam Jackson commit 51c102d39e855cf1704d9eb3afba76a2e73c6b81 Author: Adam Jackson Date: Tue Jan 15 14:28:48 2013 -0500 configure: Remove AM_MAINTAINER_MODE Signed-off-by: Adam Jackson commit 3cd974b1d4d1fa6389d3695fa9fcc0c22a51d50c Author: Alan Coopersmith Date: Wed Dec 26 22:57:39 2012 -0800 Remove unused DECnet ("DNETCONN") code from Xlib Has never been converted to build in modular builds, so has been unusable since X11R7.0 release in 2005. DNETCONN support was removed from xtrans back in 2008. Signed-off-by: Alan Coopersmith commit a6e5b36a3e6d4a7a9fb4bad905ed127e67b1957e Author: Alan Coopersmith Date: Wed Dec 26 22:56:38 2012 -0800 Remove unused TLI ("STREAMSCONN") code from Xlib Has never been converted to build in modular builds, so has been unusable since X11R7.0 release in 2005. All known platforms with TLI/XTI support that X11R7 & later releases run on also have (and mostly prefer) BSD socket support for their networking API. Signed-off-by: Alan Coopersmith commit 59c9ee8cd58857c5769b643611cbe526005a9e45 Author: Alan Coopersmith Date: Sun Dec 16 17:44:42 2012 -0800 Tell clang not to report -Wpadded warnings on public headers we can't fix Better to silence the compiler warning than break ABI. Signed-off-by: Alan Coopersmith commit 0b148750027fd0557c5ed93afda861ddf4b92e0f Author: Jon TURNEY Date: Mon Nov 12 17:27:52 2012 +0000 Fix config check for loadable modules The config check of the results of testing for dlfcn.h or dl.h just tests the value of the ac_cv_ variables, which will be 'yes' or 'no', rather than checking it is 'yes', so loadable module support would always be detected. This is necessary for successful compilation for the MinGW target without the optional dlfcn-win32 library. v2: Also, fixed typoed name of ac_cv_header_dlfcn_h, so check still works correctly when dlfcn.h is available Signed-off-by: Jon TURNEY Reviewed-by: Dan Nicholson commit cd25cab4b5b957641183ce72dd1ae0424aff1663 Author: Egbert Eich Date: Fri May 20 18:27:02 2011 +0200 Install Xcms.txt in $(datadir) rather than $(libdir). This file is an architecture independent data and should be where other databases are. This is the Xlib provided sample file, applications are free to use a different one specifying its location in the XCMSDB env variable. Signed-off-by: Egbert Eich Reviewed-by: Alan Coopersmith commit 51fef7e273b5c6256e4c9604e3e1afe5dc8f6a1a Author: Egbert Eich Date: Fri May 20 18:25:24 2011 +0200 Don't hard code path to Xcms.txt file. The path to this file is configurable at build time. The source however contains a hard coded path. Signed-off-by: Egbert Eich Reviewed-by: Alan Coopersmith commit 9833489e6c3829a1e835bc0a11f028fc180809e4 Author: Colin Walters Date: Fri Dec 7 08:51:21 2012 -0500 Fix build after dropping locales They also needed to be removed from configure.ac Signed-off-by: Colin Walters Signed-off-by: Julien Cristau commit 0a740a574aaf0c0eec78859b773a532cff3b74c3 Author: Egbert Eich Date: Fri May 20 13:04:11 2011 +0200 i18n: Uppercased all occurances if 'iso8859' in the full locale name. Making all occurances of iso8859 upper case in the full local name makes the alias entries more consistent and match the entries on locale.dir. Signed-off-by: Egbert Eich Reviewed-by: Alan Coopersmith commit 5e7d589697755a70fb22d85c6a1ae82b39843e53 Author: Egbert Eich Date: Fri May 20 17:55:49 2011 +0200 i18n: Remove ja.S90 and ja.U90 locales. Both locales carry a copyright notice and a prorietary statement: Copyright 1995 by FUJITSU LIMITED This is source code modified by FUJITSU LIMITED under the Joint Development Agreement for the CDEnext PST. This is unpublished proprietary source code of FUJITSU LIMITED Signed-off-by: Egbert Eich Reviewed-by: Alan Coopersmith commit 99eae3dcb7bf6764e3b243d2a2934a4d1ecce90e Author: Egbert Eich Date: Fri May 20 16:46:15 2011 +0200 i18n: Bring locale.dir and compose.dir in sync. Some entries for locale/encoding combinations were missing from either file or just misspelled, some entries were wrong or just aliases. Signed-off-by: Egbert Eich Reviewed-by: Alan Coopersmith commit d1e6baa4e290b758e430077cb74e7c03ad850771 Author: Egbert Eich Date: Fri May 20 14:02:39 2011 +0200 i18n: Treat 'a3_AZ' as an alias for 'az_AZ'. locale.alias contains a comment: XCOMM a3 is not an ISO 639 language code, but in Cyrillic, "Z" looks like "3". Thus lets treat 'a3' as an alias for 'az'. Signed-off-by: Egbert Eich Reviewed-by: Alan Coopersmith Reviewed-by: Magnus Kessler commit fa2aab0bea18efa26a56977d3166277582ab7b07 Author: Egbert Eich Date: Fri May 20 13:09:38 2011 +0200 i18n: Fixed typos in full locale names. Fixing those typos those names actually match entries in locale.dir. Signed-off-by: Egbert Eich Reviewed-by: Alan Coopersmith commit b88dd95005dce4c40f9b4d5f938f945e7955fd04 Author: Egbert Eich Date: Sat May 21 07:29:38 2011 +0200 i18n: Remove duplicates and aliases to oneself. Aliases to itself don't make much sense. This changes occurances of: xy_UV.UTF-8: xy_UV.UTF-8 to xy_UV: xy_UV.UTF-8 where applicable. Signed-off-by: Egbert Eich Reviewed-by: James Cloos commit f198c6aa98f88ff285d903175a3c4c0fd33a4575 Author: Jens Herden Date: Fri May 20 17:29:03 2011 +0200 i18n: Add support for Khmer locale and compose table. Signed-off-by: Egbert Eich Reviewed-by: James Cloos commit 40761898692e5063957bfa2518cca3d35b2e354a Author: Kalman Kemenczy Date: Fri May 20 17:03:24 2011 +0200 i18n: Add support for Serbian specific compose table entries. Signed-off-by: Egbert Eich Reviewed-by: James Cloos commit 7c14aacc9f01d7a975f8d9d033b9b13cbd777a61 Author: Egbert Eich Date: Fri May 20 14:00:35 2011 +0200 i18n: Adding and removing comments. Signed-off-by: Egbert Eich Reviewed-by: James Cloos commit 7754d68976106183751243c2c35a84134be17b34 Author: Egbert Eich Date: Fri May 20 13:45:31 2011 +0200 i18n: Add missing locales which existed in locale.alias. Signed-off-by: Egbert Eich Reviewed-by: James Cloos commit 952eccd0d25ba66023acfd31873eee2e71c38c42 Author: Egbert Eich Date: Fri May 20 10:57:57 2011 +0200 i18n: Consolidate compose handling for locales with UTF-8 encoding. - add an entry to include the default en_US compose file for the ja_JP, ko_KR, th_TH, zh_CN, zh_HK and zh_TW locales. - add missing entries for zh_CN. and zh_HK and am_ET. - change entries for the UTF-8 encoding for ru_RU, ja_JP, ko_KR, th_TH and zh_TW to point to their native directory entries. Signed-off-by: Egbert Eich Reviewed-by: James Cloos commit d14b6a250f004fa405179db7020f6953001d17b9 Author: Yaakov Selkowitz Date: Mon Oct 22 13:54:11 2012 -0500 XIM: remove Private and Public macros Private is a struct member name in mingw-w64 , causing this useless define in a private header to break the build. Signed-off-by: Yaakov Selkowitz Reviewed-by: Jon TURNEY commit f2a8def423a46d52e834cf7ea49fa0079427663a Author: Adam Jackson Date: Wed Oct 17 14:40:43 2012 -0400 XErrorDB: Add GLXBadProfileARB Signed-off-by: Adam Jackson commit d45b3fc19fbe95c41afc4e51d768df6d42332010 Author: Ross Burton Date: Wed Sep 12 14:39:40 2012 +0100 Allow overriding location of keysymdef.h Currently keysymdef.h is found by using the includedir of xproto. This doesn't work when cross-compiling with a sysroot as that ends up being /usr/include/X11, not a path into the cross-build environment. So, add an option to allow explicitly specifying the location of keysymdef.h, and verify that the specified or found path exists. (original patch by Martin Jansa , revised by myself) Signed-off-by: Ross Burton Reviewed-by: Dan Nicholson Reviewed-by: Daniel Stone commit 44cdc0dc2c68d67654023ec707b807145d3a38c0 Author: Eric S. Raymond Date: Thu Aug 23 19:15:07 2012 -0400 Renove some unnecessary low-level markup. Also, SYNTAX -> SYNOPSIS so function prototypes get parsed by doclifter. This appears to have been somebody's thinko, it's only in a few of the files. Signed-off-by: Eric S. Raymond commit b686600ab5ca93b5750f827786e79c329ab2db4d Author: Eric S. Raymond Date: Thu Aug 23 10:53:33 2012 -0400 The .NT/.NE macro pair is no longer used. Remove it. Signed-off-by: Eric S. Raymond commit b83f2898528c5dd683acd2a2143879a760a8dad5 Author: Eric S. Raymond Date: Thu Aug 23 10:42:46 2012 -0400 Remove the one and only use of the .NT/.NE pair. The problem with these macros is that they rely on being able to center the note label. That doesn't play well with modern HTML, not anyway without coomplications like CSS. This use was just a cute trick, not adding enough value to be kept. commit e9509fa6745d25eee01ec6f1c34edf8a806d66b3 Author: Eric S. Raymond Date: Thu Aug 23 10:23:45 2012 -0400 The .C{ and .C} macros are never used. Remove them. Signed-off-by: Eric S. Raymond commit 6b2f7ddeea6c87dbec4ddfc19b1fed33f1bb8575 Author: Eric S. Raymond Date: Thu Aug 23 10:08:08 2012 -0400 The .FN macro, paired with .FD, is also never used. Remove it. Signed-off-by: Eric S. Raymond commit cac6572701c976542da562b2b277b07ffb892a6f Author: Eric S. Raymond Date: Thu Aug 23 10:03:00 2012 -0400 The ".FD" macro is never used. Remove it. It was a temptation to presentation-level klugery and is best gone. Signed-off-by: Eric S. Raymond commit 6e27a828f39f7028bc7f4a8736e7262fca250632 Author: Eric S. Raymond Date: Thu Aug 23 09:54:25 2012 -0400 Clean up, my last commit missed four cases. Signed-off-by: Eric S. Raymond commit a7fb575957ff4d9dd3671994a005ac3be8bb10fe Author: Eric S. Raymond Date: Thu Aug 23 08:24:17 2012 -0400 Eliminate all uses of tab stops in the libX11 man pages. Two steps: First, expand tabs to 8 spaces in code and structure listings. Second, make the .Ds used to wrap code listings switch to constant-width font (CW) rather than numeric font position 1, which maps to R on most systems. It is possible some archaic systems won't know what CW is, but the only risk is that code listings won't look quite right on troff devices; the PostScript and DVI drivers definitely grok it, so those important cases are OK. The purpose of these changes is to get rid of presentation-level markup so these pages will lift clean to DocBook. Signed-off-by: Eric S. Raymond commit 8042f88ace33573f9d0dfaa21ed54ac7cef266d5 Author: Will Thompson Date: Mon Jul 9 18:00:27 2012 +0100 Add compose sequences for "therefore" and "because". These sequences look sensible to me. I added them to the APL-related section of Mathematical Operators—they're in that section of Unicode anyway. https://bugs.freedesktop.org/show_bug.cgi?id=51922 Signed-off-by: Will Thompson Reviewed-by: Daniel Stone commit 65358ea5079236b2508f787ac2fb2024a477e36d Author: Alan Coopersmith Date: Fri Jun 29 23:08:04 2012 -0700 Convert XCreate{Pix,Bit}map...Data to use C99 designated initializers Signed-off-by: Alan Coopersmith commit 0dc93f7e43deb102b1f8fb7c4c4844cdce7ffd1e Author: Alan Coopersmith Date: Fri Jun 29 22:57:13 2012 -0700 XCreate{Pix,Bit}map...Data: Free pixmap in error path if XCreateGC fails Fixes leaks in error paths found by Parfait 1.0.0: Error: X Resource Leak Leaked X Resource pix at line 62 of CrBFData.c in function 'XCreateBitmapFromData'. pix initialized at line 60 with XCreatePixmap Error: X Resource Leak Leaked X Resource pix at line 70 of CrPFBData.c in function 'XCreatePixmapFromBitmapData'. pix initialized at line 66 with XCreatePixmap Signed-off-by: Alan Coopersmith Reviewed-by: Aaron Plattner commit dce84b8c39ad5a8908c29bb6de25b6c3004c1ab7 Author: Alan Coopersmith Date: Wed Jun 6 13:31:16 2012 -0700 libX11 spec: Correct prototype for XConvertSelection selection & target parameters were accidentally run together Signed-off-by: Alan Coopersmith commit 6c5cb2a90a6479f56855e5167039c37c234cdfe7 Author: Alan Coopersmith Date: Fri Jun 1 23:37:09 2012 -0700 libX11 1.5.0 Signed-off-by: Alan Coopersmith commit 05c587ec3be880721131a17c1dd4366e458fdd8b Author: Alan Coopersmith Date: Sat May 26 14:37:28 2012 -0700 libX11 1.4.99.902 (1.5 RC2) Signed-off-by: Alan Coopersmith commit d817834d9772e3500d5102e2eae868b04a33c31f Author: Pander Date: Sat May 5 19:02:10 2012 +0200 Compose: Reassigned squences with minus and a or o Reassigned squences with minus and a or o (vice versa and lower and upper case) to conform existing series and not resulting in tilde. Also added noe missing underscore sequence. Signed-off-by: Alan Coopersmith commit 6bfd1dca6e7cb2046ee6bf9dbbddc0af5ef7cc00 Author: Pander Date: Sat May 5 16:56:05 2012 +0200 Compose: Removed and vice versa Combination with lower case u suffices Signed-off-by: Alan Coopersmith commit 3a8b1637132d1e36eb5e11f52dfb284081772d14 Author: Pander Date: Sat May 5 16:44:31 2012 +0200 Compose: Removed for n with tilde, also vice versa & for upper case Signed-off-by: Alan Coopersmith commit fd514d7a35119dd4413b51c84f2a536f2ca501a6 Author: Pander Date: Sat May 5 16:40:20 2012 +0200 Compose: Removed in combination with a numeral for superscript Signed-off-by: Alan Coopersmith commit 1b5cad3ca54410c4edbca79c23c463e9e088bc0d Author: Pander Date: Sat May 5 16:28:01 2012 +0200 Compose: Reassigned to oacute, also for upper case. Signed-off-by: Alan Coopersmith commit 0bbc0d5e605e2a4a3eb00a229b651d4546e8aef4 Author: James Cloos Date: Thu May 10 12:27:28 2012 -0400 Remove duplicate compose sequences from commit e51e37c118ae. The compose-check script only handles compiled Compose files, not the Compose.pre files. One must remember to use: ./autogen.sh; make; make check when reviewing patches to the Compose.pre files.... Signed-off-by: James Cloos commit e51e37c118ae6cb9ced8244ce1c410677e0279ce Author: Geoff Streeter Date: Thu Mar 22 15:02:00 2012 +0000 Add APL support to compose Signed-off-by: Geoff Streeter Signed-off-by: James Cloos commit dac90324cee224df977a428afe80d960dceca769 Author: Julien Cristau Date: Sat May 5 16:05:07 2012 +0200 configure: make previous change work with older autoconf autoconf 2.63 doesn't seem to like the nested AC_CHECK_DECL/FUNC. So do the tests separately. Reported-by: Dave Airlie Signed-off-by: Julien Cristau commit f5b50af4324186962e258ffe9be78d5ee4681982 Author: Julien Cristau Date: Sun Apr 29 16:43:09 2012 +0200 configure: check if issetugid is declared GNU/kFreeBSD has issetugid in libc (for legacy apps?), but doesn't declare it anywhere, causing gcc to error out with -Werror=implicit-function-declaration. Use AC_CHECK_DECL in addition to AC_CHECK_FUNC so we disable this code instead of failing to build it. Debian bug#669670 Signed-off-by: Julien Cristau Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith commit 52e1b5cc3b6de76ccf4285b55652474a522ed9a8 Author: Peter Hutterer Date: Mon Apr 30 16:36:47 2012 +1000 Typo fix Signed-off-by: Peter Hutterer commit b64969f0e510d5d3300cf968741a3726a6409577 Author: Alan Coopersmith Date: Tue Apr 17 18:12:02 2012 -0700 Add X11R7 sections to the libX11 & XKBlib credits to cover Docbook conversion Signed-off-by: Alan Coopersmith commit 9ea611696f317ac3b3fb67893f1d6d87d49e3b5e Author: Alan Coopersmith Date: Tue Apr 17 18:01:36 2012 -0700 Add olinks from libX11 & localedb specs to ICCCM spec Signed-off-by: Alan Coopersmith commit b3c1b8cdab7d14220426c9b997ac362dc16318fc Author: Alan Coopersmith Date: Tue Apr 17 17:49:44 2012 -0700 Add olinks from libX11 spec to ICCCM spec Also convert ICCCM title mentions from to Signed-off-by: Alan Coopersmith commit ebebb65e753007ad01966dccc90bd6ca9a826488 Author: Alan Coopersmith Date: Sat Apr 14 23:40:01 2012 -0700 libX11 AppC: Fix section headers that didn't translate from nroff properly Signed-off-by: Alan Coopersmith Acked-by: Peter Hutterer commit d5ab4ae0e74ae1fb30fb72add0751effe2759bf2 Author: Alan Coopersmith Date: Sat Apr 14 23:13:05 2012 -0700 Add olinks from libX11 spec to x11protocol spec Signed-off-by: Alan Coopersmith Acked-by: Peter Hutterer commit 83878a0e34fffd255597300dd3e6cd43fcd645b0 Author: Alan Coopersmith Date: Sat Apr 14 22:28:53 2012 -0700 libX11 spec: Remove .br nroff macro left behind in XGetWindowProperty prototype Signed-off-by: Alan Coopersmith commit abc523fce31fcf2687229697a8eb656e343ecb0c Author: Alan Coopersmith Date: Thu Mar 15 22:14:45 2012 -0700 libX11 1.4.99.901 (1.5 RC1) Signed-off-by: Alan Coopersmith commit b2cc5905a4a6d519957223e8ba2caef71520040c Author: Alan Coopersmith Date: Thu Mar 15 22:03:21 2012 -0700 Remove "register" qualifier that annoys Solaris Studio compiler Fixes warning: "Xrm.c", line 1094: warning: storage class after type is obsolescent Signed-off-by: Alan Coopersmith commit 62d42953893f93a98db0504eaf06d650ceaf5811 Author: James Cloos Date: Wed Mar 14 17:25:46 2012 -0400 Fix the gtk+ additions (Some of) the Dstroke and dstroke entries already were present as U011[01], even though XK_Dstroke and XK_dstroke are part of the latin2 set in keysymdef.h. The addition of as a postfix version of blocks the existing entries for ǻ and Ǻ. That prevents its and ’s addition. Signed-off-by: James Cloos commit 91bcce48d94792f78333d2aea73961cc2e739d2e Author: Pander Date: Wed Mar 14 12:54:53 2012 -0400 Complete compose key sequences for musical symbols Signed-off-by: Pander Signed-off-by: James Cloos commit cf040016d455bc37f7665d6714337c5eafd8ea94 Author: Pander Date: Wed Mar 14 12:46:25 2012 -0400 Add compose sequences from gtk+ to X.Org Signed-off-by: Pander Signed-off-by: James Cloos commit a4c591ced5cac9301b9abfa0e521be2d0b267882 Author: Keith Packard Date: Sun Mar 4 02:00:13 2012 -0800 Block for other threads in _XUserLockDisplay Wait for all other threads to release the user-level lock when acquiring it. This ensures that only one thread at a time holds the user-level lock, necessary as it is a nesting lock and a single variable is used to determine when the lock is nesting and when it is contended. Signed-off-by: Keith Packard Reviewed-by: Jamey Sharp commit ed00b460acb08787b695f27b864e96102dfd4867 Author: Jon TURNEY Date: Fri Oct 28 11:09:20 2011 -0500 Don't use caddr_t casts (caddr_t) isn't used anywhere else in xcb or libX11. Cast to (char *) for consistency. Removing this cast allows building for MinGW without patching. v2: Cast to (char *) rather than just dropping the cast Signed-off-by: Jon TURNEY Reviewed-by: Alan Coopersmith commit 20adca02c2a1d0b7c95ecbe387d68f881fd57754 Author: Julien Cristau Date: Sun Feb 19 13:27:38 2012 +0100 Revert "xcb: Add TCP fallback" This reverts commit f09c5299a381e2729e800a0ac43f1c0e371f65f6. The TCP fallback ended up falling back to UNIX socket connection if $DISPLAY was set to e.g. some.host:0 and the initial attempt failed. Debian bug#659558 Signed-off-by: Julien Cristau Conflicts: src/OpenDis.c commit f4378193619baa9bb973c1b5b718721bbcbe92c7 Author: James Cloos Date: Wed Feb 22 14:13:20 2012 -0500 Make the compose sequence for ẞ work. There is no XK_Ssharp symbol for U+1E9E LATIN CAPITAL LETTER SHARP S, so use the U1e9e symbol in the Compose sequence. (Compose sequences do not work when the target symbol is unknown.) Signed-off-by: James Cloos commit 2ca641c3a506dcbee97e279b67990d5387389f36 Author: Marko Myllynen Date: Mon Feb 20 17:04:59 2012 +0200 Use ezh/EZH in compose maps Related: https://bugs.freedesktop.org/show_bug.cgi?id=19687 Signed-off-by: Marko Myllynen Reviewed-by: Matt Dew Signed-off-by: James Cloos commit 61725822f20f47684a545c1797183ee7075243ac Author: Marko Myllynen Date: Sun Feb 20 17:09:43 2011 +0200 Provide translation from XK_permille (ad5) to Unicode (U2030) https://bugs.freedesktop.org/show_bug.cgi?id=19687 Signed-off-by: Marko Myllynen Reviewed-by: Matt Dew Signed-off-by: James Cloos commit d2cce0abba0fa0143f49026442c8cab5ed721625 Author: Jeremy Huddleston Date: Sun Feb 12 19:01:43 2012 -0800 nls: Use LC_CTYPE=C for sed magic Stricter versions of sed can trip up if the input does not match LC_CTYPE Signed-off-by: Jeremy Huddleston commit f180e043f55531933bedfa6e0ff36a00a9ec07f3 Author: Frédéric Boiteux Date: Wed Nov 30 12:47:31 2011 +0000 Compositions with the dead greek symbol FreeDesktop Bug 21475 Signed-off-by: Frédéric Boiteux Signed-off-by: James Cloos commit d58e8f8e27790017fcfdeca0843b7318d541c189 Author: Ryan Pavlik Date: Sun Jan 1 21:04:52 2012 +0000 Use pthreads on MinGW also Use pthreads (provided by the pthreads-win32 compatability library which implements them using native Win32 threading) on MinGW Reviewed-by: Jon TURNEY commit bf15ccb6821664746ec23d769d757edf8059007e Author: Ryan Pavlik Date: Mon Jan 23 14:18:02 2012 +0000 Add XWindows.h include to Xxcbint.h This avoids some conflicting type re-definition errors which occur if we attempt to include Windows headers after Xmd.h Reviewed-by: Jon TURNEY commit cadcbd376f0a5d17a71a2fe2f8ced5d93232921a Author: Matt Dew Date: Sat Jan 21 17:59:51 2012 -0700 informaltable & table cleanup On certain tables, add top and bottom borders to table header and a bottom border to the table. This matches what those tables in the old pdfs looked like. the prevents tables from splitting across pages. Useful for tiny tables. Converting the colwidth to a floating point, IE, 1* -> 1.0* cleans up these build errors: WARNING: table-layout="fixed" and column-width unspecified => falling back to proportional-column-width(1) Signed-off-by: Matt Dew commit bb551f654df8f647c867f79252241964521e689e Author: Alan Coopersmith Date: Wed Dec 28 21:22:41 2011 -0800 Add more Xkb man pages to the See Also lists for core keyboard functions Signed-off-by: Alan Coopersmith Reviewed-by: Peter Hutterer commit b7bb23fe7c8b8a17128e5bc98a05f68595190438 Author: Gaetan Nadon Date: Fri Dec 30 17:08:14 2011 -0500 docbook.am: embed css styles inside the HTML HEAD element Rather than referring to the external xorg.css stylesheet, embed the content of the file in the html output produced. This is accomplished by using version 1.10 of xorg-xhtml.xsl. This makes the whole html docs tree much more relocatable. In addition, it eliminates xorg.css as a runtime file which makes xorg-sgml-doctools a build time only package. Signed-off-by: Gaetan Nadon commit 70505468b7c4a7068cc39be42e421dcee34ec595 Author: Alan Coopersmith Date: Tue Dec 13 19:58:30 2011 -0800 makekeys: move buf declaration from global to main to silence gcc -Wshadow The global was only referenced in the main() function, which passes it as an argument of the same name to the parse_line() function, leading to gcc -Wshadow warnings: makekeys.c: In function ‘parse_line’: makekeys.c:58:24: warning: declaration of ‘buf’ shadows a global declaration makekeys.c:54:13: warning: shadowed declaration is here Signed-off-by: Alan Coopersmith commit 87e10a7b9a97c951ab4d477f61177779ac0a6a66 Author: Kusanagi Kouichi Date: Wed Dec 14 02:17:55 2011 -0500 XQueryColors: Split a request into multiple requests if necessary https://bugs.freedesktop.org/show_bug.cgi?id=9160 Signed-off-by: Kusanagi Kouichi Signed-off-by: James Cloos commit d3b3570592e9b9e57f270a0bd86762fd205a2833 Author: Andreas Wettstein Date: Tue Nov 8 20:18:09 2011 +0000 XIM: Allow modifier releases in compose sequences (#26705) Currently, only non-modifier keys (actually, keysyms) can be part of a compose sequence, and they are matched against the defined compose sequences at the time the key is pressed. The patch allows to use modifier keys an well, but matches them on key release, and only if no other key has been pressed after the modifier. Releasing a non-matched modifier during an ongoing compose sequence only aborts the sequence if any modifier release would have matched. In particular, if no compose sequences with modifiers are specified, the compose mechanism works exactly as without this patch. Even if modifiers are part of a compose sequence, they are not filtered. This is because modifiers affect the keyboard state no matter what we do here and, therefore, filtering them only could confuse clients. The purpose is this extension to the compose mechanism is to allow to make better use of keys in convenient reach for touch typing. Signed-off-by: Andreas Wettstein Signed-off-by: James Cloos commit 56448a626fc90bcf75a1fa2f4c294b0eb1f23bd6 Author: Alan Coopersmith Date: Tue Nov 29 23:56:57 2011 -0800 Reject negative string counts in copy_string_list Silences parfait warning of a potential memory leak: Memory leak of pointer 'dst' allocated with malloc(length) at line 160 of FSWrap.c in function 'copy_string_list'. 'dst' allocated at line 145 with malloc(length). dst leaks when count <= 0 at line 154. Signed-off-by: Alan Coopersmith commit bf2d7c8c6d70539c72560b1921e18df2610acf29 Author: Peter Hutterer Date: Fri Nov 11 14:56:36 2011 +1000 libX11 1.4.99.1 Signed-off-by: Peter Hutterer commit 24283d40b1e4314c6647dda49d2a159833341a8b Author: Derek Buitenhuis Date: Thu Sep 22 18:44:13 2011 -0400 makekeys: Fix build/target word size mismatch when cross-compiling Since makekeys is built using build environment's gcc and runs natively, we have to make sure that the size of the Signature type is the same on both the native environment and the target, otherwise we get mismatches upon running X, and some LSB test failures (xts5). Use an unsigned 32-bit integer on all platforms. Also, eliminate the redundant multiple typedefs for the Signature type. Signed-off-by: Derek Buitenhuis Reviewed-by: Daniel Stone commit 1c41f3b9b86b5eeedfa3bff92e519d45aa097587 Author: Alan Coopersmith Date: Wed Nov 9 21:00:36 2011 -0800 XlcSL.c: convert old-style function definitions to ANSI C89 style Signed-off-by: Alan Coopersmith commit f6dad6aaa384bf836baa28ccb72b476a85c40eff Author: Peter Hutterer Date: Thu Oct 27 13:53:22 2011 +1000 Use GetReqSized for GetReq and GetReqExtra GetEmptyReq and GetResReq cannot do this due to the final typecast - typically requests that need either of those do not have their own typedef in the protocol headers. Signed-off-by: Peter Hutterer Reviewed-by: Jamey Sharp commit c9c99058b9d98789c0b2d7e78a23443c2b57a047 Author: Peter Hutterer Date: Fri Oct 14 14:51:06 2011 +1000 include: Add GetReqSized() for request buffers of specific size Some XI2 requests change in size over different versions and libXi would need to hack around GetReq and GetReqExtra. Add a new GetReqSized so the library can explicitly specify the size of the request in 4-byte units. Signed-off-by: Peter Hutterer Reviewed-by: Jamey Sharp commit ba8a7a19165e30d14bc165f43f67c19b6a115585 Author: Peter Hutterer Date: Thu Oct 27 13:24:10 2011 +1000 Switch GetEmptyReq and GetResReq to call _XGetRequest Signed-off-by: Peter Hutterer Reviewed-by: Jamey Sharp commit 4a060f993bf676cf21ad9784e010f54134da7b40 Author: Peter Hutterer Date: Mon Oct 17 09:45:15 2011 +1000 Add _XGetRequest as substitute for GetReq/GetReqExtra Signed-off-by: Peter Hutterer Reviewed-by: Jamey Sharp commit d8956520deb79c1cbb5e974c175bf8493859b22b Author: Alan Coopersmith Date: Fri Oct 14 17:53:00 2011 -0700 Fix "nomal" -> "normal" typo in several comments Signed-off-by: Alan Coopersmith commit 002b36e308a26a152504f9b40aa08a0dce9a7991 Author: Xue Wei Date: Fri Oct 14 17:39:21 2011 -0700 mbtocs should not truncate input Fixes pasting more than 1024 bytes into xterm, as described in https://bugs.freedesktop.org/show_bug.cgi?id=25209 Signed-off-by: Alan Coopersmith commit 9b8d8c9e5b27273e8856a3851ba9b68022bed3cd Author: Marko Myllynen Date: Mon Oct 10 09:41:13 2011 +0300 Add new compose sequences This patch adds few new compose sequences to the en_US map, ligatures common in typesetting and sequences already in use in the fi_FI map. https://bugs.freedesktop.org/show_bug.cgi?id=30621 https://bugs.freedesktop.org/show_bug.cgi?id=34523 Reviewed-by: Jeremy Huddleston commit 738f7b867341c1da87ee667d48815822715c3e75 Author: Choe Hwanjin Date: Thu Oct 13 07:58:02 2011 +0900 XIM: Make Xim handle NEED_SYNC_REPLY flag NEED_SYNC_REPLY flag should be in Xim not in Xic. Because the focused Xic can be changed before sending sync reply. After focused Xic changed, the new Xic doesn't have NEED_SYNC_REPLY flag enabled, so libX11 doesn't send XIM_SYNC_REPLY packet. This patch adds sync reply flag to Xim and removes sync reply from Xic. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=7869 Signed-off-by: Choe Hwanjin Reviewed-by: Jeremy Huddleston commit 50e15379331c436851abb194251cde96999e67b3 Author: Bodo Graumann Date: Mon Oct 10 16:40:52 2011 +0200 libX11: Fixing modifier key range in Xutil.h (Bug #21910) IsModifierKey, defined in include/X11/Xutil.h, is a macro determining, which keys are regarded as modifiers. The constants ISO_Level5_Shift, ISO_Level5_Latch and ISO_Level5_Lock where excluded previously, leaving some Neo2 modifiers functionless in combination with compose. This patch adjusts the range to include the correct, full range of modifier constants. Neo2 Bug 277 X.Org Bug 21910 Signed-off-by: Bodo Graumann Reviewed-by: Daniel Stone commit b5a108624331fabf393223c0891914cc54d4caf4 Author: Yann Droneaud Date: Tue Oct 11 17:27:59 2011 +0200 Return name instead of False in XSetICValues() In case of error, XSetICValues() must return the first argument that failed to be set. But in some error paths, it returns False, which is converted to NULL, so the function returns OK in case of error. Signed-off-by: Yann Droneaud Reviewed-by: Jeremy Huddleston commit 10992cb8dc5e4d938e7e5a633b68a81b5875f3ba Author: Yann Droneaud Date: Sun Oct 9 17:56:45 2011 +0200 Return name instead of value in XGetIMValues() and XSetIMValues() As stated in man page (XOpenIM) and Xlib documentation (chapter 13.5.3), XGetIMValues() and XSetImValues() "returns the name of the first argument that could not be obtained." But currently, err = XGetIMValues(im, "invalid", &arg, NULL); returns &arg instead of "invalid". This patch fixes https://bugs.freedesktop.org/show_bug.cgi?id=12897 Signed-off-by: Yann Droneaud Reviewed-by: Jeremy Huddleston commit f2651e03f3295a453a2965c3749bc8b6e66f1c09 Author: Jeremy Huddleston Date: Mon Oct 10 14:09:17 2011 -0700 Mark XKeycodeToKeysym as _X_DEPRECATED Signed-off-by: Jeremy Huddleston commit 25d7bb9c705623ebbb3afba3b86d0ded5b6bb4fb Author: Jeremy Huddleston Date: Sun Oct 9 02:38:28 2011 -0700 Fix nobreakspace for pt_BR.UTF-8 https://bugs.freedesktop.org/show_bug.cgi?id=31334 Signed-off-by: Jeremy Huddleston commit 913603660c17ec59a4d39d3e3b9d60469ee5c060 Author: Jeremy Huddleston Date: Sun Oct 9 02:26:45 2011 -0700 Fix potential uninitialized variable access in _XimMakeICAttrIDList Found by clang static analysis Signed-off-by: Jeremy Huddleston commit 566ceaf5a92c721ac7155528e4d0d2e5cbef023f Author: Jeremy Huddleston Date: Sun Oct 9 02:25:50 2011 -0700 Remove self-resolving aliases https://bugs.freedesktop.org/show_bug.cgi?id=30112 Signed-off-by: Jeremy Huddleston commit 22ba43d198dcca86c88eb15a56fc7d8fc47c422e Author: Matt Dew Date: Fri Oct 7 22:52:30 2011 -0600 Cleanup IDs and links in doc 1 - fix the capitalization of the ID attributes to match either the or <funcdef> string it goes with. 2 - fix any <linkend>'s that were affected by 1. 3 - any <function> in the docs that has an actual funcdef, will become an olink. Signed-off-by: Matt Dew <marcoz@osource.org> commit f858f3326adbc0c5711669b92a64a84a9083a055 Author: James Cloos <cloos@jhcloos.com> Date: Tue Oct 4 17:11:11 2011 -0400 [nls] Fix typo/synco. The iso8859-1 Compose table includes an optional section which uses Ctrl<T> as a substitute for <Multi_key>. In that section the sequence to generate an @ (at) either was incorrectly copied from the Multi_key section or was not kept in sync with the Multi_key section. Fixing this eliminates the warning from compose-check.pl: ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┃ Clash with existing sequence in iso8859-1/Compose.pre ┃ on line 661: Ctrl<T> <A> <A> ┃ line #661: Ctrl<T> <A> <A> : "\305" Aring ┃ line #480: Ctrl<T> <A> <A> : "@" at ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Signed-off-by: James Cloos <cloos@jhcloos.com> commit 7f35f7efc23234b3f8529fee31a802c21846d9ab Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Mon Sep 26 11:32:56 2011 -0700 Remove conflicting compose sequences for cent and colon Regression from 4d78ad4bf6dcabca9bb5f84c770abfbb02d3f7a4 Found by tinderbox Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit 4d78ad4bf6dcabca9bb5f84c770abfbb02d3f7a4 Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Sun Sep 25 16:29:17 2011 -0700 Add additional compose sequences for pound sterling, yen, and cent (mixed case) https://bugs.freedesktop.org/show_bug.cgi?id=1013 Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> Reviewed-by: Gaetan Nadon <memsize@videotron.ca> commit 0ca4153a373e2af7a9eb3cef003393ab332bc79e Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Sat Sep 24 16:44:04 2011 -0700 Use a configure check for seteuid HP-UX doesn't have seteuid https://bugs.freedesktop.org/show_bug.cgi?id=1497 Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit 79594b4d66344f248eb4314ecb78eb81f632c3ab Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Sep 20 16:06:10 2011 -0400 localedb specs: use <copyright> for first holder of multi license Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 154430268cf004b06920edde2f1812dc16d71fae Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Sep 20 16:01:52 2011 -0400 libX11 specs: use <copyright> for first holder of multi license Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 66e621f58dee804acb795ff2c79ce6dd38b34a3f Author: Tollef Fog Heen <tfheen@err.no> Date: Tue Sep 20 13:07:37 2011 -0400 NLS: Add more vulgar fractions Add 1/7, 1/9, 1/10 and 0/3 vulgar fractions. Signed-off-by: Tollef Fog Heen <tfheen@err.no> Signed-off-by: James Cloos <cloos@jhcloos.com> commit e37a6da814b5653be46000a9a76902729660a2e6 Author: Alexander Polakov <polachok@gmail.com> Date: Sat Sep 17 20:54:58 2011 +0400 XGrabKey manual page: change XAllowAccess to XAllowEvents in See Also There is no XAllowAccess man page to see. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit a23f3323f269b33a43d16dce01395cd28bc41b45 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 19 15:27:44 2011 -0400 XKB: provide adequate quotes for the license text Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit a9c7a5cad91d968f5536ef8fc735036e921832a3 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 19 15:18:53 2011 -0400 XIM: refactor the multi licensing legal text Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit c46f934ed89e7de79746a0387c9f998d91994ea6 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 19 10:33:30 2011 -0400 xim trans: restore Fujitsu copyright legal text Somehow lost during docbook conversion. text from x.org ftp R7.5. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 3d75f993382bfdc89d31668d7dfc71c91222e0d7 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 19 10:11:46 2011 -0400 xtrans: restore X Consortium original legal text Asking X Consortium permission to use The Open Group name makes no sense. Even more so in 1994 before X Window System was passed on to the Open Group. Using original text from xorg-docs/general/License Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 136a381585a4a9686c11bad1a6130837978e677f Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 19 10:03:21 2011 -0400 Framework: restore X Consortium copyright Somewhat dammaged during docbook conversion. Also restore pasrt of the original license text Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 33f346878406762704a0c13cdc018111c666f3c1 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 19 09:50:00 2011 -0400 localedb: restore X Consortium original legal text Asking X Consortium permission to use The Open Group name makes no sense. Even more so in 1994 before X Window System was passed on to the Open Group. Using original text from xorg-docs/general/License Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit e99c9338e413efca026210b9d830efb5c74d34e5 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 19 08:23:18 2011 -0400 specs: support multi licensed copyright notice and license text For documentation having multiple licenses, the copyright and legalnotice elements sequence cannot instantiated multiple times. The copyright notice and license text are therefore coded inside a legalnotice element. The role attribute on the paragraph is used to allow styling of the copyright notice text which should not be italicized. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit b9dedc757e667333ce899115d618f25cdaa4dd5e Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 19 08:17:50 2011 -0400 localedb: add release info to spec Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 4519c89a87ddce01e599542737a27c26030fe4ff Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 19 08:05:32 2011 -0400 specs: fix The Open Group license text The warranty referred to the X Consortium Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 08ac378423e7be72e340197ba5559a1a36f1783c Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 19 08:03:39 2011 -0400 specs: The strandard name is still "X Consortium Standard" This spec, and fsproto spec, are the only two docs with a different standard name. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 8dfbeb1b1b1e8aa17f69d0a373155419a5f6a172 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 18 13:22:34 2011 -0400 specs: support multi licensed copyright notice and license text For documentation having multiple licenses, the copyright and legalnotice elements sequence cannot instantiated multiple times. The copyright notice and license text are therefore coded inside a legalnotice element. The role attribute on the paragraph is used to allow styling of the copyright notice text which should not be italicized. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 278ca8947c1dabb2b819527dca0fa6190c034f67 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Sep 16 11:45:56 2011 -0400 docs: merge copyright holder under the same copyright notice As per the docbook markup dtd. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 7ff012bb433109a622ac122ade71669e842ebdcf Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Sep 16 10:09:57 2011 -0400 specs: handle multiple sets of copyright notice/license/warranty Docbook groups all the <copyright> elements together and all the <legalnotice> elements together. We cannot have a sequence: <copyright> <legalnotice> <copyright> <legalnotice> [...] A workaround, which was done in some documents, is to put the copyright notice inside the legalnotice in plain text without the <copyright> element. A formal paragraph title is added here which makes the copyright notice bold, and makes it much easier to locate. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 4a550c71b8221c37b1a9378d5a170da9eaa03405 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 14 15:55:42 2011 -0400 specs: remove orphan affiliation. Authors affiliation are correct. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 0cc02a6df65214560b7575e89cebee741d6d2469 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Sep 13 17:39:02 2011 -0400 specs: use appropriate markup for Copyright statements Also move <releaseinfo> to match order of appearance Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit afe13e19ebf0fc4e3460644164433af016f0add7 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 12 16:54:45 2011 -0400 docs: use the &fullrelvers; entity to set X11 release information Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 22a2153282db13e9d94881022b8c979539841a2c Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 11 19:49:53 2011 -0400 docs: remove <productnumber> which is not used by default This element is not rendered by default on the title. A template customization is required to display it. X Window System does not have a product number. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 719f16570d9fcfd15247813ee51fa51ac8a6ff4c Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 11 17:40:21 2011 -0400 docs: use the &fullrelvers; entity to set X11 release information Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit a6b2992f50b571d612ea9ade631c432c3099bc12 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 11 17:38:42 2011 -0400 docs: remove orphan <affiliation> Somehow created during the conversion from roff. Unable to locate the author to which it belongs. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit c7420060b6e47b8467ba50c796ec3c1bab090bc7 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 11 17:38:05 2011 -0400 docs: remove <productnumber> which is not used by default This element is not rendered by default on the title. A template customization is required to display it. X Window System does not have a product number. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 7d5b718c1edbc43c54b7001be548e515a49540ea Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Sep 9 14:46:39 2011 -0400 docbook.am: embed css styles inside the HTML HEAD element Rather than referring to the external xorg.css stylesheet, embed the content of the file in the html output produced. This is accomplished by using version 1.10 of xorg-xhtml.xsl. This makes the whole html docs tree much more relocatable. In addition, it eliminates xorg.css as a runtime file which makes xorg-sgml-doctools a build time only package. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 24632d280491c465dfe208ef788815890892e326 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 5 12:53:12 2011 -0400 compose: upgrade makefile to support olinking on chunked html The essential differences over the regular docbook.am are: Adding root.filename parameter for naming of chapters html files. Using xhtml xmlto format and xorg-chunk.xsl stylesheet Set olink.base.uri for pdf but not for chunked html Olink is not applicable to ps and txt formats. Html chapters are added to shelf_DATA as they are also installed. The xml is generated from a perl script and not distributed. Requires version 1.10 of xorg-sgml-doctools. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 93ab0a1c9a4f9094cf0c8e1c686130673e681798 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Aug 31 19:46:20 2011 -0400 docbook.am: refactor common flags for xmlto and xsltproc Maximize reuse and reduce risk of setting the wrong flag at the wrong place. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 85b725aa9ef76aeb5e94d42e0cd60f896da7ab97 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Aug 31 10:46:59 2011 -0400 docbook.am: add search path for local entities Currently, only $(XORG_SGML_PATH)/X11 is searched for xml entities. A module may want to add entities that apply only to itself and not to all modules, like the xserver does. This feature may or may not be used in this module, but all modules share a copy of docbook.am. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit b5ed2d368d47f244d43d2513329fa2758bc4ef54 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Aug 25 14:39:20 2011 -0400 docbook.am: explicitly list xmlto flags for each target Normal evolution of make targets make it impractical to factor out common command flags for xmlto. The targets now list each command option as its presence or absence needs to be justified. xorg.ss is only needed by xmlto for html. masterdb is only needed by xmlto. img.src.path must not be used by html. xsltproc need to use customization layer xorg-*.xsl. txt format is not required to search masterdb. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit d5b3605f3b0639452e892e9ff3afb18bb7442069 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Aug 25 13:12:49 2011 -0400 docbook.am: do not generate docs if docbook customization layer is missing The stylesheets used to be only about style, fonts or colors. Complex features are now used like olink and chunked html which may cause a build break when stylesheets are missing or lead to hard to find problem. Some modules may be built when stylesheets are present while others are built without. There is no requirement to build crippled docs. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 7f23c72c94d9d14122426b0d8c66054f1402769a Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Aug 5 14:33:32 2011 -0400 libX11 specs: review doclifter generated tables Many tables had a questionnable layout and some had information dropped. Each table was cross-referenced with a pre-docbook version to ensure semantic integrity. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 1efdbeb8cd08f443188ac783cbab6ba0654a66d6 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Jul 20 15:28:47 2011 -0400 credits.xml: remove toc from Acknowledgments There should be no toc for a simple preface with only one Acknowledgments section. Use <simplesect> markup rather than sect1. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 77cc17ed0817c1df3ac5feb9dc83a5ba5d021a4b Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Aug 4 19:59:37 2011 -0400 libX11 specs: move </para> above <varaiablelist> Many, but not all, function synopsis have a paragraph that nests the variable list. The code was generated by doclifter and there is no apprent reasons as to why it was done this way. Found while investigating a spacing issue. Before the patch: <para>Some blurb about the function <funcsynopsis> </funcsynopsis> <variablelist> </variablelist> </para> After the patch: <para>Some blurb about the function</para> <funcsynopsis> </funcsynopsis> <variablelist> </variablelist> There are no noticable differences when reading the doc other than than the removed few pixels of spacing between the function sysnopsis and the variable list block. In some cases, there are no "blurb about the fucntion" and the empty paragraph is removed. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 18595f0d8f95ff1c12e7b9f73bd4b30dda5c7168 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Jul 28 19:46:14 2011 -0400 compose specs: generate chunked html For large 600 page documents such as this one, chunked html provide faster browser load time and better navigation. Simply click on the locale of your choice in the toc and the browser loads just that one file. Being a DocBook, it benefits from all of the usual features and can be integrated with the rest of the documentation. Acked-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 5cc8815b8a117cf0b6af37e7d55c5a420d9fff57 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Jun 23 15:16:47 2011 -0400 specs: build compose keys tables in specs/i18n/compose Build the tables article together with the rest of the specs. Make it transparent that the source in generated in nls. Reuse docbook.am and get all the features such as olink. The docbook article file stem and id must be the same. The new name for the main article is libX11-keys. The new installation location is $docdir/libX11/i18n/compose. The nls dir retains the role of generating the DocBook/XML source but does not build neither installs output formats or generated source. The tables article now has to specify that each included locale section is a dependency. It did not matter before as they were web links. The xorg-sgml-doctools masterdb shall be updated to include this new doc. Install location moved from doc/libX11/Compose to doc/libX11/i18n/compose. Acked-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit adebbe3856b4aee39c0c7af902c1dea847dd6d7c Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Jun 23 14:43:31 2011 -0400 nls: restructure charts as a single article with sections Looks more like a real article with a toc rather than individual web pages. Looks nicer in pdf. Each locale is a "section" rather than an "article". Using XInclude to aggregate xml source files gets you the toc for free. The single document is over 600 pages while there were 62 separate documents previously. FOP version 1.0 is required to handle missing character like capital sharp s. Acked-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit fc74dc12b1ff3c43e240e1a713316ce1bf525d61 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Jul 28 19:32:40 2011 -0700 libX11 1.4.4 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit ab1f30231755d99ed123af6873b981834640f01d Author: Matt Dew <marcoz@osource.org> Date: Wed Jul 13 12:33:40 2011 -0600 Add id attributes to error codes to allow linking from other docs. Signed-off-by: Matt Dew <marcoz@osource.org> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Acked-by: Gaetan Nadon <memsize@videotron.ca> commit 5c831fef402914ccf2ec14005c25be48852f119b Author: David Coppa <dcoppa@gmail.com> Date: Tue Jul 12 10:05:47 2011 +0200 Fix libpthread linkage on OpenBSD. OpenBSD prefers to use the -pthread to fetch pthread libs when needed. Signed-off-by: Matthieu Herrb <matthieu.herrb@laas.fr> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 445b0b3efc04a74fc77cd3e483b25cfb5da82f12 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Jun 22 20:46:26 2011 -0400 config: use XORG_WITH_PERL macro to replace custom program check New in version util-macros 1.15, the macro does the usual checking for program path and provides an interface for makefile variables. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 47d99a324db9232029a22dd523e3bc3ed0936aca Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Jun 22 20:41:18 2011 -0400 config: update XORG_WITH_FOP macro usage A new feature to test for a minimum version has been added. The parameter position changed. Due to limited usage and requiring 1.15, it turns out to be backward compatible. There is no functional change to how docs are build. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit e659683ad51ecc26c989fbdefdfe20f83af2c5a5 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Jun 22 11:48:49 2011 -0400 Remove unused xmlrules.in in specs, now in /nls The specs dir has been converted to docbook.am Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 9992092609bd83a0db778e9a9ac1e879d445e637 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Mar 31 10:23:22 2011 -0400 nls: move xmlrules.in from specs to nls It is no longer used in the specs dir. Remove html from CLEANFILES as it breaks. Make do not clean directories Remove SUFFIXES as pattern rules are used rather than suffix rules. Other improvements are possible, the first priority is to move it out of the specs dir. Acked-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit b370eeb0191b0e2a8bde2f03a442a8ca62e35d58 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Jun 5 16:27:36 2011 -0400 Install target dbs alongside generated documents This matches a change in xorg-sgml-docs whereby the masterdb will look for the target dbs into the same location as the generated documents. The target dbs are now installed alongside the generated documents. Previously they are installed in $prefix/sgml/X11/dbs alongside masterdb which has the potential of installing outside the package prefix and cause distcheck to fail when user does not have write permission in this package. Requires XORG_CHECK_SGML_DOCTOOLS(1.8) which was released 2011-06-11 commit 4e741654b7e0a283779b8b4af5bb32e05b7fc678 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Jun 7 18:41:30 2011 -0700 specs/libX11: Turn appendix references into links Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit a3d1152bc4b300f59ea2f08925739aab1ebfbc4e Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Jun 7 18:37:41 2011 -0700 specs/libX11: Turn chapter references into links Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d0cc949dfe44a41a71f19e4fe6c7547bb3d9bdbe Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Jun 7 00:52:32 2011 -0700 specs/libX11: Turn many "see section ..." into links Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 02d4c08dead2f266809b3f93ec72377783423ac7 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sun Jun 5 22:50:37 2011 -0700 specs/libX11: Convert some header filenames to filename tags perl -i -p -e 's{^<(.*\.h)>\ *}{<filename class="headerfile"><\1></filename>}' *.xml Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit c51a011329afa6e5b9d2b285349c132683ecf9fb Author: Matt Dew <marcoz@osource.org> Date: Tue May 31 20:03:23 2011 -0600 Add id attributes to funcsynopsis to allow other docs to olink to them. Signed-off-by: Matt Dew <marcoz@osource.org> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Gaetan Nadon <memsize@videotron.ca> commit 6841260c8bb15404a0b4805bee3b0bdfec7176b3 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri May 27 20:14:36 2011 -0700 Bug 37624 - parameter x is missing from synopsis of XDrawString in libX11.html https://bugs.freedesktop.org/show_bug.cgi?id=37624 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 205af6a4e557c62a6395feadc1c89f4a9fe1713b Author: Matt Dew <marcoz@osource.org> Date: Sat May 21 00:23:06 2011 -0600 Add id's to functions, to make clickable links. Signed-off-by: Matt Dew <marcoz@osource.org> Reviewed-by: Gaetan Nadon <memsize@videotron.ca> commit 5c06bc594473f6ab234724cd90db32e7b57fe811 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri May 20 15:38:08 2011 -0700 libX11 spec: fix monospaced column alignment after deligaturization Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit ef0019c714c273cb9b4ad3eba52d0b905109826b Author: James Cloos <cloos@jhcloos.com> Date: Fri May 20 15:51:46 2011 -0400 Expand latin ligatures out to their NFKC equivalents. Ligatures should be done by the typesetting system. Manuscripts should not bother with them. Signed-off-by: James Cloos <cloos@jhcloos.com> Reviewed-by: Keith Packard <keithp@keithp.com> commit 761b8aa0c9b3c58c478ac5ea1b3aaafadcfc1325 Author: Daniel Stone <daniel@fooishbar.org> Date: Thu May 12 16:21:50 2011 +0200 XCB: Add more friendly error messages for common asserts This patch adds more friendly error messages for three common classes of assertion: - missed sequence numbers due to being griefed by another thread - unknown requests in queue due to being griefed by another thread - extensions dequeuing too much or too little reply data It adds error messages offering advice (e.g. call XInitThreads() first) on stderr, but still generates actual assertions. Hopefully this means it's a little more Googleable and a little less frightening. Signed-off-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> commit 159bf292477048b9a2f074735afc516f52c93d80 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu May 19 20:22:11 2011 -0400 Remove misplaced hyphens in libX11 DocBook/XML #37364 Reported-by: Christopher Yeleighton <giecrilj@stegny.2a.pl> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 0ee6d8247d397500ae183ef180b6ff21bceefa1c Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue May 17 20:49:59 2011 -0700 Fix man page and comment references to use XFreeModifiermap (lowercase map) Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 3275ec4ca8790d571b6a1902367ca5f68a2dc5fd Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue May 17 20:30:54 2011 -0700 XKB man pages: Fix coordinantes typo in multiple pages Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit ca33a80606cd68e4572fa49ed6aaa1d1fc31a47f Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue May 17 16:27:32 2011 -0700 DisplayOfCCC.man: Fix typo "ClientWhitePointOfCC" -> "ClientWhitePointOfCCC" Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit ae39d82b01359b07dd1fe092d867f79ea95a5438 Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Sun May 8 09:08:07 2011 -0700 Silence clang static analysis warnings for SetReqLen This provides a simplified version of the SetReqLen macro when using clang for static analysis. Prior to this change, we would see many Idempotent operation warnings inside this macro due to the common case of calling with arg2 and arg3 being the same variable. This has no effect on code produced during compilation, but it silences a number of false positives in static analysis. XIPassiveGrab.c:170:5: warning: Assigned value is always the same as the existing value SetReqLen(req, num_modifiers, num_modifiers); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from XIPassiveGrab.c:26: .../include/X11/Xlibint.h:580:8: note: instantiated from: n = badlen; \ ^ Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit 130af2bc02090ee2526adb2f9803fc07019b8f1f Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Wed May 4 15:34:31 2011 -0700 XKB: XkbComputeSectionBounds: Check correct bounds in default switch-case XKBGeom.c:191:25: warning: Access to field 'x1' results in a dereference of a null pointer (loaded from variable 'rbounds') _XkbCheckBounds(bounds,rbounds->x1,rbounds->y1); ^~~~~~~ Found-by: clang static analyzer Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> commit c987ef04bea345d5810e60cf6c53b747ddbe910e Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Wed May 4 15:31:17 2011 -0700 Revert "XKB: Avoid a possible NULL dereference" Sorry for the noise. I accidentally pushed and didn't mean to. =( This reverts commit 4024091678ea07e0d898b798df9b29f3bf68eb08. commit 46d04bc4e7ff6c86385002c929d8eb0310f737a8 Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Wed May 4 11:35:31 2011 -0700 Dead code removal XKBGeom.c:118:27: warning: Assigned value is always the same as the existing value for (key=row->keys,pos=k=0;k<row->num_keys;k++,key++) { ~~~^~~~ XKBGeom.c:115:5: warning: Value stored to 'pos' is never read pos= 0; ^ ~ Found-by: clang static analyzer Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit 4024091678ea07e0d898b798df9b29f3bf68eb08 Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Wed May 4 11:34:53 2011 -0700 XKB: Avoid a possible NULL dereference XKBGeom.c:191:25: warning: Access to field 'x1' results in a dereference of a null pointer (loaded from variable 'rbounds') _XkbCheckBounds(bounds,rbounds->x1,rbounds->y1); ^~~~~~~ Found-by: clang static analyzer Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit 626e5e34be55b7cf734d745bd40a7ee3359029f8 Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Wed May 4 11:21:41 2011 -0700 Annotate _XIOError as _X_NORETURN Found-by: clang static analyzer Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit d3d7896408b435ab42656398839ff4351a37724d Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Tue May 3 09:32:53 2011 -0700 clang analyzer: Don't warn about Xmalloc(0) This will prevent a number of false positives in where clang's static analysis reports about calls to malloc(0). Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit 393921cf2188b2b0713cc157effaf17d0abab783 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Apr 21 16:21:04 2011 -0700 Delete special case code to append "/sparcv9" to i18n module path Was triggered by defined(__sparcv9) so only built on Solaris SPARC 64-bit. Inconsistent with all other platforms, and a bit overcomplicated. Should anyone need to continue using that path, simply build with a #define POSTLOCALELIBDIR "sparcv9" to get the same result. Fixes Solaris bug 7038737: sparcv9 Xlib looking in wrong path for i18n loadable modules Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Daniel Stone <daniel@fooishbar.org> commit b9ff9cfd5c56ae6d52c6503f7019756d9de29557 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Apr 14 13:47:12 2011 -0700 specs/libX11: Fix XOpenDisplay() prototype in chapter 2 [bug 36244] Was incorrectly showing AllPlanes() instead when describing XOpenDisplay() https://bugs.freedesktop.org/show_bug.cgi?id=36244 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit b850adbdebcf500c659f85285d4d7374e15857f5 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Apr 12 22:30:45 2011 -0700 Convert malloc(strlen()); strcpy() sets to strdup Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> commit 09194042d3dc44a463add1f7c122a68ffd5ef0bf Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Apr 12 21:27:45 2011 -0700 Replace Xmalloc+bzero pairs with Xcalloc calls Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> commit ac1e2bff7121987fd768500a11d428d9fb9447c5 Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Fri Mar 25 14:47:35 2011 +0200 om: Fix memory leaks on get_font_name error paths. While at it, remove unneeded check for NULL before Xfree. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 7c362e275c93c92b4e68fe862e73ee36665de703 Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Wed Mar 30 15:06:10 2011 +0300 xcms: Fix memory leaks on LINEAR_RGB_InitSCCData error path. pScreenData is replaced when building per visual intensity tables. If malloc failed the old value of pScreenData (stored also in pScreenDefaultData) was being leaked. Also, property_return wasn't free'd in that case. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 5c810e2ac233e00f361549bafb9b59e8a9e05eff Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Wed Mar 30 15:19:28 2011 +0300 xcms: Fix error on LINEAR_RGB_InitSCCData error path. Due to what looks like a copy & paste error, pScreenData->pBlueTbl would be accessed after being free'd. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d749948f9492fd9b61c74655a08e32c595e0e3a5 Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Fri Mar 25 16:06:15 2011 +0200 om: Fix potential memory leak in init_om. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d0749d6abdf0fd4d8b4e59b02dad8ccda3f10995 Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Thu Mar 24 20:40:41 2011 +0200 om: Fix memory leak on read_EncodingInfo error path. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 4b2e8d00f5b6969c14003ee8eb258b9f0e4dd7c3 Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Thu Mar 24 19:55:33 2011 +0200 Fix memory leaks on _XimCbDispatch error path. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 46e6c78b1a89e4774e0f7e0f4d6d0fd060c3897e Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Thu Mar 24 19:52:05 2011 +0200 Fix memory leak on _XimCommitRecv error path. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 0ace642a2d47265f01450bfa2b2fd48eb6956a83 Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Thu Mar 24 19:48:44 2011 +0200 Fix memory leaks on _XimWriteCachedDefaultTree error paths. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit e29be94edbb58b3b8dab545377a710d1f73b61e0 Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Thu Mar 24 19:42:36 2011 +0200 Fix memory leaks on _XimGetAttributeID error paths. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d144a50512466766f55ce61e3884925334b08f0d Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Thu Mar 24 19:36:56 2011 +0200 Fix memory leaks on _XimProtoCreateIC error paths. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 6a452f7a98499508f753cb8a7c3f08bcbec736b9 Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Thu Mar 24 16:24:29 2011 +0200 Fix leaks in _XimEncodingNegotiation error paths. name_ptr and detail_ptr weren't free'd in some cases before returning False. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 396e5a452a59c1f121220ba72167b720a863b30f Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Thu Mar 24 14:17:44 2011 +0200 FSWrap: fix potential leak in copy_string_list If list_count is 0, dst would be allocated and leaked. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 1a944260182bb552b954d69f6355c2760d4415df Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Wed Mar 23 14:36:22 2011 +0200 Fix memory leak with broken bitmap files in XReadBitmapFileData Bitmap file data is read looping through the lines in the input file. If there is extra data after the bitmap, these lines will be processed and if this data represents another bitmap it will replace the one read before causing the memory allocated for bits to leak. This changes the code to stop processing the file once a bitmap was read. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit c1c91e9a221a0e762d96cc12a3f189d6e59f4865 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Apr 12 20:50:42 2011 -0700 Fix "attrinute" typo in comments in ximcp Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 7103b83a88edb9c93acfa68f3b556595b087baff Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Apr 8 21:36:11 2011 -0700 Make doc install subdirectories more like the pre-docbook.am paths Haven't restored the "specs" path in the install path, but have restored libX11 & i18n subdirectories in the path for better logical grouping. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Gaetan Nadon <memsize@videotron.ca> commit 9a1ae7a90f815a737a942e42d5eb1ffff400977b Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Apr 8 13:24:28 2011 -0700 Install xml versions of specs even if HAVE_XMLTO is false Moves HAVE_XMLTO check into docbook.am, more closely matches behaviour from before docbook.am changes (commit e8c76407d2f6e3) Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Gaetan Nadon <memsize@videotron.ca> commit a0ad0d5c99023bb9a8ce3944dbc3267f5265721e Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Apr 5 13:29:04 2011 -0700 libX11 1.4.3 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit e8c76407d2f6e3b11babdb84426e43e780c859c3 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Feb 25 09:23:54 2011 -0500 Documentation: add Docbook external references support When writing technical documentation, it is often necessary to cross reference to other information. When that other information is not in the current document, additional support is needed, namely <olink>. A new feature with version 1.7 of xorg-sgml-doctools adds references to other documents within or outside this package. This patch adds technical support for this feature but does not change the content of the documentation as seen by the end user. Each book or article must generate a database containing the href of sections that can be referred to from another document. This database is installed in DATAROOTDIR/sgml/X11/dbs. There is a requirement that the value of DATAROOTDIR for xorg-sgml-doctools and for the package documentation is the same. This forms a virtual document tree. This database is consulted by other documents while they are being generated in order to fulfill the missing information for linking. Refer to the xorg-sgml-doctools for further technical information. Co-authored-by: Matt Dew <marcoz@osource.org> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 25eb76b3d2726f2f1de759901971ae53b2539dc4 Author: Harshula Jayasuriya <harshula@gmail.com> Date: Mon Mar 21 14:49:37 2011 +0000 Add #define XK_SINHALA Add #define XK_SINHALA so that the Sinhala keysyms can be used by the lk xkb keymap. Signed-off-by: Harshula Jayasuriya <harshula@gmail.com> Reviewed-by: Daniel Stone <daniel@fooishbar.org> commit db8b20b789112717ac0590b40f0b4dc2171797d0 Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Thu Mar 17 16:15:00 2011 -0700 configure.ac: Bump version to 1.4.2 Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit 83e1ba59c48c79f8b0a7e7aa0b9c9cfd84fa403d Author: Jamey Sharp <jamey@minilop.net> Date: Tue Mar 15 16:48:07 2011 -0700 Call _XErrorFunction without holding the Display lock. Historically, Xlib dropped the Display lock around the upcall to any user-supplied _XErrorFunction, but somewhere along the way I quit doing that if you built with XCB. The reasons are lost somewhere in the pre-git history of Xlib/XCB, and I can't now see any reason to hold the lock. The documentation for XSetErrorHandler still applies though: Because this condition is not assumed to be fatal, it is acceptable for your error handler to return; the returned value is ignored. However, the error handler should not call any functions (directly or indirectly) on the display that will generate protocol requests or that will look for input events. So while you are now once again permitted to re-enter Xlib from the error handler, you're only allowed to call non-protocol functions. Signed-off-by: Jamey Sharp <jamey@minilop.net> commit fd85aca7a616c595fc17b2520f84316a11e8906f Author: Jamey Sharp <jamey@minilop.net> Date: Mon Mar 14 14:45:35 2011 -0700 Ignore user locks after sleeping in _XReply and _XReadEvents. This bug appears as a hang in applications that wait for replies from multiple threads, where one such thread has taken a user lock using XLockDisplay. Prior to this fix, the code could deadlock in this way: If thread 1 goes to sleep waiting for a reply, and then thread 2 takes a user lock and waits for a reply, then thread 2 will wait for thread 1 to process its reply (because responses must be processed in order), but thread 1 will wait for thread 2 to drop its user lock. Fixed by making thread 1 not wait for thread 2 to drop its user lock. This makes the semantics of user locks hard to define, but they were already hard to define. The new behavior appears to be consistent with the way Xlib worked historically, anyway. Fixes: http://lists.freedesktop.org/archives/xcb/2011-March/006802.html There was a similar potential for deadlock in _XReadEvents, fixed the same way, with the same caveats about user-lock semantics. Signed-off-by: Jamey Sharp <jamey@minilop.net> commit 690f8bffd48a4e7e74298360ddd0431dc95dcd3f Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Tue Jan 18 15:58:20 2011 +0200 xkb: XkbPropertyPtr determined allocation success from wrong variables Cannot reach dead statement "return NULL;" Check for the NULLness of prop->name and prop->value instead of name and value, which was checked earlier anyway. Decided against using strdup due to curious memory allocation functions and the rest of the xkb not using it either. Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com> commit 6a4d027284e7bb5dd458157947bbb1ff580ad071 Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 10 16:37:22 2011 +0200 keyBind: Use Xcalloc to initialize allocated _XKeytrans Using uninitialized value "p->modifiers" Small fix by using Xcalloc instead of Xmalloc Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com> commit b993d73bb3214ecc24646f5427c8003b816c6921 Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 10 16:22:45 2011 +0200 im/ximcp: release modifiermap before returning Variable "map" goes out of scope Release modifiermap before returning. Reordered code to call XGetModifierMapping after the first return from the function. Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Reviewed-by: Dirk Wallenstein <halsmit@t-online.de> commit 807a7fc0354f2212dfa5ff1f9e4ede56d8e69ef4 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Feb 25 09:23:54 2011 -0500 Docbook: change the book id to match the xml file basename This is required for the up-coming external references support. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 40812b53ff5fe548f6eaf43ba4c8781cb43dab43 Author: Samuel Thibault <samuel.thibault@ens-lyon.org> Date: Mon Feb 21 21:54:17 2011 +0100 Make the Local XIM request key releases for braille Braille chords management needs key release events. We need to explicitly request then, else GTK would not pass them throught XFilterEvent and braille wouldn't work. Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> commit c97c42c49cd5095462abecdf908b416fb0b540b6 Author: Samuel Thibault <samuel.thibault@ens-lyon.org> Date: Mon Feb 21 17:27:38 2011 +0100 Match braille patterns with compose tree Braille patterns should also be usable in Compose. This combines the implementation of braille chords and compose tree: only emit the braille pattern if it can not be found in the compose tree, if any. Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> commit 0c6ca565d7c8a47ef3ea823569a9ca5298a5307d Author: Samuel Thibault <samuel.thibault@ens-lyon.org> Date: Mon Feb 21 15:56:54 2011 +0100 Fix status reporting for braille patterns _XimLocalMbLookupString can return a braille keysym even if _Xlcwctomb can't convert to the current MB charset. _XimLocalUtf8LookupString needs to set the braille keysym and status too. Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> commit 993abe751f4141f54d8d28b8b73588a1c9085970 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Feb 11 14:49:17 2011 -0800 Clean up memory when first XCreateRegion succeeds and second fails Error: Memory leak (CWE 401) Memory leak of pointer 's' allocated with XCreateRegion() at line 387 of /export/alanc/X.Org/sx86-gcc/lib/libX11/src/Region.c in function 'XShrinkRegion'. 's' allocated at line 387 with XCreateRegion(). s leaks when s != 0 at line 387. Error: Memory leak (CWE 401) Memory leak of pointer 'tra' allocated with XCreateRegion() at line 1452 of /export/alanc/X.Org/sx86-gcc/lib/libX11/src/Region.c in function 'XXorRegion'. 'tra' allocated at line 1451 with XCreateRegion(). tra leaks when tra != 0 at line 1451. [ This bug was found by the Parfait 0.3.6 bug checking tool. For more information see http://labs.oracle.com/projects/parfait/ ] Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 6ac417cea1136a3617f5e40f4b106aaa3f48d6c2 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Feb 11 14:20:24 2011 -0800 ximcp: Prevent memory leak & double free if multiple %L in string In the highly unlikely event that TransFileName was passed a path containing multiple %L entries, for each entry it would call _XlcFileName, leaking the previous results, and then for each entry it would copy from that pointer and free it, resulting in invalid pointers & possible double frees for each use after the first one freed it. Error: Use after free (CWE 416) Use after free of pointer 'lcCompose' at line 358 of modules/im/ximcp/imLcPrs.c in function 'TransFileName'. Previously freed at line 360 with free. Error: Use after free (CWE 416) Use after free of pointer 'lcCompose' at line 359 of modules/im/ximcp/imLcPrs.c in function 'TransFileName'. Previously freed at line 360 with free. Error: Double free (CWE 415) Double free of pointer 'lcCompose' at line 360 of modules/im/ximcp/imLcPrs.c in function 'TransFileName'. Previously freed at line 360 with free. [ This bug was found by the Parfait 0.3.6 bug checking tool. For more information see http://labs.oracle.com/projects/parfait/ ] Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 502d414118c97d35a44f8e295709682022876331 Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Thu Feb 3 17:08:57 2011 +0200 xcms/cmsProp: don't deal with uninitialized values, fail instead Properly handle the return value of XGetWindowProperty by considering if after the loop as well. Using freed pointer "prop_ret" There were numerous things wrong in how this function interacted with XGetWindowProperty. None of the local variables were initialized and remained that way if the call to XGetWindowProperty returned 1 (not Succeed). That doesn't result in after_ret being initialized in which case if it happens to be 0, the loop was exited. In that case format_ret and nitems_ret were uninitialized and the function might return with success (but with uninitialized pointer in prop_ret) or XcmsFailure. As the buffer enlarging code was called only when XGetWindowProperty failed (returned not Success), after_ret would not have been initialized. It would have been initialized only if the XGetWindowProperty has returned Success earlier, but in that case the code fragment would not have been reached. This patch alters the function to return XcmsFailure if the call to XGetWindowProperty fails. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Reviewed-by: Rami Ylimäki <rami.ylimaki@vincit.fi> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> commit c37e278993b9e5b3d7025ef4c434373a011996ec Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Mon Jan 31 14:02:07 2011 +0200 xcms/LRGB: don't double-free property_return property_return was free'd before and in the case the conditional is true, the call to XcmsGetProperty failed which means that property_return wasn't set so there is no need to free it again. Double free of pointer "property_return" in call to "free" Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> commit 50f4107811249806718a100f9d34f996c58e5e25 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Feb 2 08:58:45 2011 -0800 Xrm.c: ReadInFile: refactor fstat error handling We can simplify the fstat failure case now that the GetFileSize macro has been expanded inline. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Julien Cristau <jcristau@debian.org> commit 5e9c40fcb5da43c9fdacf12967d090bf202daf2a Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Feb 2 08:56:00 2011 -0800 Expand GetSizeOfFile() macro at the one place it's called Removes XrmI.h header that only contained this single macro Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Julien Cristau <jcristau@debian.org> commit 450e17422c0e374d25c643f343ea268cec68da38 Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:01:57 2011 +0200 XlibInt: Use strncpy+zero termination instead of strcpy to enforce buffer size Possible overrun of 8192 byte fixed size buffer "buffer" by copying "ext->name" without length checking Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit e2566e43b02d2d7b7c1c3bb7db7c5ae81c1245fa Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Mon Jan 31 14:02:13 2011 +0200 lc/def/lcDefConv: Use Xcalloc to avoid use of uninitialized memory Fixed by zero'ing conv on allocation with Xcalloc. Then close_converter works properly. Using uninitialized value "conv->state" in call to function "close_converter" Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 03f81ad8fb9783986cf9b17661dd31e95c396681 Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:02:16 2011 +0200 xlibi18n/lcFile: Removed superfluous check for NULL target_dir The situation is already handled before this code. Cannot reach dead expression "0U" inside statement "if (1U + (target_dir ? strl..." Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 1346b9ea3b3882201ff8c3ee462ff4b0d4edf639 Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:02:15 2011 +0200 ximcp/imLckup: Handle negative return value from _Xlcwctomb Fixed by negative value to memcpy by checking for the negative return value of _Xlcwctomb and returning 0/XLookupNone in that case. a negative value was passed to memcpy Unfortunately the other return values for *status don't fit into the error (which appears to indicate some internal error or running out of memory). The other valid status codes are XBufferOverflow, XLookupNone, XLookupChars, XLookupKeySym, and XLookupBoth. Each of these has a specific meaning attached. Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 79a5c86e020f08cc108184298a72e2777036de39 Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:02:14 2011 +0200 ximcp/imTrX: Handle failing XGetWindowProperty Checked return value of XGetWindowProperty and return false if it fails. Return value of "XGetWindowProperty(im->core.display, spec->lib_connect_wid, prop, 0L, (length + bytes_after_ret + 3UL) / 4UL, 1, 0UL, &type_ret, &format_ret, &nitems, &bytes_after_ret, &prop_ret)" is not checked Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 2ace8d5c89c8f6d9f42b4068f4b508ca28f0ced1 Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Mon Jan 31 14:02:12 2011 +0200 XlibInt: info_list->watch_data was reallocated, but result was discarded info_list->watch_data was being reallocated, but the return value of the reallocation was stored only into a local variable. This might cause some funky behavior and crashes. Variable "wd_array" goes out of scope Value "wd_array" is overwritten in "wd_array = (XPointer*)realloc((char*)info_list->watch_data, (((dpy->watcher_count + 1) * 4U == 0U) ? 1U : ((dpy->watcher_count + 1) * 4U)))" Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 2b16a7e683e355c9746290b2cee2fd0dd2bf342a Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:02:10 2011 +0200 GetProp: Zero-initialized error so its resourceID field is initialized Using uninitialized value "error.resourceID" in call to function "_XError" Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 85e9f38e016137f0ff2791eb0d092ab027382d2c Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Tue Feb 1 11:07:25 2011 +0200 xcms/LRGB: Add a label for freeing property_return. The rest of the code uses goto's to free memory allocated later and prevent memory leaks, but there were several paths were property_return was free'd just before a goto. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 3161dc57d4e9b70f852f05e5e474455e121b06ab Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Mon Jan 31 14:02:08 2011 +0200 xcms/LRGB: Fix potential resource leak. property_return was not free'd if the allocation of pRedTbl failed. Reviewed-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit be3e6c205d94dedc1cdebf5d17b987f0f828377a Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:02:06 2011 +0200 Xrm: Handle the extremely unlikely situation of fstat failing Tracked variable "size" was passed to a negative sink. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 3fae16c64d6ef76fd4a25a54c7f7de76596457db Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:02:05 2011 +0200 Xrm: NEWTABLE had a memory leak after a memory allocation error The NEWTABLE macro missed freeing its allocated memory on subsequent memory allocation errors. Added call to Xfree. Variable "table" goes out of scope Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 7110ac653349a23c80c365f11f6270dc27c8975a Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:02:03 2011 +0200 ImUtil: Handle a memory leak in one early return branch Fixed memory leak by adding Xfree for image Variable "image" goes out of scope Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d695f5da9f5b778e54b6987d9177048e32818c4d Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:02:01 2011 +0200 ximcp/imRm: Handle leaking colormap_ret Fixed memory leak by adding Xfree for colormap_ret Variable "colormap_ret" goes out of scope Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit f9eda19d08c1ea0973dfe0bc10a2519d6fd26cc7 Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:01:59 2011 +0200 ximcp/imRmAttr: Handle leaking missing_list Fixed memory leak by adding Xfree and initializing missing_list with NULL Variable "missing_list" goes out of scope Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 3183269e0979c9dbce9d55d9e03937897dc9fb3b Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:01:58 2011 +0200 ximcp/imRmAttr: Handle leaking colormap_ret XFree colormap_ret and initialize it when appropriate. Variable "colormap_ret" goes out of scope Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit f66a032a937030f2d9baa81744d36dc585bb085c Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:01:56 2011 +0200 xlibi18n/lcGeneric: Initialize uninitialized local variable Using uninitialized value "new" Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d0266e06d38110ec908ca28379014eff743630b7 Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 31 14:01:54 2011 +0200 xcmx/cmxColNm: Removed unused assignments to pBuf (in two functions) Pointer "pBuf" returned from "fgets(buf, 256, stream)" is never used Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit cc686655d7bfdeab8b67e01a24bd452a2e9e3fcf Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Feb 1 12:30:56 2011 +0200 XDefaultOMIF.c: Fix memory leaks in get_font_name Instead of copying the value returned by get_prop_name and then releasing it, directly use the return value of get_prop_name, which allocates memory for the name. If get_prop_name returns NULL, continue on to XFreeFont to release the font before returning the NULL via the normal function return. Reviewed-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 95796351435d81eaef8166d49ba3a6e7b633d70a Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Jan 31 14:50:19 2011 -0500 config: comment, minor upgrade, quote and layout configure.ac Group statements per section as per Autoconf standard layout Quote statements where appropriate. Autoconf recommends not using dnl instead of # for comments Use AC_CONFIG_FILES to replace the deprecated AC_OUTPUT with parameters. Remove redundant AC_CANONICAL_HOST included in XORG_DEFAULT_OPTIONS This helps automated maintenance and release activities. Details can be found in http://wiki.x.org/wiki/NewModuleGuidelines Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit e994ab227ed28655565c3193e63733630105e7f9 Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Tue Jan 18 12:49:48 2011 +0200 Comparing array against NULL is not useful "&xkb->server->vmods != NULL" Removed superfluous comparison. Reviewed-by: Dirk Wallenstein <halsmit@t-online.de> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> commit 4115f051e62f9b098efce691e070d44f09f30f1c Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Wed Jan 12 15:51:11 2011 +0200 Variable "entry" tracked as NULL was dereferenced. Check entry for non-nullness before dereferencing it Reviewed-by: Dirk Wallenstein <halsmit@t-online.de> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> commit 0edb76d1d5fdca5a2543332699be2e72386dab24 Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Thu Jan 27 09:54:00 2011 +0200 Dereferencing possibly NULL "str" in call to function "memcpy" (Deref assumed on the basis of 'nonnull' parameter attribute.) If _XkbGetReadBufferPtr returns NULL, goto BAILOUT Reviewed-by: Dirk Wallenstein <halsmit@t-online.de> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> commit 59da8a211ef723909d0530c0331d541db8e63378 Author: Erkki Seppälä <erkki.seppala@vincit.fi> Date: Mon Jan 10 16:17:47 2011 +0200 Using freed pointer "e" Reordered code to first to do the comparison and then to release data Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> commit 0f11c229f7099f7c5aeed4691b358dca151dac7d Author: Matt Dew <marcoz@osource.org> Date: Thu Jan 27 00:31:23 2011 -0700 Remove <literal> tags from compose-chart.pl so pdf building doesn't die on soft-hyphens. Signed-off-by: Matt Dew <marcoz@osource.org> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit ca00bb202f3afcdbbcb8c4cb50308c5dd03f2322 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Jan 28 16:07:07 2011 -0500 config: replace deprecated AC_HELP_STRING with AS_HELP_STRING This silences an Automake warning. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 8dac08c7515cb6f8a8f4d0a721713697eae755d8 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Jan 28 14:59:04 2011 -0500 config: remove unrequired AC_HEADER_STDC Autoconf says: "This macro is obsolescent, as current systems have conforming header files. New programs need not use this macro". commit d4483375e37a72631d5821413cb75a423e990ffe Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Jan 18 19:37:02 2011 -0800 config: Use correct AC_CONFIG_HEADERS macro Replaces obsolete AM_CONFIG_HEADER and undocumented AC_CONFIG_HEADER Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Gaetan Nadon <memsize@videotron.ca> Reviewed-by: Dan Nicholson <dbn.lists@gmail.com> commit c6405fe931f313a0d159bdad00244fc8aae12468 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sun Jan 16 11:55:23 2011 -0800 config: remove AC_PROG_CC as it overrides AC_PROG_C_C99 XORG_STRICT_OPTION from XORG_DEFAULT_OPTIONS calls AC_PROG_C_C99. This sets gcc with -std=gnu99. If AC_PROG_CC macro is called afterwards, it resets CC to gcc. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Gaetan Nadon <memsize@videotron.ca> commit 17aa1f2305da0952ad594c7329d08aba21f13ac8 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sun Jan 16 11:40:59 2011 -0800 Update to xf86bigfontproto >= 1.2.0 header name Clears compile-time warning of: "X11/extensions/xf86bigfstr.h", line 1: #warning: "xf86bigfstr.h is obsolete and may be removed in the future." "X11/extensions/xf86bigfstr.h", line 2: #warning: "include <X11/extensions/xf86bigfproto.h> for the protocol defines." Requires xf86bigfontproto >= 1.2.0 if --disable-xf86bigfont is not passed to configure. Also removes unnecessary AC_SUBST of BIGFONT_CFLAGS & BIGFONT_LIBS that PKG_CHECK_MODULES does automatically Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Julien Cristau <jcristau@debian.org> commit a9228fcc676aacf9a760dd94891c89f9bc82b20d Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Jan 11 17:55:22 2011 -0800 libX11 1.4.1 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 92fa96451af37a7a0f2592de07643fdaed7a9efd Author: Pauli Nieminen <ext-pauli.nieminen@nokia.com> Date: Mon Jan 3 12:25:28 2011 -0500 Initialize event type If we receive unsupported event closing connection triggers valgrind error. ==12017== Conditional jump or move depends on uninitialised value(s) ==12017== at 0x487D454: _XFreeDisplayStructure (OpenDis.c:607) ==12017== by 0x486857B: XCloseDisplay (ClDisplay.c:72) *snip* ==12017== Uninitialised value was created by a heap allocation ==12017== at 0x4834C48: malloc (vg_replace_malloc.c:236) ==12017== by 0x4894147: _XEnq (XlibInt.c:877) ==12017== by 0x4891BF3: handle_response (xcb_io.c:335) ==12017== by 0x4892263: _XReply (xcb_io.c:626) *snip* Problem is that XFreeDisplaySturture is checking for qelt->event.type == GenericEvent while _XUnknownWireEvent doesn't store the type. Reviewed-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com> commit fa9747b9d4443eef9b1687b8b1208801f5c585da Author: Fernando Carrijo <fcarrijo.lists@gmail.com> Date: Tue Dec 28 16:18:57 2010 -0500 specs: convert images from gif to svg format. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 0012e2a4eaddc0840617b4758931ad976ca2eb7c Author: Philipp Reh <sefi@s-e-f-i.de> Date: Wed Dec 22 15:14:05 2010 +0000 Events: Store event cookie when dequeuing event When we dequeue an event in XCheckTypedEvent or XCheckTypedWindowEvent, make sure to store the corresponding cookie too. Signed-off-by: Philipp Reh <sefi@s-e-f-i.de> Reviewed-by: Daniel Stone <daniel@fooishbar.org> commit d2714d65e85b44abedf5f82e1a31506dba397ef2 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Dec 21 18:47:16 2010 -0800 Revert "Mark atom names argument to XInternAtoms as const" This reverts commit c8701115462b482d99ecff24d9de0f2806084ba5. The constification of a pointer to a pointer caused unexpected issues, and xorg-devel was unable to come up with a clean, safe, reasonable way to handle them, so we're chalking this up for now as yet another mistake in the Xlib API definition we'll be living with. See https://bugs.freedesktop.org/show_bug.cgi?id=32098 for details. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 6459f9a48a82de3bc0235bd36acab2df11e436d5 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Dec 20 20:54:07 2010 -0800 specs/XKB: make acknowlegement section <preface> instead of <chapter> Fixes numbering of actual chapters to match their filenames and to make the table/figure numbering match the references in the text. Reported-by: jelmd on freenode irc Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 42c653d5413fc5870486a9cf51dd28d1e88f7c69 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sun Dec 19 23:53:02 2010 -0800 Add XKBlib spec images to dist_spec_DATA for distribution & installation Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Gaetan Nadon <memsize@videotron.ca> commit 8f8a3c8c42af82976d261ac2447cfbb0f90fa77d Author: Matt Dew <matt@osource.org> Date: Tue Nov 30 10:52:07 2010 -0500 specs: convert XKBlib spec from Framemaker to DocBook.xml Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit c8701115462b482d99ecff24d9de0f2806084ba5 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sun Nov 21 20:49:05 2010 -0800 Mark atom names argument to XInternAtoms as const Updates code & docs for XInternAtoms. The single atom name argument to XInternAtom was already const char * in the code, but not the docs, so updated it in the docs too. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> commit 24db5b5ff0d51b0ed9d9701a792c5f14f23b638d Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sun Nov 21 14:04:32 2010 -0800 libX11 1.4.0 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 18d3c3e9de19e936281b111d5a82acfb3a3f552e Author: Dan Nicholson <dbn.lists@gmail.com> Date: Sat Nov 6 21:58:10 2010 +0000 config: Check host string when deciding architecture to build for When checking for the OS/2 platform, $target_os is used. However, unless building a cross compiler, the $host* strings contain the platform details for the build system. See: http://www.gnu.org/software/automake/manual/automake.html#Cross_002dCompilation $host_os is already being used to determine the transport and threading options. Signed-off-by: Dan Nicholson <dbn.lists@gmail.com> Reviewed-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit affc2488a7f2660a74dc8354fc3e0bff2c4f879c Author: Dan Nicholson <dbn.lists@gmail.com> Date: Sat Nov 6 21:58:09 2010 +0000 config: Fix architecture check for OS/2 to skip nios2 cpu The OS/2 platform requires some utility functions as well as having a non-32 bit wchar_t. Fix the configure check so that it doesn't also affect the nios2 cpu, which wouldn't influence these operating system issues. Signed-off-by: Dan Nicholson <dbn.lists@gmail.com> Tested-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 8cbca8a10761d1ea75a75bafa647632d6c0dac71 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Nov 9 13:04:44 2010 -0500 config: HTML file generation: use the installed copy of xorg.css Currenlty the xorg.css file is copied in each location where a DocBook/XML file resides. This produces about 70 copies in the $(docdir) install tree. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 3e8907305e1818369aef5a5c0da61f09e20de4f8 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Oct 29 22:02:10 2010 -0700 libX11 1.3.99.903 (1.4.0 RC3) Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 5d245d8013289b13e0c42100951b26166c7fada4 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Oct 29 22:01:39 2010 -0700 Require xorg-macros 1.11 now that it is released Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 1ec89689fc771f116a6165226b9e076f54254a40 Author: Dan Nicholson <dbn.lists@gmail.com> Date: Fri Oct 22 19:09:07 2010 -0700 docs: Disable fop documentation by default fop is used to generate the pdf and ps formats of the documentation. This can significantly slow down the build, especially when creating all the compose key charts. Since few people probably want the full set of doc formats, set the default to 'no'. The default parameter for XORG_WITH_FOP is only available in recent macros. Users generating configure from older macros will just get 'auto' as the default. Signed-off-by: Dan Nicholson <dbn.lists@gmail.com> Reviewed-by: Gaetan Nadon <memsize@videotron.ca> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 03877bda911b72ac60a7144d6eced7d5be4b4d72 Author: Jon TURNEY <jon.turney@dronecode.org.uk> Date: Wed Apr 14 13:38:18 2010 +0100 Add C.UTF-8 and C.ASCII locale aliases Add C.UTF-8 locale as an alias for en_US.UTF-8 Add C.ASCII locale as an alias for C (C.UTF-8 is the default locale for cygwin. It also exists in debian, although I don't think it's intended for use by humans.) Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk> Acked-by: Julien Cristau <jcristau@debian.org> Reviewed-by: James Cloos <cloos@jhcloos.com> commit 81d1d9a6bdca779a44f931730b866eea75777c00 Author: Dan Nicholson <dbn.lists@gmail.com> Date: Sat Oct 9 16:00:47 2010 -0700 docs: Remove directory prerequisites from make rules Make expects prerequisites to be files with valid timestamps, and directories are treated as always being out of date. Thus, any targets depending on directories will always be rebuilt. Instead, the doc rules are changed to always create the target's leading directory. This should prevent the documentation from being rebuilt when "make install" is run. Signed-off-by: Dan Nicholson <dbn.lists@gmail.com> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d0cbf388919364fe6b5b9127f36426eb744090a0 Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Sun Sep 26 21:21:16 2010 -0700 Add an "X11_" string to header guards to avoid possible collision This addresses a build failure which can result from <X11/Xlocale.h> and <xlocale.h> being included in the same code since they both used the same _XLOCALE_H_ protection. Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit b51ac675f44f5ce1a28c5734bf3c26983f8b4192 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Sep 21 19:53:03 2010 -0700 libX11 1.3.99.902 (1.4.0 RC2) Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 986bb6d1d54368fe91e3ea24f518d43ce6179782 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Sep 14 00:10:31 2010 -0700 Bug 19379 - Provide docs with overview of all compose key combinations Adds compose-chart.pl to generate DocBook/XML documents listing compose keys, and Makefile rules to generate HTML & PDF output from them if xmlto is present. https://bugs.freedesktop.org/show_bug.cgi?id=19379 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Mikhail Gusarov <dottedmag@dottedmag.net> Reviewed-by: James Cloos <cloos@jhcloos.com> Tested-by: Gaetan Nadon <memsize@videotron.ca> commit 3eb064071695ebf0f371163ed818a428dfeba8e6 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sat Sep 11 00:49:21 2010 -0700 Make locale data build non-recursive / parallelizable On a 4 core CPU with gmake -j 16 the nls subdir builds in half the time, plus this simplifies the next set of changes. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Mikhail Gusarov <dottedmag@dottedmag.net> Reviewed-by: James Cloos <cloos@jhcloos.com> Tested-by: Gaetan Nadon <memsize@videotron.ca> commit a3fc78ac352e5a70a958996ef6aec50f653974d1 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Sep 17 17:38:11 2010 -0400 config: remove man page suffix from bottom summary The man page suffix is the same for all libraries on a given platform and is not configurable. It should have been removed in commit 09edc6de6. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit a52b0068f36c739eb7e426214cd72a8d9bb776ca Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Sep 17 17:29:30 2010 -0400 config: remove unhelpful comment in .gitignore Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 10dd881e7818be9074da4ab3a68577adcdaf71d2 Author: Adam Jackson <ajax@redhat.com> Date: Wed Sep 8 10:44:23 2010 -0400 Zero buffer data in BufAlloc() Inspired by a pattern in NoMachine's NX. Consistently zeroed buffers compress better with ssh and friends. Note that you'll need to rebuild all your protocol libraries to take advantage of this. Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit da099f0d2015831ea5f4a5d0740ed962aa4d5d8b Author: James Cloos <cloos@jhcloos.com> Date: Sun Sep 12 17:00:54 2010 -0400 Revert “Dolt-ify" Libtool’s is now sufficiently fast that DOLT is no longer worth the bother, even on those few systems where is works. This reverts commit 3e9afd501e40d76040635bd9a3045bcaf5a03b60 and part of commit d31e644c65c52828ea3e7abd94a8cf9aee12265c. It conflicted with commit f6a4fd0c7615684d08e848245849dea4017a5214 which moved dolt from configure.ac to m4/dolt.m4. And it addresses: http://bugs.freedesktop.org/show_bug.cgi?id=28188 Signed-off-by: James Cloos <cloos@jhcloos.com> commit 2661fbe6b809c937a60c2c1ca5ddb8280e399bd8 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Sep 9 19:24:29 2010 -0700 XIM spec title page minor formatting cleanup Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit f99f1380bbf7bb2a0c491acad4a3d8db44bfd752 Author: Jens Petersen <petersen@redhat.com> Date: Mon Aug 23 18:08:10 2010 -0700 Bug 29773: aliases for nb_NO.utf8 and nn_NO.utf8 <https://bugs.freedesktop.org/show_bug.cgi?id=29773> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit b15b8a558ec64c834cc8f6a52d7f3c4f530c8c4b Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Sep 3 23:11:53 2010 -0700 Sun's copyrights are now owned by Oracle Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 7742bf62b1fa652da4270587e280249945367cae Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Sep 3 18:31:44 2010 -0700 libX11 1.3.99.901 (1.4.0 RC1) Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 5a02d6d74b5451d48d8f55709dfd4ecd3c068586 Author: Jeroen Hoek <mail@jeroenhoek.nl> Date: Sun Aug 29 09:47:06 2010 -0400 libX11/nls compose tables, add LATIN CAPITAL LETTER SHARP S Add LATIN CAPITAL LETTER SHARP S (See https://bugs.freedesktop.org/show_bug.cgi?id=29448 for rationale) Signed-off-by: James Cloos <cloos@jhcloos.com> commit 09edc6de6619a2eabda3b808ebff4165550664f1 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Aug 13 14:21:08 2010 -0400 config: remove man-pages configuration option This option was added in commit 6e752ea120 with no explanation. The section number is provoded by XORG_MANPAGE_SECTIONS There is no case where libX11 should be different than other libs The option was also used to disable building of the man pages, which build in 14 secs. No indication this is required. If there is a requirement from system builders to disable building of man pages, it could be done consistently for all modules. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit f92e754297ec5fdb81068b56a4435026666224fa Author: Aaron Plattner <aplattner@nvidia.com> Date: Sun Aug 15 21:51:38 2010 -0700 XOpenDisplay: save the correct display_name value The X Test Suite's XDisplayString test checks the invariant XDisplayString(XOpenDisplay(str)) == str. The Xlib XOpenDisplay violates this invariant by expanding str to the canonical form "host:display.scrn" (unless HAVE_LAUNCHD is set and it starts with "/tmp/launch"). E.g., this expands ":1" to ":1.0": 400|26 1 1 19:26:41|IC Start 200|26 1 19:26:41|TP Start 520|26 1 00032625 1 1|VSW5TESTSUITE PURPOSE 1 520|26 1 00032625 1 2|Assertion XDisplayString-1.(A) 520|26 1 00032625 1 3|A call to XDisplayString returns the string that was used 520|26 1 00032625 1 4|as the argument to the XOpenDisplay call that returned the 520|26 1 00032625 1 5|value used as the display argument. 520|26 1 00032625 1 6|METH: Open a connection using XOpenDisplay. 520|26 1 00032625 1 7|METH: Obtain the display string using XDisplayString. 520|26 1 00032625 1 8|METH: Verify that the value of the string is the parameter used in XOpenDisplay. 520|26 1 00032625 1 9|METH: Close the display using XCloseDisplay. 520|26 1 00032625 1 10|REPORT: XDisplayString() returned ":1.0" instead of ":1". 220|26 1 1 19:26:41|FAIL 410|26 1 1 19:26:41|IC End Fix this by deleting all of the code to construct the canonical path and just stashing a copy of the original display_name in dpy->display_name. Signed-off-by: Aaron Plattner <aplattner@nvidia.com> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> commit 1dc401f678469d0235e6d0b28eb4356f03327c9f Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Aug 13 13:06:51 2010 -0400 man: xkb: remove unused variable LIB_MAN_DIR_SUFFIX Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit cbe9eebd11e5ebab4280d25b57b4cd4001241619 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Aug 13 11:42:29 2010 -0400 man: simplify building of shadow man pages Store the shadow files in git as any other man page. Move man pages to man dir and use the common makefile Local fix in CVS for bug 5628 is not required as the problem has been fixed in util-macros d9062e4077ebfd0985baf8418f3d0f111b9ddbba Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit bfd899c9af2318ecbe84cb69007dba4223fdb502 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Aug 9 09:39:26 2010 -0400 config: reinstate XORG_PROG_RAWCPP erroneoulsy removed in commit 76e07ef6911734eac418e399b114f1b544512736. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 76e07ef6911734eac418e399b114f1b544512736 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Aug 6 14:01:51 2010 -0400 man: using the C preprocessor is not required for man pages. There were no special symbols needing cpp. Everything can be handled by the default MAN_SUBSTS in util-macros. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 4b8ff7db39f2fe7ef12968d462aaf3f9054b6c18 Author: Jamey Sharp <jamey@minilop.net> Date: Fri Aug 6 15:51:56 2010 -0700 Fix use-after-free in _XReply on X errors. _XReply would always call dequeue_pending_request on errors. When it got an error for the current request, it would call dequeue, then break out of the loop; then, if it had an error in the event queue, it would compare it with the sequence number of the now-freed pending request. _XReply already stored that sequence number in dpy->last_request_read before freeing it, so look at that instead. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=29412 Signed-off-by: Jamey Sharp <jamey@minilop.net> Signed-off-by: Josh Triplett <josh@joshtriplett.org> commit 9fa146b30046396b70d64986e50d6617b3a8ac48 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sat Jul 31 16:15:35 2010 -0400 specs: xsl stylesheet requires abs path to images Using abs_builddir requires automake 1.10 or later. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit a8727d4bc39015e303b4128d0ad8aaf6d5fc9f0a Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Aug 1 14:13:07 2010 -0400 specs: update .gitignore now that all groff generated files are gone Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit f70527f05677aaf6a493ba42d2d95f738aaebafa Author: Adam Jackson <ajax@redhat.com> Date: Thu Jul 29 11:11:21 2010 -0400 nls: Switch one of the interrobang sequences to gnaborretni Since gnaborretni is primarily used in LTR locales, the ? part of the sequence reflects the position of the bulge in the ?. When scanning an inverted interrobang left-to-right, you see the bulge first, so the compose sequence ?! is used; upright interrobang shows the bulge last, so it's !?. This is a change in behaviour, but I was unable to come up with anything better. ??!! or !!?? would match the patterns for ¿ and ¡, but they would delay evaluation of them; "¿Qué?" wouldn't show the ¿ until you hit Q. Likewise ?!?! and !?!? would delay showing the interrobang itself. ~!? and ~?! were considered but are arguably less intuitive. Reviewed-by: James Cloos <cloos@jhcloos.com> Signed-off-by: Adam Jackson <ajax@redhat.com> commit 511c4f6d29b2da4f71093feabcbb3913cb5d12a7 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Jul 28 10:27:39 2010 -0400 specs: move indexterm from glossdef to glossterm This move fixes a Java class cast exception in the glossary. The problem was introduced in commit 26f4f0d50840fe5ba4c46aae0a8e68db0059434b It may not happen on all versions of the doc toolchain. There is no reason why indexterm cannot appear in glossdef, this is a workaround to an implementation problem found by trial and error. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 87a108f3aa565aa803dacb3a53b811f45025b609 Author: Matt Dew <matt@osource.org> Date: Sat Jul 24 14:46:57 2010 -0400 specs: replace troff source with docbook-xml source Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 8e603413586ff42b1351688f6f99318cbe243bca Author: Julien Cristau <jcristau@debian.org> Date: Sat Jul 24 22:13:07 2010 +0200 Compose.man: default user compose file is .XCompose, not .Xcompose The path was correct in the DESCRIPTION section, but not in FILES. Signed-off-by: Julien Cristau <jcristau@debian.org> commit 554da76ece85d0fc0cada45a86860e69c2107e9a Author: Daniel Stone <daniel@fooishbar.org> Date: Tue Jul 20 12:34:48 2010 +0100 NLS: Add \o/ Compose sequence Unicode is even more pointlessly awesome! Add a binding for Compose-\o/ to U+1F64C PERSON RAISING BOTH HANDS IN CELEBRATION. Signed-off-by: Daniel Stone <daniel@fooishbar.org> commit 2e7a18b6a617b9b4bfcea2d36f2bd2d7e0c4a3dd Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jul 9 18:13:13 2010 +0100 XStringToKeysym: Cope with 0x1234cafe-style input If we get input in the style of 0xdeadbeef, just return that exact keysym. Introduces a dependency on strtoul, which I'm told is OK on all the systems we care about. Signed-off-by: Daniel Stone <daniel@fooishbar.org> commit 3df45ed0c29b98ff468a0ff0ba24830bb664fd5a Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Jul 19 17:58:27 2010 -0700 specs/libX11: Fix column count of Gravity Attributes table Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 53bcba0d1d2dc3fd5e0de4bae3da30a1aa31a0c4 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Jul 19 14:43:38 2010 -0700 specs/libX11: Convert \- to − and \^ to either   or removed Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 5a0b45275638281e1bb2ae7d3e16b98e6470dae9 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Jul 19 11:28:50 2010 -0700 specs/libX11: Manual cleanup pass over Ch. 1 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 21567992958a6f12b3d0186f2f27a5b2a41b8448 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Jul 19 14:51:10 2010 -0700 specs/libX11: make sure all files have DOCTYPEs so standard entities work Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit c944a8521f5760b485192658b921145159cdb439 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sun Jul 18 13:12:20 2010 -0700 specs/libX11: Fix up list of header files in Ch.1 & add index entries Combination of manual editing and automatic substitution via: perl -i -p -00 -e 's{<varlistentry>(\s+)<term><X11/([^&]+)></term>(\s+)<listitem>(\s+)<para>}{<varlistentry id="Standard_Header_Files:$2">$1<term><filename class="headerfile"><X11/$2></filename></term>$3<listitem>$4<indexterm type="file"><primary><filename class="headerfile">X11/$2</filename></primary></indexterm>$4<indexterm><primary>Files</primary><secondary><X11/$2></secondary></indexterm>$4<indexterm><primary>Headers</primary><secondary><X11/$2></secondary></indexterm>$4<para>}g' CH01.xml Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit bb66e8f1ce330043278d3e8cbc7d5d3bc56ee030 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sun Jul 18 12:47:27 2010 -0700 specs/libX11: Add indexterms for headerfiles that .hN used to provide Automatic substitution performed via: perl -i -p -e 's{^<<filename class="headerfile">([^<]+)</filename>>(.*)$}{<filename class="headerfile"><$1></filename>$2\n<indexterm type="file"><primary><filename class="headerfile">$1</filename></primary></indexterm>\n<indexterm><primary>Files</primary><secondary><filename class="headerfile"><$1></filename></secondary></indexterm>\n<indexterm><primary>Headers</primary><secondary><filename class="headerfile"><$1></filename></secondary></indexterm>}' *.xml Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d0b0d215cb85da48b323b1392149ce181e7ef5ec Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Jul 16 21:15:13 2010 -0700 specs/libX11: convert multicolumn lists from tables to <simplelist> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit e679f80c6210c0aefe3669f8f536353619097a4b Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Jul 16 20:51:52 2010 -0700 specs/libX11: Tag WM_* as <property> Mass substitution done by: perl -i -p -e 'if ($_ !~ m{^\<}) { $_ =~ s{(WM_\w+)}{<property>$1</property>}g; }' *.xml Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit c7b7e59b3b22221d0be6286c540001c360308f69 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Jul 16 20:41:33 2010 -0700 specs/libX11: Convert simpler eqn markup to docbook tags Mostly "sup" to <superscript> There's several more complicated equations that will probably need MathML or SVG to solve. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 897486c54c6a54771867d667441aaf9a4b9c35ca Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Jul 16 00:50:39 2010 -0700 specs/libX11: App. D: convert literallayouts to synopsis or programlisting Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 692906c3b3d8aa8b8927fbc230c3050d633785d2 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Jul 16 00:36:43 2010 -0700 specs/libX11: Fix section headers in Appendix D Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit bcc41baa02e137884d847aec0f3ff8ca5c85c32f Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Jul 14 07:22:26 2010 -0700 specs/libX11: Explicitly tag document as English Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 6783544706ff370e900c137f951e90230586d6dc Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Jul 12 22:03:18 2010 -0700 specs/libX11: Appendix C: convert literallayouts to synopsis or programlisting Fixes display of a bunch of function prototypes and sample code Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 8834cd9285e6aaf437aee56292c508d99a090fa9 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Jul 12 18:37:16 2010 -0700 xmlrules.in: Add chunked-html rule to manually generate smaller files Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 53f78680c34ebc94ce26b5e14c2a0003435cf10d Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Jul 12 18:35:59 2010 -0700 specs/libX11: Convert Appendix A tables to real tables Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 705a1257a8a47f4a1f94979aee09a837500ede7d Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Jul 12 18:38:09 2010 -0700 specs/libX11: Fix out-of-place text in Chapter 1 DTD violation error introduced in 89cc2e02e7c29ef9a02f0cfdf2090a2934f539e4 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit a151346a2b7810e988f1de4b1e00b37672dc587a Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Mon Jul 12 16:52:12 2010 -0700 launchd: Explicitly search /sbin Previously, launchd wasn't found if /sbin wasn't in the user's PATH. https://bugs.freedesktop.org/show_bug.cgi?id=29028 Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit 89cc2e02e7c29ef9a02f0cfdf2090a2934f539e4 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Jul 12 13:38:04 2010 -0700 Replace untranslated .hN macros with <filename> tags to show header names Translation performed by: perl -i -p -e 's{\<\!-- .hN (\S+) (\S+)?\s*-->} {<<filename class="headerfile">$1</filename>>$2}' *.xml Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 75480440946603b8efdbbf78b88d59c641b6d2c8 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sat Jul 10 00:06:13 2010 -0700 specs/libX11: Mass substitution of <function> tags with more specific tags Matched names from X headers & "nm libX11.so" output to names in spec to map to more specific tags. Tags used: <code> code fragments <constant> enum values <errorname> X protocol errors <filename> filenames <function> functions <function> function-like macros (#define foo(a,b)...) <returnvalue> function return codes <structfield> struct members <structname> struct names (even when typedefed) <symbol> simple value #defines (#define NAME value) <systemitem> X protocol requests <systemitem class="event"> X protocol events <type> non-struct typedefs <varname> global variables (Also fixed a couple typos detected by failures of this matching, such as XESSetPrintErrorValues -> XESetPrintErrorValues.) Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 26f4f0d50840fe5ba4c46aae0a8e68db0059434b Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Jul 9 00:37:23 2010 -0700 specs/libX11: Glossary cross-reference links Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 930b52d84031de0e15e0a11cf4ecfd3b2f59e073 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Jul 8 21:19:08 2010 -0700 specs/libX11: Make whitespace around <function> tags more uniform Simplifies regular expressions for further mass substitutions. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 730ce6b8aca77b77385aa894d234cbde5fcbce37 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Jul 9 20:10:37 2010 -0400 specs: use pattern rules rather than suffix rules This allows target to rebuild when included .xml files are changed. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 5527b4bc8ce7de60123eb28789ddef54aa48a378 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Jul 8 20:56:41 2010 -0700 specs/libX11: Move punctuation outside of the <function> tags Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d66d2134dfc38cd866c7c2d9ea45ed4b4dad23f0 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Jul 8 20:42:50 2010 -0700 specs/libX11: Mark a number of <acronym>s Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d5bbb12f55ac9f691eab6242cedc53207275131b Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Jul 8 19:31:36 2010 -0700 specs/libX11: Glossary terms should not be marked as functions Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 5decf7bc5dae0ae0c45c47eaaa9c4fdf9515ca1c Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Jul 8 19:28:18 2010 -0700 specs/libX11: Clean up author list & acknowledgements a little Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 0cd29bdb332c333e5123dce65b25ad1d97fbdae3 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Jul 8 17:30:34 2010 -0700 specs/libX11: Convert troff .IN macros to docbook <indexterm> tags Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit a67d99ccbe22c8ce5f7a12f13b8991d9e0cf4491 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Jul 8 17:29:21 2010 -0400 specs: specdir is required to install xml files The source is installed as well as the targets. This failed when configuring with --without-xmlto Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit e14273f44c1501ab51db4adcb83b18a1073787d8 Author: Matt Dew <matt@osource.org> Date: Thu Jul 8 14:42:32 2010 -0400 specs: replace troff source with docbook-xml source Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit bea0873caf50e9ed1b89255775d9ab912cbecd45 Author: Daniel Stone <daniel@fooishbar.org> Date: Thu Jul 8 16:49:51 2010 +0100 XStringToKeysym: Check strdup() return value Signed-off-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Keith Packard <keithp@keithp.com> commit cffa71b4a5743e2b6675b9a917d15aef4177d513 Author: Marko Myllynen <myllynen@redhat.com> Date: Mon Jun 28 15:08:05 2010 +0300 Fix two typos in SFS 5966 Annex 3 X.Org bug#28792 <https://bugs.freedesktop.org/show_bug.cgi?id=28792> Signed-off-by: Julien Cristau <jcristau@debian.org> commit eb023c0f8919e809b8b609e1467b14d20a290aa7 Author: Daniel Stone <daniel@fooishbar.org> Date: Tue Jun 15 18:49:43 2010 +0100 Delete now-redundant XKeysymDB Since XStringToKeysym now supports all the vendor keysyms, just delete our XKeysymDB, which was incomplete at best, misleading at worst, and always an annoyance. Signed-off-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 00175397480b76d32bf82b0c7c94c91a2a95954e Author: Daniel Stone <daniel@fooishbar.org> Date: Tue Jun 15 18:48:48 2010 +0100 makekeys: Scan vendor keysyms as well as core Since we can't really live without vendor keysyms, scan them all in to generate ks_tables.h, rather than only doing the core ones, and leaving the vendor syms to be manually synchronised with XKeysymDB. Signed-off-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit ebd6ef0a4db0ddef0ae17ad14571518ccdeea5ba Author: Daniel Stone <daniel@fooishbar.org> Date: Tue Jun 15 18:47:37 2010 +0100 XStringToKeysym: Special case for XF86 keysyms Some XFree86 keysyms were in XKeysymDB as XF86_foo, despite really being XF86foo. So, if we get to the bottom of XStringToKeysym and haven't found our XF86_foo, try it again as XF86foo. Signed-off-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 8c2ffce9e5c6eef8a04f7e2732db46b3b62e13bb Author: Daniel Stone <daniel@fooishbar.org> Date: Tue Jun 15 17:20:48 2010 +0100 configure.ac: Change from deprecated AC_DEFINE_DIR to AX_ AC_DEFINE_DIR is deprecated as it's squatting on the autoconf-builtin namespace, so start using the more proper AX_DEFINE_DIR instead. Signed-off-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Gaetan Nadon <memsize@videotron.ca> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 6de368c9aa7ccd2fcd62fca5a2b278913db4d03d Author: Fernando Carrijo <fcarrijo@yahoo.com.br> Date: Thu Jul 1 06:50:47 2010 -0300 Purge macros NEED_EVENTS and NEED_REPLIES Signed-off-by: Fernando Carrijo <fcarrijo@yahoo.com.br> Acked-by: Tiago Vignatti <tiago.vignatti@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 0b724231be17f19538ee115a03b82b221b1f83c0 Author: Adam Jackson <ajax@redhat.com> Date: Wed Jun 30 16:30:49 2010 -0400 Use -version-number consistently instead of -version-info The latter is libtool braindamage. Signed-off-by: Adam Jackson <ajax@redhat.com> commit 241a990afcf9c967c587ad6fd245df21b68b1ad9 Author: Juliusz Chroboczek <jch@pps.jussieu.fr> Date: Tue Jun 29 18:32:42 2010 +0200 Make Compose-comma map to ogonek for I and U in UTF-8 locales. With the preceding patch, it makes the UTF-8 compose map consistent with the ISO 8859-4 and -13 maps. commit af55e582f485a668c2bf43129be972bc65f03c60 Author: Juliusz Chroboczek <jch@pps.jussieu.fr> Date: Tue Jun 29 18:20:18 2010 +0200 Make Compose-comma map to Ogonek for A and E in UTF-8 locales. This makes the UTF-8 compose file consistent with the ISO 8859-2 compose file as far as Polish is concerned. We only sacrifice one pair of characters, e-cedilla, which is not used in any language. commit d6ba13009fc9ef876a104b907ffef73c6e405d4b Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Jun 24 13:13:11 2010 -0700 Define FILE_MAN_DIR_SUFFIX so XCompose shadow page has correct path Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 978c7238789037de917b9423ea9adfb006da1260 Author: Jamey Sharp <jamey@minilop.net> Date: Sat Jun 19 10:44:55 2010 -0700 poll_for_response: Really handle xcb_poll_for_reply getting a reply. Don't lose async replies. That's bad. `xlsfonts -l`, which uses XListFontsWithInfo, worked fine, because the _XReply path worked; that path waited for replies, rather than polling. However, XRecordProcessReplies, which does nothing but call XPending, relied on the event-handling path to process async replies, and that was busted. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=28595 Signed-off-by: Jamey Sharp <jamey@minilop.net> commit ef67486c5a8aada24fd95b2991a3c4979f53805f Author: Jamey Sharp <jamey@minilop.net> Date: Mon Jun 21 13:34:15 2010 -0700 Revert "xcb_io.c: poll_for_response doesn't guarantee there's a pending request." This reverts commit 4a8b6528ff69f6feb8c0e119939b4ce6c088f29e, because as a matter of fact, if poll_for_response returns NULL when we know dpy->xcb->next_event is non-NULL, there *is* guaranteed to be a pending request. commit 301ec5b41e9d253a446db656e1789ac7345dc433 Author: Jamey Sharp <jamey@minilop.net> Date: Mon Jun 21 13:24:24 2010 -0700 Revert "poll_for_response: Really handle xcb_poll_for_reply getting a reply." This reverts commit c115095d7f2bc4f5a4fb26380e3698fefdad7611. We *do* need to check poll_for_event every time through the loop in poll_for_response, so the commit did too much. commit 4a8b6528ff69f6feb8c0e119939b4ce6c088f29e Author: Jamey Sharp <jamey@minilop.net> Date: Mon Jun 21 10:54:02 2010 -0700 xcb_io.c: poll_for_response doesn't guarantee there's a pending request. Fixes the second bug reported in: https://bugs.freedesktop.org/show_bug.cgi?id=28595 Signed-off-by: Jamey Sharp <jamey@minilop.net> commit c115095d7f2bc4f5a4fb26380e3698fefdad7611 Author: Jamey Sharp <jamey@minilop.net> Date: Sat Jun 19 10:44:55 2010 -0700 poll_for_response: Really handle xcb_poll_for_reply getting a reply. Don't lose async replies. That's bad. `xlsfonts -l`, which uses XListFontsWithInfo, worked fine, because the _XReply path worked; that path waited for replies, rather than polling. However, XRecordProcessReplies, which does nothing but call XPending, relied on the event-handling path to process async replies, and that was busted. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=28595 Signed-off-by: Jamey Sharp <jamey@minilop.net> Signed-off-by: Josh Triplett <josh@joshtriplett.org> commit a25ae169862ab9b76daf259613b37c6b07bc2ef2 Author: Marko Myllynen <myllynen@redhat.com> Date: Sun Jun 13 19:23:05 2010 +0300 Implement SFS 5966 Annex 4 for Finland This patch adds Annex 4 of SFS 5966 for Finland and fixes two typos in Annex 3 (which were actually copied verbatim from the standard text). The implementation of the standard is now complete. X.Org bug#28498 <https://bugs.freedesktop.org/show_bug.cgi?id=28498> Signed-off-by: Julien Cristau <jcristau@debian.org> commit 47b04195d8a31c8f9e6dd804196162c6cfca3ac6 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Jun 4 13:20:17 2010 -0700 LINEAR_RGB_InitSCCData: When malloc fails, don't try to free unallocated bits One of the malloc failure checks had a goto to the wrong spot in the list of cleanup free() calls to unwind at the end, and was freeing bits that hadn't been initialized/allocated yet, since they would be stored in the struct that just failed to be allocated. Error: Null pointer dereference (CWE 476) Read from pointer that could be constant 'NULL' at line 805 of /export/alanc/X.Org/sx86/lib/libX11/src/xcms/LRGB.c in function 'LINEAR_RGB_InitSCCData'. Pointer checked against constant 'NULL' at line 754 but does not protect the dereference. [ This bug was found by the Parfait bug checking tool. For more information see http://research.sun.com/projects/parfait ] Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit aebbf3623888119b43893b253195d93b613a6e1e Author: Josh Triplett <josh@joshtriplett.org> Date: Sun Jun 6 19:11:55 2010 -0700 Mark the rest of Xprivate.h as _X_HIDDEN. None of the functions in Xprivate.h should have any callers outside of Xlib, by definition. Signed-off-by: Josh Triplett <josh@joshtriplett.org> Suggested-by: Jamey Sharp <jamey@minilop.net> Reviewed-by: Jamey Sharp <jamey@minilop.net> commit abcd1b67c8135ad652833e5a60d818837c39fce1 Author: Julien Cristau <jcristau@debian.org> Date: Fri Jun 4 13:57:45 2010 +0200 Hide _XSeqSyncFunction Commit a6d974dc59f2722b36e2df9d4f07aeee4f83ce43 made _XSeqSyncFunction non-static, but we don't need to export it. Signed-off-by: Julien Cristau <jcristau@debian.org> Reviewed-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Jamey Sharp <jamey@minilop.net> commit 15e5eaf62897b3179d1fbe457cb19f886f0449f8 Author: Josh Triplett <josh@joshtriplett.org> Date: Thu Jun 3 09:41:01 2010 -0700 Remove support for building without XCB And there was much rejoicing. Signed-off-by: Josh Triplett <josh@joshtriplett.org> Reviewed-by: Jamey Sharp <jamey@minilop.net> Consensus on #xorg-devel agrees with removing --without-xcb; in particular, acks from Adam Jackson, Daniel Stone, Kristian Høgsberg, Julien Cristau, and Rémi Cardona. commit fb19eb767a32fd4ff74021c51bc6f60eb8bdff74 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Jun 3 15:21:40 2010 -0700 libX11 1.3.4 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 8f3db40ca5108a919244f3fff7466d01a14b3ce2 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Jun 3 13:08:17 2010 -0700 Workaround bug in groff flag processing that breaks distcheck At least with the groff 1.19.2 package I have installed, groff passes on the -I flags for the include path to grohtml, which if they come after the -P-I... flag we pass to grohtml to specify the image file name pattern cause it to override that flag and put the images in the wrong place, breaking "make distcheck" - changing the flag order works around this. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit bdb31a1fb707cebccc9efbbf68cb55c10fa4ea3e Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Jun 3 11:25:33 2010 -0700 Fix typo that made configure always report "none" for man page suffix Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 6bb7d2d21d6b58019fb37b724b59c9744f30b9ce Author: Paul Bender <pebender@gmail.com> Date: Thu Jun 3 11:20:26 2010 -0700 Bug 22591 - configure does not obey the --enable-*-transport options https://bugs.freedesktop.org/show_bug.cgi?id=22591 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d7f35946d673bb00f2768e025b6e1017422b2174 Author: Paul Bender <pebender@gmail.com> Date: Thu Jun 3 11:17:45 2010 -0700 Bug 22590 - libX11 1.2.1 has broken abstract namespace support https://bugs.freedesktop.org/show_bug.cgi?id=22590 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit b2487d07f7b355f230a56e32c763acd08862735c Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Jun 3 11:06:15 2010 -0700 Bug 22584 - libX11 does not cross compile Adaptation of patch submitted by Paul Bender in attachment 27301 to https://bugs.freedesktop.org/show_bug.cgi?id=22584 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Mikhail Gusarov <dottedmag@dottedmag.net> Reviewed-by: Dan Nicholson <dbn.lists@gmail.com> commit 4378219ff8c1418418c70086085358b69d574e74 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Jun 1 18:55:48 2010 -0700 Clarify requirements in XRestackWindows man page The required common parent window is not specified in the arguments, just implied as the parent of the first window in the list. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit f09c5299a381e2729e800a0ac43f1c0e371f65f6 Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Wed May 12 16:42:18 2010 -0700 xcb: Add TCP fallback If we fail to connect to a UNIX socket and the transport isn't specified, fallback on TCP. This matches behavior with the xtrans codepath and the Xlib spec. http://lists.x.org/archives/xorg-devel/2010-April/007915.html Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> Reviewed-by: Jamey Sharp <jamey@minilop.net> commit fd82552d5c0ce1931f29006a0c36f5e03cf8577e Merge: aae2a4a7 933aee1d Author: Jamey Sharp <jamey@minilop.net> Date: Mon May 10 16:51:24 2010 -0700 Merge branch 'xlib-xcb-thread-fixes' commit aae2a4a7aab26de3fa715d6ecd0a0e0926b37fc9 Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Fri Apr 23 21:50:29 2010 -0700 Don't append the screen number when using a launchd socket ssh gets confused by this. XQuartz is the only DDX using this functionality, and it doesn't support different screens, so let's just not include this until most ssh know how to handle this. Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit adcd0ec209abf832a769d52db660fb37eaad6e0c Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Fri Apr 23 16:33:44 2010 -0700 Remove launchd logic from _XConnectXCB as it's handled in XCB Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit d232b259c36fdde1f4179822809fec1480867dc5 Author: Jeremy Huddleston <jeremyhu@apple.com> Date: Tue Feb 2 17:01:28 2010 -0800 Fix various build warnings imLcIm.c: In function '_XimCachedFileName': imLcIm.c:361: warning: format '%03x' expects type 'unsigned int', but argument 8 has type 'long unsigned int' imLcIm.c:364: warning: format '%03x' expects type 'unsigned int', but argument 8 has type 'long unsigned int' imRm.c: In function '_XimDefaultArea': imRm.c:597: warning: cast from pointer to integer of different size imRm.c: In function '_XimDefaultColormap': imRm.c:626: warning: cast from pointer to integer of different size lcFile.c:224: warning: no previous prototype for 'xlocaledir' lcUTF8.c: In function 'iconv_cstombs': lcUTF8.c:1841: warning: assignment discards qualifiers from pointer target type lcUTF8.c:1869: warning: pointer targets in passing argument 1 of 'wctomb' differ in signedness lcUTF8.c:1873: warning: pointer targets in passing argument 1 of 'wctomb' differ in signedness lcUTF8.c: In function 'iconv_mbstocs': lcUTF8.c:1935: warning: pointer targets in passing argument 2 of 'mbtowc' differ in signedness lcUTF8.c: In function 'iconv_mbtocs': lcUTF8.c:2031: warning: pointer targets in passing argument 2 of 'mbtowc' differ in signedness lcUTF8.c: In function 'iconv_mbstostr': lcUTF8.c:2121: warning: pointer targets in passing argument 2 of 'mbtowc' differ in signedness lcUTF8.c: In function 'iconv_strtombs': lcUTF8.c:2180: warning: pointer targets in passing argument 1 of 'wctomb' differ in signedness lcUTF8.c: In function '_XlcAddGB18030LocaleConverters': lcUTF8.c:2367: warning: passing argument 5 of '_XlcSetConverter' from incompatible pointer type lcUTF8.c:2368: warning: passing argument 5 of '_XlcSetConverter' from incompatible pointer type lcUTF8.c:2373: warning: passing argument 5 of '_XlcSetConverter' from incompatible pointer type lcUTF8.c:2374: warning: passing argument 5 of '_XlcSetConverter' from incompatible pointer type lcUTF8.c:2375: warning: passing argument 5 of '_XlcSetConverter' from incompatible pointer type lcUTF8.c:2376: warning: passing argument 5 of '_XlcSetConverter' from incompatible pointer type lcUTF8.c:2377: warning: passing argument 5 of '_XlcSetConverter' from incompatible pointer type XlibInt.c: In function '_XGetHostname': XlibInt.c:3441: warning: implicit declaration of function 'gethostname' XlibInt.c:3441: warning: nested extern declaration of 'gethostname' ConnDis.c: In function '_XDisconnectDisplay': ConnDis.c:540: warning: old-style function definition ConnDis.c: In function '_XSendClientPrefix': ConnDis.c:554: warning: old-style function definition ConnDis.c: In function 'XSetAuthorization': ConnDis.c:677: warning: old-style function definition Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> commit 3e11c73187acb2e2be9a812840bbbea947527ccb Author: Daniel Kahn Gillmor <dkg@fifthhorseman.net> Date: Fri Apr 23 00:01:54 2010 +0200 Allow X11 users to compose anarchism I can easily compose the hammer and sickle (the symbol representative of communism) by pressing the key sequence: <Compose> <C> <C> <C> <P> -> ☭ But i can't easily make the circled A (the symbol representative of anarchism). I'd like to be able to use <Compose> <O> <A> (this is a currently unused key sequence) to generate the symbol: Ⓐ Debian bug#555938 <http://bugs.debian.org/555938> Signed-off-by: Julien Cristau <jcristau@debian.org> commit 933aee1d5c53b0cc7d608011a29188b594c8d70b Author: Jamey Sharp <jamey@minilop.net> Date: Fri Apr 16 20:18:28 2010 -0700 Fix Xlib/XCB for multi-threaded applications (with caveats). Rather than trying to group all response processing in one monolithic process_responses function, let _XEventsQueued, _XReadEvents, and _XReply each do their own thing with a minimum of code that can all be reasoned about independently. Tested with `ico -threads 20`, which seems to be able to make many icosahedrons dance at once quite nicely now. Caveats: - Anything that was not thread-safe in Xlib before XCB probably still isn't. XListFontsWithInfo, for instance. - If one thread is waiting for events and another thread tries to read a reply, both will hang until an event arrives. Previously, if this happened it might work sometimes, but otherwise would trigger either an assertion failure or a permanent hang. - Versions of libxcb up to and including 1.6 have a bug that can cause xcb_wait_for_event or xcb_wait_for_reply to hang if they run concurrently with xcb_writev or other writers. So you'll want that fix as well. Signed-off-by: Jamey Sharp <jamey@minilop.net> Reviewed-by: Josh Triplett <josh@freedesktop.org> commit aab43278ae619eb57d2dd9c7396f460f078588fc Author: Jamey Sharp <jamey@minilop.net> Date: Fri Apr 16 22:24:16 2010 -0700 Use InternalLockDisplay on code paths called from LockDisplay. It's easier to reason about the code when we can't re-enter the Xlib-private sync-handlers while they're already running. Signed-off-by: Jamey Sharp <jamey@minilop.net> Reviewed-by: Josh Triplett <josh@freedesktop.org> commit 660b7d05f4ca4ab4661c9fe7ce655a4909b4e556 Author: Jamey Sharp <jamey@minilop.net> Date: Fri Apr 16 19:45:11 2010 -0700 Fix _XSend to enqueue the right range of pending requests. _XSend was off-by-one on both ends. It should not re-enqueue the last request that was already flushed, but it should enqueue the last request currently being flushed. Signed-off-by: Jamey Sharp <jamey@minilop.net> Reviewed-by: Josh Triplett <josh@freedesktop.org> commit f2735889908d6e5a7f8dbee42f00c54a52665191 Author: Jamey Sharp <jamey@minilop.net> Date: Fri Apr 16 19:45:11 2010 -0700 Pending requests are always added in-order. Replace insert_pending_request, which did an in-order search of the queue to find the right insertion point, with a simpler append_pending_request, and use that in _XSend as well. Includes assertions to check that the list of pending requests is in order by sequence number and does not have duplicates. Signed-off-by: Jamey Sharp <jamey@minilop.net> Reviewed-by: Josh Triplett <josh@freedesktop.org> commit d9cf5885b0f97942fbbd2a7cc50118132ece50f6 Author: Markus Duft <markus.duft@salomon.at> Date: Fri Apr 16 08:39:34 2010 -0700 Bug 26839: Fix build problem on Interix (POSIX layer on Windows) https://bugs.freedesktop.org/show_bug.cgi?id=26839 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit a3f5f1b90936d23e9894e3261b2d77fb7b32a51a Author: Josh Triplett <josh@freedesktop.org> Date: Thu Apr 15 14:24:21 2010 -0700 Stop returning an int from _XIDHandler and _XSeqSyncFunction _XIDHandler and _XSeqSyncFunction originally ran from dpy->synchandler, and thus had to return an int. Now, they only run from _XPrivSyncHandler or LockDisplay, neither of which needs to check their return value since they always returned 0. Make them both void. Signed-off-by: Josh Triplett <josh@freedesktop.org> Signed-off-by: Jamey Sharp <jamey@minilop.net> commit a6d974dc59f2722b36e2df9d4f07aeee4f83ce43 Author: Jamey Sharp <jamey@minilop.net> Date: Thu Apr 15 13:05:08 2010 -0700 Move XID and sync handling from SyncHandle to LockDisplay to fix races. XID and sync handling happened via _XPrivSyncHandler, assigned to dpy->synchandler and called from SyncHandle. _XPrivSyncHandler thus ran without the Display lock, so manipulating the Display caused races, and these races led to assertions in multithreaded code (demonstrated via ico). In the XTHREADS case, after you've called XInitThreads, we can hook LockDisplay and UnlockDisplay. Use that to run _XIDHandler and _XSeqSyncHandler from LockDisplay rather than SyncHandle; we then know that we hold the lock, and thus we can avoid races. We think it makes sense to do these both from LockDisplay rather than UnlockDisplay, so that you know you have valid sync and a valid XID before you start setting up the request you locked to prepare. In the !XTHREADS case, or if you haven't called XInitThreads, you don't get to use Xlib from multiple threads, so we can use the logic we have now (with synchandler and savedsynchandler) without any concern about races. This approach gets a bit exciting when the XID and sequence sync handlers drop and re-acquire the Display lock. Reacquisition will re-run the handlers, but they return immediately unless they have work to do, so they can't recurse more than once. In the worst case, if both of them have work to do, we can nest the Display lock three deep. In the case of the _XIDHandler, we drop the lock to call xcb_generate_id, which takes the socket back if it needs to request more XIDs, and taking the socket back will reacquire the lock; we take care to avoid letting _XIDHandler run again and re-enter XCB from the return_socket callback (which causes Very Bad Things, and is Not Allowed). Tested with ico (with 1 and 20 threads), and with several test programs for XID and sequence sync. Tested with and without XInitThreads(), and with and without XCB. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=23192 Signed-off-by: Jamey Sharp <jamey@minilop.net> Signed-off-by: Josh Triplett <josh@freedesktop.org> commit b089b53b697c2851db2985d32af3b29f1da5e31e Author: Jamey Sharp <jamey@minilop.net> Date: Wed Apr 14 12:59:11 2010 -0700 Honest. Extensions get to filter async errors too. Under some circumstances, errors are picked up by calling xcb_poll_for_reply, rather than xcb_poll_for_event, because Xlib issued the requests with the XCB_REQUEST_CHECKED flag. That happens when either an async handler is queued at the time the requests are flushed, or when XSetEventQueueOwner has been used to prevent Xlib from processing XCB's event queue. This bugfix extends 405132dab64bf2375f8e57d02b1b53da2311933a to cover those cases. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=26545 Signed-off-by: Jamey Sharp <jamey@minilop.net> commit a15c31274650e391bc6de5d0951eb4464c228139 Author: Jamey Sharp <jamey@minilop.net> Date: Wed Apr 14 12:10:34 2010 -0700 _XError already runs async handlers; only call them directly for replies. The previous behavior probably would have triggered bug reports someday. Signed-off-by: Jamey Sharp <jamey@minilop.net> commit 405132dab64bf2375f8e57d02b1b53da2311933a Author: Jamey Sharp <jamey@minilop.net> Date: Tue Apr 13 12:12:36 2010 -0700 Extensions get to filter async errors too. Apparently I misread XlibInt.c:_XReply and thought that handlers set with XESetError should be consulted only for the sequence number that _XReply is currently looking for. In fact, the error handlers are also consulted when an error arrives for a request that was not expected to have a reply. However, in an odd twist, the error handlers are *not* consulted outside of _XReply--that is, when looking for events, or waiting to be able to flush the output queue. So this patch takes some small pains to preserve that behavior, though it seems likely to have been unintentional. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=26545 Signed-off-by: Jamey Sharp <jamey@minilop.net> commit d3eab4a38f3e53ef21eb3b6fa66ead7afecf6227 Author: Jamey Sharp <jamey@minilop.net> Date: Tue Apr 13 12:49:59 2010 -0700 Prefer the xcb_generic_error_t we already have over casting to xEvent. Just a minor cleanup. Signed-off-by: Jamey Sharp <jamey@minilop.net> commit 75ea8c37935ccc911557d16a303ba595b8ab106b Author: Jamey Sharp <jamey@minilop.net> Date: Mon Apr 12 11:30:20 2010 -0700 Run the user's synchandler as well as any internal synchandlers. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=27595 Signed-off-by: Jamey Sharp <jamey@minilop.net> commit c3f3e4a9e531d010312c97e753d6e543e607094d Author: Kusanagi Kouichi <slash@ac.auone-net.jp> Date: Fri Feb 12 17:16:10 2010 +0900 Fix manual typos. Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 75c6c5595408caba9ef8233839d77021d02f86f2 Author: Dirk Wallenstein <dirkwallenstein@t-online.de> Date: Fri Feb 5 20:42:46 2010 +0100 man: Correct the XkbAllAccessXEventsMask mask name This mask has probably been renamed but not been updated in the manuals. Signed-off-by: Dirk Wallenstein <dirkwallenstein@t-online.de> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 9262aceaff24c954cab8c252690032bc2ec25e7d Author: Dirk Wallenstein <dirkwallenstein@t-online.de> Date: Fri Feb 5 20:42:45 2010 +0100 man: Add missing geometry component flag Signed-off-by: Dirk Wallenstein <dirkwallenstein@t-online.de> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 50cf134465f6fd263f37acecac94518468ef1c6d Author: Dirk Wallenstein <halsmit@t-online.de> Date: Tue Feb 2 21:24:32 2010 +0100 man: Return value of XkbGetState is Status and not Bool Signed-off-by: Dirk Wallenstein <halsmit@t-online.de> Reviewed-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 7a93ae2bb5292a97fdd27ed818bc81248b37f641 Author: Dirk Wallenstein <halsmit@t-online.de> Date: Tue Feb 2 21:24:30 2010 +0100 man: Fix return value specification of XkbKeyActionEntry The XkbKeyActionEntry macro expands to a pointer. Signed-off-by: Dirk Wallenstein <halsmit@t-online.de> Reviewed-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit e9884d4a05a5661ec343ea8a2aa0562b6419e086 Author: Dirk Wallenstein <halsmit@t-online.de> Date: Tue Feb 2 21:24:29 2010 +0100 man: Redirect users from XKeycodeToKeysym to XkbKeycodeToKeysym #25732 XKeycodeToKeysym keeps compatibility with pre-XKB and thus only sees 2 groups with 2 levels each. It wraps the index into the next group. This behavior confuses the unaware user, and therefore this will add a reference to XkbKeycodeToKeysym in the corresponding man paragraph. Another bug had that issue, too. #5349 Signed-off-by: Dirk Wallenstein <halsmit@t-online.de> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 6474cdf97cd648afaeaa872155f3fa21cfb43f80 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Apr 8 19:59:55 2010 -0700 Fix typo in new fi_FI.UTF-8 that was reported by "make check" Unrecognized pattern in Compose on line #154: <dead_diaeresis> <space> " "¨" Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 91bd5e7af2d3a9526aefb73dc10f417896f0e4dd Author: Marko Myllynen <myllynen@redhat.com> Date: Thu Apr 8 19:52:42 2010 -0700 Bug 27465 - Rewritten fi_FI.UTF-8 Compose file I've rewritten the fi_FI.UTF-8 Compose file so that it - includes en_US.UTF-8/Compose for base compose definitions (and thus gets any possible additions to en_US.UTF-8/Compose automatically included) - overrides any en_US.UTF-8/Compose definitions with fi_FI.UTF-8/Compose definitions (thus making it safe to include en_US.UTF-8/Compose) - lists all the definitions specified in the SFS 5966 standard (thus making it easy to verify that the implementation is valid and complete) - adds a header about the file itself as required by the standard The rewritten version is ~320 lines compared to over 5000 lines of the previous version. https://bugs.freedesktop.org/show_bug.cgi?id=27465 commit f6a4fd0c7615684d08e848245849dea4017a5214 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Apr 1 21:46:12 2010 -0400 config: update and relocate AC_DEFINE_DIR macro Remove deprecated acinclude.m4 macro container file Use separate macro files as per autoconf recommendation Use the latest macro from GNU (ax) which replaces the non-gnu version (ac) This preserves the Autoconf macro AC namespace. Also moved out of acinclude.m4 is the DOLT macro Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 61d5231db418cec51bd718633c3bba39b18689d6 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Mar 29 14:53:48 2010 -0400 config: remove the pkgconfig pc.in file from EXTRA_DIST Automake always includes it in the tarball. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 69fc76a0321c6b25cc4286173c53435c69ab8e0e Author: Fernando Carrijo <fcarrijo@yahoo.com.br> Date: Wed Mar 17 23:53:16 2010 -0300 No need for req->firstKeyCode to be set twice. There is no reason to set req->firstKeyCode twice when a client, wishful for changing keyboard mappings, calls XChangeKeyboardMapping. This patch fixes the mistake by making no functional changes to libX11 whatsoever. Signed-off-by: Fernando Carrijo <fcarrijo@yahoo.com.br> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit b5797597f83ee62228abfb88f026ef92163e07a5 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Feb 16 10:37:21 2010 -0500 config: move CWARNFLAGS from configure.ac to Makefile.am Compiler warning flags should be explicitly set in the makefile rather than being merged with other packages compiler flags. Reviewed-by: Dan Nicholson <dbn.lists@gmail.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 052c4d7995b0e52a038933beb85cd544571c6b7e Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Feb 16 14:28:21 2010 -0500 specs: change install cmd due to automake 1.11 specData_INSTALL is defined in 1.9 and 1.10 but not 1.11 Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 7277a18cda9f5a6807d11cf4ceb9449b1c302c18 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Feb 9 17:27:08 2010 -0500 doc: use $(mkdir_p) rather than $(MKDIR_P) due to automake 1.9.6 $(MKDIR_P) is not defined in automake 1.9. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit e66eda95b520727969d721416d4ea49b54ef2b03 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Feb 2 16:29:26 2010 -0500 specs: install html images in $docdir with html files The images required by the html files have been omitted. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 137d1ff6be99d040e77c8c4c52029c5bdf1f4808 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Jan 31 14:16:20 2010 -0500 doc: use new macros to control doc generation Namely XORG_WITH_GROFF for the groff generation tool XORG_WITH_PS2PDF for the conversion of PS docs to PDF XORG_ENABLE_SPECS for the generation of specs Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 9ca583c5d6fcf9cd8151ee7b019630b141d32fab Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Jan 26 19:41:08 2010 -0500 doc: clean-up generated html images Generate images in /images as is the convention Provide a base file name for images rather than process ID Remove images directory when running make clean Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit eb289b34bfc9978eef724e0f268975938334c06c Author: Kristian Høgsberg <krh@bitplanet.net> Date: Thu Jan 21 13:39:17 2010 -0500 XErrorDB: Add new DRI2 request names commit 6babf2123d05adb9349394c49cc2d81d1f66cf9e Author: Julien Cristau <jcristau@debian.org> Date: Sat Jan 16 22:47:03 2010 +0000 man: Fix typo in Makefile Missing line continuation was preventing the XCompose alias from being generated. Signed-off-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 68530599e61cf9fef3fcc91650e7cef21837fce7 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Jan 16 11:41:32 2010 -0800 libX11 1.3.3 Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 1e5af224b9fbdb154620f898558704f2bc4bf4e9 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Jan 14 18:33:39 2010 -0800 Update COPYING file with actual licenses from libX11 code & docs COPYING was previously a years out-of-date copy of the LICENSES doc summarizing all licenses for all XFree86 components, many of which did not apply to libX11. Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit ddb1786720d6136b1b28be599c75c10ad1b76a2a Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Jan 14 17:38:26 2010 -0800 Purge CVS/RCS id tags Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit c1db9ddcfa7091f173478dca45bf720badedfca4 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Jan 14 15:39:14 2010 -0800 Update Sun license notices to current X.Org standard form Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 1aaa7c0358c5c035b99625f5715cb722bc2d2a2f Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Jan 14 08:28:22 2010 -0800 Add %S substitutions to Compose man page Commit 9df349a7894725f9469b106af645f57f7f3f9af3 added support for %S in Compose file include statements - this documents it in the Compose file man page. Also changes the existing substitution documentation to list format instead of a paragraph format to allow easier adding of %S. Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 94b45db93058cffa25598fe27dd3e385ace9d305 Author: Richard Purdie <rpurdie@linux.intel.com> Date: Thu Jan 14 08:04:28 2010 -0800 Fix configure.ac PKG_ macro calls If the first call to PKG_CHECK_MODULES() may not be called during execution which is the case here since its inside a case statement, call PKG_PROG_PKG_CONFIG() to ensure things worked correctly. Fixes a configure failure introduced by commit 87529c039050ce3336ff9ce00f1b5a21d15690da when xcb is enabled. http://bugs.freedesktop.org/show_bug.cgi?id=26041 Signed-off-by: Richard Purdie <rpurdie@linux.intel.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit df559d8bc2238a2c369152fcb06e5b5ab132a5dc Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Jan 12 09:18:15 2010 -0800 Raise xorg-macros requirement to 1.4 Needed since the changes in 464390f16d7ed4aa5bf80f89863ba92273075ec2 depend on the INSTALL file delivered in xorg-macros 1.4 Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 9df349a7894725f9469b106af645f57f7f3f9af3 Author: James Cloos <cloos@jhcloos.com> Date: Wed Jan 13 11:04:38 2010 -0500 Allow inclusion of system level compose files. With the release of XFree86 4.4 an inclusion system of compose files was added to Xlib to allow inclusion of the default compose file (with %L), any compose files from user’s home directory (with %H), or a compose file with a hard coded path¹. However, even today including system level compose files is not possible in a platform independent manner although the machinery for including compose files and overriding previously defined compositions is already in place. With the ability to include system level compose files one could greatly reduce the need for compose file rule duplication and the work needed to propagate changes in one compose file to others. For example, currently the Finnish compose file fi_FI.UTF-8 weights over 5000 lines² but it is almost identical with en_US.UTF-8 except for perhaps half a dozen compositions. This commit allows one to include system level compose files with the following kind of syntax: include "%S/en_US.UTF-8/Compose" 1] http://www.xfree86.org/4.4.0/RELNOTES5.html#42 2] http://cgit.freedesktop.org/xorg/lib/libX11/tree/nls/fi_FI.UTF-8/Compose.pre Signed-off-by: Marko Myllynen <myllynen@redhat.com> Signed-off-by: James Cloos <cloos@jhcloos.com> commit ccf21a8877f40136e25f2f62d0668b0c76b3cfbd Author: Thien-Thi Nguyen <ttn@gnuvola.org> Date: Tue Dec 1 10:31:47 2009 +0100 libX11: Fix comment: Invert polarity (direction) of reformat description. Signed-off-by: Thien-Thi Nguyen <ttn@gnuvola.org> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 4d4676c0d6324d2ff9d00d15ab485fa5d848a369 Author: Osamu Sayama <osamu.sayama@sun.com> Date: Tue Jan 5 17:26:40 2010 -0800 set_fontset_extents crash after get_rotate_fontname fix in 2bef065b70f7 - In set_fontset_extents, check font_data is not NULL before running loop that may increment it to a non-NULL invalid pointer. - Make sure get_rotate_fontname counts the final field Fixes OpenSolaris bug 6913809: X application dumps core in ja_JP.UTF-8 locale <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6913809> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> Reviewed-by: Adam Jackson <ajax@redhat.com> commit 87529c039050ce3336ff9ce00f1b5a21d15690da Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Jan 5 18:02:37 2010 -0800 Merge X11, XKBPROTO, & XPROTO pkg-config lists Since the XPROTO_CFLAGS & XKBPROTO_CFLAGS are just merged into X11_CFLAGS in configure.ac anyway, might as well combine the lists passed to PKG_CHECK_MODULES to reduce duplication in the flags. Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> Reviewed-by: Rémi Cardona <remi@gentoo.org> Acked-by: Peter Hutterer <peter.hutterer@who-t.net> commit 2dd053667b44c55e2bf601aec7b75fc6fee1cf44 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Jan 5 17:56:58 2010 -0800 Add XCompose man page shadow for Compose man page Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 02543bba816e065c02cd36e0c9e21519a9ee9c96 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Jan 5 17:47:44 2010 -0800 Add $(AM_V_GEN) to silence lint rules too Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit db7c6fdeeaef9475458498e4cf09d6b1329e9aa3 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Jan 5 17:42:42 2010 -0800 Remove GCC_WARNINGS now that XORG_CWARNFLAGS sets them for us Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 6b4e526e7ba105622f6b143e8e2639b44cb6cc19 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Nov 29 10:44:24 2009 -0500 configure.ac: restore correct order for XORG_DEFAULT_OPTIONS It must be following AC_USE_SYSTEM_EXTENSION commit 3dbaa11d1c8705e1b309c6686f354766b651ad20 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Nov 29 10:01:44 2009 -0500 Add .gitignore in /specs for generated files Being in /specs, it will apply for all 3 subdirs commit f45d39d37aab04742e44cd8c3c993aad7587e40c Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Nov 27 20:56:03 2009 -0500 Makefile.am: add ChangeLog and INSTALL on MAINTAINERCLEANFILES Now that the INSTALL file is generated. Allows running make maintainer-clean. commit 464390f16d7ed4aa5bf80f89863ba92273075ec2 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Oct 28 14:09:10 2009 -0400 INSTALL, NEWS, README or AUTHORS files are missing/incorrect #24206 Add missing INSTALL file. Use standard GNU file on building tarball README may have been updated Remove AUTHORS file as it is empty and no content available yet. Remove NEWS file as it is empty and no content available yet. commit 6360e7f0ce6a75da2bed33ede7fea783a1fb80e1 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Oct 27 15:07:25 2009 -0400 Deploy the new XORG_DEFAULT_OPTIONS #24242 This macro aggregate a number of existing macros that sets commmon X.Org components configuration options. It shields the configuration file from future changes. commit d02f943c98fde2f14319bc57fd9ad77eb9a2a572 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Oct 26 22:08:42 2009 -0400 Makefile.am: ChangeLog not required: EXTRA_DIST or *CLEANFILES #24432 ChangeLog filename is known to Automake and requires no further coding in the makefile. commit f77c89c751a6a63c8ef11ecdddca2aed11ff6e29 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Oct 22 12:34:19 2009 -0400 .gitignore: use common defaults with custom section # 24239 Using common defaults will reduce errors and maintenance. Only the very small or inexistent custom section need periodic maintenance when the structure of the component changes. Do not edit defaults. commit 46c7b0e9d0d85cf5ccc0d40d19821fcc3335503b Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Nov 12 23:05:40 2009 -0800 Add compose-check.pl to EXTRA_DIST Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 54c64267cc8bc98641cc39a22cb7bd71673e89e0 Author: Julien Cristau <jcristau@debian.org> Date: Thu Oct 29 17:17:24 2009 +0100 man: fix XCopyGC argument order Ubuntu bug#408337 commit aad10032651cdc2a53b359035954454a28d6db67 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Oct 23 13:55:14 2009 -0700 libX11 1.3.2 Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 6303ada89cb228c0f9656036f798703afb42fc29 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Wed Oct 21 12:42:07 2009 +1000 Add smiley faces to compose sequences. I wonder how we could have lasted that long without them. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Daniel Stone <daniel@fooishbar.org> Acked-By: James Cloos <cloos@jhcloos.com> commit 0e104ebd8628803c27e36b16922ad1edd891325a Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Oct 22 23:12:30 2009 -0700 Add man page for Compose file format Based on grammar description in modules/im/ximcp/imLcPrs.c and note on XFree86 changes formerly found in xorg-docs RELNOTES.sgml Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 9c95f2af7c442b3a59b1a30cf804f1ef4e7fc5b5 Author: Jeremy Huddleston <jeremyhu@freedesktop.org> Date: Tue Oct 20 12:46:03 2009 -0700 Add extra configuration and sanity checks for groff and ps2pdf 1) Add AC_ARG_VAR for GROFF and PS2PDF to inform users of these environment variables. 2) Check that groff -ms works Some distributions ship the ms macros as a separate package which may not be installed together with groff, so we need to make sure that groff works and the required macros are actually installed before attempting to build the specs. Signed-off-by: Jeremy Huddleston <jeremyhu@freedesktop.org> Signed-off-by: Dan Nicholson <dbn.lists@gmail.com> Signed-off-by: Yaakov Selkowitz <yselkowitz@users.sourceforge.net> commit d3f801fd2f9198eaad6797414dba652f9c006c6d Author: Yaakov Selkowitz <yselkowitz@users.sourceforge.net> Date: Sun Oct 18 17:34:53 2009 -0500 Fix VPATH build of libX11 specs Signed-off-by: Yaakov Selkowitz <yselkowitz@users.sourceforge.net> commit ad15e1a89d30ccc11d80745897b83def1448e8c0 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Oct 17 16:14:34 2009 -0700 libX11 1.3.1 Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 0cbf98c17a7484bb58b2464b98d63bb3b4ea2594 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Oct 17 16:28:25 2009 -0700 Fix make distcheck Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 082e62ad268ef16a3bebc5a3c9fa008dbdc483ed Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Oct 16 19:25:35 2009 -0700 Use $(AM_V_GEN) to silence echo commands for generating shadow man pages Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 4e66da0783b2e5e3b288aaecd3c89396ed425c20 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Oct 14 16:18:24 2009 -0700 Move libX11 & XIM/locale specs from xorg-docs If groff is found, and --disable-specs is not passed to configure, specs will be converted to text, html and ps (or pdf if ps2pdf is found) and installed to $(docdir) Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 5d3d817a42ddcc8d0c6efd33efd1442fe14f5c6b Author: Yaakov Selkowitz <yselkowitz@users.sourceforge.net> Date: Tue Oct 13 19:15:51 2009 -0500 Provide _Xsetlocale compat wrappers on Cygwin Previous versions of Cygwin did not have proper locale support, so Cygwin/X defined X_LOCALE, using _Xsetlocale instead. Cygwin 1.7 has added locale support, but we can't remove the _Xsetlocale entry point without breaking ABI. Signed-off-by: Yaakov Selkowitz <yselkowitz@users.sourceforge.net> commit 2c8b3a877a713bb66a6316a7051b43c46af6e1a0 Author: Yaakov Selkowitz <yselkowitz@users.sourceforge.net> Date: Tue Oct 13 19:15:49 2009 -0500 dolt: add Cygwin to supported platforms Signed-off-by: Yaakov Selkowitz <yselkowitz@users.sourceforge.net> commit a2c8e3e34b15b57ff881a52101fc961a602f35e4 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Oct 14 13:23:30 2009 -0700 Recognize XSUNBUFFERSIZE alias for XLIBBUFFERSIZE on Solaris Also fix indenting of the XLIBBUFFERSIZE code to match surrounding code Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 34ddfca7b7d58240b0fe74bec6b2e0652d15c051 Author: Jon TURNEY <jon.turney@dronecode.org.uk> Date: Tue Feb 10 17:47:25 2009 +0000 Include sys/select.h for select() and struct timeval, if it exists This is a cygwin build fix commit 383165916ddac91740d4c780174d4c0d07cdb994 Author: Xake <xake@rymdraket.net> Date: Sun Sep 27 11:16:36 2009 +0200 Use AM_V_GEN instead of customized macros for AM_SILENT_RULES Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 854269d55cdda8caf425515bfed2855e211a5ada Author: Julien Cristau <jcristau@debian.org> Date: Tue Oct 6 16:11:24 2009 +0200 configure: quote argument to m4_pattern_forbid Without this, configure spits out ../configure: line 12364: ac_fn_c_check_member: command not found ../configure: line 12378: ac_fn_c_check_type: command not found Also anchor the pattern to make it stricter. Signed-off-by: Julien Cristau <jcristau@debian.org> commit 3bb020587ce74e0737ec7aceb20041f1e77d3b87 Author: Jeremy Huddleston <jeremyhu@freedesktop.org> Date: Thu Oct 1 22:20:38 2009 -0700 Split CFLAGS into CPPFLAGS and CFLAGS On some build systems, CPPFLAGS is set to "-I/some/prefix/include". If older X11 headers are in /some/prefix/include, they will be preferred over the shipped headers. This corrects that problem. commit d54caf1c9c55af8247621b7ba6afb20b23699839 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Fri Oct 2 10:59:08 2009 +1000 libX11 1.3 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit dd201bcf9e7f8863b7ef32273a5ef021678133c1 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Fri Oct 2 12:10:29 2009 +1000 nls: remove duplicate Compose sequences from pt_BR.UTF-8 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit a293ae9e83739067fc92db1a39c262857bc2283e Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Fri Sep 25 11:19:41 2009 +1000 Add XF86TouchpadToggle to XKeysymDB Lenovo laptops provide a key to enable or disable the touchpad and the trackstick. This key is usually located on Fn + F8. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Adam Jackson <ajax@redhat.com> commit 69839f8903a24eab08f17a781b3797fb64dce9cf Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sun Sep 27 10:34:16 2009 -0700 Bug 24173: libX11 from git fails to build with automake older then 1.11 AM_CONDITIONAL must come *before* the AC_OUTPUT that creates the Makefiles, instead of after. <http://bugs.freedesktop.org/show_bug.cgi?id=24173> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit f5effd041f58ef07703cca2b4f396758811e1eec Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Apr 15 10:59:23 2009 -0700 Resolve conflicting Compose sequences in iso8859-2, el_GR.UTF-8 & pt_BR.UTF-8 Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 3843778358d3a0cd6a2d07dba5dd061248053ac9 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Apr 15 10:56:09 2009 -0700 Add perl script to check for duplicate or conflicting compose file entries Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 19cc5e1fa17a285045662820a8b4de2a0f9a194d Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Sep 18 17:10:04 2009 -0700 Use make rules instead of shell for loops to generate shadow man pages Allows parallel make and simpler build logs/error reporting Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 7dabcac973d0b6692a3cd62bd6d8e0467b24200b Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Sep 18 16:58:53 2009 -0700 Add AM_SILENT_RULES support for cpp rules for man & nls files Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit bfa19cddd8546b4930a773f3bbd81137c362d82b Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Sep 18 16:58:16 2009 -0700 Update to using xorg-macros 1.3 & XORG_DEFAULT_OPTIONS Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 51396066c8003a96a6399c9a4bed2a81e512b582 Author: Mikko Niskanen <mikko.niskanen@iki.fi> Date: Fri Sep 4 10:11:15 2009 +1000 Fix wrong typedef on HP-UX (#18998) shl_dt doesn't exist, the type is shl_t. X.Org Bug 18998 <http://bugs.freedesktop.org/show_bug.cgi?id=18998> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 615220a312b9430a580fe6dcf51703c6ef244f66 Author: Paul Bender <pebender@gmail.com> Date: Fri Sep 4 09:57:10 2009 +1000 Don't require xdmcp in configure.ac (#22583) X.Org Bug 22583 <http://bugs.freedesktop.org/show_bug.cgi?id=22583> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 20f9ecd86ad2a9ac6966f7eee32234cb5ef77c29 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Thu Sep 3 14:02:44 2009 +1000 man: fix parameters to XkbAllocGeomOverlay{Rows|Keys} (#23499) X.Org Bug 23499 <http://bugs.freedesktop.org/show_bug.cgi?id=23499> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit c2814a614dc4d9409bfa0f44c18bfd69ad7f7b85 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Thu Sep 3 12:05:25 2009 +1000 man: XQueryTree may return BadWindow. (#23416) X.Org Bug 23416 <http://bugs.freedesktop.org/show_bug.cgi?id=XXX> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit dbe98d456ccc6eeca9fa3e241a3db0a4d83c5a65 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Aug 28 23:07:58 2009 +0800 Fix version tag in .TH line of several XKB man pages Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit bf24400936c10af6f5aa0c75cfe2207ab9b680b4 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Aug 28 23:04:38 2009 +0800 XkbSetDeviceButtonActions.man: remove non-existent actions argument Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 53affa9335116f2d367f041e6502a411d4619e47 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Aug 28 23:00:17 2009 +0800 XkbQueryExtension.man: Arguments should be pointers Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 6233948885acc5873a5abddfff235afec555f3c2 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Aug 28 22:53:03 2009 +0800 XkbSAActionSetCtrls.man: Fix typo in formatting macro Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 28a9ca57cdec4aa9ca92322f963b01f0c2daf47a Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Aug 28 22:49:31 2009 +0800 Convert Xkb API man pages to ANSI prototypes Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit fa2eecca85baab9616f7143cc1a853a594b4a90c Author: James Cloos <cloos@jhcloos.com> Date: Mon Aug 24 06:35:17 2009 -0400 Add some (Serbian) Cyrillic NFD sequences. A number of characters in use in the various countries which use the Cyrillic script do not appear as pre-composed characters in The UCS or Unicode; they are only available as combining-character sequences. This commit adds support for using (prefix) dead keys and Multi_key- initiated sequences to enter a number of these combining-character sequences. This ensures that users can enter these scripts even when using the current Cyrillic keymaps, which lack support for the combining characters. Please see the discussions on the xkb mailing list. Signed-off-by: James Cloos <cloos@jhcloos.com> commit d1bdc909f9246119696c8b0d9afb7bd8afb71b60 Author: Julien Cristau <jcristau@debian.org> Date: Wed Aug 5 18:14:23 2009 +0200 man/xkb: delete spurious newline in .TH headers commit ee723b83b24682db833a2f0abd96cd319b8a62af Author: Julien Cristau <jcristau@debian.org> Date: Wed Aug 5 16:45:19 2009 +0200 man: use __libmansuffix__ instead of 3X11 for references to other pages commit 595e204feb82c798a92eea41fea03be6476ac181 Author: Julien Cristau <jcristau@debian.org> Date: Wed Aug 5 16:43:36 2009 +0200 man/xkb: use __libmansuffix__ instead of hardcoding 3Xkb for manpage sections commit 9da7e230d5320e1556ad2084fcd06ee7994385ea Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Wed Aug 5 14:15:02 2009 +1000 Bump to 1.2.99.901 (1.3 RC1) Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 8f78c7b4e3570cd46c5a220982963c17fe2157b8 Author: Filippo Giunchedi <filippo@debian.org> Date: Sat Jun 6 16:56:54 2009 +0200 nls: add {left,right}wards arrow to compose table Debian bug#532117 <http://bugs.debian.org/532117> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 7949bfa00390241d994f32463e50d4bd78920568 Author: Julien Cristau <jcristau@debian.org> Date: Fri Jul 31 13:33:52 2009 +0200 Update library version for new symbols Commit 554f755e5545f63d3c8f299297927238da155773 added generic event cookie handling. Bump libX11 version number accordingly. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 640fec5f4feacd01a00eea3dcd4edb220907d3dc Author: Julien Cristau <jcristau@debian.org> Date: Sun Aug 2 17:18:31 2009 +0200 Add _XFUNCPROTOBEGIN/END to Xlib-xcb.h X.Org bug#22252 <https://bugs.freedesktop.org/show_bug.cgi?id=22252> Reported-by: Riku Salminen <rsalmin2@cc.hut.fi> Signed-off-by: Julien Cristau <jcristau@debian.org> commit bc06d49e9dac1836d6824769ddb2ac5ba9f14df7 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Wed Jul 29 08:44:09 2009 +1000 Fix compiler warning 'unused variable qelt' Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 03f4907e14f5755e72309f08742977b871e81e33 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Wed Jul 29 08:34:57 2009 +1000 Add utlist.h to the Makefile.am utlist.h contains the linked list macros, it was added with the recent addition of event cookies but utlist.h wasn't added to the Makefile.am. As a result, make dist failed. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 554f755e5545f63d3c8f299297927238da155773 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Fri Jun 26 11:27:43 2009 +1000 Add generic event cookie handling to libX11. Generic events require more bytes than Xlib provides in the standard XEvent. Memory allocated by the extension and stored as pointers inside the event is prone to leak by simple 'while (1) { XNextEvent(...); }' loops. This patch adds cookie handling for generic events. Extensions may register a cookie handler in addition to the normal event vectors. If an extension has registered a cookie handler, _all_ generic events for this extensions must be handled through cookies. Otherwise, the default event handler is used. The cookie handler must return an XGenericEventCookie with a pointer to the data.The rest of the event (type, serialNumber, etc.) are to be filled as normal. When a client retrieves such a cookie event, the data is stored in an internal queue (the 'cookiejar'). This data is freed on the next call to XNextEvent(). New extension interfaces: XESetWireToEventCookie(display, extension_number, cookie_handler) Where cookie_handler must set cookie->data. The data pointer is of arbitray size and type but must be a single memory block. This memory block represents the actual extension's event. New client interfaces: XGetEventData(display, *cookie); XFreeEventData(display, *cookie); If the client needs the actual event data, it must call XGetEventData() with the cookie. This returns the data pointer (and removes it from the cookie jar) and the client is then responsible for freeing the event with XFreeEventData(). It is safe to call either function with a non-cookie event. Events unclaimed or not handled by the XGetEventData() are cleaned up automatically. Example client code: XEvent event; XGenericEventCookie *cookie = &ev; XNextEvent(display, &event); if (XGetEventData(display, cookie)) { XIEvent *xievent = cookie->data; ... } else if (cookie->type == GenericEvent) { /* handle generic event */ } else { /* handle extension/core event */ } XFreeEventData(display, cookie); Cookies are not multi-threading safe. Clients that use XGetEventData() must lock between XNextEvent and XGetEventData to avoid other threads freeing cookies. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit d7675cb8fa7155e7aff1459636a117a97aa1bf28 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Mon Jul 6 13:17:35 2009 +1000 Bump to 1.2.99.1 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 75fe48e7a42a685d7098e8d7108b9b956c471563 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Fri Jul 10 14:07:34 2009 +1000 Bump to 1.2.2 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 5d0fe0e0e92759af5667c5dca2eacb1b6f2d66ea Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Thu Jul 2 09:10:25 2009 +1000 XMaskEvent/XCheckMaskedEvents must not check for GenericEvents. GenericEvent cannot be selected for in the core event masks and they must thus be treated like extension events. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit c1bf65b89f4e361f6178a73dd5334c8f2bd95732 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Thu Jul 2 09:06:05 2009 +1000 XWindowEvent/XCheckWindowEvent must not return GenericEvents. GenericEvents have no fixed position for the window, so they must be treated like extension events. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 38f9054554d63525d2dd51aafb5eb57821158ab9 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Jun 15 19:00:43 2009 -0700 Drop ancient USG SysV #ifdefs Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 7bfe1323f16a1a69cc474659f7ac0c2570b1cf42 Author: Adam Jackson <ajax@redhat.com> Date: Fri Jun 12 12:44:01 2009 -0400 Remove X_NOT_STDC_ENV usage. (#6527) commit 6dd74d7fb414ca1e99bae5c13e333961f396eb36 Author: Julien Cristau <jcristau@debian.org> Date: Fri May 29 11:18:11 2009 +0200 nls: remove more duplicated aliases Signed-off-by: Julien Cristau <jcristau@debian.org> commit e4b0899f516da224010e68bd2d953d5293d94993 Author: parag <parag@rawhideTM.pnq.redhat.com> Date: Thu May 28 11:29:35 2009 +0530 nls: Add pa_PK locale information and make pa_IN as default for pa. X.Org bug#21954 <http://bugs.freedesktop.org/show_bug.cgi?id=21954> [jcristau: removed the pa_PK.UTF-8 alias to itself] Signed-off-by: parag <pnemade@redhat.com> Signed-off-by: Julien Cristau <jcristau@debian.org> commit f0ea1f6d51145592f8617854f9320ec5dbff3299 Author: Julien Cristau <jcristau@debian.org> Date: Fri May 29 10:58:20 2009 +0200 nls: remove broken sd_IN.UTF-8 alias Signed-off-by: Julien Cristau <jcristau@debian.org> commit e29e010dabdb17d6498f2ef1786f69b8830c18ca Author: Julien Cristau <jcristau@debian.org> Date: Fri May 29 10:57:43 2009 +0200 nls: remove duplicated en_US* aliases Signed-off-by: Julien Cristau <jcristau@debian.org> commit a89a300d87852c84389ad97db66dcb8930cb45dd Author: Caolan McNamara <caolanm@redhat.com> Date: Thu May 21 18:41:05 2009 +0200 man: missing space in XAllocColor man page X.Org bug#21854 <http://bugs.freedesktop.org/show_bug.cgi?id=21854> commit c1c001e36504fd304f76f69bf6af3643225c49ea Author: James Cloos <cloos@jhcloos.com> Date: Wed May 13 13:03:54 2009 -0400 [nls] Replace remaining UCS Combining Characters in Compose sequences. The replaces the instances of keysyms which match <U03[0-6][0-9A-Fa-f]>, where the keysym is used as a dead_key, with an actual dead_key symbol. The only remaining instances of UCS combining characters in the compose sequences are of U0338 COMBINING LONG SOLIDUS OVERLAY used as a suffix in Multi_key-initiated sequences to create mathematics characters such as ∉ U+2209 NOT AN ELEMENT OF from ∈ U+2208 ELEMENT OF. commit e2b0bad3d3b9e9ca781fc264eb7584afbe2a1a4f Author: James Cloos <cloos@jhcloos.com> Date: Wed May 13 09:58:59 2009 -0400 [nls] Remove extraneous instances of UCS Combining Characters in Compose sequences. This removes those instances of keysyms which match <U03[0-6][0-9A-Fa-f]>, where the matching keysym is used as a dead_key, and for which alternative compose sequences exist. commit 79f47e6dff2f0a0b673bbfecc47528edca814baa Author: James Cloos <cloos@jhcloos.com> Date: Fri May 8 20:11:54 2009 -0400 [nls] Remove combining_ keysyms from the Compose files Some of the UTF-8 Compose tables included combining_ keysyms in the compose sequences as though they were dead symbols. This is contrary to how combining characters are used in the UCS. Therefore, those lines have been removed from the Compose tables. There were also some combining_ keysyms as targets. As those are not included in x11proto’s keysymdef.h, and as those do exist there as Uxxxx keysyms, they are replaced with the Uxxxx keysym names. This addresses http://bugzilla.freedesktop.org/show_bug.cgi?id=5107 and is based on attachment 25644 by samuel.thibault@ens-lyon.org. Signed-off-by: James Cloos <cloos@jhcloos.com> commit 4a08a3dfbda497b2be46e3e5fe6b777815ea27f9 Author: parag <pnemade@redhat.com> Date: Tue May 5 16:50:47 2009 +0530 libX11: Add new Indic language information to nls directory files. #21560 Signed-off-by: parag <pnemade@redhat.com> commit aaf81096eb44b4c2812108721ba02738391884da Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat May 2 01:38:14 2009 -0700 Correct return type in XkbGetKeyboard man page Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 2bef065b70f70af520b5de8fb23529254d15f003 Author: Christoph Pfister <christophpfister@gmail.com> Date: Mon Apr 27 22:32:57 2009 -0700 X.Org Bug #21117: crash in get_rotate_fontname (omGeneric.c) http://bugs.freedesktop.org/show_bug.cgi?id=21117 Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 5c1cde105db10df24d3c532f032cbc59050c7313 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Apr 17 22:14:47 2009 -0700 Use AC_USE_SYSTEM_EXTENSIONS instead of hand-rolled check for _GNU_SOURCE Raises minimum autoconf version required to 2.60 Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 84b7a91ef84f345384e4b0e13907385ca3ca3255 Author: Julien Cristau <jcristau@debian.org> Date: Tue Apr 14 15:59:57 2009 +0100 Fix fi_FI.UTF-8, again Commit 97fc6babd4ccaf300e25708868aa2a738893dc30 "NLS: Add UTF-8 compose file for Finnish" made fi_FI.UTF-8 use a broken empty XLC_LOCALE file. This reverts it back to using the en_US.UTF-8 one. commit 128daff4422f973ea40dd1e31b2db230e643549e Author: Theppitak Karoonboonyanan <thep@linux.thai.net> Date: Thu Apr 9 12:01:07 2009 +0700 Thai XIM not retrieve MB surrounding on UTF-8 LC On th_TH.UTF-8 locale, Thai XIM rejects all combining characters for GTK+ apps that use X Input Method. This is because GTK+ imxim immodule passes surrounding text in locale encoding, which is UTF-8 for UTF-8 locales. But current Thai XIM in Xlib assumes the multi-byte StringConversionText response for the StringConversionCallback to always be TIS-620, by retrieving a single byte and using it as-is. If the Thai XIM tries to convert the multi-byte text based on locale codeset before using it, it will work again. X.Org But 12759 <http://bugs.freedesktop.org/show_bug.cgi?id=12759> Signed-off-by: Theppitak Karoonboonyanan <thep@linux.thai.net> Signed-off-by: Julien Cristau <jcristau@debian.org> commit e09f0d227fbf95b6252759af9d426efd57686f9f Author: Theppitak Karoonboonyanan <thep@linux.thai.net> Date: Thu Apr 9 11:47:55 2009 +0700 Thai XIM not filters when NumLock or CapsLock is on The Thai XIM component in libx11 activated on 'th*' locales normally filters input sequence according to orthographic rules. However, when NumLock/CapsLock is on, this stops working. All sequences are passed through. This is caused by missing masks in _XimThaiFilter(), which normally screens out certain special keys from entering orthographic rules. Unfortunately, this included events with NumLock/CapsLock on. Negating the masks from the check allows the events to be tested by the rules. X.Org Bug 12517 <http://bugs.freedesktop.org/show_bug.cgi?id=12517> Signed-off-by: Theppitak Karoonboonyanan <thep@linux.thai.net> Signed-off-by: Julien Cristau <jcristau@debian.org> commit d108d3c706af3502820b5202564488ea19908b77 Author: Theppitak Karoonboonyanan <thep@linux.thai.net> Date: Thu Apr 9 11:25:25 2009 +0700 CharSet-to-CompoundText Conversion Failed for Thai Locales SCIM fails to commit Thai input characters on Thai locales, because it commits string in compound text form, which was converted via XwcTextListToTextProperty(). But the XLC_LOCALE for th_TH and th_TH.UTF-8 declares cs1's ct_encoding as TIS620-0:GR, which was commented out in src/xlibi18n/lcCT.c default_ct_data, in favor of ISO8859-11 ESC sequence. So, declaring cs1 as ISO8859-11:GR instead makes it work. Besides, for th_TH.UTF-8, adding cs2 class with ISO10646-1 encoding also adds support for UTF-8 input. And, along discussion in the bug, a similar problem was found for fontset, too, by causing delays on X apps startups on systems without tis620-0 fonts. This is normally the case, as mkfontdir and mkfontscale generate iso8859-11 entries by default for Thai X fonts. So, Thai fontset charset is also patched. X.Org Bug 16475 <http://bugs.freedesktop.org/show_bug.cgi?id=16475> Signed-off-by: Theppitak Karoonboonyanan <thep@linux.thai.net> Signed-off-by: Julien Cristau <jcristau@debian.org> commit fd62d3318c846cd43d66a505946e94704d7d83dc Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Apr 8 19:42:25 2009 -0700 Revert "Change masculine to ordmasculine in Compose file comments" This reverts commit 892b401d5acc055803a20e349ede0d64490f2230. As Julien Cristau correctly points out, I misread the Compose file grammar in modules/im/ximcp/imLcPrs.c, and those are keysyms, not comments, and the keysym is named XK_masculine in keysymdef.h. This change is thus a bug in the Solaris compose tables to be fixed, not an improvement to bring upstream. commit eac57c77afdf44f50692225b8b0345a7c927bc84 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Apr 7 15:38:45 2009 -0700 Version bump: 1.2.1 Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit bfbec08baec33c5024510b0bcbbee6e4a8473e79 Author: Yaakov Selkowitz (Cygwin Ports maintainer) <yselkowitz@users.sourceforge.net> Date: Tue Apr 7 13:46:57 2009 -0700 Bug 20773: Xcursor dynamic loading on Cygwin X.Org Bug #20773 <http://bugs.freedesktop.org/show_bug.cgi?id=20773> Patch #24096 <http://bugs.freedesktop.org/attachment.cgi?id=24096> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit c8c41614911be4fa222fa22478677d263b41c751 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Apr 6 16:52:46 2009 -0700 Fix a several sparse warnings: Using plain integer as NULL pointer Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit b336c3d0cc2aefc8926500cff5f76b5a3e803886 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Apr 6 16:32:05 2009 -0700 Further ansify prototypes & reduce #ifdefs in locking.c Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 892b401d5acc055803a20e349ede0d64490f2230 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Apr 6 10:50:09 2009 -0700 Change masculine to ordmasculine in Compose file comments Matches the ordfeminine name used for the matching character, and the ordmasculine name used in many font descriptions of the glyph. Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit e3198b55dc16ec57346cc28aa8d34165ce8cde96 Author: Julien Cristau <jcristau@debian.org> Date: Fri Mar 13 13:52:33 2009 +0100 Add a ru_RU.UTF-8 locale Based on patch by Eugene Konev <ejka@imfi.kspu.ru> for X.Org 6.9.0. Debian bug#330144 <http://bugs.debian.org/330144> X.Org bug#15887 <http://bugs.freedesktop.org/show_bug.cgi?id=15887> commit d239de9452691d6f875e6e5ace3d499ec3bf14d9 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Mar 25 17:59:09 2009 -0700 Delete some unused "#ifdef notdef" static functions Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 4281892e31058ef3aecc96a5767824b34d88d415 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Mar 25 17:52:48 2009 -0700 Remove _XP_PRINT_SERVER_ #ifdefs from Xrm.c This copy of Xrm.c is never compiled into the Xprint server any more, so this old code-sharing #ifdef from the monolith tree isn't needed. Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 27a2e16e8ea11c1604e28645fae4d6ba4371d513 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Mar 17 18:38:58 2009 -0700 makekeys: combine malloc(strlen)+strcpy into strdup Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 78a894231ae8ec4959007b6d9b8d2a15d6333a1e Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Mar 17 15:42:19 2009 -0700 When makekeys fails to find a good hash, print error instead of divide-by-zero Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit c9f84af591d15fbc3fa890bcd955d94f1ff82a0b Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Mar 17 14:59:16 2009 -0700 Remove ifdef checks for macII left over from ancient A/UX 3.0 support Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 4b90da0ffb32b791d915ecae11996cc2f2cac9a7 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Mar 16 18:37:49 2009 -0700 XErrorDB additions for DRI2 requests Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 273f45af1441be9d2135e4cac8c46ceb33470236 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Mar 16 18:35:44 2009 -0700 XErrorDB additions for XInput errors and new XInput 1.5 requests Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 90ef36f6336068183bf9d13ca972202db35b1202 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Mar 16 18:23:05 2009 -0700 XErrorDB additions for RANDR 1.3 Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 124a4efaccf329f1a44f6b824e70278bdd1cad83 Author: Lubos Lunak <l.lunak@suse.cz> Date: Mon Mar 16 18:03:36 2009 -0700 XErrorDB updates for XTEST, RANDR, DAMAGE extensions From http://lists.freedesktop.org/archives/xorg/2008-January/031937.html Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 80811846e37b805fddb37c71589fd5f6f6037b3f Author: Lubos Lunak <l.lunak@suse.cz> Date: Mon Mar 16 17:57:52 2009 -0700 XGetErrorText() fails for extension error codes equal to the error base From http://lists.freedesktop.org/archives/xorg/2008-January/031937.html Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit da95ecbbdcacc483cd0b5fd7db1fb2e2543341bd Author: Milos Komarcevic <miloskomarcevic@netscape.net> Date: Mon Mar 16 17:43:26 2009 -0700 Bug 11456: Serbian locale updates (sr_RS and sr_ME) X.Org Bug #11456 <http://bugs.freedesktop.org/show_bug.cgi?id=11456> Patch #23937 <http://bugs.freedesktop.org/attachment.cgi?id=23937> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 934a6c0519a9e32505beee55b004f36c2a710217 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Mar 16 14:55:22 2009 -0700 Bug 10082: Compose entries for some standard mathematical operators X.Org Bug #10082 <http://bugs.freedesktop.org/show_bug.cgi?id=10082> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit abf4da1ed0f735ca7ce471dc13a0ec3677391486 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Mar 16 14:27:46 2009 -0700 Bug 14651: We need to add new locale specification for Belarusian Latin locale X.Org Bug #14651 <http://bugs.freedesktop.org/show_bug.cgi?id=14651> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 837703c8651e1321a50147a8311c56e4758ce08a Author: Caolan McNamara <caolanm@redhat.com> Date: Mon Mar 16 14:15:50 2009 -0700 Bug 20575: man page for XCreatePixmapFromBitmapData doesn't match signature X.Org Bug #20575 <http://bugs.freedesktop.org/show_bug.cgi?id=20575> Patch #23717 <http://bugs.freedesktop.org/attachment.cgi?id=23717> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 22199018879055d8653e59d8236bef57164fac66 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Mar 16 13:28:18 2009 -0700 Correct locale alias for sh_BA.ISO8859-2@bosnia (should be sr, not nr) Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 4c63c27eab2b88f5556dbf72c36321f50f6de35e Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Mar 12 18:57:20 2009 -0700 Bug 9953: Please provide locale alias hu_HU.utf8 X.Org Bug #9953 <http://bugs.freedesktop.org/show_bug.cgi?id=9953> Debian Bug #407573 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=407573> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 501f4e0ada1690783ada05ad412e4b191ad55336 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Mar 12 17:38:21 2009 -0700 Bug 6820: Xlib shouldn't handle EAGAIN as a fatal IO error X.Org Bug #6820 <http://bugs.freedesktop.org/show_bug.cgi?id=6820> Patch #17637 <http://bugs.freedesktop.org/attachment.cgi?id=17637> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 7b9c543e7210c7da204871c31a160e79d3a949b6 Author: Paul Bender <pebender@gmail.com> Date: Thu Mar 12 17:11:42 2009 -0700 Bug 15664: xau & xdmcp not needed in x11.pc dependencies when built with xcb X.Org bug #15664 <https://bugs.freedesktop.org/show_bug.cgi?id=15664> Patch #16128 <https://bugs.freedesktop.org/attachment.cgi?id=16128> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit fd2cf1ef66c2aff3dc758956c9e9e567b9892c06 Author: Xue Wei <Wei.Xue@Sun.COM> Date: Wed Mar 4 19:32:29 2009 -0800 Add UTF-8 locale entries for es_US, kk_KZ, mt_MT, and sh_BA Sun bug 6809309 Add new utf8 locales supported by Xlib <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6809309> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit cb70c9bc43267577859a3674ca9de9be396ba69e Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Feb 23 19:29:15 2009 -0800 Add --with-locale-lib-dir configure option to set locale lib install dir Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit ccd3584f0330db8dac90b9313c33ab8b5b2ec6af Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Feb 23 18:33:51 2009 -0800 Incorporate more locale names/aliases from Solaris libX11 Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 83ce4daefdf544f801c7d666c89162690a36ce41 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Feb 23 18:32:34 2009 -0800 Incorporate char range comments from Solaris version of ksc5601.h Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit ee279c84e34f1ebb8a6ff17d54ee146d11e29764 Author: Chris Ball <cjb@laptop.org> Date: Sat Feb 21 14:48:42 2009 -0500 Fix fi_FI locale install directory. fi_FI was setting "x11thislocaledir" to en_US, with the result that its locale data was written in that locale dir. Signed-off-by: Chris Ball <cjb@laptop.org> commit da6bbca07c796c69172a649405474f03bee66754 Author: Emilio Jesús Gallego Arias <egallego@babel.ls.fi.upm.es> Date: Sat Feb 21 20:17:23 2009 +0100 xcb_io: Avoid datatype overflow on AMD64 and friends. commit 4ef6491afa69e8441caee7bbebc583e6e796275e Author: Chris Ball <cjb@laptop.org> Date: Sat Feb 21 12:51:03 2009 -0500 Build fix for fi_FI. Commit 642c4e928e770e0.. instructs make to enter nls/fi_FI, but no Makefile is written there by configure. Signed-off-by: Chris Ball <cjb@laptop.org> commit 642c4e928e770e012379539a6ce09e11c02f09a6 Author: Julien Cristau <jcristau@debian.org> Date: Sat Feb 21 03:12:05 2009 +0100 nls: actually use the fi_FI.UTF-8 files The subdir wasn't added to nls/Makefile.am commit 9bad8309ef289bb943651abf6967b24fa2252aac Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Feb 20 14:45:54 2009 -0800 flags member of Display structure needs to be marked volatile Since the Xlib multithreaded code checks the flags variable in _XFlushInt to see if the other threads are done yet, it has to be marked volatile so the compiler doesn't optimize out re-loading it on each trip through the while loop and end up in an impossible-to-exit infinite loop of CPU chewing. Part of fix for Sun bug 6409332: infinite loop in XFlushInt() on x86/32-bit <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6409332> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit ef5c446395aa30d7b1096a112e241a81c5b358e7 Author: Xue Wei <Wei.Xue@Sun.COM> Date: Fri Feb 20 15:12:35 2009 -0800 Add nn_NO.UTF-8 to compose.dir.pre for Norwegian Nynorsk Sun bug 6691236: Swing applications dump core when locale is nn_NO.UTF-8 <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6691236> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 3822f2654e9630167f0c6cae317b472c09771672 Author: Xue Wei <Wei.Xue@Sun.COM> Date: Fri Feb 20 15:03:51 2009 -0800 Add locale aliases for no_NO & sh_BA locale variants Fixes Sun bug id 6691219: xterm refuses to start in some locales <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6691219> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 63b6b5b5f522c0a606b32163c643edb64ca91d54 Author: Xue Wei <Wei.Xue@Sun.COM> Date: Fri Feb 20 14:23:11 2009 -0800 Add kk_KZ.UTF-8 to locale.dir.pre for Kazakhstan Fixes Sun bug id 6737254 ("kk_KZ.UTF-8 locale: In Java applications changing keyboard layout with gimlet does not work") <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6737254> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit d497301707962f3b94542e999a36abffcfbd303d Author: Julien Cristau <jcristau@debian.org> Date: Tue Feb 17 16:09:41 2009 +0100 Bump to 1.2 commit 990e71361d1d7b79bf07b1dc93e4e905d4f1bdaf Author: Julien Cristau <jcristau@debian.org> Date: Tue Feb 17 15:23:40 2009 +0100 Check Xmalloc return value in _XConnectXCB X.Org bug#19137 <http://bugs.freedesktop.org/show_bug.cgi?id=19137> Signed-off-by: Julien Cristau <jcristau@debian.org> commit b4b5893f69419ff577bbaa4d18f78e4ffd729a0c Author: James Cloos <cloos@jhcloos.com> Date: Sat Feb 14 12:35:56 2009 -0500 dolt: allow older versions of bash to compile the library Cf xserver commit 7be6520d and bugzilla #19031. commit 20982d6866e24453642b0b592fa0f13a88aa747c Author: Will Thompson <will@willthompson.co.uk> Date: Thu Feb 5 02:53:06 2009 +1100 NLS: Compose: Non-aliasing CCCP Oops, cccp aliased cc for question mark. Upper-case it to avoid fail. Signed-off-by: Will Thompson <will@willthompson.co.uk> Signed-off-by: Daniel Stone <daniel@fooishbar.org> (sorry) commit f052665394f3f0319e93a98f1d5d4ea287e1dd07 Author: Will Thompson <will@willthompson.co.uk> Date: Wed Feb 4 14:51:11 2009 +0000 Add two essential compose sequences Signed-off-by: Will Thompson <will@willthompson.co.uk> Signed-off-by: Daniel Stone <daniel@fooishbar.org> commit d7bea6fa909bf34c43efe0ca8239ab0f9f3a415f Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Feb 2 20:34:31 2009 -0800 Add README with pointers to mailing list, bugzilla & git repos Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit f682c27e93512773122887d2cbabb1657af45d2e Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Mon Feb 2 16:36:39 2009 -0200 Check if a function argument is NULL. This was an addition to patch (also by me) https://bugs.freedesktop.org/attachment.cgi?id=14660 that was not added when rediscovering/correcting the problem. commit 427e9d45d424b84efd9fc499aebf8d72392844c5 Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Thu Feb 28 15:58:12 2008 -0300 Allow multiple inclusions of cursorfont.h, cosmetic patch. commit b91524a53e691f6a5d278fd8972b48a14ebeedeb Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Thu Feb 28 15:54:43 2008 -0300 Don't add prototypes for functions that don't exist. Note that a full review was not done, only for functions that receive char/short arguments, or one of it's parameters is a function pointer that requires char/short arguments. commit 537eb52fe266ac439c4b383bb04a70017b709911 Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Thu Feb 28 15:50:27 2008 -0300 WORD64 compile fix. This bug catched on a overview of the code. The code is wrong since the first git revision, so it seens that it has not been compiled with WORD64 for quite some time, there is also another interesting code in xkb/XKBRdBuf.c: <hash>ifdef WORD64 _XkbWriteCopyData32 Not Implemented Yet for sizeof(int)==8 <hash>endif and possibly there are other similar problems. commit ffd0300fb74c6183208ae599133f2ded09e08d97 Author: Brian Rogers <brian@xyzw.org> Date: Sat Jan 31 10:37:51 2009 -0800 Initialize event_notify after allocating the memory for it. An uninitialized or otherwise invalid condition variable can apparently cause a hang in pthread_cond_broadcast. Ekiga, openoffice, and xine at least are freezing as a result of event_notify never being initialized. Signed-off-by: Brian Rogers <brian@xyzw.org> Signed-off-by: Bart Massey <bart@cs.pdx.edu> commit 97fc6babd4ccaf300e25708868aa2a738893dc30 Author: James Cloos <cloos@jhcloos.com> Date: Thu Jan 29 20:10:41 2009 -0500 NLS: Add UTF-8 compose file for Finnish From bug report: https://bugs.freedesktop.org/show_bug.cgi?id=18747 commit 1bd2966ed88f83479a066c6ca7da23a515979550 Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Thu Jan 29 20:25:15 2009 -0200 patches to avoid gcc warnings for libX11 (#4) Author is Peter Breitenlohner <peb@mppmu.mpg.de> Bug #17946, attachment #19443 This patch avoids the gcc warning ../../../../libX11-1.1.5/modules/im/ximcp/imDefLkup.c:223: warning: passing arg 1 of `_XimProcSyncReply' from incompatible pointer type (same as already done at other places) BTW: what is the difference between XIM (the type of ic->core.im) and Xim ? commit f16dd6af3eb17a25b8ee03d6617a7acc6e919fb0 Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Thu Jan 29 20:22:21 2009 -0200 patches to avoid gcc warnings for libX11 (#3) Author is Peter Breitenlohner <peb@mppmu.mpg.de> Bug #17946, attachment #19441 This patch avoids the two gcc warnings ../../../../libX11-1.1.5/modules/im/ximcp/imRm.c:413: warning: assignment discards qualifiers from pointer target type ../../../../libX11-1.1.5/modules/im/ximcp/imRm.c:450: warning: assignment discards qualifiers from pointer target type Note, that this as a rather crude fix of the problem (and it is really a shame to cast name_table to non-const). The right solution would be to declare XIMValuesList.supported_values (in include/X11/Xlib.h) as 'const char **' (or '_Xconst char **'). This will, however, require extensive modifications in various places. commit cce75c5dce73fe1f8626ed9e6798138ada09a860 Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Thu Jan 29 20:20:18 2009 -0200 patches to avoid gcc warnings for libX11 (#2) Author is Peter Breitenlohner <peb@mppmu.mpg.de> Bug #17946, attachment #19440 Avoid a preprocessor message <stdin>:194: warning: no newline at end of file Two more such warnings (in XkbSAGroup.man and XkbSASetGroup.man) seem to be caused by a truncated (or otherwise incomplete) manpage. commit 692baebcc50f1e952800bfe4e2e6bc42f54e62fe Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Thu Jan 29 20:12:24 2009 -0200 patches to avoid gcc warnings for libX11 (#1) Author is Peter Breitenlohner <peb@mppmu.mpg.de> Bug #17946, attachment #19439 Define as 1 (one) as done by autoconf and the command line option, e.g. -DX11_t, not as empty. This avoids the gcc (3.4.6) warnings: ../../libX11-1.1.5/src/x11_trans.c:27:1: warning: "X11_t" redefined <command line>:7:1: warning: this is the location of the previous definition ../../libX11-1.1.5/src/x11_trans.c:28:1: warning: "TRANS_CLIENT" redefined <command line>:8:1: warning: this is the location of the previous definition Similarly, follow the autoconf convention to define XTHREADS and XUSE_MTSAFE_API as one. This avoids analogous warnings when compiling libXcomposite, libXcursor, and libXdamage. No reason to AC_SUBST XTHREADS and XUSE_MTSAFE_API (unused). commit a1977883c9f5ef0e515569d6e2ebccb07411f98c Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Thu Jan 29 15:01:06 2009 -0200 Janitor: Correct some gcc/sparse warnings. Most remaining warnings are about XIM/Xim to/from conversion and discarding const from pointers. commit 8ba0ca32a63c532f128bdca7f1bf982cab8e12be Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Wed Jan 28 20:31:42 2009 -0200 Janitor: ansification, make distcheck, compiler warnings. Only convert to use "ansi prototypes" the functions warned from compilation with "./autogen.sh --prefix=/usr", on a Linux computer. Also, only address "trivial" compiler warning fixes in this commit. The new .gitignore is the output of a command like: % find . -name .gitignore -exec cat {} \; | sort | uniq and only the toplevel .gitignore file was kept. commit 091c1624fd2f9d933329d6152e4ecd865aa7903a Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Tue Jan 13 12:05:54 2009 +1000 Fix wrong implies symbol. Quote Simos Xenitellis: > I checked the gtk+ commit logs that go back to 2000, and I see that still it > was > > { 0x08ce, 0x21d2 }, /* implies ⇒ RIGHTWARDS > DOUBLE ARROW */ > > In XFree86, it appears there was an error when they converted the > original table to > http://cvsweb.xfree86.org/cvsweb/xc/lib/X11/imKStoUCS.c?rev=1.1&content-type=text/vnd.viewcvs-markup > and the problem still shows up there (November 2000). http://lists.freedesktop.org/archives/xorg/2008-October/039743.html Reported by Erik Streb del Toro. commit e32521f19e0b07649b7e3a03d56a2bd556b138fb Author: James Cloos <cloos@jhcloos.com> Date: Sun Dec 7 04:13:34 2008 -0500 [i18n] s/U00DC/Udiaeresis/g The xkeyboard-config keyboards generate the symbol Udiaeresis, not U00DC. Make sure the relevant Compose sequences expect the symbol which the keyboards actually send. commit b7502abfe22f8dc009b21cda1172af221d8f9f32 Author: James Cloos <cloos@jhcloos.com> Date: Sun Dec 7 04:09:46 2008 -0500 Revert "For nls/*.pre, allow people to comment lines by starting them with '##'." As of commit c9d20e3 the initial double-hashes are replaced with proper C comments. This reverts commit a225a0be48770beb689d5ac5da97073634f7deab. commit c9d20e3f697c9cfae5511412023362c1db7449b1 Author: James Cloos <cloos@jhcloos.com> Date: Sun Dec 7 04:08:23 2008 -0500 Use C comments rather than initial doubled hashes to exclude lines from .pre files commit c34ce54d9eac2d8052dc5f205a2ab09866ef5d25 Author: vehemens <vehemens@verizon.net> Date: Sun Dec 7 01:18:26 2008 -0500 [i18n] Distribute new headers which were added for gb18030 support. big5hkscs.h and gbk.h, added in 67e34d7a, need to be in SOURCES to make it into the tar. Completes 67e34d7a82ccd31f1208c0c43a6d58c3c05bf51. Signed-off-by: James Cloos <cloos@jhcloos.com> commit 418819558d2c60e58b4e3022ce0fadf2143488ac Author: Stefan Dirsch <sndirsch@suse.de> Date: Sat Nov 22 22:01:07 2008 +0100 Fixed strange font mixups, when fontsets are still used (#2676, Novell #74299). commit 67e34d7a82ccd31f1208c0c43a6d58c3c05bf51a Author: Stefan Dirsch <sndirsch@suse.de> Date: Sat Nov 22 19:40:54 2008 +0100 Added remaining xlib patch required for gb18030 support (#1573). commit 55782a0a1fe1560f1a9c0ed78bc7f2575c15abcf Author: Stefan Dirsch <sndirsch@suse.de> Date: Sat Nov 22 17:53:06 2008 +0100 Added remaining hunk of Egbert's patch to prevent XIM deadlocks (#1182). commit c859446c500c883a67f7a86cab1a44844e24dade Author: Ken Thomases <ken@codeweavers.com> Date: Fri Nov 21 13:58:10 2008 -0500 [i18n] Provide translation from XK_partialderivative (8ef) to Unicode (U2202) Signed-off-by: James Cloos <cloos@jhcloos.com> commit 5e68e94d852c730ef9264fc0d8ca61a2ffe98b53 Author: Jeremy Huddleston <jeremyhu@freedesktop.org> Date: Mon Nov 17 20:47:26 2008 -0800 Force local transport when using the launchd socket. Fixes a regression due to bf53987eaf0fbd7f7627783fc39e7ee99e8361ba commit 7aca689ce14d314b5c8c72c8df76f53f76ab467c Author: Peter Hutterer <peter.hutterer@redhat.com> Date: Fri Nov 14 10:32:50 2008 +1000 Add XF86Suspend, XF86Hibernate to KeysymDB. commit d16b11f25f8265e651def8d80bcd430c0448e664 Author: James Cloos <cloos@jhcloos.com> Date: Tue Nov 11 19:43:39 2008 -0500 [nls] Annotate the Bépo compose sequences Add comments with the UCS names. Add utf-8 strings for each result. Format for easy reading. commit 730298464240be6f65b32416b3f9b20062c61825 Author: James Cloos <cloos@jhcloos.com> Date: Tue Nov 11 16:41:34 2008 -0500 [nls] Add some UTF-8 Compose sequences As requested for the Bépo keyboard layout (http://clavier-dvorak.org/wiki/). Cf. bugs: https://bugs.freedesktop.org/show_bug.cgi?id=17821 https://bugs.freedesktop.org/show_bug.cgi?id=17822 commit ad6008a0c92733826983eb93f063d3d6276007d8 Author: Colin Harrison <colin.harrison@virgin.net> Date: Thu Nov 6 17:48:21 2008 -0500 Fix copy/paste typo in imLcPrs Signed-off-by: James Cloos <cloos@jhcloos.com> commit 0f0168ad18f8a280fc5a689eb02cfaa62d022ea6 Author: Adam Jackson <ajax@redhat.com> Date: Thu Nov 6 14:54:13 2008 -0500 Fix leak in _XimXGetReadData Spotted by Denis Dzyubenko commit ae23c25b9349ab1d7ff81f3075c000cf35fc442b Author: Julien Cristau <jcristau@debian.org> Date: Wed Nov 5 22:09:37 2008 +0100 Bump to 1.1.99.2 commit d31e644c65c52828ea3e7abd94a8cf9aee12265c Author: Julien Cristau <jcristau@debian.org> Date: Wed Nov 5 21:33:13 2008 +0100 Fix distcheck commit e6a7b70cdb2ae8b713012839a0a0bbb93817b8ef Author: Jamey Sharp <jamey@minilop.net> Date: Wed Oct 29 14:00:33 2008 -0700 Support multiple independent internal sync handlers Xlib has several independent tasks that need to be performed with the display unlocked. It does this by replacing the existing sync handler with one of a variety of internal sync handlers. However, if multiple internal sync handlers need to run, then the last one registering wins and previously registered internal sync handlers are never invoked. This manifested as a bug with DRI applications on Xlib/XCB as that requires both an XID handler after every XID allocation, and the periodic sequence number handler. The XID handler would win, and the sequence number handler would never be invoked. Fix this by unifying the internal sync handler mechanism into a single function that calls all of the known internal sync handlers. They all need to deal with being called when not strictly necessary now. Signed-off-by: Keith Packard <keithp@keithp.com> Signed-off-by: Jamey Sharp <jamey@minilop.net> Signed-off-by: Josh Triplett <josh@freedesktop.org> commit 2dbaaab9c4e3894b33dcae850551dee5473431d5 Author: Keith Packard <keithp@keithp.com> Date: Sat Oct 11 21:44:21 2008 -0700 Ensure that _XReadEvents always leaves an event in the queue on return XNextEvent assumes that the event queue will be non-empty on return from _XReadEvents, but with multiple event readers running, the previous change could leave the queue empty on return from process_responses. Re-invoke process_responses until the queue is non-empty. Signed-off-by: Keith Packard <keithp@keithp.com> commit bedfe68259037c5564fe52758c92b9c97729640a Author: Keith Packard <keithp@keithp.com> Date: Sat Oct 11 21:10:23 2008 -0700 Permit only one Xlib thread to block waiting for events As Xlib queues events internally, we must prevent multiple Xlib threads from entering XCB to wait for an event in case the queued event is to be delivered to the thread which didn't manage to read it. In other words, let only one Xlib thread into xcb_wait_for_event at a time. Jamey Sharp looked over my shoulder while making this fix and, while hating my whitespace conventions, appears happy enough with the actual code. Signed-off-by: Keith Packard <keithp@keithp.com> commit cc19618d2eb3ed92a0b574aee26a7da8b4aed5d2 Author: Jamey Sharp <jamey@minilop.net> Date: Sun Mar 23 16:33:50 2008 -0700 Fix XAllocID race: hold the user display lock until we have a new XID. Xlib built --without-xcb is also vulnerable to this race, and a similar fix might work there too. Also, use an XID that's truly invalid while waiting for the next XID to be requested. commit 54e5c0941b0ded1628d559a9f0a3451ea96c299b Author: Josh Triplett <josh@freedesktop.org> Date: Sat Mar 15 17:22:23 2008 -0700 Use XCB's new socket handoff mechanism rather than the old XCB Xlib lock. Previously, Xlib/XCB used XCB's Xlib lock to prevent XCB from sending requests between calls to Xlib's LockDisplay and UnlockDisplay macros. Xlib/XCB then sent all of its requests using XCB's xcb_send_request, and had to flush its requests when unlocking the display. XCB 1.2 adds a new socket handoff mechanism, xcb_take_socket. Replace much of the existing Xlib/XCB implementation with the use of xcb_take_socket to take ownership of the write side of the X connection socket, and a return_socket callback which writes any outstanding requests with xcb_writev. This approach allows Xlib/XCB to use the same buffering as traditional Xlib did. In particular, programs which use Xlib/XCB and never make XCB calls will never need to hand the socket back to XCB, and vice versa. This allows us to discard large quantities of synchronization code from Xlib/XCB, together with the synchronization bugs present in that code. Several test cases which previously failed now work perfectly, including multi-threaded ico. In addition, the infamous locking correctness assertions, triggered when double-locking or when unlocking without a previous lock, no longer exist, because Xlib/XCB no longer has any reason to care more about application locking than traditional Xlib does. Furthermore, the handoff approach provides great improvements to performance. Results from x11perf's XNoOp test, which represented the worst case for the lock-based Xlib/XCB: Traditional Xlib: average 19100000/sec Lock-based Xlib/XCB: average 3350000/sec Handoff-based Xlib/XCB: average 17400000/sec Thus, for no-ops, the handoff mechanism provides more than a 4x speedup to Xlib/XCB, bringing Xlib/XCB within 9% of traditional Xlib no-op performance. Of course, real-world workloads do not use no-op, so your mileage may vary. In particular, since no-ops represent the worst case, we expect real workloads to more closely match the performance of traditional Xlib. While removing synchronization code, we changed _XReply to not drop any locks when calling xcb_wait_for_reply; previously, we had to carefully avoid a deadlock between the Display lock and the XCB Xlib lock. Holding the locks reduces implementation complexity and should not impact applications. Commit by Jamey Sharp and Josh Triplett. XCB's handoff mechanism inspired by Keith Packard. commit 5a19ac473f7a8046b0421fbd5d53da160c22ed75 Author: Chris Ball <cjb@laptop.org> Date: Mon Nov 3 22:57:29 2008 -0500 Remove configure check for xcb-xlib. xcb-xlib has been intentionally removed from libxcb; stop checking for it at configure-time. commit 34b35dda0bb7f3cf0ad9ab95ad7953d35d24f71b Author: Josh Triplett <josh@freedesktop.org> Date: Wed Oct 29 14:37:44 2008 -0700 .gitignore: Add dolt files commit 1290cccf2d90083eba852f5f413f7e3dff48ccd2 Author: Peter Hutterer <peter.hutterer@redhat.com> Date: Tue Oct 28 11:56:55 2008 +1030 man: fix formatting error in XkbGetIndicatorState man page. commit b1022fa6d7e97640049e93ffa108083fc8d71b05 Author: James Cloos <cloos@jhcloos.com> Date: Sat Oct 25 09:13:08 2008 -0400 Increase size of working arrays in the makekeys utility program. Makekeys is used to create an optimal hash of the keysyms defined in x11proto’s keysymdef.h. The recent addition of new keysyms there has triggered a bug in makekeys where it tries to use a zero on the rhs of the % (mod) operator (resulting in a divide by zero error) whenever it fails to find a solution within its constraints. Increasing the size of the arrays allows it to find a solution for the current set of keysyms. Makekeys is only run durring the build process, so this has no impact on users of libX11, only on the amount of VM needed to build it. It still needs a more complete fix, but this allows compiles to progress until that is completed. commit 3e9afd501e40d76040635bd9a3045bcaf5a03b60 Author: James Cloos <cloos@jhcloos.com> Date: Sat Oct 11 01:03:14 2008 -0400 Dolt-ify Add dolt to acinclude.m4 and call it it configure.ac to speed compiles. commit 39c0b266cac8cbc15bf501d7869186862f01d823 Author: Peter Hutterer <peter.hutterer@redhat.com> Date: Wed Oct 15 14:30:20 2008 +1030 Add more keysyms for PS3 BD remotes, Ericsson Phones #16519 X.Org Bug 16519 <https://bugs.freedesktop.org/show_bug.cgi?id=16519> commit d23aad31338e7d869d878d5aa1b6b91d20287005 Author: Peter Hutterer <peter.hutterer@redhat.com> Date: Mon Oct 13 09:41:59 2008 +1030 Add XF86Battery, XF86Bluetooth, XF86WLAN, XF86UWB to keysymdb. commit 214ea6f5fd6aeaa7303ea4a69f9aedabf219ec4c Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Thu Jul 24 15:44:26 2008 +0930 xkb: fix out-by-1 error in _XkbWriteKeyExplicit. Thanks to Michael Meeks, Novell Bug 369263. https://bugzilla.novell.com/show_bug.cgi?id=369263 commit e7ece39afc8e0adc3b6b1e70b337b98376754462 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Oct 7 15:41:38 2008 -0700 Sun bug #6739431: double free in _X11TransConnectDisplay() Double free() introduced in bf53987eaf0fbd7f7627783fc39e7ee99e8361ba After copying original_hostname to phostname, set original_hostname to NULL, so we don't free the same pointer twice when we free both original_hostname and phostname. <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6739431> commit 0877bc916afbd1ff8f1833edc930b765ea783576 Author: Daniel Stone <daniel@fooishbar.org> Date: Tue Sep 23 19:02:02 2008 +0300 configure.ac: Fix CC_FOR_BUILD logic error Turns out we were accidentally smashing it so that you couldn't set it externally at all. Oops. commit 58bf3aa746908f01c37be7045699e43a4e270944 Author: John Tapsell <johnflux@gmail.com> Date: Tue Sep 23 17:30:13 2008 +0300 Build: Use native compiler for makekeys makekeys needs to be run during the build process, as opposed to on the target, so build it with either of gcc or cc to fix cross-compiling. This can be overridden by setting $CC_FOR_BUILD. commit 340422a5c7a413faef18666cada27cee14615250 Author: Adam Jackson <ajax@redhat.com> Date: Wed Sep 17 12:54:34 2008 -0400 Fix the previous patch for the BadFont case. commit 2335eafe4b53c27f6f9ee1bab3e1f5842f896428 Author: Matthias Clasen <mclasen@redhat.com> Date: Wed Sep 17 10:43:52 2008 -0400 Bug #17616: Fix an XCB leak when the client has a non-fatal error handler. commit db0b85db29699be6bf7e78dede655d59ba926dfc Author: Rafael Ávila de Espíndola <rafael.espindola@gmail.com> Date: Sun Sep 14 19:15:26 2008 -0400 Fix problem with <dead_acute> <c> in pt_BR.UTF-8 The <dead_acute> <C> and <dead_acute> <c> lines in the pt_BR UTF-8 Compose file show "Ç" and "ç" (c with cedilla accent) (akin to the ISO 8859 pt_BR Compose file) as the string but specify the keysym and comment for Ć and ć (c with acute accent). This commit normalizes those two lines to match the specified string. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=4671 Signed-off-by: James Cloos <cloos@jhcloos.com> commit b065c011baa69b69e3ea77c30d5e153c0d103e2d Author: Michael Verret <michael.verret@gmail.com> Date: Mon Sep 8 16:33:35 2008 -0400 Fix documentation typo Signed-off-by: James Cloos <cloos@jhcloos.com> commit 4213ea95185377bdd1b51e82933f331fc0f52e5b Author: James Cloos <cloos@jhcloos.com> Date: Sat Sep 6 04:19:19 2008 -0400 Remove extraneous <angle brackets> from the Ethiopic Compose file. The am_ET.UTF-8 Compose file submitted in: https://bugs.freedesktop.org/show_bug.cgi?id=11307 for the OLCP project used incorrect syntax. (It has angle brackets around the Uxxxx symbols on the right hand side rather than only on the left hand side). This bug is noted in OLPC’s ticket: http://dev.laptop.org/ticket/7474 http://dev.laptop.org/attachment/ticket/7474/olpc_7474_dead_vowels_libX11.patch commit 9df84b513dd2b6e65e6d528cfac6d4cc3ea46918 Author: James Cloos <cloos@jhcloos.com> Date: Mon Sep 1 17:49:33 2008 -0400 Complete the set of vulgar fractions Unicode 1.1 added thirds, fifths, sixths and eights; we might as well catch up. (Unicode and ISO 10646 have 1/7 (U2150), 1/9 (U2151), 1/10 (U2152) and 0/3 (U2189) in their pipelines, but those four can be added here after they are published.) commit a788792e9de95f8db0639557859722a35087481d Author: James Cloos <cloos@jhcloos.com> Date: Wed Aug 20 15:28:07 2008 -0400 nls (en_US) Re-remove long compositions that override shorter As reported in <https://bugs.freedesktop.org/show_bug.cgi?id=17228>: Commit a6f4bbf7 nls (en_US): remove long compositions that override shorter [...] removed some longer compose sequences because there are shorter ones which take preference over the longer. For example the sequences: <Multi_key> <apostrophe> <comma> <c> : U1E09 # ḉ <Multi_key> <apostrophe> <comma> <C> : U1E08 # Ḉ were removed becase there already was: <Multi_key> <apostrophe> <comma> : U201A # ‚ Then commit 4ba09125 Work on making the en_US and pt_BR UTF-8 Compose as similar as possible added exactly the same key sequences again. Obviusly they won't work. commit 55248e5c84c3fd8c349a3bb4cb15a1ec86989d74 Author: James Cloos <cloos@jhcloos.com> Date: Thu Jul 17 21:01:42 2008 -0400 Add more <Multi_key> <cedilla> Compose tuples The last commit missed the el_GR UTF-8 Compose.pre as well as the various ISO 8859 locales which have compose sequences generating ‘WITH CEDILLA’ characters. (Interestingly, some of the 8859 locales already supported <Multi_key> <cedilla> for some CEDILLA characters, but not for Ç or ç.) This is further work on bug 10397. commit 4ba091255bb953d53078ba5619d6751052c739f7 Author: James Cloos <cloos@jhcloos.com> Date: Thu Jul 17 17:16:50 2008 -0400 Work on making the en_US and pt_BR UTF-8 Compose as similar as possible. The eventual goal here is to have a single primary UTF-8 Compose file which the locale-specific UTF-8 Compose.pre files can #include. commit 254522d3c24e0590732fc03cdd61ff4564819d94 Author: James Cloos <cloos@jhcloos.com> Date: Thu Jul 17 17:13:36 2008 -0400 Add <Multi_key> <cedilla> Compose tuples The en_US and pt_BR UTF-8 Compose tables had support for using <comma> with <Multi_key> to enter CEDILLA characters. Bug 10397 requests support for using <cedilla> instead of <comma> in said sequences. This commit makes both styles work. commit 7dc907f6032e1d5cbe4da0e414bdf2c569c04b44 Author: James Cloos <cloos@jhcloos.com> Date: Sat Jun 28 15:25:23 2008 -0400 Fix commit 21e464ec682ab23ba20ddf6bd72c6db214cfbe01 The new block was added twice to the en_US.UTF-8 Compose.pre; delete the duplicate. commit 596e081b7457dcd1c4ad555ac140e6999239bc0d Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Sat Jun 28 20:14:05 2008 +0930 Fix unbalanced parenthesis in XKBlib.h # 16551 X.Org Bug 16551 <http://bugs.freedesktop.org/show_bug.cgi?id=16551> commit f6af6dd2f76c12b56ec166bb771457b9f08fe246 Author: Adam Jackson <ajax@redhat.com> Date: Tue Jun 24 13:16:53 2008 -0400 Bug #14898: Don't abuse the sprintf() implementation. The thing you're printing into should not itself appear in the list of things to print from, that's bad juju. Just use strcat(). commit 21e464ec682ab23ba20ddf6bd72c6db214cfbe01 Author: Khaled Hosny <khaledhosny@eglug.org> Date: Thu Jun 19 18:26:11 2008 -0400 NLS: Add Arabic Lam-Alef ligature compose sequences (bug #16426) Add some Arabic digraphs to utf-8 locales with a Compose.pre Signed-off-by: James Cloos <cloos@jhcloos.com> commit bf53987eaf0fbd7f7627783fc39e7ee99e8361ba Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Jun 18 20:00:25 2008 -0700 Rework code to choose local connection types and fallback to others Adds --with-local-transport-order configure flag if you don't like the default ordering (which is platform dependent) Includes fixes for these Sun/Solaris bug ids: 6678250 X Commands returning incorrect display value unix:0.0 not <system>:0.0 <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6678250> 6716481 libX11 should prefer Unix domain sockets over named pipes on Solaris <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6716481> commit cf49e537014c3cb5aaee07e57400933e0bb72b6b Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Jun 17 14:41:17 2008 -0700 Strip whitespace from end of lines in source files commit f76fd81dfbbd5cfae75c87ce0511e88e08529cf3 Author: Jeff Smith <whydoubt@yahoo.com> Date: Sun Jun 15 23:52:20 2008 -0500 Fix memory leak in XOpenDisplay Signed-off-by: Peter Hutterer <peter@cs.unisa.edu.au> commit fca0b0ba3f72b7284601d4690bba99fc80a92614 Author: Jens Herden <jens@khmeros.info> Date: Tue Jun 10 20:07:30 2008 +0300 NLS: Add Khmer compose sequences (bug #5706) Add some Khmer digraphs to all locales with a Compose.pre. commit e54cffb649b1622c17457e470cfab8cc56d38c97 Merge: 19802ccd 721b574d Author: Daniel Stone <daniel@fooishbar.org> Date: Tue Jun 10 20:04:30 2008 +0300 Merge branch 'master' of ssh://git.freedesktop.org/git/xorg/lib/libX11 commit 721b574d36f1884c3f1bf7bd933646e2ed6680b5 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Thu May 29 10:57:21 2008 +0930 Bump to 1.1.99.1 commit 631d32d13247d1cf52c0833d438c5b38b01b17a4 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Wed May 28 17:31:59 2008 +0930 Require xproto 7.0.13 and libxcb 1.1.90 (for GenericEvents) commit e9195db7257e418f83707233baeeb84b225caf4f Merge: c34f76f4 a7f85567 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Thu May 22 12:14:28 2008 +0930 Merge branch 'master' into xge commit 19802ccd3909145e3ba2f6c073271cb5f3701685 Author: Daniel Stone <daniel@fooishbar.org> Date: Mon May 19 19:22:31 2008 +0300 gitignore: Update with loads more bits from server commit a7f85567a3e850fba0c44571453d2852ab1a09be Author: Adam Jackson <ajax@redhat.com> Date: Tue May 13 10:28:39 2008 -0400 Bug #15884: Remove useless sleep()'s from the connection code. For network transports, there's enough delay in the network layer already without adding more. For local transports, just hurry up and fail if the server isn't there. commit c34f76f475bc632490122e67b5a82575d69d5569 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Mon May 12 21:46:24 2008 +0930 Pull down extra bytes when reading a GenericEvent (non-xcb). I refuse to take any responsibily for this code. It works, I guess. But - all the flushing is done somewhere before that, so we might need to flush here. Under some circumstances anyway. Don't ask me, I'm an optical illusion. Build with xcb as transport layer highly recommended. commit c9b2ff1e6a607463993afa4a8d085857d97cc2f3 Merge: 17d7dcbf 9129057b Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Mon May 12 17:58:37 2008 +0930 Merge branch 'master' into xge commit 9129057bdbff0ec9cd8bb780cf7f85f134a291eb Author: Teemu Likonen <tlikonen@iki.fi> Date: Wed May 7 21:44:22 2008 +0300 Change <dead_belowdot> to <dead_belowring> for U+1E00 and U+U1E01 Commit 6b6caeea830a977bdb54688cfb648d879821e752 added <dead_belowdot> <A> and <dead_belowdot> <a> compose sequences for letters U+1E00 and U+U1E01 (LATIN CAPITAL/SMALL LETTER A WITH RING BELOW). This caused duplicate compose sequences since these have already been defined. Also, using <dead_belowring> is more logical since the diacritic is indeed a "RING BELOW". commit 01a9cb58888d290cc3d319feec4ee4a0297a844c Author: Daniel Stone <daniel@fooishbar.org> Date: Wed May 7 20:04:44 2008 +0300 NLS: Make UTF-8 the default for Russian No-one uses 8859-5 anymore, so make the default for Russian UTF-8; the only other possible answer would be KOI8-R. Signed-off-by: Sergey V. Udaltsov <sergey.udaltsov@gmail.com> commit 407b81bfbbabf6feb565d6da22f9ef9a69016ab8 Author: Ross Burton <ross@burtonini.com> Date: Tue Apr 29 13:38:10 2008 +0300 NLS: Add interrobang to UTF-8 compose tables (bug #15653) It is what it says on the box. commit 0b6682303e9c61fefc3818acfda616b1e3691abf Author: Theppitak Karoonboonyanan <thep@linux.thai.net> Date: Mon Apr 28 11:51:25 2008 +0300 IM: Respect XMODIFIERS for Thai locale (bug #15719) When looking at Thai input methods, make sure XMODIFIERS is checked before jumping straight into built-in Thai processing, so external XIM servers such as SCIM can be used with Thai. commit c13aded1b2f830ba5004abb0ec5518f9ea16087e Author: Colin Harrison <colin.harrison-at-virgin.net> Date: Sat Apr 26 18:56:05 2008 +0100 Fix missing error condition commit f5c5ffc175cb383c92ea0fa8c08cfb087c5f3083 Author: Colin Harrison <colin.harrison-at-virgin.net> Date: Mon Apr 21 17:24:33 2008 +0100 Xlib warning fixes commit 6b6caeea830a977bdb54688cfb648d879821e752 Author: James Cloos <cloos@jhcloos.com> Date: Fri Apr 18 02:50:55 2008 -0400 Add some dead_key sequences to en_US.UTF-8 Compose table Make use of the new dead key symbols added to x11proto’s commit 44e24a27bca023cf7b799f191fe6d52e12efbe5f (which was in responce to bug #15446). commit 8f9b039580deaf658e464b7d6254064fcf183df6 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Apr 14 19:09:42 2008 -0700 Update ac_define_dir macro in acinclude.m4 to 2008-04-12 version commit 9f5e96eb91ab55dd441c3e94b75caf48c588778f Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Apr 14 18:21:14 2008 -0700 Fix mismatched brace indenting commit a19f9c65ee9e5e5d783feaa84998c36439b0288b Author: Bart Massey <bart@cs.pdx.edu> Date: Fri Apr 4 18:58:45 2008 -0700 added error check in Xcms color file parser; closes bug #15305 commit 12e8d0d01dd72ce98e7683ddb1bde181b7ed246f Author: Christian Weisgerber <naddy@mips.inka.de> Date: Tue Mar 18 07:30:05 2008 +0100 ConnDis: properly cast 'addr' before accessing it as a byte array. If you use XDM-AUTHORIZATION-1 authorization keys for remote X11 clients over IPv6, the clients are liable to segfaults. commit 64325f38bab082a8e0e9ce779a8e582de5c8588e Author: Josh Triplett <josh@freedesktop.org> Date: Sat Mar 15 12:29:33 2008 -0700 Fix fd.o bug 15023: make Xlib sync correctly given many void requests If given many requests without replies, Xlib may not sync until it flushes the output buffer. Thus, if Xlib can fit enough requests in the buffer to pass by the number of requests it would normally sync after (65536 - BUFSIZE/sizeof(xReq)), it will sync too late. The test case in bug 15023 demonstrated this by issuing a request with a reply (ListExtensions) at just the right time to get confused with the GetInputFocus reply issued in response to the sync 65,536 requests later; the test case used an async handler to watch the replies, since otherwise it could not issue a request without waiting for the response. When the test case failed, Xlib's sync handler would eat the ListExtensions reply, and the test case's async handler would see the GetInputFocus reply. Fix this by replacing SEQLIMIT with a function sync_hazard() that uses the buffer size to figure out when the sequence numbers could potentially wrap before the next flush. With this commit, the test case consistently passed, and the async reply handler always saw the ListExtensions reply. Commit by Jamey Sharp and Josh Triplett. commit a5395563bbee15fabe1e8fd7aa86f9f314d8d30e Author: Colin Harrison <colin.harrison@virgin.net> Date: Sat Mar 15 13:39:13 2008 -0400 Fix typo Signed-off-by: James Cloos <cloos@jhcloos.com> commit f07585ca27a8487bc66dfe41486c823f0fdcea7d Author: Daniel Stone <daniel@fooishbar.org> Date: Sat Mar 15 17:32:57 2008 +0200 configure.ac: Don't search for legacy X11 headers This can actually break cross-compiles, so don't do it anymore. commit bf69541238c7df6606340c0f389e5c47149b29c7 Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sun Mar 9 09:08:07 2008 +0100 nuke RCS Ids commit 5e98aed13e529638df744e45893c471d5f2014fb Author: Adam Jackson <ajax@redhat.com> Date: Thu Mar 6 16:10:33 2008 -0500 libX11 1.1.4 commit 8e085971dc661da9f80ff6b67747459c0fb15c08 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Feb 28 20:17:41 2008 -0800 Man page typo fixes commit 1a1a42a3ca1dfaf42f1094936b71c140fc030fcb Author: Søren Sandmann Pedersen <sandmann@redhat.com> Date: Sun Feb 24 20:03:35 2008 -0500 XIM: Fix a hand when switching input context. Red Hat bug #201284. commit e02e4ccafcaf3eb8993152dfcbfbee0240ea2db2 Author: Adam Jackson <ajax@redhat.com> Date: Sun Feb 24 20:00:43 2008 -0500 Bug #14029: Don't LockDisplay() recursively. See also Red Hat bugzilla #326461. commit e5892467ae3308c8651be76e06db322dcbc08522 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Feb 15 17:27:53 2008 -0800 Add support for building lint library with --enable-lint-library commit e3eb83ec6a9bffa63cdffd94f077c12f85ad7240 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Feb 11 20:11:43 2008 -0800 Spell out number in XkbGetKeyVirtualModMap man page to avoid cpp errors from # commit d5ceed7a73a6b61758ddb6ff4e194955fbd5c185 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Feb 8 16:46:46 2008 -0800 Add WM_LOCALE_NAME to list of properties set in XSetWMProperties comment commit 416a812200f24d19149dcc497e5c51a0608120f6 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Feb 8 15:31:31 2008 -0800 XErrorDB updates for Render 0.9 & XFixes 4.0 commit 16a76091cd632e5a3708e235ff864b58f3e4613e Author: Kim Woelders <kim@woelders.dk> Date: Sat Dec 22 21:45:23 2007 +0100 Fix bs_BA entries in locale.dir.pre X.Org bug#13786 <http://bugs.freedesktop.org/show_bug.cgi?id=13786> commit 32115c563b87d2f37e3f9de70fbd0f4d9e424aea Merge: 8f0bd3f4 e8d4cefa Author: James Cloos <cloos@jhcloos.com> Date: Fri Dec 14 22:43:47 2007 -0500 Merge branch 'master' of ssh://git.freedesktop.org/git/xorg/lib/libX11 commit 8f0bd3f445cbdcc67650f6e8e3baf2ed89cb3695 Author: James Cloos <cloos@jhcloos.com> Date: Fri Dec 14 22:42:59 2007 -0500 add a comment to en_US.UTF-8/Compose commit 4d6c45e60ed13d3b0fea10413873d6a74f9d6a3b Author: James Cloos <cloos@jhcloos.com> Date: Fri Dec 14 22:40:13 2007 -0500 Add <dead_stroke> compose sequences The added sequences match the existing <Multi_key> <slash> sequences. This is related to bug #12765¹. 1] https://bugs.freedesktop.org/show_bug.cgi?id=12765 commit e8d4cefa0837afa149a10e981528b368485a9e38 Author: Jeremy Huddleston <jeremy@yuffie.local> Date: Mon Dec 10 23:00:44 2007 -0800 Added launchd support. commit 17d7dcbfced4a9417b33507bd3fd9b7dd8268242 Merge: 5dfefd38 13ac8046 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Thu Dec 6 14:08:29 2007 +1030 Merge branch 'master' into xge commit 5dfefd3829d3ba7e41d5db0ad28e9dfee92fadd5 Merge: a68a1cd7 eff33ae5 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Thu Dec 6 13:57:09 2007 +1030 Merge branch 'master' into xge Conflicts: src/xcb_io.c commit 13ac80469f6958cabac596834e203bd9cb6d4c94 Author: James Cloos <cloos@jhcloos.com> Date: Wed Dec 5 20:14:03 2007 -0500 Update the currency symbols block of en_US.UTF-8/Compose.pre Add XCOMM lines a la the existing NEW SHEQEL SIGN entry for the KIP, TUGRIK, DRACHMA. GERMAN PENNY, PESO, GUARANI, AUSTRAL, HRYVNIA and CEDI SIGNs. commit b0a8f2ec4ba698841683f8ce389f9d72e6bce53e Author: Anton Zinoviev <anton@lml.bas.bg> Date: Wed Dec 5 19:56:03 2007 -0500 Additions to the Compose file for UTF-8 From bug #5371¹ Commit 5cf5bc76642bfece7cb5b76faf414bf445f14489 left out this change from those in attachment #4122². The post³ on xorg resulted in only a positive reply⁴ from Daniel, so this block is now also commited. 1] https://bugs.freedesktop.org/show_bug.cgi?id=5371 2] https://bugs.freedesktop.org/attachment.cgi?id=4122 3] http://article.gmane.org/gmane.comp.freedesktop.xorg/20628 4] http://article.gmane.org/gmane.comp.freedesktop.xorg/23966 Signed-off-by: James Cloos <cloos@jhcloos.com> Acked-by: Daniel Stone <daniel@fooishbar.org> commit 438d02ebc08ee171cf1d3936f4c81050d428ab92 Author: James Cloos <cloos@jhcloos.com> Date: Tue Dec 4 17:25:39 2007 -0500 Fix the <U\x+> keysyms in the en_US.UTF-8 Compose file Based on src/KeysymStr.c and src/StrKeysym.c and comments in bugs #11930¹ and #5129² it is clear that <U100XXXXX> is invalid; those should be in the form U plus the hex of the UCS Code Point. The 0x01000000 is ORed in by the code. This update fixes all of those. 1] https://bugs.freedesktop.org/show_bug.cgi?id=11930 2] https://bugs.freedesktop.org/show_bug.cgi?id=5129 commit 02e04059c89e175f51647e3b031344f743286b34 Merge: 1254c57d b57129ef Author: James Cloos <cloos@jhcloos.com> Date: Tue Dec 4 06:55:04 2007 -0500 Merge branch 'master' of ssh://git.freedesktop.org/git/xorg/lib/libX11 commit 1254c57dd3a8d6ea87041b2f63024f99094f290f Author: James Cloos <cloos@jhcloos.com> Date: Tue Dec 4 06:53:55 2007 -0500 Use the new dead_psili and dead_dasia keysyms added to proto/x11proto 7.0.11 Inspired by bug 11930¹: Commit 40ed4eef92e31fcf7ea0a436e1a00cdf49484c1b to x11proto added dead_psili and dead_dasia keysyms. Make use of them in the en_US.UTF-8 and el_GR.UTF-8 Compose files. This was done with a pair of perl scripts based on the one quoted in the log for commit c76d30253f1483ac8200ad5c032a818907e65030. 1] https://bugs.freedesktop.org/show_bug.cgi?id=11930 commit b57129ef324c73ee91c2a796b800c4b45f4d4855 Author: Jeremy Huddleston <jeremy@yuffie.local> Date: Mon Dec 3 20:04:19 2007 -0800 Use __APPLE__ instead of __DARWIN__ commit b9c032e1d5ed08510863dfb91b8bda588e6c8c9e Author: Jeremy Huddleston <jeremy@yuffie.local> Date: Wed Nov 28 16:43:49 2007 -0800 Define __DARWIN__ when host_os == darwin* as needed in SetLocale.c commit 4b91ed099554626f1ec17d5bdf7bd77ce1a70037 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Nov 21 16:50:04 2007 -0800 X.Org Bug #4312: incorrect comment asterisk in XAnyEvent.3x man page X.Org Bugzilla #4312 <http://bugs.freedesktop.org/show_bug.cgi?id=4312> Protect /* sequences from cpp pre-processor removal without transforming to Unicode mathematical asterisk character commit 2af660c2fcd15c86c66459bfc074c190ea1462e6 Author: Jamey Sharp <jamey@minilop.net> Date: Mon Oct 29 10:46:20 2007 -0700 Two threads can request sequence sync and XID fetch simultaneously. So don't assert that they can't. This makes the Xlib/XCB implementation of _XAllocID more closely resemble the traditional Xlib version. commit 6e5485e0a5e3ab738becad12193e760c5fee83a4 Author: Samuel Thibault <samuel.thibault@ens-lyon.org> Date: Sun Oct 28 04:44:00 2007 -0800 X.Org Bug #12983: Typos in ./man/XChangeKeyboardControl.man <http://bugs.freedesktop.org/show_bug.cgi?id=12983> commit 24527c92fd1f433ea135e85ec876a94a529fe500 Author: Yann Droneaud <ydroneaud@mandriva.com> Date: Wed Oct 24 19:26:07 2007 +0300 XIM: Properly initialise client event Make sure all ClientMessage fields are initialised to 0 before we send it. commit e41477f37b0d9b74a056d22dbf0073a94eecb9d6 Author: Daniel Stone <daniel@fooishbar.org> Date: Wed Oct 24 19:22:22 2007 +0300 Colours: Fix --disable-xcms Disable large tracts of colour management code when passing --disable-xcms. commit 11ea09745efa8de7dc82fe30ebd2393f08390957 Author: Eric Anholt <eric@anholt.net> Date: Fri Aug 31 17:30:33 2007 -0700 Bug #2081: Note the range limitation of XSetScreenSaver arguments. commit 31540f1438ec63faf37044f2fd654b335ddf80f0 Author: Kristian Høgsberg <krh@redhat.com> Date: Wed Aug 29 19:50:57 2007 -0400 Add GLX 1.4 requests and errors. commit 7c996f78914c77fe17e9f4feede980d895d9df51 Author: Eric Anholt <eric@anholt.net> Date: Tue Aug 28 15:15:11 2007 -0700 Add XF86 keyboard/monitor brightness keysyms to the keysymbdb. commit fa4effe82759f864a22a2dc6c920fa72ddb175a8 Author: Eric S. Raymond <esr@thyrsus.com> Date: Sun Jan 14 10:48:00 2007 -0800 Bug #9658: Bad markup on XIfEvent.3x X.Org Bugzilla #9658 <https://bugs.freedesktop.org/show_bug.cgi?id=9658> commit 74cba78daa738ef4d92096107d95c1a585933666 Author: Eric S. Raymond <esr@thyrsus.com> Date: Sun Jan 14 10:43:00 2007 -0800 Bug #9655: Bad markup in XrmUniqueQuark.3x X.Org Bugzilla #9655 <https://bugs.freedesktop.org/show_bug.cgi?id=9655> commit 4341d1a34b2a2e460b58131b6fd81935f3355bbc Author: Eric S. Raymond <esr@thyrsus.com> Date: Sun Jan 14 10:43:00 2007 -0800 Bug #9654: Bad markup in XrmGetFileDatabase.3x X.Org Bugzilla #9654 <https://bugs.freedesktop.org/show_bug.cgi?id=9654> commit 2db713252090cae08f0200fecad4fc25fb64c8b1 Author: Eric S. Raymond <esr@thyrsus.com> Date: Sun Jan 14 10:40:00 2007 -0800 Bug #9653: Bad markup in XQueryColor.3x X.Org Bugzilla #9653 <https://bugs.freedesktop.org/show_bug.cgi?id=9653> commit 9d3ceea4b902e0471824c1e07ad64342b9a1114e Author: Eric S. Raymond <esr@thyrsus.com> Date: Sun Jan 14 10:40:00 2007 -0800 Bug #9652: Bad markup in XDrawArc.3x X.Org Bugzilla #9652 <https://bugs.freedesktop.org/show_bug.cgi?id=9652> commit 2e7e0748d353d7f53bbd65ec6bf0df8758528ddc Author: Eric S. Raymond <esr@thyrsus.com> Date: Sun Jan 14 10:39:00 2007 -0800 Bug #9651: Bad markup in XcmsColor.3x X.Org Bugzilla #9651 <https://bugs.freedesktop.org/show_bug.cgi?id=9651> commit c316aaf0aab06951db9dc5c9c1148bfea835d885 Author: Eric S. Raymond <esr@thyrsus.com> Date: Sun Jan 14 10:38:00 2007 -0800 Bug #9650: Bad markup in XLoadFont.3x manual page X.Org Bugzilla #9650 <https://bugs.freedesktop.org/show_bug.cgi?id=9650> commit ca5d9a625ea0965853fa9e74a448b8c29c78ec95 Author: Eric S. Raymond <esr@thyrsus.com> Date: Tue Jan 2 10:18:00 2007 -0800 Bug 9523: Markup problems in XQueryExtension.3x X.Org Bugzilla #9523 <https://bugs.freedesktop.org/show_bug.cgi?id=9523> commit fe713c616e29ba19c179b43c18eca1035079ce18 Author: Ian Romanick <idr@us.ibm.com> Date: Tue Aug 21 14:56:33 2007 -0700 Make sure nls/am_ET.UTF-8/Makefile is created by configure. commit e3430616f26b68e1439143cbe10732f3fc329d20 Author: Eric S. Raymond <esr@thyrsus.com> Date: Tue Jan 2 08:40:00 2007 -0800 Bug #9516: Markup error in XAllocWMHints.3x X.Org Bugzilla #9516 <https://bugs.freedesktop.org/show_bug.cgi?id=9516> commit d8fe979fc929833e8c754aed32641786d5a0622b Merge: 21ca9533 4ec1723f Author: James Cloos <cloos@jhcloos.com> Date: Mon Aug 20 15:34:50 2007 -0400 Merge branch 'master' of ssh://git.freedesktop.org/git/xorg/lib/libX11 commit 21ca953337fb221b85345bf35ce1a98a0dcb2bf2 Author: James Cloos <cloos@jhcloos.com> Date: Mon Aug 20 15:34:03 2007 -0400 Fix typo The code <U1000000D> was used where <U10000DC> was obviously intended. It is possible that <Udiaeresis> should be used instead, if that will not break anyone’s setup. commit 4ec1723fff729440cd3349c1f95d87d2a6ba89cf Author: James Cloos <cloos@jhcloos.com> Date: Mon Aug 20 15:25:48 2007 -0400 Add compose file for Ethiopic to match new keyboard in xkeyboard-config From bug report: https://bugs.freedesktop.org/show_bug.cgi?id=11307 commit eff33ae525337ce2026be135a26464c7b1237113 Author: James Cloos <cloos@jhcloos.com> Date: Sat Aug 18 17:58:23 2007 -0400 Patch for Catalan locales From bugzilla bug 10943¹: There are several Catalan locale codes which presently can be used in X11 systems; especially after they were accepted in belocs-locale-data². In the following patches, I³ add ca_AD, ca_FR and ca_IT Catalan locale codes. For instance, without this, using ca_AD (actually a quite used locale⁴) some applications (eg. Emacs or Skype) cannot display Catalan diacritic marks as you type them. 1] https://bugs.freedesktop.org/show_bug.cgi?id=10943 2] http://lists.debian.org/debian-devel-changes/2005/07/msg01429.html 3] Toni Hermoso Pulido <toniher@softcatala.org> 4] https://launchpad.net/~ubuntu.cat/+members commit 1f980cb7d022f53d0aee9e793b08203fb888e86e Author: James Cloos <cloos@jhcloos.com> Date: Sat Aug 18 17:47:04 2007 -0400 Add additional Euro signs to compose Inspired by bug 7419¹ make all of: C=, =C, c=, =c, E=, =E, e=, E= after <Multi_key> generate € U+20AC EURO SIGN. 1] https://bugs.freedesktop.org/show_bug.cgi?id=7419 commit 4b0a14521449dfce8b4347bd17243efd1d3eae2d Author: James Cloos <cloos@jhcloos.com> Date: Sat Aug 18 17:29:08 2007 -0400 Compose fix for Latin-1 (from Debian) The description from bugzilla bug 7417¹ is: We've been shipping this patch for some time in Debian now. The problem description from the patch header is reproduced below. You may want to note the licensing issue mentioned below, but we've been shipping it because the method by which this particular patch was generated and updated was also given below. This patch by Denis Barbier. The X11 protocol states that Unicode keysyms are in the range 0x01000100 - 0x0110FFFF. If the result of composing characters is a Unicode codepoint, X returns the corresponding Unicode keysym, which is its Unicode codepoint augmented by 0x01000000. Latin-1 characters must not appear with their Unicode codepoints in compose files, otherwise the returned composed character lies in the range 0x01000000 - 0x010000FF which is not valid. There are two solutions: either fix composing routines to return 0xZZ instead of 0x010000ZZ (where Z is an hexadecimal digit), or replace U00ZZ by their corresponding keysyms in compose files. The latter is more logical and less error prone, so compose files will be patched. Many applications accept these invalid Unicode keysyms, but few of them don't, most notably xemacs. Only UTF-8 locales are affected. This has been fixed very recently in XFree86 CVS (but not xorg), but for licensing reasons, this patch is not grabbed. Instead automatic conversion is performed by: sed -e '/XK_LATIN1/,/XK_LATIN1/!d' /usr/include/X11/keysymdef.h \ | grep -v deprecated | grep 0x0 \ | sed -e 's/0x0/U0/' -e 's/XK_//' \ | awk '{ printf "s/\\b%s\\b/%s/ig\n", $3, $2; }' > sedfile for f in nls/*.UTF-8/Compose.pre do sed -f sedfile $f > $f.tmp && mv $f.tmp $f done [I edited the quoted script to update it for the current location of the installed keysymdef.h and the current layout of the libX11 repo. -JimC] I applied the script, not the patch attached to the bugreport. 1] https://bugs.freedesktop.org/show_bug.cgi?id=7417 commit 5cf5bc76642bfece7cb5b76faf414bf445f14489 Author: James Cloos <cloos@jhcloos.com> Date: Sat Aug 18 17:13:41 2007 -0400 Add some compose sequences Add some compose sequences from the patch in bug 5371 (attachment 4122). Cf: https://bugs.freedesktop.org/show_bug.cgi?id=5371 https://bugs.freedesktop.org/attachment.cgi?id=4122 commit d4002e389dd69780dfc7c2f7bd3cb0c57f05d4f8 Author: James Cloos <cloos@jhcloos.com> Date: Sat Aug 18 13:57:31 2007 -0400 Fix SMP Compose targets The compose targets from the SMP (plane 1) were incorrect. At some point the 0x10000 bit had been lost. commit f1ed3da9a30a1f0264fdc7d1c6466f27fe2a3d7d Author: Jeremy C. Reed <reed@glacier.reedmedia.net> Date: Thu Aug 16 17:37:22 2007 -0500 Fix a mutex reference-counting bug. I was told that some systems have a much more permissive libpthread. I was asked to commit this. This is from NetBSD's X source. (I didn't receive any feedback on xorg list for over two weeks about this.) commit ac00a44b4875de70382da5a40dd87f976e5b9327 Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Wed Aug 1 20:36:03 2007 +0200 Bumped version to 1.1.3. commit 76fae9cba1e9bdf7f0eb2ff2b90153d622136cf0 Author: Joerg Sonnenberger <joerg@netbsd.org> Date: Fri Jul 27 11:15:47 2007 -0700 Fail properly on errors in recursive make. commit 1a18319b3bde08dd9ef69c7cd735a76000cf3177 Author: Brice Goglin <Brice.Goglin@ens-lyon.org> Date: Thu Jul 26 23:31:15 2007 +0200 Add missing override parameter in XrmCombineDatabase prototype in the manpage Reported by Arnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr> in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=393434 and https://bugs.freedesktop.org/show_bug.cgi?id=9948 Also add the type of the second argument in XrmMergeDatabases. commit 6f0764d4b56f64786b4980839ca262f10a51af6f Author: Brice Goglin <Brice.Goglin@ens-lyon.org> Date: Thu Jul 26 22:53:52 2007 +0200 Clarify return value of XGetCommand in case of error in the manpage Reported by Sean Perry <shalehperry@attbi.com> in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=133348 and https://bugs.freedesktop.org/show_bug.cgi?id=9828 commit b8bef57342632cc2d25580bb7daa3839bae04d89 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Jul 25 17:44:06 2007 -0700 Include comment/copyright/license for AC_DEFINE_DIR in acinclude.m4 commit 590cde811a79375231c59ed8583e02b111ed567c Author: Kean Johnston <kean@armory.com> Date: Thu Jul 19 16:44:20 2007 -0700 Reset hostname when falling back from :0 to hostname/localhost:0 as well commit d334665e619e9db657a2ea2764a8b852401d4a3f Author: Kean Johnston <kean@armory.com> Date: Tue Jul 17 16:34:30 2007 -0700 LOCALCONN fallback changes DisplayString() output, breaks KDE See <http://lists.freedesktop.org/archives/xorg/2007-July/026443.html> commit 8e76bcf3cafda85058ce5f35f1f81929f4772f72 Author: Olivier Blin <blino@mandriva.org> Date: Mon Jun 11 18:32:09 2007 +1000 fix XGetMotionEvents arguments order - Fixes bug 11222 commit c2f88cdf5cd9c94b77e5bfdac572b5ac06ab4aa8 Author: Jamey Sharp <jamey@minilop.net> Date: Sun Jun 10 16:19:59 2007 -0700 Fix locking in _XimGetWindowEventmask. Now that XFilterEvent drops the Display lock before invoking callback functions, _XimGetWindowEventmask is called without the lock held. So when it called _XGetWindowAttributes, a variant of XGetWindowAttributes that does not lock the Display, Xlib/XCB would assert: xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock' failed. Should fix Gentoo #156367, Ubuntu #87947, Debian #427296. And others? commit 65f0ab5d46d80d55fc04d4eb14fa05f130eb8b9c Author: Jamey Sharp <jamey@minilop.net> Date: Sun Jun 3 21:41:47 2007 -0700 Move security fixes to the top of NEWS, and fix spacing. Commit by Josh Triplett and Jamey Sharp. commit a549a258b8fcb1ba9d0c1b01b72967e385f67cab Author: Jamey Sharp <jamey@minilop.net> Date: Sun Jun 3 21:29:40 2007 -0700 Add NEWS item for bugfix in commit e2c1d788d1fe7bd2d34756493951552441e59b8c. Commit by Josh Triplett and Jamey Sharp commit 5123b77a3d32d3ad479462f319762c328278aed9 Author: Jamey Sharp <jamey@minilop.net> Date: Sun Jun 3 21:24:54 2007 -0700 Xlib/XCB: Inline and simplify handle_event, since only process_responses calls it now. Commit by Josh Triplett and Jamey Sharp. commit 582ca690ea4f3ffd2b94826c4db97229bd3c7238 Author: Jamey Sharp <jamey@minilop.net> Date: Sun Jun 3 20:59:12 2007 -0700 Xlib/XCB: Fix _XReadEvents to always enqueue a new event, even if an error occurs Commit c337f9de7cfd89f983f83956b7457a274dd412f3 broke the invariant that _XReadEvents always enqueues at least one event even if an error occurred, because the one call to xcb_wait_for_event would then return an error, not an event, and nothing else ensured that process_responses would obtain an event. Fix this by reverting most of c337f9de7cfd89f983f83956b7457a274dd412f3 and f417570735aac865eb6b576d1ea76b5bfcd8573b and implementing the correct fix. In process_responses, wait_for_first_event now serves as a flag, cleared when actually handling an event. Commit by Josh Triplett and Jamey Sharp. commit e2c1d788d1fe7bd2d34756493951552441e59b8c Author: Jamey Sharp <jamey@minilop.net> Date: Sun Jun 3 17:33:23 2007 -0700 Xlib/XCB: Only remove pending_requests when there are provably no more responses. commit 7a6dbd4b07ca0a49c30ca7a1d2437eafb2e15eab Author: Josh Triplett <josh@freedesktop.org> Date: Sun Jun 3 15:39:39 2007 -0700 Bump version number to 1.1.2, and add NEWS entry for 1.1.2 Signed-off-by: Josh Triplett <josh@freedesktop.org> commit 416f38f2e67ee1979b3d2feac6f06b3670238804 Author: Josh Triplett <josh@freedesktop.org> Date: Sun Jun 3 12:13:44 2007 -0700 Revert "Revert "include: don't distribute XlibConf.h"" This reverts commit 79fa3d8070d95b960ba486f2439225872471dadd. Re-revert the XlibConf.h change, which prevented distribution, not installation. commit 79fa3d8070d95b960ba486f2439225872471dadd Author: Josh Triplett <josh@freedesktop.org> Date: Sat Jun 2 22:05:16 2007 -0700 Revert "include: don't distribute XlibConf.h" This reverts commit c9e28e05ae01ce8a29bea09df759b6271865b44c. The installed XlibInt.h includes XlibConf.h , so libX11 should ship XlibConf.h. (Commit c9e28e05ae01ce8a29bea09df759b6271865b44c didn't actually prevent automake from shipping XlibConf.h, because it used nodist_x11include_HEADERS rather than nodist_HEADERS.) commit f417570735aac865eb6b576d1ea76b5bfcd8573b Author: Jamey Sharp <jamey@minilop.net> Date: Sat Jun 2 17:59:15 2007 -0700 Xlib/XCB: inline wait_or_poll_for_event, which now had only one caller. Commit by Josh Triplett and Jamey Sharp. commit c337f9de7cfd89f983f83956b7457a274dd412f3 Author: Jamey Sharp <jamey@minilop.net> Date: Sat Jun 2 17:46:41 2007 -0700 Xlib/XCB: Ensure _XReadEvents reads at least one new event and blocks for exactly one event. Commit by Jamey Sharp and Josh Triplett. commit 7f66c897f04806b75e574b55b48921b48045e3f9 Author: Jamey Sharp <jamey@minilop.net> Date: Sat Jun 2 16:43:39 2007 -0700 Update _XReply's copy of _XCBUnlockDisplay's guts. We introduced this bug in 6b81cbbedfb521ce046b77ee3cc54e884a1dc0c5. Also add a comment in _XCBUnlockDisplay to discourage this problem from respawning. Commit by Josh Triplett and Jamey Sharp. commit 740ead23512f8d2eaafaa69e514f1ebafad475b9 Author: Jamey Sharp <jamey@minilop.net> Date: Sat Jun 2 16:01:01 2007 -0700 Xlib/XCB: Avoid re-crashing after _XIOError. Commit by Josh Triplett and Jamey Sharp. commit 6b81cbbedfb521ce046b77ee3cc54e884a1dc0c5 Author: Jamey Sharp <jamey@minilop.net> Date: Sat Jun 2 12:30:30 2007 -0700 Hold XCB's Xlib lock even when only the user lock (XLockDisplay) is held. An Xlib client can query Display state, such as with NextRequest, while it holds only the Xlib user lock (between XLockDisplay and XUnlockDisplay), so XCB requests in other threads should be blocked when the Xlib user lock is held. We acquire the lock even when XInitThreads was not called, so that pure XCB code can use multiple threads even in an otherwise single-threaded Xlib application. Commit by Josh Triplett and Jamey Sharp. commit 95523387d619af5b400748898d722e080b5ce1a6 Author: Jamey Sharp <jamey@minilop.net> Date: Sat Jun 2 11:57:39 2007 -0700 Allow re-entrant Xlib calls from _XIOError. Some libraries try to clean up X resources from atexit handlers, _fini, or C++ destructors. To make these work, the Display lock should be downgraded to a user lock (as in XLockDisplay) before calling exit(3). This blocks Xlib calls from threads other than the one calling exit(3) while still allowing the exit handlers to call Xlib. This assumes that the thread calling exit will call any atexit handlers. If this does not hold, then an alternate solution would involve registering an atexit handler to take over the lock, which would only assume that the same thread calls all the atexit handlers. Commit by Josh Triplett and Jamey Sharp. commit 91b02b8064f4e0bcc56019f0722914850008a597 Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Thu May 17 19:07:34 2007 +0200 More constification. commit a4f3841940158351f9424c3f59b305cce877177d Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Thu May 17 00:29:43 2007 +0200 Constified composite text charset table. commit 0581c0aa6039e6b2abb9f7b0a4f9904d8e01f00e Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Wed May 16 23:19:22 2007 +0200 Have the compiler fill in hexTable so we don't have to do it at runtime. commit 0e8d9ca47dab0d069e305d5784d05f2ade04f0a8 Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Wed May 16 19:36:23 2007 +0200 More constification. commit 6d2bed8f04942b4de086a519ac693e729c9fdeea Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Wed May 16 19:18:20 2007 +0200 Constify and clean up token table. commit 6c508eab5df5d517f7e4cbe6087308cd53a564b2 Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Wed May 16 18:24:42 2007 +0200 Constified more tables. commit e699c4231c205ef00d687b6412308d031b99806b Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Wed May 16 18:01:23 2007 +0200 Constified error list. commit a68a1cd7cb990ba276fbc36a7591044d78b3d3c1 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Tue May 15 16:54:01 2007 +0930 Add XGenericEvent definition and handling for long events. commit c76d30253f1483ac8200ad5c032a818907e65030 Author: Jan Willem Stumpel <jstumpel@planet.nl> Date: Fri May 4 12:00:49 2007 -0700 Update el_GR.UTF-8/Compose.pre to match changes in xkeyboard-config cvs Cf: https://bugs.freedesktop.org/show_bug.cgi?id=10851 https://bugs.freedesktop.org/show_bug.cgi?id=10824 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=386385 The greek keyboard definition was changed to replace dead_horn and dead_ogonek with U0313 COMBINING COMMA ABOVE (aka Psili) and U0314 COMBINING REVERSED COMMA ABOVE (aka Dasia). This patch modifies the Greek Compose.pre to match. It is generated by the script Jan Willem Stumpel <jstumpel@planet.nl> posted to 386385@bugs.debian.org: #!/usr/bin/perl while (<>) { print $_; if (/dead_horn/) { s/dead_horn/U0313/; print $_; } elsif (/dead_ogonek/) { s/dead_ogonek/U0314/; print $_; } } commit a48386ce6b5f8fd2d9dc11a966c9bf5da59f3831 Author: Magnus Kessler <Magnus.Kessler@gmx.net> Date: Tue May 1 15:20:08 2007 +0200 Switched function definitions from K&R to ANSI style. commit 605d357074d556a05a3fba2e85cbea36a3204248 Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Tue May 1 14:47:03 2007 +0200 Tweaked configure output about the man pages suffix. commit 9824b40d2af4ca2376512c1be7743da0d5065900 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Apr 28 00:42:18 2007 -0700 Fix typo in nroff macro in XkbAddGeomOverlayKey.man commit f93849dcc68bd5042ea0884e5190dc7c35b31d68 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Apr 28 00:30:55 2007 -0700 Protect C comments and #defines in XKB man pages from being mangled by cpp commit f2f27d4763c7665e422fab10b96b4cf5ad6c0a6f Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Apr 28 00:14:50 2007 -0700 Add Makefile to process/install XKB man pages commit d9954c6f6f3a8c406b946acd0d034ff83c656156 Author: Dennis Arellano <Dennis.Arellano@Sun.COM> Date: Thu Aug 19 00:00:00 1999 -0700 Add man pages for XKB API's Man pages originally written for X11R6.4 integration to Solaris 7 11/99 Sun bug id 4258344: Add new XKB API manpages for 6.4 upgrade <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=4258344> (Volunteer needed to convert prototypes in man pages to ANSI C style...) commit f640a49b5e2ebf29f9d655df544c63bf826f619a Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Fri Apr 20 18:39:59 2007 +0200 Markup tweak for XOpenIM. commit e972b0bb255af4f3258217852542faf5afa60b28 Author: Julien Cristau <jcristau@debian.org> Date: Fri Apr 20 18:35:09 2007 +0200 Bug #9695: Fixed a few argument types in the XOpenIM manpage. commit b4e2276f329fa42397cb8609cfcd34ebafd3d96b Author: Julien Cristau <jcristau@debian.org> Date: Fri Apr 20 18:28:52 2007 +0200 Bug #9697: Fixed documentation of XVisualInfo struct. The "depth" member was said to be unsigned int, but it's signed. commit 4068f3dae01c630f825002673b1d3a047ad61863 Author: Julien Cristau <jcristau@debian.org> Date: Fri Apr 20 16:41:21 2007 +0200 Bug #9696: refer to XDefineCursor() instead of XDefineCusor(). commit 603c2f88d4e57ce1a3c16e8b6246866e6edd8fa8 Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Sat Apr 7 14:42:55 2007 +0200 Use unistd.h to get getresuid() and friends. This works since we now have _GNU_SOURCE defined. commit 0300f295bbd3a0c7c46baac8e0a27aeaf53c9d9b Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Sat Apr 7 14:27:12 2007 +0200 Bug #10562: Define _GNU_SOURCE on glibc systems. commit a225a0be48770beb689d5ac5da97073634f7deab Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Fri Apr 6 12:46:25 2007 +0200 For nls/*.pre, allow people to comment lines by starting them with '##'. This fixes a bunch of cpp warnings from nls/en_US.UTF-8/Compose.pre. Fixing that file would have been a larger diff, and using ## may be nicer to use anyway. commit 1c75a9479011e5f1ad01c950628d0ef5a302d8b6 Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Fri Apr 6 11:59:31 2007 +0200 Bug #10475: Fixed lots of char*/const char* mixups. I didn't fix all of them, as that would require touching public headers. commit 680dd50193b5b3fcabdd3f1fcbd6a889d5a95c54 Author: Matthias Hopf <mhopf@suse.de> Date: Thu Apr 5 11:53:18 2007 +0200 Fix 64bit issues with reallocation. commit 4d38aeaca42d0bdfe34a833a142ee4d895de03bf Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Wed Apr 4 18:41:18 2007 +0200 Fixed a few warnings. commit 7dc7ef398b6ad90ccd1680ed9cd1cfdd47312f5a Author: Matthieu Herrb <matthieu@roadrock.(none)> Date: Tue Apr 3 15:39:52 2007 +0200 Multiple integer overflows in the XGetPixel() and XInitImage functions CVE-2007-1667 commit 0284b144340a455a4b5b5011d81ac5a610372291 Author: David Baron <dbaron@dbaron.org> Date: Fri Mar 30 17:07:46 2007 +0200 Bug #7703: Fixed XSetSizeHints() et al wrt use of uninitialized data. Now only those fields of the respective hint struct are set that are actually valid in the input data. The changed functions are: XSetSizeHints(), XSetWMHints() and XSetWMSizeHints(). commit 0994faa0c76c45b106442db461b8a30a3e1c9395 Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Thu Mar 29 17:31:25 2007 +0200 Fixed the change from the previous SendEvent commit. Testing a different patch than the one you commit is bad, right? commit 398d75528a84f4b8414eb0e363cf53b1b16f6fdf Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Wed Mar 28 22:23:44 2007 +0200 Bug #10292: Fixed a memory leak related to XOpenDisplay() in the XCB code. commit ab0bcd07957cecc8e7c0e75d5160a625e91264fe Author: David Baron <dbaron@dbaron.org> Date: Wed Mar 28 22:21:40 2007 +0200 Bug #7713: Initialize all of the event's fields before sending it. commit bc80f9fe3ccce40ee41246b97470c4f0519756ad Author: Julien Cristau <jcristau@debian.org> Date: Sun Mar 18 13:14:48 2007 +0100 Bug #9279: Fixed a file descriptor leak. commit c9e28e05ae01ce8a29bea09df759b6271865b44c Author: Daniel Stone <daniel@fooishbar.org> Date: Sat Dec 16 00:45:19 2006 +0200 include: don't distribute XlibConf.h Since XlibConf.h is built by configure, don't distribute it. commit dd1705ced2cac6b4b6b21e79272fcf9bed4bf376 Merge: 129bbb9f 769b9854 Author: Jeremy C. Reed <reed@glacier.reedmedia.net> Date: Thu Dec 14 14:23:20 2006 -0600 Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/lib/libX11 commit 129bbb9f9114a571556fa3a24f15ba58a5cdb2de Author: Jeremy C. Reed <reed@glacier.reedmedia.net> Date: Thu Dec 14 14:21:19 2006 -0600 For NetBSD, define the XTHREADLIB and XTHREAD_CFLAGS. commit 769b9854f7eb1d6d20dd0b4a1c1215ad8e1b77b6 Author: Daniel Stone <daniel@fooishbar.org> Date: Wed Dec 6 18:53:00 2006 +0200 Makefile.am: make ChangeLog hook safer Make ChangeLog hook as safe as possible. (cherry picked from f5d6a3d24095c7ffed86705995d0874c885e7676 commit) commit 8a8185a649e93b90ffa820387ffdca831227f5a9 Author: Josh Triplett <josh@freedesktop.org> Date: Thu Nov 30 18:33:13 2006 -0800 Add autogen.sh to EXTRA_DIST. commit efe817f95ef8d05e863c83147e903140bc860de4 Author: Jamey Sharp <jamey@minilop.net> Date: Thu Nov 30 17:58:35 2006 -0800 Release libX11 1.1.1. commit f637a5b03164263a3af2e644cf655e52b015f1bb Author: Ross Combs <rocombs@cs.nmsu.edu> Date: Sat Nov 25 14:45:17 2006 -0800 Debian bug #354315: Clarify return value in XGetWindowAttributes man page This man page does not discuss the actual return values of the function, but says they are of type "Status". One might assume that this means you could compare it with the "Success" macro. One would be wrong. The X functions seem to have two three types representing status. If it is an "int" there are a number of error codes or "Success" which can be compared against. If it is a bool, the result can be compared with "True" or "False". If the return type is "Status" it appears that the return type is either 0 or 1. Unfortunately the value for Success is zero, so it is important to distinguish between the first two types of return values and the third; otherwise the conditional will be inverted. XGetWindowAttributes() is one of the functions which returns zero for failure. The man page should make this clear. commit c6a0b0f18ed1242eeb908f5cf767ab8381edd456 Author: Jamey Sharp <jamey@minilop.net> Date: Sat Nov 25 14:23:45 2006 -0800 Bug #9154: Always process an event for _XReadEvents, even if an error occurs Previously, process_responses (in the wait_for_first_event case called from _XReadEvents) considered any return from xcb_wait_for_event sufficient to think it had processed an event. If xcb_wait_for_event returned an error, and no more events occurred before process_responses called xcb_poll_for_event, process_responses would try to return with dpy->head NULL, and would fail an assertion for the _XReadEvents postcondition. Now, process_responses continues using xcb_wait_for_event until it gets an event. commit d56e78acce9b2aa1dd1bf172afedaa3bccd5e1c8 Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Sat Nov 25 05:29:31 2006 -0800 Bug #9153: Fix access to freed memory. The fix for bug #8622 introduced a smaller bug where _XReply would read memory shortly after freeing it. This patch caches the needed value in a stack-allocated variable before the heap-allocated memory is freed. commit 934ca763bbc0dd7ae460469bfc000ba101602bcc Author: Josh Triplett <josh@freedesktop.org> Date: Fri Nov 24 19:57:58 2006 -0800 libx11 doesn't use inputproto in public headers; don't require it in x11.pc Based on a Debian patch. commit 4255997ef2d92740d51f6e63e9eabcfa089683f0 Author: Josh Triplett <josh@freedesktop.org> Date: Thu Nov 23 07:19:32 2006 -0800 Release libX11 1.1 commit a1168e11ec9377307c51a7271faec3bf88a63a66 Author: Jamey Sharp <jamey@minilop.net> Date: Tue Nov 21 17:52:34 2006 -0800 Add note in man-page that XListFontsWithInfo is not thread-safe. _XReply drops the Display lock, so the value of dpy->request may change before _XReply is called again. I discovered this by inspection a year or two ago. I'm pretty confident in the claim, and nobody has come up with an argument for why it's safe despite appearances. commit 67abe024268c6b1fdee516e5d3a046ccffd7e80a Author: Jamey Sharp <jamey@minilop.net> Date: Sat Nov 18 15:39:26 2006 -0800 Bug #8622: Fix response processing order for threaded apps Previously, process_responses (the common code for _XReply, _XReadEvents, and _XEventsQueued) took the current request sequence number as an argument, and did some highly complicated processing to attempt to process responses in order across threads. This didn't actually work. Now, process_responses handles responses in order, by adding condition variables to the list of outstanding requests in dpy->xcb->pending_requests, and blocking on them when those requests should get processed to allow _XReply to process them; if actually called from _XReply, it returns when _XReply's request should get processed. _XReply broadcasts on the condition variable after it has read its reply and re-acquired the display lock. Another great commit brought to you by Jamey Sharp, Josh Triplett, the Gobby collaborative text editor, conspy, and ridiculous amounts of SSH forwarding. Signed-off-by: Josh Triplett <josh@freedesktop.org> Signed-off-by: Jamey Sharp <jamey@minilop.net> commit 941f02ede63baa46f93ed8abccebe76fb29c0789 Author: Lars Knoll <lars@trolltech.com> Date: Wed Nov 8 12:17:41 2006 -0800 Don't hold the display lock around callbacks to the application. This fixes an XCB locking assertion failure, particularly with emacs. commit e494ecaac1ec8a22bd9a85f800fca74d02e9d358 Author: Diego 'Flameeyes' Pettenò <flameeyes@gentoo.org> Date: Tue Nov 7 09:32:00 2006 -0800 Add xcb-xlib dependency to x11.pc when built against XCB. commit 2302008a3793eb4df8ede777d54fe06505c47eaf Author: Eric Anholt <eric@anholt.net> Date: Mon Nov 6 17:11:42 2006 -0800 XCB: Allocate the right amount of memory for dpy->lock_fns. Fixes a crash I was experiencing on startup of anything using gdk. commit 5f860655be88108b03ccd97470a0814819254bf0 Author: Jamey Sharp <jamey@minilop.net> Date: Thu Nov 2 17:55:31 2006 -0800 Release libX11 1.1 RC2 (1.0.99.2). commit a6f4bbf7b1d725b0f04bd660f57b861a76b19831 Author: Benno Schulenberg <bensberg@justemail.net> Date: Sun Oct 29 03:10:30 2006 +0300 nls (en_US): remove long compositions that override shorter (bug #2286) Remove long compositions that override (or get overriden by) later shorter compositions, e.g. a four-key compose sequence that gets overriden by a later three-key compose sequence. commit 0280bf11ef88673a9b5bba3a91a599260f1f0949 Author: Benno Schulenberg <bensberg@justemail.net> Date: Sun Oct 29 03:08:36 2006 +0300 nls: remove shadowed compose entries (bug #2286) Remove compose entries shadowed by others later on. commit d118f2b1ef10997194b281524177dea7396da7dd Author: Benno Schulenberg <bensberg@justemail.net> Date: Sun Oct 29 03:07:15 2006 +0300 nls: remove duplicate compose entries (bug #2286) Remove a bunch of duplicate entries from various Compose files. commit 5e1cc2fe20e5904ca1e05a4cb7be13d450a593bb Author: Caolan McNamara <caolanm@redhat.com> Date: Sun Oct 29 02:46:15 2006 +0300 XKB geometry: fix leaks in GetKeyboardByName (bug #8099) Don't leak the name and value of every property we parse, as well as the name of every colour. commit 686bb8b35acf6cecae80fe89b2b5853f5816ce19 Author: Matthias Hopf <mhopf@suse.de> Date: Wed Oct 18 14:25:04 2006 +0200 Fix double open of compose file. Issue found by Kees Cook <kees@canonical.com>. commit d3e65cb8cddf08913d83c9df2bb9b1517f2ad3a8 Author: Jamey Sharp <jamey@minilop.net> Date: Sat Oct 14 21:25:10 2006 -0700 XCB: check for and handle I/O errors in _XGetXCBBuffer. commit 256eba6b40c5f811a03b04abf5f85f728ee3ab5d Author: Jamey Sharp <jamey@minilop.net> Date: Wed Oct 11 00:06:50 2006 -0700 XKB bugfix: SyncHandle must be called after UnlockDisplay, not before. commit 1eedf1bd033e496843cfde42ae4ae5a119298605 Author: Jamey Sharp <jamey@minilop.net> Date: Tue Oct 10 23:03:28 2006 -0700 Add correct Display locking to XKB functions. Some XKB functions didn't correctly call LockDisplay or UnlockDisplay. This patch fixes at least some instances of that problem. Thanks to Magnus Kessler <Magnus.Kessler@gmx.net> for finding these bugs and proposing a fix, which this patch is based on. commit e17c2cbe9fbaa1600d4b9463ec800a874b0d87cd Author: David Nusinow <dnusinow@debian.org> Date: Tue Oct 10 22:11:05 2006 -0400 Dynamically generate internal manpage section using __libmanpagesuffix__ so that it actually matches the section if you don't use 3X11 commit e53557da969b706dbc843f6fde3db31ffe382e0f Author: Jamey Sharp <jamey@minilop.net> Date: Sat Oct 7 21:00:36 2006 -0700 Release libX11 1.1 RC1 (1.0.99.1). commit bf237409c5fce32c557d298f62f44d456c2b5bc8 Merge: ba477191 2d426d1f Author: Jamey Sharp <jamey@minilop.net> Date: Sat Oct 7 21:07:16 2006 -0700 As XCB support is about to be released in libX11, stable is now subsumed by master. commit ba477191c67ce93e61423cc1abe35275704cce50 Author: Jamey Sharp <jamey@minilop.net> Date: Sat Oct 7 03:48:13 2006 -0700 XCB: Don't rely on having the definition of struct xcb_setup_t available. commit 117b55cbd0b0ce51362df88363ed83d44a493ac7 Author: Jamey Sharp <jamey@minilop.net> Date: Fri Oct 6 16:27:31 2006 -0700 xcb_poll_for_event no longer takes an 'int *error' out-parameter. commit caaa8e8a55e837b3585c1dee7bef194fc4c79d16 Author: Josh Triplett <josh@freedesktop.org> Date: Fri Oct 6 16:26:11 2006 -0700 Actually ship Xxcbint.h commit 7b027e53b5e393082f4f515c8ba18077eb97163f Author: Josh Triplett <josh@freedesktop.org> Date: Fri Oct 6 16:25:50 2006 -0700 Clean ChangeLog only in "make maintainer-clean", not "make clean" ChangeLog requires a git repo to generate; make clean and make distclean shouldn't get rid of it. commit cab22e02e78b3e5b8a73d1cd55cf6686426b47e0 Author: Josh Triplett <josh@freedesktop.org> Date: Fri Oct 6 16:24:58 2006 -0700 Add ChangeLog and "make dist"-generated files to .gitignore commit e4c7cfdee4a40e466c0c6b370cabd432e9e855a0 Author: Josh Triplett <josh@freedesktop.org> Date: Fri Oct 6 15:53:27 2006 -0700 Add manual pages for XGetXCBConnection and XSetEventQueueOwner commit 688224cea95e453f94c5a602dc6fce84bc93dfc0 Author: Josh Triplett <josh@freedesktop.org> Date: Fri Oct 6 13:41:16 2006 -0700 Remove unnecessary prototype for _XFreeDisplayStructure in xcb_disp.c commit ab728ca372288d0db1b486c265e34c1376f29104 Author: Josh Triplett <josh@freedesktop.org> Date: Fri Oct 6 12:36:39 2006 -0700 XCL is dead; long live Xlib/XCB Rename all instances of "XCL" to Xlib/XCB-derived names. The only user-visible change: rename the include file <X11/xcl.h> to <X11/Xlib-xcb.h>; programs will need to change their #include lines to match. Remove the XCL cast inlines from Xlib-xcb.h. commit 5b73093203039d307eb7ab3845c3ced207e9e26c Author: Josh Triplett <josh@freedesktop.org> Date: Fri Oct 6 11:33:49 2006 -0700 Add XCB developers to AUTHORS commit 1cb71ff139276a0a58c60ea5f261f64b94706b9b Author: Josh Triplett <josh@freedesktop.org> Date: Fri Oct 6 11:21:28 2006 -0700 Fix email addresses in README commit 12f038669278019594ca0ed53dadcf4e84092422 Author: Jamey Sharp <jamey@minilop.net> Date: Fri Oct 6 02:13:05 2006 -0700 XCB: Handle all responses in order of monotonically increasing sequence number. commit f392680273278b43079302206897f794e60f3c70 Author: Josh Triplett <josh@freedesktop.org> Date: Fri Oct 6 01:11:08 2006 -0700 Actually install x11-xcb.pc, and ship x11-xcb.pc.in commit f1fcad2e3fd17aaf1294f1d8e9f406fd5b32a863 Author: Jamey Sharp <jamey@minilop.net> Date: Thu Oct 5 18:32:29 2006 -0700 XCB: correctly handle failure to connect to X server. commit e754b3b078d556c7861da56aad47d244e9199e06 Author: Josh Triplett <josh@freedesktop.org> Date: Thu Oct 5 17:44:22 2006 -0700 Split public Xlib/XCB functions into libX11-xcb We can never change the libX11 soname, and we don't want to commit to never changing the public Xlib/XCB functions, so split them into a separate library libX11-xcb. This also means that a program linked solely against libX11 should work with either Xlib or Xlib/XCB, which will make life easier for package maintainers. Signed-off-by: Josh Triplett <josh@freedesktop.org> Acked-by: Jamey Sharp <jamey@minilop.net> commit ffd367f708b295abaedf3a23a1bfd4710d171d6f Author: Jamey Sharp <jamey@minilop.net> Date: Wed Oct 4 17:16:46 2006 -0700 No longer #include Xmd from xcl.h: we do not need it. commit 3aff149d42ba8ed620091971b3766bdf96c62aaf Author: Jamey Sharp <jamey@minilop.net> Date: Wed Oct 4 16:58:32 2006 -0700 XCB: Revert locking to simple wrapper around libX11's normal locks. No more recursive mutexes, no more banging XCB's I/O lock in-place, and reduces the differences between the previous stable release and an XCB-enabled one. Sadly, Xlib's pluggable thread functions work again too, now. I apologize to the world. commit 8ff122fb529bdb1c2b9a86b12d06b6da1b35d708 Author: Jamey Sharp <jamey@minilop.net> Date: Mon Sep 25 04:54:52 2006 -0700 Link explicitly against XCB's Xlib compatibility functions. commit bde3cd123d65a2f36ee0c417f5f231b7e01d0671 Author: Jamey Sharp <jamey@minilop.net> Date: Mon Sep 25 04:13:20 2006 -0700 libxcb now installs header files in <xcb>, not <X11/XCB>. commit 87d00207f5a1f25a45a153618739cd6481814f89 Author: Ian Osgood <iano@quirkster.com> Date: Sun Sep 24 23:39:01 2006 -0700 Track XCB's "Great Renaming". commit 85a5e98dff9b7752fae157fad9b8c9825cb0efab Author: Jamey Sharp <jamey@minilop.net> Date: Tue Sep 12 23:02:42 2006 -0700 Quit using XCBGetQueuedRequestRead. commit a61936fc4e9bd93b108764bbacd5b8f786e51915 Author: Tollef Fog Heen <tfheen@err.no> Date: Wed Aug 30 00:05:54 2006 +0300 nls: use _XlcUtf8Loader for en_US (bug #7982) Use _XlcUtf8Loader instead of _XlcUnicodeLoade,r bringing it into line with every other locale. commit abcc7e1865cdfbd591f6520cfe4257f0b0b1c03e Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Aug 23 18:49:30 2006 -0700 When opening display, if LOCALCONN fails, fall back to UNIXCONN, then TCPCONN Port to X11R7 of Sun bug fix 4061225 by Alex Chen for X11R6 - when failing to connect on a named pipe, try a Unix socket first, to better support people who replace their X servers with ones that don't support named pipe transport. <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=4061225> commit 1ddc44c1cada7e926bd4787406444ce7c36b61e1 Author: Mark Brown <mark.brown@sun.com> Date: Thu Jul 27 19:17:10 2006 -0700 Sun bug 1149809: Document event delivery when grab is terminated. commit 171107b03ac89d94f9006c7cda242aeefb9ecd16 Author: Dennis Arellano <Dennis.Arellano@Sun.COM> Date: Thu Jul 27 18:47:06 2006 -0700 Sun bug 4091271: XGetWindowProperty is missing a crucial prop_return description Document that 32-bit format properties are always returned in arrays of type long, even on systems where long is 64-bits. <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=4091271> commit 8309efe6550877cd0bf22979904b3f6bd3e6cffa Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Jul 24 15:52:00 2006 -0700 Add support for "make lint" to check code with lint/sparse/etc. commit 931e02fbd1acd09aae2b0954c34342c86c72dff6 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Jul 24 15:50:52 2006 -0700 ANSIfy some static function definitions commit 20b7abcaac324d90454de63f32f4a2b398e69e63 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Jul 24 15:01:40 2006 -0700 Fix sparse warning: Using plain integer as NULL pointer commit d158ab29930513c4097f5b67e7bea08ed2bfd62c Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Jul 24 14:00:24 2006 -0700 Remove unused variable commit 30377000375bdb958042dcb1f38503c94ef21eaf Author: Eric Anholt <anholt@FreeBSD.org> Date: Fri Jul 21 18:55:36 2006 -0400 Bug #7188: Fix the documentation of XUrgencyHint (not UrgencyHint). commit 4eba45879aea4e415ab550ee56b900d060099110 Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sun Jul 16 10:55:39 2006 +0200 set GIT_DIR=${srcdir}/.git for git-log commit 2d426d1f2608fedb77bd7d010dabece76b8d4a60 Author: Aaron Plattner <aplattner@nvidia.com> Date: Tue Jul 11 13:27:49 2006 -0700 Add a .PHONY to ensure the ChangeLog isn't stale. Setting the ChangeLog rule as phony forces it to be re-run even when the ChangeLog file already exists. Research indicates .PHONY is portable to BSD and Solaris make. (cherry picked from b8a98809ed81e1226775e6447ef219ffc01334b5 commit) commit b8a98809ed81e1226775e6447ef219ffc01334b5 Author: Aaron Plattner <aplattner@nvidia.com> Date: Tue Jul 11 13:27:49 2006 -0700 Add a .PHONY to ensure the ChangeLog isn't stale. Setting the ChangeLog rule as phony forces it to be re-run even when the ChangeLog file already exists. Research indicates .PHONY is portable to BSD and Solaris make. commit 8f2be66089b88e4ed6acb0211ea107f4bb910bd3 Author: Mayank Jain <majain@redhat.com> Date: Tue Jul 11 19:42:47 2006 +0100 add Indian language locales Add as, kn, ml, or, ur, and te locales. commit a92eb6785699bbc9c6c3813f6af3bb9431a3f6b0 Author: Matthias Hopf <mhopf@suse.de> Date: Tue Jul 4 12:16:30 2006 +0200 Fix for autoconf 2.60 issue. Updated AC_DEFINE_DIR. Reverted datarootdir change. commit 644f4828b15bce42b597eb123ba0bbc372c46c03 Author: Keith Packard <keithp@neko.keithp.com> Date: Sat Jul 1 21:31:23 2006 -0700 Work around recent autoconf (2.59?) changes in directory expansion. Recent autoconf versions have changed how directory names are managed in the configure.ac script; automatic 'eval' invocations now occur as a part of the AC_DEFINE_DIR macro which make it imperative that AC_DEFINE_DIR be executed before the variables are used in further macro definitions. Also, ${datadir} is apparantly an old name for ${datarootdir} as ${datadir} doesn't get expanded correctly by AC_DEFINE_DIR. This looks like an autoconf bug, but it is easy to work around by just using ${datarootdir} instead of ${datadir}. commit be70a31229aa106aff0a09d78c00812682cd3475 Author: Keith Packard <keithp@neko.keithp.com> Date: Sat Jul 1 01:56:05 2006 -0700 Xlib/XCB: handle 32-bit sequence wrap. Replace broken sequence compares with XCB_SEQUENCE_COMPARE (copied from XCB). Account for XCB sequence 0 handling. commit 99c711707ad08e1396e123b1c7df687c560a489a Author: Donnie Berkholz <spyderous@gentoo.org> Date: Thu Jun 29 19:43:20 2006 -0700 Bump version to 1.0.3. commit cde3c0dd72af2b490e80cffca962e3487dd31be4 Author: Donnie Berkholz <spyderous@gentoo.org> Date: Thu Jun 29 19:39:36 2006 -0700 Bug #7349: Missed one of the setuid fixes. (cherry picked from e9614c963b532f46a7932c2305a4b177a996a222 commit) commit df3fef8983d96c59d481c4cdaf1f271d54a116d2 Author: Matthias Hopf <mhopf@suse.de> Date: Thu Jun 29 18:59:57 2006 +0200 Update to final Compose cache directory location. (cherry picked from abda4d223e9cce9ac6e7b5d82a5680d9a502e52a commit) commit 912ef198292d3053daa810f842510e5d62ded0f0 Author: Matthias Hopf <mhopf@suse.de> Date: Thu Jun 29 17:41:41 2006 +0200 Fix alignment of trees and wide chars in the cache. (cherry picked from 40a64c61f8bc33d497e1224e02c41dea2d424d97 commit) commit 2ece832118b3ee5d8ed19f1ee9b1c822b70ec6e9 Author: Matthias Hopf <mhopf@suse.de> Date: Wed Jun 28 19:17:03 2006 +0200 First (dummy) entry of compose caches was not initialized and thus contained varying garbage. (cherry picked from f442dcaa56f8ecb7443e8e51c88ed97e10dbdba3 commit) commit e9614c963b532f46a7932c2305a4b177a996a222 Author: Donnie Berkholz <spyderous@gentoo.org> Date: Thu Jun 29 19:39:36 2006 -0700 Bug #7349: Missed one of the setuid fixes. commit abda4d223e9cce9ac6e7b5d82a5680d9a502e52a Author: Matthias Hopf <mhopf@suse.de> Date: Thu Jun 29 18:59:57 2006 +0200 Update to final Compose cache directory location. commit 40a64c61f8bc33d497e1224e02c41dea2d424d97 Author: Matthias Hopf <mhopf@suse.de> Date: Thu Jun 29 17:41:41 2006 +0200 Fix alignment of trees and wide chars in the cache. commit f442dcaa56f8ecb7443e8e51c88ed97e10dbdba3 Author: Matthias Hopf <mhopf@suse.de> Date: Wed Jun 28 19:17:03 2006 +0200 First (dummy) entry of compose caches was not initialized and thus contained varying garbage. commit bdbe464d774e01d317f67c63ebbda2fd0edbbdd1 Author: Donnie Berkholz <spyderous@gentoo.org> Date: Thu Jun 22 23:59:03 2006 -0700 Delete ChangeLog, and add a rule to autogenerate it for distribution. Also add 'foreign' to AM_INIT_AUTOMAKE to make autotools happy with not having a ChangeLog. (cherry picked from b0edfb8df16ab8c9959b83a4c966d55a59c4e295 commit) commit b0edfb8df16ab8c9959b83a4c966d55a59c4e295 Author: Donnie Berkholz <donnie@comet.(none)> Date: Thu Jun 22 23:47:38 2006 -0700 Delete ChangeLog, and add a rule to autogenerate it for distribution. Also add 'foreign' to AM_INIT_AUTOMAKE to make autotools happy with not having a ChangeLog. commit dd54981aa76e9dfdc4c3302d6105b4b229447c84 Author: Donnie Berkholz <donnie@comet.(none)> Date: Thu Jun 22 15:47:38 2006 -0700 Bump version to 1.0.2. commit c93539d974a67f596a5eb5b65042d26602546c72 Author: Matthieu Herrb <matthieu@deville.herrb.com> Date: Tue Jun 20 21:04:03 2006 +0200 Check setuid() return value. (cherry picked from 5169d0e08ff6acb350a6ea768623f5ff0b85b05f commit) commit 605533f814ab7892991578706a6458f61a89ca4d Author: Derek Wang <derek.wang@sun.com> Date: Mon Jun 19 11:05:37 2006 -0700 Sun bug 6209243: XExtentsOfFontSet causes segfault when font set not loaded (cherry picked from eff50c94a07194297e705da53d9fbb3a40fb9ad4 commit) commit 5bbd0822c5a926de0ed293437fb9f2b75cf3c4f4 Author: Scott Revelt <scott.revelt@sun.com> Date: Fri Jun 16 19:11:13 2006 -0700 Sun bug 4022903: Xcms routines may fail if sscanf() is looking for separators based on locale that doesn't match those used in the Xcms.txt (cherry picked from 94f3213fc4bd6ec49bfb68e8b4a4fddea2bf3baa commit) commit 0b05cd4da6134df527fb010384a9fd569bd5d6a3 Author: Alan Coopersmith <alanc@alf.(none)> Date: Fri Jun 16 18:53:33 2006 -0700 Add *~ to ignore emacs droppings (cherry picked from c33d7b8282ac196b36229be26442296768c16f3e commit) commit 214658b76b56768f69c3959a11525aae7813f448 Author: Matthias Hopf <mhopf@suse.de> Date: Fri Jun 16 15:36:40 2006 +0200 Bug #3104: Compose table cache for faster X11 application starts. (cherry picked from 1f4c9893ade08bad30c9bd12a36bee57d30b001e commit) commit 13968a23aaea838ba4b69e42e8900f803499e091 Author: Matthias Hopf <mhopf@suse.de> Date: Tue Jun 13 20:23:46 2006 +0200 Bug #3104: Compose table cache for faster X11 application starts. (cherry picked from 4fe22647e6010a2886c2f3a7093adeaeb6678faa commit) commit e7f8bca08f5476d0ca262097639ac7d424bb4d10 Author: Lubos Lunak <llunak@suse.de> Date: Mon Jun 12 18:48:08 2006 +0200 Bug #3104: Compose table cache for faster X11 application starts. (cherry picked from 1d28a655629a11ea7fd1e5df4c7b77dd4b63e3be commit) commit f506aaf8ac9aae1ee8daaef6cde34ee85aecd641 Author: Matthias Hopf <mhopf@suse.de> Date: Fri Jun 9 18:24:02 2006 +0200 Bug #3104: Compose table cache for faster X11 application starts. Part 1: Pointerless compose data structure, using indices instead of pointers, needed for mmap()ing data structure. (cherry picked from 9354351fcb8baeaab85250d14409cfb4fa50f3e9 commit) commit 0e6d5e979aacb0c295ce79369ecc5f22ffa7922c Author: Jamey Sharp <jamey@minilop.net> Date: Wed Jun 7 20:29:05 2006 -0700 Fix bug #7035: unnecessary memmove in XOpenDisplay. Using memmove on the connection setup data causes a problem for XCB, but making Xlib stop doing that should be harmless for non-XCB as well. (cherry picked from b18713ec3f36a10b3cdb1e16f9550e1d2e05dff0 commit) commit cd7328c46ae72903ed02832828891b2dab4d5ee0 Author: Daniel Stone <daniels@preemptive.fooishbar.org> Date: Sat Jun 3 13:51:51 2006 +0300 Fix threading support on GNU/kFreeBSD systems. (Robert Millan) (cherry picked from e3acee88cfcc4ef0fa8a7db39763a5ebe2e985cb commit) commit c336eb6b80a6f91da1d0b3d28634a2cfde324670 Merge: 33556ca8 ad9ebbd2 Author: Donnie Berkholz <donnie@comet.(none)> Date: Thu Jun 22 14:25:35 2006 -0700 Merge branch 'stable' of http://people.freedesktop.org/~jamey/libX11 into stable commit 213dacad21740466e7ab31b01d3fc513fe4b3e74 Author: Daniel Stone <daniel@fooishbar.org> Date: Thu Jun 22 17:20:59 2006 +0300 Bump to 1.0.99.0 to avoid confusion. commit efedfd68e31bcee2d21ac340be8dc9e1825ec890 Merge: e3acee88 4b8eb5d4 Author: Daniel Stone <daniel@fooishbar.org> Date: Thu Jun 22 16:53:45 2006 +0300 Merge branch 'master' of git+ssh://git.freedesktop.org/srv/git.freedesktop.org/git/xorg/lib/libX11 commit 4b8eb5d4a1da73a94b5a6ab12e34784aae4c79c5 Merge: 5169d0e0 eff50c94 Author: Matthieu Herrb <matthieu@deville.herrb.com> Date: Tue Jun 20 21:05:15 2006 +0200 Merge branch 'master' of git+ssh://herrb@git.freedesktop.org/git/xorg/lib/libX11 commit 5169d0e08ff6acb350a6ea768623f5ff0b85b05f Author: Matthieu Herrb <matthieu@deville.herrb.com> Date: Tue Jun 20 21:04:03 2006 +0200 Check setuid() return value. commit eff50c94a07194297e705da53d9fbb3a40fb9ad4 Author: Derek Wang <derek.wang@sun.com> Date: Mon Jun 19 11:05:37 2006 -0700 Sun bug 6209243: XExtentsOfFontSet causes segfault when font set not loaded commit 94f3213fc4bd6ec49bfb68e8b4a4fddea2bf3baa Author: Scott Revelt <scott.revelt@sun.com> Date: Fri Jun 16 19:11:13 2006 -0700 Sun bug 4022903: Xcms routines may fail if sscanf() is looking for separators based on locale that doesn't match those used in the Xcms.txt commit c33d7b8282ac196b36229be26442296768c16f3e Author: Alan Coopersmith <alanc@alf.(none)> Date: Fri Jun 16 18:53:33 2006 -0700 Add *~ to ignore emacs droppings commit 1f4c9893ade08bad30c9bd12a36bee57d30b001e Author: Matthias Hopf <mhopf@suse.de> Date: Fri Jun 16 15:36:40 2006 +0200 Bug #3104: Compose table cache for faster X11 application starts. commit 4fe22647e6010a2886c2f3a7093adeaeb6678faa Author: Matthias Hopf <mhopf@suse.de> Date: Tue Jun 13 20:23:46 2006 +0200 Bug #3104: Compose table cache for faster X11 application starts. commit 1d28a655629a11ea7fd1e5df4c7b77dd4b63e3be Author: Lubos Lunak <llunak@suse.de> Date: Mon Jun 12 18:48:08 2006 +0200 Bug #3104: Compose table cache for faster X11 application starts. commit 9354351fcb8baeaab85250d14409cfb4fa50f3e9 Author: Matthias Hopf <mhopf@suse.de> Date: Fri Jun 9 18:24:02 2006 +0200 Bug #3104: Compose table cache for faster X11 application starts. Part 1: Pointerless compose data structure, using indices instead of pointers, needed for mmap()ing data structure. commit b18713ec3f36a10b3cdb1e16f9550e1d2e05dff0 Author: Jamey Sharp <jamey@minilop.net> Date: Wed Jun 7 20:29:05 2006 -0700 Fix bug #7035: unnecessary memmove in XOpenDisplay. Using memmove on the connection setup data causes a problem for XCB, but making Xlib stop doing that should be harmless for non-XCB as well. commit ad9ebbd2424bc2699944ffdf4e19e13f9dd8ab84 Author: Daniel Stone <daniels@preemptive.fooishbar.org> Date: Sat Jun 3 12:57:55 2006 +0300 Bug #2186: Add cs_CZ.iso8859-2 alias. commit 9e7765e0b1cbaae6643072d91066ba1201b36227 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 02:46:29 2006 +0300 nls: Serbian (sr_CS) update (#5575) Bug #5575: 'Yugoslavia' has changed to Serbia & Montenegro, along with a corresponding locale change. Update compose.dir.pre, locale.alias.pre, and locale.dir.pre. (Milos Komarcevic) commit a4ac2242b588da23044a20aa999ae84d4de7b2d8 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 02:24:25 2006 +0300 im: add Braille input method (#6296) Bug #6296: Add a Braille input method. (Samuel Thibault) commit 90de1e2e141ec591048a76cb695579ef809a28d3 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 02:22:17 2006 +0300 xkb support: small typo commit 4c3e34bece7402f08139d34d1ef5834e3cf533c7 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 01:50:24 2006 +0300 en_US.UTF-8 Compose.pre: updates from Simos (#5129) Bug #5129: Numerous updates from Simos Xenitellis, fixing Unicode keysyms, adding Unicode character names, removing duplicate entries, et al. commit 0c6473dd329c7334ae511884bcb6e73e632c784f Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 01:44:53 2006 +0300 nls: fix use of non-keysym dead_space (#5107) Bug #5107: Change users of dead_space to space. commit 6f99f6349de5120f1cb7e02fbc97849341bc48e8 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 01:41:18 2006 +0300 optional XKB support fix Fix compilation with --disable-xkb. commit 217d43ed44ced901122093af3ef1294e1736bb77 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 01:39:12 2006 +0300 i18n: separate data and lib directories Break out locale data into separate data and library directories, under $(datadir) and $(libdir), respectively, by default. commit 92fa7fcde8df22830fca7c0275ab201033f7909c Author: Adam Jackson <ajax@benzedrine.nwnk.net> Date: Thu May 11 14:04:48 2006 -0400 libXcursor.so.1, not libXcursor.so commit 135b4df13ed7c35dbae8975f302fc1fb8412d7c0 Author: Daniel Stone <daniels@preemptive.fooishbar.org> Date: Wed May 10 18:06:03 2006 +0300 XKBMisc.c: use Xfree, not xfree Use Xfree() instead of xfree() when freeing interps. commit 3518d772b08e3433bc28b4d8d293fa53ca25f0ee Author: Daniel Stone <daniels@preemptive.fooishbar.org> Date: Wed May 10 14:51:37 2006 +0300 locale.alias.pre: bg_BG typo fix Fix typo (be_BG.UTF-8 rather than bg_BG.UTF-8) in locale.alias.pre. commit cc533db60cb64dc163c66451933a9bf77c519062 Author: Daniel Stone <daniels@endtroducing.localdomain> Date: Sun Apr 9 22:22:03 2006 +0300 Coverity #203, #204: Fix potential NULL dereferences. commit b83adf7dfd6157694fe4f232012fef36cd9666da Author: Daniel Stone <daniels@endtroducing.localdomain> Date: Sun Apr 9 22:20:25 2006 +0300 Coverity #205: Fix potential NULL dereference. commit 2d0cd10ad907864d0136739eaac459779c9a5332 Author: Daniel Stone <daniels@endtroducing.localdomain> Date: Sun Apr 9 22:18:20 2006 +0300 Coverity #209: Fix potential NULL dereference. (Alan Coopersmith) commit dc2f3966068d66a564aa452cab9f0c26657fa1df Author: Daniel Stone <daniels@preemptive.research.nokia.com> Date: Fri Apr 7 18:11:52 2006 +0300 Coverity #826: Fix potential memory leak. commit 23df609ec451a01c77e8f31ecc85c5af7c62efed Author: Daniel Stone <daniels@preemptive.research.nokia.com> Date: Fri Apr 7 17:49:41 2006 +0300 Bug #1625: Include keysym.h from Xutil.h. commit 5262a1945c543a3419ed626e1deb09ef5b4584c1 Author: Eric Anholt <anholt@leguin.anholt.net> Date: Wed Apr 5 17:12:15 2006 -0700 Check if visualList == NULL, not nVisualsMatched == 0. NULL happens in more cases (allocation failure) than nVisualsMatched == 0. Noticed from inspection of Coverity #599, #600. commit 8b42635f577468bb143ca593cdd9fb3450ad712c Author: Eric Anholt <anholt@leguin.anholt.net> Date: Wed Apr 5 16:42:26 2006 -0700 Coverity #558: Free newly-allocated Database in error path. commit 6d06e41d1f431b3f1a1fcf69161e0af411325e9f Author: Eric Anholt <anholt@leguin.anholt.net> Date: Wed Apr 5 16:38:52 2006 -0700 Coverity #582: Free newly-allocated region in error path. commit 5fd8f79ad3e38df74d9a6cb573617542c101df1a Author: Daniel Stone <daniels@preemptive.research.nokia.com> Date: Fri Mar 17 15:58:39 2006 +0200 Properly clip bounds when only one point is defining an outline. commit 1e1572eb7f8394ce152e99d96f711ccf9083baf9 Author: Matthieu Herrb <matthieu@bluenote.herrb.com> Date: Sat Mar 11 15:39:15 2006 +0100 Fix prototype of XConfigureWindow(). Bugzilla #6023. commit 1da8bd904f1fc79d63d368473531b438d08bfe37 Author: Jeremy C. Reed <reed@reedmedia.net> Date: Tue Feb 21 14:10:22 2006 -0800 Set XTHREADLIB correctly for dragonfly platforms. commit c9768133e3f65ac4bb64e3941e2d6ae36897ec9c Author: Jamey Sharp <jamey@minilop.net> Date: Sun Feb 19 12:29:27 2006 -0800 Update .gitignores for *.o and nls/locale.dir*. commit efcbde6ba0b770bb0d4c7818e307712161011f10 Author: Jamey Sharp <jamey@minilop.net> Date: Sun Feb 19 12:28:41 2006 -0800 Move .cvsignore to .gitignore. commit e3acee88cfcc4ef0fa8a7db39763a5ebe2e985cb Author: Daniel Stone <daniels@preemptive.fooishbar.org> Date: Sat Jun 3 13:51:51 2006 +0300 Fix threading support on GNU/kFreeBSD systems. (Robert Millan) commit f1bd3152359ddfadd0d043006036c239f3e2907b Author: Daniel Stone <daniels@preemptive.fooishbar.org> Date: Sat Jun 3 12:57:55 2006 +0300 Bug #2186: Add cs_CZ.iso8859-2 alias. commit 2b1b79d90db1d7f0472718b8c010c36275994195 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 02:46:29 2006 +0300 nls: Serbian (sr_CS) update (#5575) Bug #5575: 'Yugoslavia' has changed to Serbia & Montenegro, along with a corresponding locale change. Update compose.dir.pre, locale.alias.pre, and locale.dir.pre. (Milos Komarcevic) commit d6fba1f44d404362d3be1b421f57d7ccc3c8cdac Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 02:24:25 2006 +0300 im: add Braille input method (#6296) Bug #6296: Add a Braille input method. (Samuel Thibault) commit 0fed7d3185addd610e917dcdaa0676f0256c0ec5 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 02:22:17 2006 +0300 xkb support: small typo commit cf7d9f9e46f3ce01ac04a95978918d5c0f3f3cf9 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 01:50:24 2006 +0300 en_US.UTF-8 Compose.pre: updates from Simos (#5129) Bug #5129: Numerous updates from Simos Xenitellis, fixing Unicode keysyms, adding Unicode character names, removing duplicate entries, et al. commit 332d45fce9fdbf59168d90a133af1f580a589e54 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 01:44:53 2006 +0300 nls: fix use of non-keysym dead_space (#5107) Bug #5107: Change users of dead_space to space. commit 34f59ce3d1e2eb2971b732d11871c6fff8a1c75b Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 01:41:18 2006 +0300 optional XKB support fix Fix compilation with --disable-xkb. commit c5940a0b85edec4003f91a59fc3c44f538accfe1 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 2 01:39:12 2006 +0300 i18n: separate data and lib directories Break out locale data into separate data and library directories, under $(datadir) and $(libdir), respectively, by default. commit 33556ca81db2419b9d2a37664c4cea2069414b37 Author: Adam Jackson <ajax@benzedrine.nwnk.net> Date: Fri May 12 14:49:17 2006 -0400 Bump to 1.0.1 commit 80d88557626fae9debc404de33d7fb5d69a6049d Author: Adam Jackson <ajax@benzedrine.nwnk.net> Date: Thu May 11 14:06:28 2006 -0400 libXcursor.so.1, not libXcursor.so commit 5384f27dfe3c94c462c137ab3540eaa5646ca4c6 Author: Adam Jackson <ajax@benzedrine.nwnk.net> Date: Thu May 11 14:04:48 2006 -0400 libXcursor.so.1, not libXcursor.so commit 01f4d433eed6b70c6e9636157acac022054fdeb6 Author: Jamey Sharp <jamey@minilop.net> Date: Wed May 10 17:02:52 2006 -0700 Count any partial request towards the current Xlib sequence number. commit 770cfbd1fcc80a83a9be0c4f68727b8af2c8f4a4 Author: Daniel Stone <daniels@preemptive.fooishbar.org> Date: Wed May 10 18:06:03 2006 +0300 XKBMisc.c: use Xfree, not xfree Use Xfree() instead of xfree() when freeing interps. commit 22a5255b80b80772612279bc840a953edd0e3442 Author: Daniel Stone <daniels@preemptive.fooishbar.org> Date: Wed May 10 14:51:37 2006 +0300 locale.alias.pre: bg_BG typo fix Fix typo (be_BG.UTF-8 rather than bg_BG.UTF-8) in locale.alias.pre. commit 9cac8c9824874ca7d835f001a4efa910b7fdd822 Merge: 19b8840a e514bc87 Author: Daniel Stone <daniels@preemptive.fooishbar.org> Date: Wed May 10 14:50:37 2006 +0300 Merge branch 'master' of git+ssh://git.freedesktop.org/srv/git.freedesktop.org/git/xorg/lib/libX11 commit e514bc875f27f4bf197b06b8315eeca526195915 Author: Jamey Sharp <jamey@minilop.net> Date: Tue May 9 12:41:59 2006 -0700 Assert that dpy->request does not go backwards. Catches #5839 earlier. commit fc1159137365a599bf611ee001f439416952c4e0 Author: Jamey Sharp <jamey@minilop.net> Date: Sun May 7 17:40:01 2006 -0700 In _XPutXCBBuffer, set aside any trailing partial request until the last byte is available. commit c394480a4247213239822808e3f6e7c6cd6decd9 Author: Jamey Sharp <jamey@minilop.net> Date: Sun May 7 16:58:13 2006 -0700 Update for XCB ConnSetupSuccessRep name change. commit 7672bf93bc1200905461aeb0a2dc2c2696410b93 Author: Daniel Stone <daniels@endtroducing.localdomain> Date: Sun Apr 9 22:22:03 2006 +0300 Coverity #203, #204: Fix potential NULL dereferences. commit cfcafbe48d22d9a0cd50eb9454ce0ff88f0129d3 Author: Daniel Stone <daniels@endtroducing.localdomain> Date: Sun Apr 9 22:20:25 2006 +0300 Coverity #205: Fix potential NULL dereference. commit b6771501feea98d037032f82117b6d4f15779f07 Author: Daniel Stone <daniels@endtroducing.localdomain> Date: Sun Apr 9 22:18:20 2006 +0300 Coverity #209: Fix potential NULL dereference. (Alan Coopersmith) commit 19b8840af241087bb17b1edabcaa9b28fdd0a1dc Author: Daniel Stone <daniels@preemptive.research.nokia.com> Date: Fri Apr 7 18:11:52 2006 +0300 Coverity #826: Fix potential memory leak. commit 3a16f262abe48b44ed641525e894bc22e13bf72a Author: Daniel Stone <daniels@preemptive.research.nokia.com> Date: Fri Apr 7 17:49:41 2006 +0300 Bug #1625: Include keysym.h from Xutil.h. commit 2481b767ae96e2f2503c0390545932c8397b090f Author: Eric Anholt <anholt@leguin.anholt.net> Date: Wed Apr 5 17:12:15 2006 -0700 Check if visualList == NULL, not nVisualsMatched == 0. NULL happens in more cases (allocation failure) than nVisualsMatched == 0. Noticed from inspection of Coverity #599, #600. commit 152b17e47d878c2d928eb74581aa69d925a29123 Author: Eric Anholt <anholt@leguin.anholt.net> Date: Wed Apr 5 16:42:26 2006 -0700 Coverity #558: Free newly-allocated Database in error path. commit bc62b99ef36edb34035911c42104be7f6f9d2333 Author: Eric Anholt <anholt@leguin.anholt.net> Date: Wed Apr 5 16:38:52 2006 -0700 Coverity #582: Free newly-allocated region in error path. commit d47f0b3cec1388f7ce60ab2af91df0dea0f221c5 Author: Jamey Sharp <jamey@minilop.net> Date: Fri Mar 31 22:53:07 2006 -0800 Fix buggy interaction with XCB when running out of XIDs. commit e3f452571824d6a875bbf582946de185de9e01e9 Author: Jamey Sharp <jamey@minilop.net> Date: Fri Mar 31 22:52:14 2006 -0800 Add explicit include of Xmd.h to work around bug including both xcb.h and Xmd.h simultaneously. commit 2363b74ca795c1b3a73c9e572532ba5191adec5b Author: Daniel Stone <daniels@preemptive.research.nokia.com> Date: Fri Mar 17 15:58:39 2006 +0200 Properly clip bounds when only one point is defining an outline. commit e876efb8aa410f2f5c87aaaa7042f847c4ff96f7 Merge: be266b20 f71ea0bc Author: Matthieu Herrb <matthieu@bluenote.herrb.com> Date: Sat Mar 11 15:40:35 2006 +0100 Merge branch 'master' of git+ssh://herrb@git.freedesktop.org/git/xorg/lib/libX11 commit be266b201dc13530a302a7572283ccd3f32aad87 Author: Matthieu Herrb <matthieu@bluenote.herrb.com> Date: Sat Mar 11 15:39:15 2006 +0100 Fix prototype of XConfigureWindow(). Bugzilla #6023. commit f71ea0bc737c5a42e9e022b86e7ec3b4f846d31c Author: Jamey Sharp <jamey@minilop.net> Date: Fri Mar 3 11:08:41 2006 -0800 Update for XCBSendRequest sequence number API changes. commit a11d1b0ae674320cf9897f6a83ec08c65eca8d9b Author: Jamey Sharp <jamey@minilop.net> Date: Fri Mar 3 01:42:49 2006 -0800 Use the full_sequence from XCBGenericError/Event for setting last_request_read, and quit replacing _XSetLastRequestRead with an XCB-specific version. commit d8ba4ae7045b227f8b675628b9094dded02f1c08 Author: Jamey Sharp <jamey@minilop.net> Date: Thu Mar 2 23:43:26 2006 -0800 Bugfix: Rely on XCBSendRequest to leave iov in a well-defined state, and place the spare iovecs at the beginning of the array. commit f9afb5a54435c30961306080e9358d4240ecb844 Author: Jamey Sharp <jamey@minilop.net> Date: Thu Mar 2 23:34:19 2006 -0800 assert() that we will not infinite loop or read uninitialized memory. commit d3512ef3aae5b036a8ce6579318108f1ec20ee22 Author: Jamey Sharp <jamey@minilop.net> Date: Thu Mar 2 15:58:52 2006 -0800 Quit relying on XCBSendRequest to pad to 4-byte boundaries and do it ourselves. commit fb590c15a740264ee867d15a2547072e43b21eed Author: Jamey Sharp <jamey@minilop.net> Date: Thu Mar 2 12:06:04 2006 -0800 Handle errors correctly when Xlib owns the event queue and XCB has the checked error feature. commit 8356ba37d307a9eda895a6bf41ef727bbfc9a695 Author: Jamey Sharp <jamey@minilop.net> Date: Mon Feb 27 11:51:47 2006 -0800 Use the new XCBSendRequest flag, XCB_REQUEST_RAW, to hand a bag-o-bytes down uninterpreted. commit 07bdf1fbbf2418f866df1a2140d514dd3f035139 Author: Jamey Sharp <jamey@minilop.net> Date: Sun Feb 26 15:46:01 2006 -0800 Update for new XCBSendRequest API. commit 409a08cff8347d39e0e6c53c9f380d21f221f5ac Author: Jamey Sharp <jamey@minilop.net> Date: Thu Feb 23 18:12:31 2006 -0800 Performance fix: Replace calls to XCBGetRequestRead with the new XCBGetQueuedRequestRead. Cuts a lot of syscalls. commit ec30a27341b97620b07dd886f98d1d7664a67685 Author: Jamey Sharp <jamey@minilop.net> Date: Thu Feb 23 18:01:46 2006 -0800 Minor performance fix: Access dpy->xcl->connection directly instead of calling XCBConnectionOfDisplay. It happens a lot. commit 53c471c6a835d5cedeca99f2c97058d196a3fd7e Author: Jamey Sharp <jamey@minilop.net> Date: Thu Feb 23 11:46:09 2006 -0800 XCBFlush used to return non-positive on failure, and this test did not catch 0. Now it returns boolean: 0 or 1. Testing <= 0 covers both cases. I probably want to switch to a boolean test eventually. commit 41c0121a8718b530feaf7fe315b673d9b8defce2 Author: Jamey Sharp <jamey@minilop.net> Date: Tue Feb 21 21:25:41 2006 -0800 Refactor the code that passes requests down to XCB into a separate issue_complete_request function. commit 67d06e0fe468dca22847aa14d3f917128f89f9cf Author: Jamey Sharp <jamey@minilop.net> Date: Tue Feb 21 15:33:05 2006 -0800 If we have not actually put the buffer back, deferred invariants may not hold. This is OK. commit 434bf80b4053ff1ba82adf65de1f76b4d3731bf1 Author: Jeremy C. Reed <reed@reedmedia.net> Date: Tue Feb 21 14:10:22 2006 -0800 Set XTHREADLIB correctly for dragonfly platforms. commit b24834762e975bd319f9ab5c7cf790b2a02a9474 Author: Jamey Sharp <jamey@minilop.net> Date: Tue Feb 21 14:03:26 2006 -0800 Sometimes functions other than _XUnlockDisplay call _XPutXCBBuffer. Some invariants appropriate for Unlock are not appropriate otherwise: move them to _XUnlockDisplay. commit 99b8defd0d5e6993071e21638128c9de2574b37d Author: Jamey Sharp <jamey@minilop.net> Date: Tue Feb 21 13:04:21 2006 -0800 Execute BeforeFlush hooks on complete buffers, not request-at-a-time. Traditional Xlib worked this way; I dunno why I changed it. commit 9b01e7849775749182052fe324df9d8e6ceeee99 Author: Jamey Sharp <jamey@minilop.net> Date: Tue Feb 21 12:51:44 2006 -0800 Factor the XCBSendRequest call out of the conditional in _XPutXCBBuffer. commit 7ce7ac882de128955751a5307889db9d712d8a72 Author: Jamey Sharp <jamey@minilop.net> Date: Tue Feb 21 12:44:30 2006 -0800 Quit using a triple-pointer. Almost as if I were a sensible person. commit 35a858be218cdbfa4593d44a67663d5c25297016 Author: Jamey Sharp <jamey@minilop.net> Date: Tue Feb 21 12:21:01 2006 -0800 Remove the XCL_PAD macro. commit e741b70ed2542c5463c57dac44bc37328616733b Author: Jamey Sharp <jamey@minilop.net> Date: Sun Feb 19 12:29:27 2006 -0800 Update .gitignores for *.o and nls/locale.dir*. commit f25b4b00e1683b0d97dba46dac46d65a9c2270a6 Author: Jamey Sharp <jamey@minilop.net> Date: Sun Feb 19 12:28:41 2006 -0800 Move .cvsignore to .gitignore. commit c7cda56eebaf6ab11403363be14d4948d7d8be38 Author: Jamey Sharp <jamey@minilop.net> Date: Sun Feb 19 11:49:15 2006 -0800 Land XCB support on X.org HEAD. commit 881467b3032261791ef5ec61b3879bb68d0a3d8c Author: Jamey Sharp <jamey@minilop.net> Date: Sun Feb 19 02:14:11 2006 +0000 Merge the X11 and BIGREQS package sets: they were used in exactly the same places. commit 6b0158dfad714db5b89c04dbea3aedeafa0fb146 Author: Jamey Sharp <jamey@minilop.net> Date: Tue Feb 14 19:37:36 2006 +0000 Refactor _XFlush and _XSend code that sets dpy->synchandler to _XSeqSyncFunction into a new function, _XSetSeqSyncFunction. It makes the patch for XCB cleaner, but is arguably a good idea anyway. commit 010c3acbb3a6993d39274f42d88c00849acb0fb0 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sun Feb 12 18:19:17 2006 +0000 Bug #5628 <https://bugs.freedesktop.org/show_bug.cgi?id=5628> Shadow pages not created correctly when MANDIR & MANSUFFIX don't match. commit fe8c01c80263457f01b70dc1511b2bd9466b7c96 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Feb 3 23:34:43 2006 +0000 Fix typo in .TH line commit b091c217f3c3f60dde78b09a95c150df6c83d7ba Author: Kevin E Martin <kem@kem.org> Date: Thu Dec 15 00:24:28 2005 +0000 Update package version number for final X11R7 release candidate. commit e7c04e0e65a2a0c70c6ad29ec2d6f4350fd81c2a Author: Kevin E Martin <kem@kem.org> Date: Tue Dec 6 22:48:41 2005 +0000 Change *man_SOURCES ==> *man_PRE to fix autotools warnings. commit b5c495854d5270e64e6d588388ffa906bfcaac22 Author: Kevin E Martin <kem@kem.org> Date: Sat Dec 3 05:49:42 2005 +0000 Update package version number for X11R7 RC3 release. commit 9e96dbc343c7f27ff47607acd75378ab23903e2a Author: Kevin E Martin <kem@kem.org> Date: Sat Dec 3 04:41:47 2005 +0000 Add check and cflags for malloc(0) returning NULL. commit 649c37b47909620ccafde3e983de8321cddd74ce Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Nov 28 22:03:04 2005 +0000 Change *mandir targets to use new *_MAN_DIR variables set by xorg-macros.m4 update to fix bug #5167 (Linux prefers *.1x man pages in man1 subdir) commit 8d1500df66d796ebff2b0d8c02205e5fa6796d4a Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Nov 23 22:33:06 2005 +0000 Bug #5003 <https://bugs.freedesktop.org/show_bug.cgi?id=5003> Patch #3763 <https://bugs.freedesktop.org/attachment.cgi?id=3763> Xorg code misuses S_IF* macros commit 93cf3747f9ae8d30bd485b41c5ff10397f68f078 Author: Eric Anholt <anholt@freebsd.org> Date: Sun Nov 20 23:17:39 2005 +0000 Add/improve libs .cvsignores. commit fa1f4a08112bfa14d3758f4702733dd3892966c3 Author: Kevin E Martin <kem@kem.org> Date: Sat Nov 19 07:15:39 2005 +0000 Update pkgconfig files to separate library build-time dependencies from application build-time dependencies, and update package deps to work with separate build roots. commit 7012f9b56c594cf40855ba0dbf93af1263417a8c Author: Kevin E Martin <kem@kem.org> Date: Mon Nov 14 21:51:07 2005 +0000 Fix xf86bigfont pkgconfig dep typo. commit 60a72f47951f46b4e0505d9903a94af3b6bed8ca Author: Kevin E Martin <kem@kem.org> Date: Wed Nov 9 21:19:12 2005 +0000 Update package version number for X11R7 RC2 release. commit 6bb0c3796b6e1beddc376a896e865704886e1462 Author: Kean Johnson <kean@armory.com> Date: Tue Nov 8 06:33:25 2005 +0000 See ChangeLog entry 2005-11-07 for details. commit 14be0098ad90c3e68bd2d21b00ffabb76f1fd780 Author: Kevin E Martin <kem@kem.org> Date: Tue Nov 1 15:11:50 2005 +0000 Update pkgcheck dependencies to work with separate build roots. commit 1bf71462a972e0fc56de63f5c7fd613b37fc70f1 Author: Donnie Berkholz <spyderous@gentoo.org> Date: Fri Oct 28 10:44:03 2005 +0000 Revert that, it's redundant. But it is worth noting that --disable-xkb is broken, if anyone cares. commit be627a39fe373e2e81fdc263780e70a271d9e0c5 Author: Donnie Berkholz <spyderous@gentoo.org> Date: Fri Oct 28 08:28:08 2005 +0000 Add dependency on inputproto for XI.h. commit 5fae4cb456cb03fb70cd065dbc2ca94c8ed99082 Author: Adam Jackson <ajax@nwnk.net> Date: Fri Oct 21 18:44:24 2005 +0000 Bug #4736: Error decoding for Damage extension. (Jonathan Lennox) commit 1171fa9dc77413f0e90933a565ec07068052afb4 Author: Kevin E Martin <kem@kem.org> Date: Wed Oct 19 02:48:08 2005 +0000 Update package version number for RC1 release. commit 2a2d905706308b9d5a1c16af1067fb390f43850c Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Oct 18 00:00:08 2005 +0000 Use @LIB_MAN_SUFFIX@ instead of $(LIB_MAN_SUFFIX) in macro substitutions to work better with BSD make commit 66d35b6971fb26762392a2a8e2c47db46c11116a Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Oct 17 21:13:15 2005 +0000 Rename .shadows.DONE to shadows.DONE to avoid some make's thinking it's a suffix rule (reported by Matthieu Herrb) commit a316995a17c084e98ef1b7f25d287c2c08b6d749 Author: Donnie Berkholz <spyderous@gentoo.org> Date: Sun Oct 16 03:03:35 2005 +0000 Change '==' to portable '='. commit b76a072530e884bcbea6ed8fed5aef39361dcfc0 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Oct 12 00:04:50 2005 +0000 configure.ac Use XORG_MAN_SECTIONS instead of custom man section configuration. Add shadow man pages for man pages that document multiple functions. commit 8ee5c1429af98206e05a0536f87c0f21a529cdf0 Author: Eric Anholt <anholt@freebsd.org> Date: Tue Oct 11 02:18:36 2005 +0000 Add appropriate pthread libs/flags for FreeBSD, fixing the build of ico and probably others. commit 41ff3b9d1f194a7b56437b650d5f589225c078c6 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sun Oct 9 22:28:39 2005 +0000 Bug #3021 <https://bugs.freedesktop.org/show_bug.cgi?id=3021> Requests and Errors for XFixes are not in XErrorDB (Jonathan Lennox) commit 91ed79852e790049ab54e68f288afb3c953194c9 Author: Kevin E Martin <kem@kem.org> Date: Fri Oct 7 15:00:00 2005 +0000 Clean up generated files Add missing dist tarball files commit 440399b470c97b159a530602fff11c315aca8d97 Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> Date: Wed Oct 5 18:27:10 2005 +0000 Add el_GR.UTF-8 compose file commit 010f0647e25ac617d0f92c8d2b8dda684da545db Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Sep 30 07:52:46 2005 +0000 Bug #2609: Add Kyrgyz locale (Ilyas Bakirov). commit 3ef2fb67bd8905b208ad7eb790c3843e14cea7ed Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Sep 30 07:47:55 2005 +0000 Bug #1640: Kinyarwanda locale support. (Steve Murphy) commit 4ae0decabe0960870df0ec165f495166c10a053c Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Sep 30 07:40:03 2005 +0000 Bug #2268: Add South African locales (Dwayne Bailey). Some whitespace cleanups, as the parser is a little touchy. commit 3f79eb4c99844f618f1889741d1631c2ffe5385f Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Sep 30 07:11:19 2005 +0000 Generate locale.alias and compose.dir exactly like we do in the monolith, which fixes non-UTF-8 locales in particular (so we get foo: bar, as well as foo bar). Switch to generating locale.dir the same way. commit d1237d1483ff972c76a0ac344ec97d5280db0007 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Sep 29 21:27:12 2005 +0000 Add Xcms.txt to lib/X11 commit 4a86f299693f7376cbe98175f0b0c44d691802b3 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Sep 24 20:11:06 2005 +0000 Add XQueryExtension.man commit a057a66e2041d45198a13a4ece7c07068f76f21b Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Sep 24 00:16:32 2005 +0000 Add XTHREAD_CFLAGS for platforms that need special defines like -D_REENTRANT or -D_POSIX_whatever to get re-entrant function definitions. Set XDMCP_LIBS correctly for later libXdmcp tests. commit 3e920a65a7c376ad63eae2240fd06904d25d18bf Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Sep 2 23:00:30 2005 +0000 Issue an error if XTRANS macros were not found when generating configure from configure.ac to flag errors early, instead of when people wonder why libX11 can't talk to an Xserver because it has no transports defined commit 3eb9f2d693af89d04e2fd92492c8205dce332c9c Author: Kristian Høgsberg <krh@redhat.com> Date: Thu Sep 1 19:24:13 2005 +0000 Use $(X11_LOCALEDATADIR) instead of @X11_LOCALEDATADIR@ so this install destination can be overridden at make install time. commit 7afa64325183b78d2d6a4862821f8b3e9866105c Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sun Aug 28 19:45:48 2005 +0000 OpenBSD needs -lpthread for threaded applications too. commit 2b2f3d3877cb7927f196d01a5df6a27bf8d0518a Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Aug 26 05:16:46 2005 +0000 Define ERRORDB/KEYSYMDB to XERRORDB/XKEYSYMDB if the former is undefined but the latter is. (Gerte Hoogewerf) commit 07066da0902df91c71f2adb81d1a17ec29165553 Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sun Aug 21 15:45:04 2005 +0000 update commit de44d8b111f57bd2f015e085fd8298c5f2a15ef3 Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sun Aug 21 15:38:39 2005 +0000 Threads support for BSD systems: - need to check for gewtpwuid_r to define mtsafeapi - build UIThrstubs if needed. commit 60217fdb918bafb2082519efe5cba3b13ad3082a Author: Adam Jackson <ajax@nwnk.net> Date: Wed Aug 17 19:46:08 2005 +0000 Add xthreadlib variable to x11.pc. Bump to 0.99.1. commit e1f4c6f5e36c1511f66fa1fac76520fd97eecbad Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Aug 17 01:27:08 2005 +0000 Fix more broken multi-line .ds macros. Remove extraneous ;'s . commit 1909786f4a7d686369edcfc05a938df115fab37c Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Aug 16 19:23:15 2005 +0000 Bugzilla #4112 <https://bugs.freedesktop.org/show_bug.cgi?id=4112> Patch #2687 <https://bugs.freedesktop.org/attachment.cgi?id=2897> Fix multi-line macros in XPutImage man page. (Debian bug #323210, fix by David Mart?nez Moreno) commit 83406d69c62070d2eeef23eb47f1ca887f711ee5 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Aug 15 19:53:37 2005 +0000 Move RAWCPP macro to xorg-macros.m4 so other modules can use it Add check for whether or not RAWCPP needs -traditional instead of hardcoding it, so non-gcc cpp's can be used commit 5bb43de17de8e71d967488a713bf2b3448533444 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Aug 6 18:59:49 2005 +0000 Typo fix in output message commit afe34b95862bb3c06cdbe724cb5ec3001a4a5215 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Aug 4 02:55:49 2005 +0000 //bugs.freedesktop.org/show_bug.cgi?id=1887> Patch #3005 <https://bugs.freedesktop.org/attachment.cgi?id=3005> libX11 locale defs severely adrift from glibc: adding new aliases (From Debian via Nathanael Nerode) commit 3979a0b88edf6475ce5cfaa386e18ef980bda13c Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Aug 4 02:51:30 2005 +0000 //bugs.freedesktop.org/show_bug.cgi?id=1887> Patch #3002 <https://bugs.freedesktop.org/attachment.cgi?id=3002> libX11 locale defs severely adrift from glibc: locales bugfix for bs_BA (From Debian via Nathanael Nerode) commit 34b454df192f4563499c453ccdb8c079f4a20cbe Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Jul 30 20:30:46 2005 +0000 Include config.h so Xtrans knows which transport types to build code for commit cd9c9936b49c125eda779b99887d7e6ae4cf56cd Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Jul 30 19:15:16 2005 +0000 Add -D flags to clear various warnings (Stefan Dirsch) commit e7fef67b4531faddd805d8f2157903006d3117ed Author: Kevin E Martin <kem@kem.org> Date: Fri Jul 29 21:22:50 2005 +0000 Various changes preparing packages for RC0: - Verify and update package version numbers as needed - Implement versioning scheme - Change bug address to point to bugzilla bug entry form - Disable loadable i18n in libX11 by default (use --enable-loadable-i18n to reenable it) - Fix makedepend to use pkgconfig and pass distcheck - Update build script to build macros first - Update modular Xorg version commit 2ebb00244928237088e68325b1032b3550455ce9 Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sat Jul 23 20:19:31 2005 +0000 remove orphan TAB at begin of line commit dd7a9cdecda73e024ca84c5b9a22b18688038d94 Author: Kevin E Martin <kem@kem.org> Date: Sat Jul 23 18:09:39 2005 +0000 Modify modular libs to use Xregion.h instead of region.h commit 6d635a88d91647b1b63611c3591f74916f88cd1c Author: Kevin E Martin <kem@kem.org> Date: Sat Jul 23 18:06:16 2005 +0000 lib/Xrender/Picture.c Change region.h to Xregion.h and modify internal references to include <X11/Xregion.h>. commit 36283f50fd9748733ae84cb7fb52ca8d9e661c15 Author: Daniel Stone <daniel@fooishbar.org> Date: Sat Jul 16 06:25:35 2005 +0000 Set soversion to 6.2.0. commit 75fd5ae6e4683b9b9dcc13bc2f0faf223610a74f Author: Keith Packard <keithp@keithp.com> Date: Fri Jul 15 04:27:32 2005 +0000 Add missing Makefile.am to lib/X11/modules commit 6d84a8b1329af1fcfe86b198f1a6e7dd6ff616c3 Author: Keith Packard <keithp@keithp.com> Date: Fri Jul 15 04:08:51 2005 +0000 Move i18n modules to top-level so they can be built in the right order (before xlib for non-loadable, after xlib for loadable). Link i18n modules against xlib to resolve Xlib symbols used by them. commit 45f40126a73295345bb5eb187b1167874842ab6e Author: Alexander Gottwald <ago@freedesktop.org> Date: Thu Jul 14 19:50:00 2005 +0000 Add $(top_srcdir)/src to include list commit 0aed7d91f5928d09d541617aad03709b5090658d Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Thu Jul 14 17:04:49 2005 +0000 Build fix for non-GNU make. commit b79422ccb02ab44548d1038956ab0cd4e2638645 Author: Adam Jackson <ajax@nwnk.net> Date: Thu Jul 14 15:12:44 2005 +0000 typo fixes (Matthieu Herrb) commit 419304cde2fda19457c667870edefc0b227651b3 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Jul 13 02:41:36 2005 +0000 Add missing backslashes to xlocale_la_SOURCES commit d14cc5c8964c4539b57c6cb51ef653292e410b79 Author: Keith Packard <keithp@keithp.com> Date: Mon Jul 11 20:32:55 2005 +0000 Ammend AM_CFLAGS with all needed includes; cannot figure out an easy way to automate this. commit 424c2d8905eb2ad0a2df15b1da2f96140bfbcffb Author: Lars Knoll <lars@trolltech.com> Date: Mon Jul 11 15:24:32 2005 +0000 compile commit de9784eb1bde46efc316da279e3da27c6cc288a7 Author: Keith Packard <keithp@keithp.com> Date: Mon Jul 11 09:26:40 2005 +0000 Ignore built man page files commit 0c258c36d1523113790c599b16d2947d7aa6469a Author: Keith Packard <keithp@keithp.com> Date: Mon Jul 11 09:18:31 2005 +0000 Minor changes to help modular Xlib build i18n modules commit 6e752ea1203b786423e40f43340bce15ca3de0f0 Author: Keith Packard <keithp@keithp.com> Date: Mon Jul 11 08:29:18 2005 +0000 Enable loadable i18n modules, making them configurable on the configure command line. Clean up conditionals for XKB, XCMS, XLOCALEDIR Create new lib directory for locale modules in ${X11_LIBDIR}/locale/lib. Add this to the default XLOCALEDIR search path. Create separate X11_LOCALEDATADIR variable pointing at ${datadir}/X11/locale for installing locale data. Split out xcms, xkb, xlibi18n sources from main xlib bits so they can be conditionally included more easily. Lots of source files have been moved with this step; the result seems like it might be easier to maintain. Display message at end of configure script with selected options. Fix manual building with cpp to add -traditional in cpprules.in. This isn't conditionalized at all, so it will break on systems not using GNU cpp. commit b46cf0d879f1dbf92dcf5a0305d18986c766ed84 Author: Daniel Stone <daniel@fooishbar.org> Date: Sun Jul 10 22:37:33 2005 +0000 Fix segfault when _XimProtoCreateIC() fails to create a context; Debian #239991. (Chung-chieh Shan) commit 6f2132b18e61ca9755e4b45550f3f5097dd1fbb7 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Jul 9 20:06:04 2005 +0000 Set __libmansuffix__ & __xorgversion__ correctly when cpp processing man pages commit 3939ac4410446b46071c9d714f4270c12bf904fe Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Jul 9 18:44:14 2005 +0000 - Since all but one line of all the nls/*/Makefile.am files are identical, move common bits to nls/localerules.in for easier updating and use automake includes to include in all the nls/*/Makefile.am files - Don't assume $(CPP) can take gcc-only -traditional flag - CPP process man pages as is done in the monolithic tree commit 19ba9d0df86c688319377467254b9ea9c4b0eccc Author: Keith Packard <keithp@keithp.com> Date: Sat Jul 9 06:01:49 2005 +0000 Clean up .cvsignore files commit f4bba6fa9b9ce637be7662754750054567e9250a Author: Adam Jackson <ajax@nwnk.net> Date: Sat Jul 9 02:53:29 2005 +0000 typo fix. i suck. commit 3305da61a61695e24c1ea11d3f59dddb52873d47 Author: Adam Jackson <ajax@nwnk.net> Date: Sat Jul 9 02:41:18 2005 +0000 Check for bigfont proto headers via pkgconfig (Arwed von Merkatz) commit afdae2e8ccb93de2987b5a5e850695af15ece7e0 Author: Keith Packard <keithp@keithp.com> Date: Fri Jul 8 07:11:56 2005 +0000 Create and use XlibConf.h to match modular build which needs XTHREADS defined when building extensions commit 86fa88dc594ca2093030acf5c84973ee2b33eb4c Author: Keith Packard <keithp@keithp.com> Date: Fri Jul 8 06:57:06 2005 +0000 Create and install XlibConf.h to provide external users of Xlibint.h the defines necessary to correctly use the library. Xlibint.h should #include this new file. Add a bunch of .cvsignore files commit 30f6ffedeaf899e699f0c6b14c9471ce9bcc430c Author: Chris Less <clee@c133.org> Date: Mon Jul 4 23:01:48 2005 +0000 Fixing bug #380 - add a man page for XQueryExtension, XListExtensions, and XFreeExtensionList. commit 55328bb6caabd37885cd19d7a5821ed425daf321 Author: Eric Anholt <anholt@freebsd.org> Date: Sun Jul 3 10:17:38 2005 +0000 Avoid a gmake-specific construct, and instead just write the name of the current directory into each Makefile.am. commit 726538ba21b631bfb0b8094a5546acdaf57379ff Author: Daniel Stone <daniel@fooishbar.org> Date: Sun Jul 3 07:37:33 2005 +0000 Fix more include paths; add dix-config.h to XKB code. commit 8c7677138e70e14eca0255f2168583f0ecc21994 Author: Daniel Stone <daniel@fooishbar.org> Date: Sun Jul 3 07:00:55 2005 +0000 Add Xtrans definitions (FONT_t, TRANS_CLIENT) to clean up warnings. Add XSERV_t, TRANS_SERVER, TRANS_REOPEN to quash warnings. Add #include <dix-config.h> or <xorg-config.h>, as appropriate, to all source files in the xserver/xorg tree, predicated on defines of HAVE_{DIX,XORG}_CONFIG_H. Change all Xfont includes to <X11/fonts/foo.h>. commit 197697c92a63091a4cc3cc04dcb7fa29d2655758 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jul 1 22:13:35 2005 +0000 Fix objdir != srcdir, as well as make distcheck. Don't attempt to create Compose.pre files; formatting fixes. Added if not already present. commit c162d60ad8f124563f94a2a266de59373936266c Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> Date: Wed Jun 22 22:46:31 2005 +0000 Apply these patches from Theo van Klaveren: lib-dmx.patch lib-FS.patch lib-X11.patch lib-XRes.patch lib-XScrnSaver.patch lib-xtrans.patch to make the libraries distcheck. commit 9ee8abdab03ea605a6327118ab7dacab6adf8876 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Jun 18 07:48:43 2005 +0000 Move Secure RPC flags from X11/configure.ac to xtrans/xtrans.m4 since multiple modules will need them commit 12afc57b7d455781eee305e9ed6a899ceec8729e Author: Daniel Stone <daniel@fooishbar.org> Date: Wed Jun 15 16:50:47 2005 +0000 Typo fix to locale/error/keysym location declarations. commit 9a895777e30762f61b98d25be3b5d8b1169baa17 Author: Daniel Stone <daniel@fooishbar.org> Date: Wed Jun 15 13:37:43 2005 +0000 Typo in ImUtil.h commit -- I AM CAPTAIN SKILL. commit add49285663684875ab7a5c58ec7a2cf8b775f67 Author: Daniel Stone <daniel@fooishbar.org> Date: Wed Jun 15 13:32:35 2005 +0000 Define locations for XErrorDB, XKeysymDB, and locale data in configure.ac. Add AC_DEFINE_DIR macro from autoconf-archive.cryp.to towards this end. Move ImUtil.h from src/ to include/X11/. commit 845dfc6b42b950890866ee4df27761e086f50dca Author: Daniel Stone <daniel@fooishbar.org> Date: Wed Jun 15 13:27:48 2005 +0000 Move ImUtil.h from src/ to include/X11/. Additionally, copy Cmap.h as a distribution file. commit bba117f0d98f62cfb060d0fab97b407a3a0bfda9 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Jun 10 14:11:36 2005 +0000 Remove pointless include of Xlib.h. Fix #include path to bigreqstr.h. commit 1a0de49da1274882bab05b0f7240936b37955e5c Author: Alexander Gottwald <ago@freedesktop.org> Date: Thu Jun 9 21:30:15 2005 +0000 Use $(srcdir) for Compose.pre and XLC_LOCALE.pre commit af4f0f302644ebfbb0ca9f4016a4aee85c973d37 Author: Alexander Gottwald <ago@freedesktop.org> Date: Thu Jun 9 15:55:33 2005 +0000 Replace <X11/transport.c> with <X11/Xtrans/transport.c> commit fd5f58e0baf692e34b9b622286f18762cc2500d3 Author: Alexander Gottwald <ago@freedesktop.org> Date: Thu Jun 9 15:52:02 2005 +0000 Replace <X11/Xtrans.h> with <X11/Xtrans/Xtrans.h> Copy Xtrans.h to exports/include/X11/Xtrans only commit 44538f9940f969d46c0e5e4b201c684cde2ba611 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sun Jun 5 03:29:33 2005 +0000 Port Imake flags to autoconf tests & --enable-* flags: HASSETUGID, HASGETRESUID, NO_XLOCALEDIR, HAS_SHM and XF86BIGFONT commit 588e30e9ec65fa6205a34be650b79d5e2243edec Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Jun 4 22:53:21 2005 +0000 Add --enable-secure-rpc flag and checks for needed functions for Secure RPC ("SUN-DES-1") authentication method commit a547afee2ef49cc41bbb67f9cff5a52a283c0854 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Jun 4 21:20:20 2005 +0000 Bug #3436 <https://bugs.freedesktop.org/show_bug.cgi?id=3436> Conndis.c uses incorrect type for args to XdmcpWrap() (Mike Harris - mharris@www.linux.org.uk) commit ca93c761559ae464189c7ea7cf11c6a6679f2431 Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sat May 28 01:02:32 2005 +0000 Don't use $< in explicit rules. This only works with GNU make. <https://bugs.freedesktop.org/show_bug.cgi?id=3383> commit 09ebb349359e3dd9131fa2fa8b07559faa173654 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sun May 22 19:05:11 2005 +0000 Convert man pages to long file names in lib/X11, lib/Xt, & lib/Xext commit 761219b1ef9befc350c8a35b6f96d047e5f008cc Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat May 21 23:07:48 2005 +0000 xtrans: Create autoconf macro XTRANS_CONNECTION_FLAGS to provide standard set of --enable flags for which transports to support and common place to update for required libraries for platforms that need certain libs for certain transports ICE: Add ICE_t #define required by Xtrans headers. Replace static defines of LOCALCONN & UNIXCONN with new XTRANS_CONNECTION_FLAGS macro. X11: Moved transport type checks to new macro XTRANS_CONNECTION_FLAGS in xtrans.m4 in xtrans module so they can be shared by all modules using xtrans. commit 4b1ba6eb975b547b808f4d5c8825a3261de5e02a Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat May 21 04:26:12 2005 +0000 Quote $ac_cv_search_* variables to prevent errors from test when they are set to "none required" (as happens on Solaris since dlopen is in libc) Comment out "override CC = gcc" line as it breaks builds with non-GNU makes, and its incorrect to force a specific compiler. Change LINK line from gcc to $(CC). commit 1d425d5e2092dd18a7dd599b37ed9af61cf59819 Author: Adam Jackson <ajax@nwnk.net> Date: Thu May 19 00:22:32 2005 +0000 revert last change, didn't do right thing at all, sorry for the noise commit 1b0c46c1ae61d751dd3ca96de8e2c3fe21c5f4f2 Author: Adam Jackson <ajax@nwnk.net> Date: Thu May 19 00:10:07 2005 +0000 Require automake 1.7 in AM_INIT_AUTOMAKE commit cd4657c175dbab6aaca36f18a0ca92c95b5567dd Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> Date: Tue May 17 22:32:09 2005 +0000 - Check for xproto as its CFLAGS are needed in the .pc file commit 46e8d8a65430dd87c10b066b5cff99a689c22241 Author: Egbert Eich <eich-at-freedesktop-dot-org> Date: Tue May 17 08:10:10 2005 +0000 gcc4 allows to check if sentinels are correct (a sentinel is the terminating element in a varargs list). A sentinel needs to be NULL, not 0 - which doesn't make a difference on 32bit but matters on 64bit. Furthermore it can be told that functions have a printf-like format string and argument list so that they can verify that both match. To use these features certain attributes need to be set - which are compiler specific. To do this we define macros which are expanded depending on the compiler version. For now we put those in include/Xfuncproto.h (the XFree86 DDX layer contains a file compiler.h which however is not visible outside the DDX) (Bugzilla #3268). commit 23198d2bfbf0049b2630235cd4d4a4ffba7ec6c1 Author: <ssp@aware-of-vacuity.boston.redhat.com> Date: Mon May 16 22:35:27 2005 +0000 Make Xdmcp unconditionally required, require various protocol modules. Mon May 16 17:48:03 2005 Søren Sandmann <sandmann@redhat.com> Check for kbproto if using XKB. Require xextproto rather than xextensions Remove the entries from the xlibs tree, as they are not relevant here. commit 8bd3aea84ce54b8b76a898f3ae00e2b499c14a5e Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> Date: Mon May 16 21:48:36 2005 +0000 Mon May 16 17:48:03 2005 Søren Sandmann <sandmann@redhat.com> Check for kbproto if using XKB. commit 9b1fa9ca3ed852ed40860f137511683f4bdae6fa Author: <ssp@aware-of-vacuity.boston.redhat.com> Date: Mon May 16 21:27:35 2005 +0000 Require xextproto rather than xextensions Remove the entries from the xlibs tree, as they are not relevant here. commit 7eee605e3aeed549d1053325a03027c5e8cbf71b Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> Date: Fri May 13 22:53:36 2005 +0000 - For now put xtrans in X11/Xtrans/X11, since libX11 is looking for it in <X11/...> - For Xcomposite and Xdamage, don't link the build system out of the xc tree - Link the public X11 headers into their own directory - Add links to XKeysymDB and XErrorDB - Add links to all the Xlib man pages - Add links to the lcUniConv subdirectory - Conditionally include config.h in Xlib source commit 6769ccda88caf27d1441d335ef2b318a047a612b Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Mar 21 04:58:21 2005 +0000 xc/lib/X11/ErrDes.c //bugs.freedesktop.org/show_bug.cgi?id=132) Patch #2168 (https://bugs.freedesktop.org/attachment.cgi?id=2168) Replace a couple of BUFSIZE uses with better values to check against. Fixes by Stuart Anderson <anderson@netsweng.com> commit 3b9e8ece93b916c55a82df53e85f097418edf471 Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Sat Mar 19 22:04:55 2005 +0000 xc/nls/Compose/iso8859-2 xc/nls/Compose/iso8859-3 xc/nls/Compose/iso8859-9 //bugs.freedesktop.org/show_bug.cgi?id=2592) attachment #2156 (https://bugs.freedesktop.org/attachment.cgi?id=2156) Fix a couple of typos in ISO8859-* Compose files ("asciicircum" instead "of asciicirum"). Patch by Matthias Hopf <mhopf@suse.de>. commit 0ce5950a08b9ab23ca8a32effdd40c421e92df84 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Mar 8 02:53:36 2005 +0000 Bugzilla Bug 2006 (https://bugs.freedesktop.org/show_bug.cgi?id=2006) Patch #2031 (https://bugs.freedesktop.org/attachment.cgi?id=2031) XEmbed client doesn't receive key events from XIM: Use | to set a bit, not &. Patch by Hidetoshi Tajima <hidetoshi.tajima@sun.com>. commit df341cd2f2f263f13323e8c0936ea8aa0d7fbba1 Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Tue Feb 1 03:12:28 2005 +0000 xc/nls/Compose/pt_BR.UTF-8 //bugs.freedesktop.org/show_bug.cgi?id=2400) attachment #1762 (https://bugs.freedesktop.org/attachment.cgi?id=1762): Fix build bustage caused by broken patch for brazillian locale support (see Bugzilla #1896). Patch by Kevin E. Martin <kem@freedesktop.org>. commit 483d3973f56dda51f9251d3ea808aaf7f3b48c10 Author: Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk> Date: Fri Jan 28 18:31:31 2005 +0000 cleaned up boundary-case handling for Uxxxx Unicode keysym notation commit f234188a4c1e6b655aef0e3957ccad20d4c5847f Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Wed Jan 19 01:53:55 2005 +0000 xc/nls/compose.dir xc/nls/locale.dir xc/nls/Compose/Imakefile xc/nls/Compose/pt_BR.UTF-8 xc/nls/XI18N_OBJS/Imakefile xc/nls/XI18N_OBJS/pt_BR.UTF-8 xc/nls/XLC_LOCALE/Imakefile xc/nls/XLC_LOCALE/pt_BR.UTF-8 //bugs.freedesktop.org/show_bug.cgi?id=1896) attachment #1675 (https://bugs.freedesktop.org/attachment.cgi?id=1675): Add support for pt_BR.UTF-8 locale. Patch by Gustavo Noronha Silva, Branden Robinson, Julien Lafon. commit 7448ea7ef425d35cfc31eb41d46f4d879774f376 Author: Egbert Eich <eich-at-freedesktop-dot-org> Date: Fri Jan 14 18:03:09 2005 +0000 Made some security enhancements: - no writing past end of buffer caused by bogus locale. - explicitely add a \0 character at end of string. (Bugzilla #2262) commit 5557d47fcf22a6f3adf327691158f2270e3d5094 Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Fri Jan 14 04:59:05 2005 +0000 xc/nls/compose.dir xc/nls/locale.alias xc/nls/locale.dir //bugs.freedesktop.org/show_bug.cgi?id=1830) attachment #1674 (https://bugs.freedesktop.org/attachment.cgi?id=1674): Adding support for the bs_BA (bs, bs_BA, bs_BA.iso88592, bs_BA.ISO-8859-2, bs_BA.ISO_8859-2, bs_BA.UTF-8) locale. Patch by Vedran Ljubovic <vljubovic@smartnet.ba>. commit 1fa3737f042f798fa11a9ff5b03f3b3ba3529824 Author: Egbert Eich <eich-at-freedesktop-dot-org> Date: Tue Jan 11 17:37:57 2005 +0000 'Normalize' locale names (ie. remove any '-' and '_' and convert to lower case after the <language>_<territory> part) before matching against locale.alias (Bugzilla #2262). This needs adequate testing that we don't accidentally introduce undesirable side effects. commit 642cd269f94a234aa470a1d43385bd42625d89a1 Author: Egbert Eich <eich-at-freedesktop-dot-org> Date: Tue Dec 14 08:59:20 2004 +0000 Removed #ifdef'ed out code together with the comment explaining why it was #ifdef'ed out. Fixed typo. Added comment to a changed that's been committed with one of the previous commits. commit a07ccae36e629741d2e48de7730114d30a975a41 Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sun Dec 12 08:42:50 2004 +0000 Fix missing XChangeProperty() prototype missing in synopsis section. commit c73adb1c8ad806c2f9f0ba32f4b449e7a871501c Author: Alexander Gottwald <ago at freedesktop dot org> Date: Wed Dec 8 13:42:01 2004 +0000 Bugzilla #1980 (https://bugs.freedesktop.org/show_bug.cgi?id=1980) Handle XERRORDB only on WIN32 platform commit d5e7ab194103e22fd6c5094aaa107d90210bb600 Author: Jim Gettys <jg@freedesktop.org> Date: Thu Dec 2 16:18:16 2004 +0000 fix comment to indicate additional possible mode. i bug 1756 reported by Owen Taylor. commit 03940d7330cb1bbf93d49c650aefb19de457da7c Author: Alexander Gottwald <ago at freedesktop dot org> Date: Wed Dec 1 13:06:55 2004 +0000 Bugzilla #1980, https://bugs.freedesktop.org/show_bug.cgi?id=1980 Make location of XErrorDB configurable commit 11a03ab908bfcfab8a3492684e8e9320e492d552 Author: Alexander Gottwald <ago at freedesktop dot org> Date: Wed Dec 1 12:42:17 2004 +0000 Bugzilla #1864, http://freedesktop.org/bugzilla/show_bug.cgi?id=1864 Initialize pointer to NULL to avoid freeing random memory commit f3d83ee153f42e8899b844377e6b842d93411e62 Author: Alexander Gottwald <ago@freedesktop.org> Date: Mon Nov 15 15:06:54 2004 +0000 Bufzilla #1802, http://freedesktop.org/bugzilla/show_bug.cgi?id=1802 Added mingw (Win32) port commit b798ea11911ac58a8e6e7d15a2a643b023859749 Author: Alexander Gottwald <ago at freedesktop dot org> Date: Mon Nov 15 13:29:56 2004 +0000 Bugzilla #1864, http://freedesktop.org/bugzilla/show_bug.cgi?id=1864 Initialize pointer to NULL to avoid freeing random memory commit 436108cd6c84053698e5ca629096f59b34f50c2a Author: Kristian Høgsberg <krh@redhat.com> Date: Thu Nov 11 15:37:01 2004 +0000 Fix #1818 commit bf2e6ef66ba55f90efa4a4ba8c8b6d3ec0d1531c Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Tue Nov 9 00:56:56 2004 +0000 xc/nls/compose.dir xc/nls/locale.alias xc/nls/locale.dir //freedesktop.org/bugzilla/show_bug.cgi?id=1544): Adding support for the si_LK (si, sinhala, si_LK, si_LK.UTF-8) locale. Patch by Anuradha Ratnaweera <gnu.slash.linux@gmail.com>. commit 443890ceefbd6dafe68e30d103ec4f9d316ed655 Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Fri Nov 5 00:58:49 2004 +0000 xc/nls/compose.dir xc/nls/locale.alias xc/nls/locale.dir Adding some of the major indic locales (bn_IN.UTF-8, bn_IN.utf8, gu_IN.UTF-8, gu_IN.utf8, pa_IN.UTF-8, pa_IN.utf8) to X. Patch by Leon Ho <llch@redhat.com>. commit af7467ec734321f127b957921cce7792902b6794 Author: Egbert Eich <eich-at-freedesktop-dot-org> Date: Mon Oct 18 17:29:03 2004 +0000 Correcting font encodings for GB18030, GBK and BIG5-HKSCS. Adding nls support for those encodings (Bugzilla 1573, James Su). commit 1b900b59cb24fe8be3db0d434b04d462c0eeb206 Author: Egbert Eich <eich-at-freedesktop-dot-xorg> Date: Mon Oct 18 14:21:45 2004 +0000 Made handling of DevelDrivers for x86-64 more conformant to other platforms. Compress all font encodings (Stefan Dirsch). Fixed warnings. Turn on forwarding XNSpotLocation event to XIM server in OffTheSpot and Root mode (bugzilla #1580, James Su). Added another compose key combination for the Euro symbol (Stefan Dirsch). Added support for UTF-8 in ja_JP, ko_KR and zh_TW locales (Mike Fabian). Changed default encoding for ru from KOI8-R to ISO8859-5 (Mike Fabian). This is the encoding that is also used by glibc. We may break other libcs - lets see who complains. Added explanation for DESTDIR to install to a different directory than /. Added some early bailouts to atiprobe if PCI structure pointer is NULL to prevent sig11. XV support doesn't depend on 2D acceleration any more. This patch removes this limitation from the NSC driver. This is a patch that I have committed to XFree86 a while ago but never ported over to X.Org. Matthieu Herrb contributed some build fixes. Fixing SetDPMSTimers() so that DPMS*Time == 0 disables the appropriate timer. This takes advantage of the fact that TimerSet() with a timeout argument 0 behaves like TimerCanel(). Use /dev/xconsole (named pipe) or devpts for system logger (Werner Fink). Create missing links for backward compatibility to XFree86 (Stefan Dirsch). Changed comment to mention xorg. Changed cursor for the 'kill' action from XC_draped_box to XC_Pirate. If you don't like it we can change it back (original author unkown). Added 'pic' to the man page rendering command pipeline (Werner Fink). Added missing return value (Stefan Dirsch, Roland Mainz) commit 1ba103c3cad2329db3a31f88d7798b913affc570 Author: Eric Anholt <anholt@freebsd.org> Date: Wed Oct 13 07:38:00 2004 +0000 Use attributes instead of pragmas for weak symbols on gcc 2.95 as well. Using pragmas may result in the symbols being undefined with big -O. (FreeBSD ports/69708, Masakazu HIGAKI <higamasa@dream.com>) commit d80237db627bf71ad5615ff4ba05e6ab436aa740 Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> Date: Fri Oct 8 22:57:56 2004 +0000 Fri Oct 8 18:53:11 2004 Soeren Sandmann <sandmann@redhat.com> Move iso10646 last so the "fallback" fonts will actually be used if they are better matches. commit d1f76d17ecf418396627b1a58319f2b9b255548a Author: Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk> Date: Sun Sep 26 22:54:57 2004 +0000 bug fix for previous patch commit 48932d9b71d10e15812f47d5b842ab6aa8dac625 Author: Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk> Date: Sun Sep 26 20:46:17 2004 +0000 The big keysym cleanup, to bring implementation in line with the recent revision of Appendix A of the protocol spec. (Markus Kuhn) commit 2e02a95dcc43dd3ec7bbaf4675ffb94f5074f543 Author: Egbert Eich <eich@freedesktop.org> Date: Wed Sep 15 09:05:22 2004 +0000 Unregistering events in XSelectInput() when unregistering IM filter callbacks may be a bad idea as others may be interested in this event. Removed the call to XSelectInput() altogether as we are in root window anyway (Lubos Lunak). Fix size of a variable that gets assigned the value of SmartScheduleTime (long) to long. This should help to prevent smart scheduler lockup on 64 bit systems due to overruns (Andreas Schwab). commit 2d3afb68a104a80a21ee622b9abb9c95e83505d3 Author: Egbert Eich <eich@freedesktop.org> Date: Tue Aug 31 11:37:03 2004 +0000 Fixed some lockups in XIM code when the application is running with multi thread support. These lockups occur deep down in XFilterEvents() which itself locks when another Xlib function gets called that also locks. This fixes two instances by separating those Xlib functions into an internal (non-locking) call and a locking wrapper that is used as an external function. There may be several other such instances therefore another more general patch is eventually required (Bugzilla #1182). commit e689746c8d0e21e9011e8b91a3071d235d3a2a74 Author: Kevin E Martin <kem@kem.org> Date: Thu Aug 19 06:48:06 2004 +0000 Fix header file to #ifdef the XKB keysyms when they are used. This fixes the X test suite build failure. commit d558a53a6f57eecfcaadce5141fe3a08860defcb Author: Keith Packard <keithp@keithp.com> Date: Sat Aug 14 07:12:36 2004 +0000 Use XLIB_SKIP_ARGB_VISUALS environment variable to disable all depth 32 visuals. Necessary to keep Flash from crashing. Must call ValidateGC/ValidatePicture on "real" GC/Picture to ensure pCompositeClip is set correctly. Need to take the composite clip from the "real" GC/Picture and turn it into the clientClip for the backing version. Adjust pixmap screen origin to account for drawable->x/y Change debugging output a bit (disabled by default) commit 85c2d81f299ed3444658011b7d6fb0a7ab8a6f55 Author: Alexander Gottwald <ago@freedesktop.org> Date: Fri Aug 13 16:28:19 2004 +0000 Set most significant bit to be a one. (Bug #1024, Kensuke Matsuzaki) Fix conversion from sjis and euc. (Bug #1024, Toshio Takabe) commit c4d56e4e288d4e48b84b021a61638f46e9a45e27 Author: Adam Jackson <ajax@nwnk.net> Date: Wed Aug 11 05:25:13 2004 +0000 Bug #372: Prevent a crash in XPolygonRegion when called with a bogus point count. Reported by Andreas Luik. commit 92487437173f600f208d825f65756d3ad14a4f7e Author: Kevin E Martin <kem@kem.org> Date: Mon Aug 9 22:37:22 2004 +0000 Fix install problem on platforms not using xorg.cf/xfree86.cf (Bug #339, Harold L. Hunt II, Alexander Gottwald). Fix crash when using X core font in zh_CN.UTF-8 locale (Bug #368, Yu Shao, David Dawes). Fix glXMakeCurrent(Dpy, None, NULL) crash (Bug #719, Adam Jackson). HP-PA build fix (Bug #828, Guy Martin, Paul Anderson). Fix SDK build for GATOS and Wacom driver (Bug #829, Bryan Stine). Fix attempt to read video ROM before enabling it (Bug #843, Ivan Kokshaysky, Mike A. Harris). Fix detection of primary adapter (Bug #843, Ivan Kokshaysky, Mike A. Harris). Clarify xset man page description of how to use the keyboard repeat rate settings (Bug #846, Mike A. Harris). Fix problem where print-screen key would get remapped to sys-req in certain keymaps, which broke GNOME printscreen functionality (Bug #847, Owen Taylor). Fix several render problems: - MMIO mode support - Hang on IGP chips - VT switching hang - 3D render corruption (Bug #922, Hui Yu). commit 55c2ee568e7d3903258286a13bdf96ce5348ffda Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Tue Jul 27 06:06:05 2004 +0000 - remove remaining AMOEBA references. - remove unused file. commit 6e884b12911eedfb003e90a3829ce66f7fc9cf2d Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> Date: Tue Jul 20 17:48:09 2004 +0000 Tue Jul 20 19:38:06 2004 Soeren Sandmann <sandmann@daimi.au.dk> Set font_data->xlfd_data to NULL after XFree(). (#837, patch from Bastien Nocera). Tue Jul 20 18:23:32 2004 Soeren Sandmann <sandmann@daimi.au.dk> Use /dev/urandom on Linux.(#761). commit 6f0bc97aa4e6de5a4b001f40ac10795cfdf09fc1 Author: Eric Anholt <anholt@freebsd.org> Date: Fri May 28 23:26:44 2004 +0000 Forced commit to note repocopy from xc/lib/XThrStub, will be connected to the build after this. commit aa7010c43ae9f39fb84b5ff155f76117c9e527a0 Author: Egbert Eich <eich@pdx.freedesktop.org> Date: Mon May 24 19:02:11 2004 +0000 Improve 'uniqueness' of authorization cookie sent by client for XDM-AUTHORIZATION-1. Old 'uniquness' consisted of the PID of the client, a time stamp (in seconds) and a number obtained by starting to count down from 0xffff. When a client did an XOpenDisplay() then execv'ed a child and did XOpenDisplay() again within the same second, the cookie was identical to the previous one (as the PID did not change but the static 'count down' variable was reinitialized) and thus refused by the server. commit 720702da29769d80ad1254d92edbad5b30f8a8da Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat May 22 03:47:42 2004 +0000 Bugzilla #658: XStringToKeysym fails for Greek_IOTAdiaeresis (Fixes VSW5 testcase XStringToKeysym-7 failure) commit 3aed873292424b497d9a7dcee2975b95bf5ac966 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Apr 24 23:39:25 2004 +0000 XOpenDisplay should try tcp connection if local connections fail (aka Sun bug id #4624183). Also includes fix from NetBSD Problem Report #25098 (Michael van Elst) (Xlib segfaults with IPv6 if compiled with HASXDMAUTH). xc/config/cf/sunLib.tmpl xc/lib/FS/Imakefile Add missing shared library dependencies for Solaris commit c6349f43193b74a3c09945f3093a871b0157ba47 Author: Egbert Eich <eich@freedesktop.org> Date: Fri Apr 23 18:42:09 2004 +0000 Merging XORG-CURRENT into trunk commit c3c4ddc682950a01b80825021f3e2503ab01ea7f Author: Kaleb Keithley <kaleb@freedesktop.org> Date: Tue Nov 25 19:28:07 2003 +0000 Initial revision commit dc4268a7dadc8da0d561757a68461246728613d3 Author: Kaleb Keithley <kaleb@freedesktop.org> Date: Fri Nov 14 16:48:47 2003 +0000 Initial revision commit deae12c6b683898f5213992d561a59d4ea889cca Author: Kaleb Keithley <kaleb@freedesktop.org> Date: Fri Nov 14 15:54:30 2003 +0000 R6.6 is the Xorg base-line �����������������������������������������������������������������������libX11-1.8.12/config.guess��������������������������������������������������������������������������0000755�0143106�0000012�00000143046�14763154146�010657� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2024 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2024-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see <https://www.gnu.org/licenses/>. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to <config-patches@gnu.org>. # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system '$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to <config-patches@gnu.org>." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # Just in case it came from the environment. GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still # use 'HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case $UNAME_SYSTEM in Linux|GNU|GNU/*) LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" #if defined(__ANDROID__) LIBC=android #else #include <features.h> #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu #elif defined(__LLVM_LIBC__) LIBC=llvm #else #include <stdarg.h> /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl #endif #endif #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" # Second heuristic to detect musl libc. if [ "$LIBC" = unknown ] && command -v ldd >/dev/null && ldd --version 2>&1 | grep -q ^musl; then LIBC=musl fi # If the system lacks a compiler, then just pick glibc. # We could probably try harder. if [ "$LIBC" = unknown ]; then LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case $UNAME_VERSION in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. GUESS=$machine-${os}${release}${abi-} ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE ;; *:SecBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE ;; *:MidnightBSD:*:*) GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE ;; *:ekkoBSD:*:*) GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE ;; *:SolidBSD:*:*) GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE ;; *:OS108:*:*) GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE ;; macppc:MirBSD:*:*) GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE ;; *:MirBSD:*:*) GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE ;; *:Sortix:*:*) GUESS=$UNAME_MACHINE-unknown-sortix ;; *:Twizzler:*:*) GUESS=$UNAME_MACHINE-unknown-twizzler ;; *:Redox:*:*) GUESS=$UNAME_MACHINE-unknown-redox ;; mips:OSF1:*.*) GUESS=mips-dec-osf1 ;; alpha:OSF1:*:*) # Reset EXIT trap before exiting to avoid spurious non-zero exit code. trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` GUESS=$UNAME_MACHINE-dec-osf$OSF_REL ;; Amiga*:UNIX_System_V:4.0:*) GUESS=m68k-unknown-sysv4 ;; *:[Aa]miga[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-amigaos ;; *:[Mm]orph[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-morphos ;; *:OS/390:*:*) GUESS=i370-ibm-openedition ;; *:z/VM:*:*) GUESS=s390-ibm-zvmoe ;; *:OS400:*:*) GUESS=powerpc-ibm-os400 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) GUESS=arm-acorn-riscix$UNAME_RELEASE ;; arm*:riscos:*:*|arm*:RISCOS:*:*) GUESS=arm-unknown-riscos ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) GUESS=hppa1.1-hitachi-hiuxmpp ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. case `(/bin/universe) 2>/dev/null` in att) GUESS=pyramid-pyramid-sysv3 ;; *) GUESS=pyramid-pyramid-bsd ;; esac ;; NILE*:*:*:dcosx) GUESS=pyramid-pyramid-svr4 ;; DRS?6000:unix:4.0:6*) GUESS=sparc-icl-nx6 ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) GUESS=sparc-icl-nx7 ;; esac ;; s390x:SunOS:*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL ;; sun4H:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-hal-solaris2$SUN_REL ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris2$SUN_REL ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) GUESS=i386-pc-auroraux$UNAME_RELEASE ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$SUN_ARCH-pc-solaris2$SUN_REL ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris3$SUN_REL ;; sun4*:SunOS:*:*) case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like '4.1.3-JL'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; sun3*:SunOS:*:*) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case `/bin/arch` in sun3) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac ;; aushp:SunOS:*:*) GUESS=sparc-auspex-sunos$UNAME_RELEASE ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) GUESS=m68k-milan-mint$UNAME_RELEASE ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) GUESS=m68k-hades-mint$UNAME_RELEASE ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) GUESS=m68k-unknown-mint$UNAME_RELEASE ;; m68k:machten:*:*) GUESS=m68k-apple-machten$UNAME_RELEASE ;; powerpc:machten:*:*) GUESS=powerpc-apple-machten$UNAME_RELEASE ;; RISC*:Mach:*:*) GUESS=mips-dec-mach_bsd4.3 ;; RISC*:ULTRIX:*:*) GUESS=mips-dec-ultrix$UNAME_RELEASE ;; VAX*:ULTRIX*:*:*) GUESS=vax-dec-ultrix$UNAME_RELEASE ;; 2020:CLIX:*:* | 2430:CLIX:*:*) GUESS=clipper-intergraph-clix$UNAME_RELEASE ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include <stdio.h> /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } GUESS=mips-mips-riscos$UNAME_RELEASE ;; Motorola:PowerMAX_OS:*:*) GUESS=powerpc-motorola-powermax ;; Motorola:*:4.3:PL8-*) GUESS=powerpc-harris-powermax ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) GUESS=powerpc-harris-powermax ;; Night_Hawk:Power_UNIX:*:*) GUESS=powerpc-harris-powerunix ;; m88k:CX/UX:7*:*) GUESS=m88k-harris-cxux7 ;; m88k:*:4*:R4*) GUESS=m88k-motorola-sysv4 ;; m88k:*:3*:R3*) GUESS=m88k-motorola-sysv3 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then GUESS=m88k-dg-dgux$UNAME_RELEASE else GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else GUESS=i586-dg-dgux$UNAME_RELEASE fi ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) GUESS=m88k-dolphin-sysv3 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 GUESS=m88k-motorola-sysv3 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) GUESS=m88k-tektronix-sysv3 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) GUESS=m68k-tektronix-bsd ;; *:IRIX*:*:*) IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` GUESS=mips-sgi-irix$IRIX_REL ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) GUESS=i386-ibm-aix ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include <sys/systemcfg.h> main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then GUESS=$SYSTEM_NAME else GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then GUESS=rs6000-ibm-aix3.2.4 else GUESS=rs6000-ibm-aix3.2 fi ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$IBM_ARCH-ibm-aix$IBM_REV ;; *:AIX:*:*) GUESS=rs6000-ibm-aix ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) GUESS=romp-ibm-bsd4.4 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) GUESS=rs6000-bull-bosx ;; DPX/2?00:B.O.S.:*:*) GUESS=m68k-bull-sysv3 ;; 9000/[34]??:4.3bsd:1.*:*) GUESS=m68k-hp-bsd ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) GUESS=m68k-hp-bsd4.4 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include <stdlib.h> #include <unistd.h> int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if test "$HP_ARCH" = hppa2.0w then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi GUESS=$HP_ARCH-hp-hpux$HPUX_REV ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` GUESS=ia64-hp-hpux$HPUX_REV ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include <unistd.h> int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } GUESS=unknown-hitachi-hiuxwe2 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) GUESS=hppa1.1-hp-bsd ;; 9000/8??:4.3bsd:*:*) GUESS=hppa1.0-hp-bsd ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) GUESS=hppa1.0-hp-mpeix ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) GUESS=hppa1.1-hp-osf ;; hp8??:OSF1:*:*) GUESS=hppa1.0-hp-osf ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then GUESS=$UNAME_MACHINE-unknown-osf1mk else GUESS=$UNAME_MACHINE-unknown-osf1 fi ;; parisc*:Lites*:*:*) GUESS=hppa1.1-hp-lites ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) GUESS=c1-convex-bsd ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) GUESS=c34-convex-bsd ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) GUESS=c38-convex-bsd ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) GUESS=c4-convex-bsd ;; CRAY*Y-MP:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=ymp-cray-unicos$CRAY_REL ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=t90-cray-unicos$CRAY_REL ;; CRAY*T3E:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=alphaev5-cray-unicosmk$CRAY_REL ;; CRAY*SV1:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=sv1-cray-unicos$CRAY_REL ;; *:UNICOS/mp:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=craynv-cray-unicosmp$CRAY_REL ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE ;; sparc*:BSD/OS:*:*) GUESS=sparc-unknown-bsdi$UNAME_RELEASE ;; *:BSD/OS:*:*) GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL ;; i*:CYGWIN*:*) GUESS=$UNAME_MACHINE-pc-cygwin ;; *:MINGW64*:*) GUESS=$UNAME_MACHINE-pc-mingw64 ;; *:MINGW*:*) GUESS=$UNAME_MACHINE-pc-mingw32 ;; *:MSYS*:*) GUESS=$UNAME_MACHINE-pc-msys ;; i*:PW*:*) GUESS=$UNAME_MACHINE-pc-pw32 ;; *:SerenityOS:*:*) GUESS=$UNAME_MACHINE-pc-serenity ;; *:Interix*:*) case $UNAME_MACHINE in x86) GUESS=i586-pc-interix$UNAME_RELEASE ;; authenticamd | genuineintel | EM64T) GUESS=x86_64-unknown-interix$UNAME_RELEASE ;; IA64) GUESS=ia64-unknown-interix$UNAME_RELEASE ;; esac ;; i*:UWIN*:*) GUESS=$UNAME_MACHINE-pc-uwin ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) GUESS=x86_64-pc-cygwin ;; prep*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=powerpcle-unknown-solaris2$SUN_REL ;; *:GNU:*:*) # the GNU system GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL ;; *:GNU/*:*:*) # other systems with GNU libc and userland GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-pc-managarm-mlibc" ;; *:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) set_cc_for_build CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then ABI=64 sed 's/^ //' << EOF > "$dummy.c" #ifdef __ARM_EABI__ #ifdef __ARM_PCS_VFP ABI=eabihf #else ABI=eabi #endif #endif EOF cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` eval "$cc_set_abi" case $ABI in eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; esac fi GUESS=$CPU-unknown-linux-$LIBCABI ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi ;; avr32*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; cris:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; crisv32:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; e2k:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; frv:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; hexagon:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:Linux:*:*) GUESS=$UNAME_MACHINE-pc-linux-$LIBC ;; ia64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; kvx:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; kvx:cos:*:*) GUESS=$UNAME_MACHINE-unknown-cos ;; kvx:mbr:*:*) GUESS=$UNAME_MACHINE-unknown-mbr ;; loongarch32:Linux:*:* | loongarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m68*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; openrisc*:Linux:*:*) GUESS=or1k-unknown-linux-$LIBC ;; or32:Linux:*:* | or1k*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; padre:Linux:*:*) GUESS=sparc-unknown-linux-$LIBC ;; parisc64:Linux:*:* | hppa64:Linux:*:*) GUESS=hppa64-unknown-linux-$LIBC ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; *) GUESS=hppa-unknown-linux-$LIBC ;; esac ;; ppc64:Linux:*:*) GUESS=powerpc64-unknown-linux-$LIBC ;; ppc:Linux:*:*) GUESS=powerpc-unknown-linux-$LIBC ;; ppc64le:Linux:*:*) GUESS=powerpc64le-unknown-linux-$LIBC ;; ppcle:Linux:*:*) GUESS=powerpcle-unknown-linux-$LIBC ;; riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; s390:Linux:*:* | s390x:Linux:*:*) GUESS=$UNAME_MACHINE-ibm-linux-$LIBC ;; sh64*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sh*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sparc:Linux:*:* | sparc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; tile*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; vax:Linux:*:*) GUESS=$UNAME_MACHINE-dec-linux-$LIBC ;; x86_64:Linux:*:*) set_cc_for_build CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then ABI=64 sed 's/^ //' << EOF > "$dummy.c" #ifdef __i386__ ABI=x86 #else #ifdef __ILP32__ ABI=x32 #endif #endif EOF cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` eval "$cc_set_abi" case $ABI in x86) CPU=i686 ;; x32) LIBCABI=${LIBC}x32 ;; esac fi GUESS=$CPU-pc-linux-$LIBCABI ;; xtensa*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. GUESS=i386-sequent-sysv4 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) # If we were able to find 'uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; i*86:XTS-300:*:STOP) GUESS=$UNAME_MACHINE-unknown-stop ;; i*86:atheos:*:*) GUESS=$UNAME_MACHINE-unknown-atheos ;; i*86:syllable:*:*) GUESS=$UNAME_MACHINE-pc-syllable ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) GUESS=i386-unknown-lynxos$UNAME_RELEASE ;; i*86:*DOS:*:*) GUESS=$UNAME_MACHINE-pc-msdosdjgpp ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL elif /bin/uname -X 2>/dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv32 fi ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. GUESS=i586-pc-msdosdjgpp ;; Intel:Mach:3*:*) GUESS=i386-pc-mach3 ;; paragon:*:*:*) GUESS=i860-intel-osf1 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi ;; mini*:CTIX:SYS*5:*) # "miniframe" GUESS=m68010-convergent-sysv ;; mc68k:UNIX:SYSTEM5:3.51m) GUESS=m68k-convergent-sysv ;; M680?0:D-NIX:5.3:*) GUESS=m68k-diab-dnix ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) GUESS=m68k-unknown-lynxos$UNAME_RELEASE ;; mc68030:UNIX_System_V:4.*:*) GUESS=m68k-atari-sysv4 ;; TSUNAMI:LynxOS:2.*:*) GUESS=sparc-unknown-lynxos$UNAME_RELEASE ;; rs6000:LynxOS:2.*:*) GUESS=rs6000-unknown-lynxos$UNAME_RELEASE ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) GUESS=powerpc-unknown-lynxos$UNAME_RELEASE ;; SM[BE]S:UNIX_SV:*:*) GUESS=mips-dde-sysv$UNAME_RELEASE ;; RM*:ReliantUNIX-*:*:*) GUESS=mips-sni-sysv4 ;; RM*:SINIX-*:*:*) GUESS=mips-sni-sysv4 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` GUESS=$UNAME_MACHINE-sni-sysv4 else GUESS=ns32k-sni-sysv fi ;; PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort # says <Richard.M.Bartel@ccMail.Census.GOV> GUESS=i586-unisys-sysv4 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes <hewes@openmarket.com>. # How about differentiating between stratus architectures? -djm GUESS=hppa1.1-stratus-sysv4 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. GUESS=i860-stratus-sysv4 ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. GUESS=$UNAME_MACHINE-stratus-vos ;; *:VOS:*:*) # From Paul.Green@stratus.com. GUESS=hppa1.1-stratus-vos ;; mc68*:A/UX:*:*) GUESS=m68k-apple-aux$UNAME_RELEASE ;; news*:NEWS-OS:6*:*) GUESS=mips-sony-newsos6 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then GUESS=mips-nec-sysv$UNAME_RELEASE else GUESS=mips-unknown-sysv$UNAME_RELEASE fi ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. GUESS=powerpc-be-beos ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. GUESS=powerpc-apple-beos ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. GUESS=i586-pc-beos ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; ppc:Haiku:*:*) # Haiku running on Apple PowerPC GUESS=powerpc-apple-haiku ;; *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) GUESS=$UNAME_MACHINE-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE ;; SX-5:SUPER-UX:*:*) GUESS=sx5-nec-superux$UNAME_RELEASE ;; SX-6:SUPER-UX:*:*) GUESS=sx6-nec-superux$UNAME_RELEASE ;; SX-7:SUPER-UX:*:*) GUESS=sx7-nec-superux$UNAME_RELEASE ;; SX-8:SUPER-UX:*:*) GUESS=sx8-nec-superux$UNAME_RELEASE ;; SX-8R:SUPER-UX:*:*) GUESS=sx8r-nec-superux$UNAME_RELEASE ;; SX-ACE:SUPER-UX:*:*) GUESS=sxace-nec-superux$UNAME_RELEASE ;; Power*:Rhapsody:*:*) GUESS=powerpc-apple-rhapsody$UNAME_RELEASE ;; *:Rhapsody:*:*) GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE ;; arm64:Darwin:*:*) GUESS=aarch64-apple-darwin$UNAME_RELEASE ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE ;; *:QNX:*:4*) GUESS=i386-pc-qnx ;; NEO-*:NONSTOP_KERNEL:*:*) GUESS=neo-tandem-nsk$UNAME_RELEASE ;; NSE-*:NONSTOP_KERNEL:*:*) GUESS=nse-tandem-nsk$UNAME_RELEASE ;; NSR-*:NONSTOP_KERNEL:*:*) GUESS=nsr-tandem-nsk$UNAME_RELEASE ;; NSV-*:NONSTOP_KERNEL:*:*) GUESS=nsv-tandem-nsk$UNAME_RELEASE ;; NSX-*:NONSTOP_KERNEL:*:*) GUESS=nsx-tandem-nsk$UNAME_RELEASE ;; *:NonStop-UX:*:*) GUESS=mips-compaq-nonstopux ;; BS2000:POSIX*:*:*) GUESS=bs2000-siemens-sysv ;; DS/*:UNIX_System_V:*:*) GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "${cputype-}" = 386; then UNAME_MACHINE=i386 elif test "x${cputype-}" != x; then UNAME_MACHINE=$cputype fi GUESS=$UNAME_MACHINE-unknown-plan9 ;; *:TOPS-10:*:*) GUESS=pdp10-unknown-tops10 ;; *:TENEX:*:*) GUESS=pdp10-unknown-tenex ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) GUESS=pdp10-dec-tops20 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) GUESS=pdp10-xkl-tops20 ;; *:TOPS-20:*:*) GUESS=pdp10-unknown-tops20 ;; *:ITS:*:*) GUESS=pdp10-unknown-its ;; SEI:*:*:SEIUX) GUESS=mips-sei-seiux$UNAME_RELEASE ;; *:DragonFly:*:*) DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case $UNAME_MACHINE in A*) GUESS=alpha-dec-vms ;; I*) GUESS=ia64-dec-vms ;; V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) GUESS=i386-pc-xenix ;; i*86:skyos:*:*) SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL ;; i*86:rdos:*:*) GUESS=$UNAME_MACHINE-pc-rdos ;; i*86:Fiwix:*:*) GUESS=$UNAME_MACHINE-pc-fiwix ;; *:AROS:*:*) GUESS=$UNAME_MACHINE-unknown-aros ;; x86_64:VMkernel:*:*) GUESS=$UNAME_MACHINE-unknown-esx ;; amd64:Isilon\ OneFS:*:*) GUESS=x86_64-unknown-onefs ;; *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; *:Ironclad:*:*) GUESS=$UNAME_MACHINE-unknown-ironclad ;; esac # Do we have a guess based on uname results? if test "x$GUESS" != x; then echo "$GUESS" exit fi # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" <<EOF #ifdef _SEQUENT_ #include <sys/types.h> #include <sys/utsname.h> #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include <signal.h> #if defined(_SIZE_T_) || defined(SIGLOST) #include <sys/utsname.h> #endif #endif #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include <sys/param.h> printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include <sys/param.h> #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <<EOF NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize the system type. Please install a C compiler and try again. EOF ;; esac cat >&2 <<EOF This script (version $timestamp), has failed to recognize the operating system you are using. If your script is old, overwrite *all* copies of config.guess and config.sub with the latest versions from: https://git.savannah.gnu.org/cgit/config.git/plain/config.guess and https://git.savannah.gnu.org/cgit/config.git/plain/config.sub EOF our_year=`echo $timestamp | sed 's,-.*,,'` thisyear=`date +%Y` # shellcheck disable=SC2003 script_age=`expr "$thisyear" - "$our_year"` if test "$script_age" -lt 3 ; then cat >&2 <<EOF If $0 has already been updated, send the following data and any information you think might be pertinent to config-patches@gnu.org to provide the necessary information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libX11-1.8.12/x11.pc.in�����������������������������������������������������������������������������0000644�0143106�0000012�00000000601�14763154126�007664� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ xthreadlib=@XTHREADLIB@ Name: X11 Description: X Library URL: https://gitlab.freedesktop.org/xorg/lib/libx11/ Version: @PACKAGE_VERSION@ Requires: xproto @XKBPROTO_REQUIRES@ Requires.private: @X11_EXTRA_DEPS@ Cflags: -I${includedir} @XTHREAD_CFLAGS@ Libs: -L${libdir} -lX11 Libs.private: @XTHREADLIB@ �������������������������������������������������������������������������������������������������������������������������������libX11-1.8.12/configure�����������������������������������������������������������������������������0000755�0143106�0000012�00002723020�14763154145�010243� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.72 for libX11 1.8.12. # # Report bugs to <https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues>. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case e in #( e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else case e in #( e) exitcode=1; echo positional parameters were not saved. ;; esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else case e in #( e) as_have_required=no ;; esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi ;; esac fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi ;; esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' t clear :clear s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated SHELL=${CONFIG_SHELL-/bin/sh} as_awk_strverscmp=' # Use only awk features that work with 7th edition Unix awk (1978). # My, what an old awk you have, Mr. Solaris! END { while (length(v1) && length(v2)) { # Set d1 to be the next thing to compare from v1, and likewise for d2. # Normally this is a single character, but if v1 and v2 contain digits, # compare them as integers and fractions as strverscmp does. if (v1 ~ /^[0-9]/ && v2 ~ /^[0-9]/) { # Split v1 and v2 into their leading digit string components d1 and d2, # and advance v1 and v2 past the leading digit strings. for (len1 = 1; substr(v1, len1 + 1) ~ /^[0-9]/; len1++) continue for (len2 = 1; substr(v2, len2 + 1) ~ /^[0-9]/; len2++) continue d1 = substr(v1, 1, len1); v1 = substr(v1, len1 + 1) d2 = substr(v2, 1, len2); v2 = substr(v2, len2 + 1) if (d1 ~ /^0/) { if (d2 ~ /^0/) { # Compare two fractions. while (d1 ~ /^0/ && d2 ~ /^0/) { d1 = substr(d1, 2); len1-- d2 = substr(d2, 2); len2-- } if (len1 != len2 && ! (len1 && len2 && substr(d1, 1, 1) == substr(d2, 1, 1))) { # The two components differ in length, and the common prefix # contains only leading zeros. Consider the longer to be less. d1 = -len1 d2 = -len2 } else { # Otherwise, compare as strings. d1 = "x" d1 d2 = "x" d2 } } else { # A fraction is less than an integer. exit 1 } } else { if (d2 ~ /^0/) { # An integer is greater than a fraction. exit 2 } else { # Compare two integers. d1 += 0 d2 += 0 } } } else { # The normal case, without worrying about digits. d1 = substr(v1, 1, 1); v1 = substr(v1, 2) d2 = substr(v2, 1, 1); v2 = substr(v2, 2) } if (d1 < d2) exit 1 if (d1 > d2) exit 2 } # Beware Solaris /usr/xgp4/bin/awk (at least through Solaris 10), # which mishandles some comparisons of empty strings to integers. if (length(v2)) exit 1 if (length(v1)) exit 2 } ' test -n "$DJDIR" || exec 7<&0 </dev/null exec 6>&1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libX11' PACKAGE_TARNAME='libX11' PACKAGE_VERSION='1.8.12' PACKAGE_STRING='libX11 1.8.12' PACKAGE_BUGREPORT='https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues' PACKAGE_URL='' ac_unique_file="Makefile.am" # Factoring default headers for most tests. ac_includes_default="\ #include <stddef.h> #ifdef HAVE_STDIO_H # include <stdio.h> #endif #ifdef HAVE_STDLIB_H # include <stdlib.h> #endif #ifdef HAVE_STRING_H # include <string.h> #endif #ifdef HAVE_INTTYPES_H # include <inttypes.h> #endif #ifdef HAVE_STDINT_H # include <stdint.h> #endif #ifdef HAVE_STRINGS_H # include <strings.h> #endif #ifdef HAVE_SYS_TYPES_H # include <sys/types.h> #endif #ifdef HAVE_SYS_STAT_H # include <sys/stat.h> #endif #ifdef HAVE_UNISTD_H # include <unistd.h> #endif" ac_header_c_list= ac_func_c_list= enable_year2038=no ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS XTMALLOC_ZERO_CFLAGS XMALLOC_ZERO_CFLAGS MALLOC_ZERO_CFLAGS XERRORDB XKEYSYMDB locales X11_LOCALEDIR XLOCALEDIR X11_LOCALELIBDIR XLOCALELIBDIR X11_LOCALEDATADIR XLOCALEDATADIR X11_LIBS X11_CFLAGS X11_LIBDIR X11_DATADIR MAKE_LINT_LIB_FALSE MAKE_LINT_LIB_TRUE LINTLIB LINT_FALSE LINT_TRUE LINT_FLAGS LINT XKBPROTO_REQUIRES XKB_FALSE XKB_TRUE BIGFONT_LIBS BIGFONT_CFLAGS XLOCALE_FALSE XLOCALE_TRUE XCMS_FALSE XCMS_TRUE KEYSYMDEFS USE_THREAD_LIBS XTHREAD_CFLAGS XTHREADLIB LAUNCHD OS2_FALSE OS2_TRUE WCHAR32 LIBOBJS XLIB_LOADABLE_I18N_FALSE XLIB_LOADABLE_I18N_TRUE I18N_MODULE_LIBS X11_EXTRA_DEPS EXEEXT_FOR_BUILD LDFLAGS_FOR_BUILD CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD CC_FOR_BUILD HAVE_PERL_FALSE HAVE_PERL_TRUE PERL TRADITIONALCPPFLAGS RAWCPPFLAGS RAWCPP CPP HAVE_STYLESHEETS_FALSE HAVE_STYLESHEETS_TRUE XSL_STYLESHEET STYLESHEET_SRCDIR XORG_SGML_PATH HAVE_XSLTPROC_FALSE HAVE_XSLTPROC_TRUE XSLTPROC HAVE_FOP_FALSE HAVE_FOP_TRUE FOP HAVE_XMLTO_FALSE HAVE_XMLTO_TRUE HAVE_XMLTO_TEXT_FALSE HAVE_XMLTO_TEXT_TRUE XMLTO ENABLE_SPECS_FALSE ENABLE_SPECS_TRUE MAN_SUBSTS XORG_MAN_PAGE ADMIN_MAN_DIR DRIVER_MAN_DIR MISC_MAN_DIR FILE_MAN_DIR LIB_MAN_DIR APP_MAN_DIR ADMIN_MAN_SUFFIX DRIVER_MAN_SUFFIX MISC_MAN_SUFFIX FILE_MAN_SUFFIX LIB_MAN_SUFFIX APP_MAN_SUFFIX INSTALL_CMD PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG CHANGELOG_CMD STRICT_CFLAGS CWARNFLAGS BASE_CFLAGS LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP FILECMD LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED LIBTOOL am__xargs_n am__rm_f_notfound AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_silent_rules enable_shared enable_static enable_pic with_pic enable_fast_install enable_aix_soname with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_largefile enable_selective_werror enable_strict_compilation enable_specs with_xmlto with_fop with_xsltproc with_perl enable_unix_transport enable_tcp_transport enable_ipv6 enable_local_transport enable_loadable_i18n enable_loadable_xcursor enable_thread_safety_constructor with_launchd enable_xthreads with_keysymdefdir enable_xcms enable_xlocale enable_xlocaledir enable_xf86bigfont enable_xkb enable_composecache with_lint enable_lint_library with_locale_lib_dir enable_malloc0returnsnull enable_year2038 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS LT_SYS_LIBRARY_PATH PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR XMLTO FOP XSLTPROC CPP PERL BIGFONT_CFLAGS BIGFONT_LIBS LINT LINT_FLAGS X11_CFLAGS X11_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: '$ac_option' Try '$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF 'configure' configures libX11 1.8.12 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, 'make install' will install all the files in '$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify an installation prefix other than '$ac_default_prefix' using '--prefix', for instance '--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/libX11] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of libX11 1.8.12:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --enable-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --disable-libtool-lock avoid locking (might break parallel builds) --disable-largefile omit support for large files --disable-selective-werror Turn off selective compiler errors. (default: enabled) --enable-strict-compilation Enable all warnings from compiler and make them errors (default: disabled) --enable-specs Enable building the specs (default: yes) --enable-unix-transport Enable UNIX domain socket transport --enable-tcp-transport Enable TCP socket transport --enable-ipv6 Enable IPv6 support --enable-local-transport Enable os-specific local transport --enable-loadable-i18n Controls loadable i18n module support --disable-loadable-xcursor Controls loadable xcursor library support --disable-thread-safety-constructor Controls mandatory thread safety support --disable-xthreads Disable Xlib support for Multithreading --disable-xcms Disable Xlib support for CMS *EXPERIMENTAL* --disable-xlocale Disable Xlib locale implementation *EXPERIMENTAL* --enable-xlocaledir Enable XLOCALEDIR environment variable support --disable-xf86bigfont Disable XF86BigFont extension support --disable-xkb Disable XKB support *EXPERIMENTAL* --disable-composecache Disable compose table cache support --enable-lint-library Create lint library (default: disabled) --enable-malloc0returnsnull assume malloc(0) can return NULL (default: yes) --enable-year2038 support timestamps after 2038 Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-xmlto Use xmlto to regenerate documentation (default: auto) --with-fop Use fop to regenerate documentation (default: no) --with-xsltproc Use xsltproc for the transformation of XML documents (default: auto) --with-perl Use perl for extracting information from files (default: auto) --with-launchd Build with support for Apple's launchd (default: auto) --with-keysymdefdir=DIR The location of keysymdef.h (defaults to xproto include dir) --with-lint Use a lint-style source code checker (default: disabled) --with-locale-lib-dir=DIR Directory where locale libraries files are installed (default: $libdir/X11/locale) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> LIBS libraries to pass to the linker, e.g. -l<library> CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> LT_SYS_LIBRARY_PATH User-defined run-time library search path. PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path XMLTO Path to xmlto command FOP Path to fop command XSLTPROC Path to xsltproc command CPP C preprocessor PERL Path to perl command BIGFONT_CFLAGS C compiler flags for BIGFONT, overriding pkg-config BIGFONT_LIBS linker flags for BIGFONT, overriding pkg-config LINT Path to a lint-style command LINT_FLAGS Flags for the lint-style command X11_CFLAGS C compiler flags for X11, overriding pkg-config X11_LIBS linker flags for X11, overriding pkg-config Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to <https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues>. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF libX11 configure 1.8.12 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else case e in #( e) eval "$3=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case <limits.h> declares $2. For example, HP-UX 11i <limits.h> declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (void); below. */ #include <limits.h> #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (void); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else case e in #( e) eval "$3=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR # ------------------------------------------------------------------ # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. ac_fn_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 printf %s "checking whether $as_decl_name is declared... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` eval ac_save_FLAGS=\$$6 as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else case e in #( e) eval "$3=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext eval $6=\$ac_save_FLAGS ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_check_decl # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES # ---------------------------------------------------- # Tries to find if the field MEMBER exists in type AGGR, after including # INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 printf %s "checking for $2.$3... " >&6; } if eval test \${$4+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main (void) { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main (void) { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" else case e in #( e) eval "$4=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi eval ac_res=\$$4 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) eval "$3=yes" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that # executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5 printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status ;; esac fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by libX11 $as_me 1.8.12, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See 'config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include <stddef.h> #include <stdarg.h> struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (char **p, int i) { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* C89 style stringification. */ #define noexpand_stringify(a) #a const char *stringified = noexpand_stringify(arbitrary+token=sequence); /* C89 style token pasting. Exercises some of the corner cases that e.g. old MSVC gets wrong, but not very hard. */ #define noexpand_concat(a,b) a##b #define expand_concat(a,b) noexpand_concat(a,b) extern int vA; extern int vbee; #define aye A #define bee B int *pvA = &expand_concat(v,aye); int *pvbee = &noexpand_concat(v,bee); /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' /* Does the compiler advertise C99 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif // See if C++-style comments work. #include <stdbool.h> extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Work around memory leak warnings. free (ia); // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' /* Does the compiler advertise C11 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" as_fn_append ac_func_c_list " getpagesize HAVE_GETPAGESIZE" # Auxiliary files required by this configure script. ac_aux_files="ltmain.sh missing install-sh compile config.guess config.sub" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; esac fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers src/config.h include/X11/XlibConf.h" # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Set common system defines for POSIX extensions, such as _GNU_SOURCE # Must be called before any macros that run the compiler (like LT_INIT) # to avoid autoconf errors. # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. # So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an '-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else case e in #( e) ac_file='' ;; esac fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See 'config.log' for more details" "$LINENO" 5; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) # catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will # work properly (i.e., refer to 'conftest.exe'), while it won't with # 'rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else case e in #( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdio.h> int main (void) { FILE *f = fopen ("conftest.out", "w"); if (!f) return 1; return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use '--host'. See 'config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext \ conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else case e in #( e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 ;; esac fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } if test ${ac_cv_safe_to_define___extensions__+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 $ac_includes_default int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_safe_to_define___extensions__=yes else case e in #( e) ac_cv_safe_to_define___extensions__=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } if test ${ac_cv_should_define__xopen_source+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_should_define__xopen_source=no if test $ac_cv_header_wchar_h = yes then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <wchar.h> mbstate_t x; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE 500 #include <wchar.h> mbstate_t x; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_should_define__xopen_source=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h if test $ac_cv_header_minix_config_h = yes then : MINIX=yes printf "%s\n" "#define _MINIX 1" >>confdefs.h printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h else case e in #( e) MINIX= ;; esac fi if test $ac_cv_safe_to_define___extensions__ = yes then : printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h fi if test $ac_cv_should_define__xopen_source = yes then : printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h fi # Initialize Automake am__api_version='1.17' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir ;; esac fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 printf %s "checking whether sleep supports fractional seconds... " >&6; } if test ${am_cv_sleep_fractional_seconds+y} then : printf %s "(cached) " >&6 else case e in #( e) if sleep 0.001 2>/dev/null then : am_cv_sleep_fractional_seconds=yes else case e in #( e) am_cv_sleep_fractional_seconds=no ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 printf %s "checking filesystem timestamp resolution... " >&6; } if test ${am_cv_filesystem_timestamp_resolution+y} then : printf %s "(cached) " >&6 else case e in #( e) # Default to the worst case. am_cv_filesystem_timestamp_resolution=2 # Only try to go finer than 1 sec if sleep can do it. # Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, # - 1 sec is not much of a win compared to 2 sec, and # - it takes 2 seconds to perform the test whether 1 sec works. # # Instead, just use the default 2s on platforms that have 1s resolution, # accept the extra 1s delay when using $sleep in the Automake tests, in # exchange for not incurring the 2s delay for running the test for all # packages. # am_try_resolutions= if test "$am_cv_sleep_fractional_seconds" = yes; then # Even a millisecond often causes a bunch of false positives, # so just try a hundredth of a second. The time saved between .001 and # .01 is not terribly consequential. am_try_resolutions="0.01 0.1 $am_try_resolutions" fi # In order to catch current-generation FAT out, we must *modify* files # that already exist; the *creation* timestamp is finer. Use names # that make ls -t sort them differently when they have equal # timestamps than when they have distinct timestamps, keeping # in mind that ls -t prints the *newest* file first. rm -f conftest.ts? : > conftest.ts1 : > conftest.ts2 : > conftest.ts3 # Make sure ls -t actually works. Do 'set' in a subshell so we don't # clobber the current shell's arguments. (Outer-level square brackets # are removed by m4; they're present so that m4 does not expand # <dollar><star>; be careful, easy to get confused.) if ( set X `ls -t conftest.ts[12]` && { test "$*" != "X conftest.ts1 conftest.ts2" || test "$*" != "X conftest.ts2 conftest.ts1"; } ); then :; else # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "ls -t produces unexpected output. Make sure there is not a broken ls alias in your environment. See 'config.log' for more details" "$LINENO" 5; } fi for am_try_res in $am_try_resolutions; do # Any one fine-grained sleep might happen to cross the boundary # between two values of a coarser actual resolution, but if we do # two fine-grained sleeps in a row, at least one of them will fall # entirely within a coarse interval. echo alpha > conftest.ts1 sleep $am_try_res echo beta > conftest.ts2 sleep $am_try_res echo gamma > conftest.ts3 # We assume that 'ls -t' will make use of high-resolution # timestamps if the operating system supports them at all. if (set X `ls -t conftest.ts?` && test "$2" = conftest.ts3 && test "$3" = conftest.ts2 && test "$4" = conftest.ts1); then # # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, # because we don't need to test make. make_ok=true if test $am_try_res != 1; then # But if we've succeeded so far with a subsecond resolution, we # have one more thing to check: make. It can happen that # everything else supports the subsecond mtimes, but make doesn't; # notably on macOS, which ships make 3.81 from 2006 (the last one # released under GPLv2). https://bugs.gnu.org/68808 # # We test $MAKE if it is defined in the environment, else "make". # It might get overridden later, but our hope is that in practice # it does not matter: it is the system "make" which is (by far) # the most likely to be broken, whereas if the user overrides it, # probably they did so with a better, or at least not worse, make. # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html # # Create a Makefile (real tab character here): rm -f conftest.mk echo 'conftest.ts1: conftest.ts2' >conftest.mk echo ' touch conftest.ts2' >>conftest.mk # # Now, running # touch conftest.ts1; touch conftest.ts2; make # should touch ts1 because ts2 is newer. This could happen by luck, # but most often, it will fail if make's support is insufficient. So # test for several consecutive successes. # # (We reuse conftest.ts[12] because we still want to modify existing # files, not create new ones, per above.) n=0 make=${MAKE-make} until test $n -eq 3; do echo one > conftest.ts1 sleep $am_try_res echo two > conftest.ts2 # ts2 should now be newer than ts1 if $make -f conftest.mk | grep 'up to date' >/dev/null; then make_ok=false break # out of $n loop fi n=`expr $n + 1` done fi # if $make_ok; then # Everything we know to check worked out, so call this resolution good. am_cv_filesystem_timestamp_resolution=$am_try_res break # out of $am_try_res loop fi # Otherwise, we'll go on to check the next resolution. fi done rm -f conftest.ts? # (end _am_filesystem_timestamp_resolution) ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; } # This check should not be cached, as it may vary across builds of # different projects. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). am_build_env_is_sane=no am_has_slept=no rm -f conftest.file for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi test "$2" = conftest.file ); then am_build_env_is_sane=yes break fi # Just in case. sleep "$am_cv_filesystem_timestamp_resolution" am_has_slept=yes done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 printf "%s\n" "$am_build_env_is_sane" >&6; } if test "$am_build_env_is_sane" = no; then as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 then : else case e in #( e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & am_sleep_pid=$! ;; esac fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was 's,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ *'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS ;; esac fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use plain mkdir -p, # in the hope it doesn't have the bugs of ancient mkdir. MKDIR_P='mkdir -p' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else case e in #( e) cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make ;; esac fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi AM_DEFAULT_VERBOSITY=1 # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else case e in #( e) if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } AM_BACKSLASH='\' am__rm_f_notfound= if (rm -f && rm -fr && rm -rf) 2>/dev/null then : else case e in #( e) am__rm_f_notfound='""' ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 printf %s "checking xargs -n works... " >&6; } if test ${am_cv_xargs_n_works+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 3" then : am_cv_xargs_n_works=yes else case e in #( e) am_cv_xargs_n_works=no ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 printf "%s\n" "$am_cv_xargs_n_works" >&6; } if test "$am_cv_xargs_n_works" = yes then : am__xargs_n='xargs -n' else case e in #( e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' ;; esac fi if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='libX11' VERSION='1.8.12' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> # <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # Initialize libtool case `pwd` in *\ * | *\ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.5.4' macro_revision='2.5.4' ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 printf "%s\n" "printf" >&6; } ;; print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 printf "%s\n" "print -r" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 printf "%s\n" "cat" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in #( *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in #( *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in #( *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" EGREP_TRADITIONAL=$EGREP ac_cv_path_EGREP_TRADITIONAL=$EGREP { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in fgrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in #( *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else case e in #( e) with_gnu_ld=no ;; esac fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw* | *-*-windows*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) test no != "$with_gnu_ld" && break ;; *) test yes != "$with_gnu_ld" && break ;; esac fi done IFS=$lt_save_ifs else lt_cv_path_LD=$LD # Let the user override the test with a path. fi ;; esac fi LD=$lt_cv_path_LD if test -n "$LD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else case e in #( e) # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) lt_cv_prog_gnu_ld=yes ;; *) lt_cv_prog_gnu_ld=no ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test ${lt_cv_path_NM+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw* | windows*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DUMPBIN+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 printf "%s\n" "$DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DUMPBIN+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 printf %s "checking the name lister ($NM) interface... " >&6; } if test ${lt_cv_nm_interface+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 printf "%s\n" "$lt_cv_nm_interface" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : printf %s "(cached) " >&6 else case e in #( e) i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu* | ironclad*) # Under GNU Hurd and Ironclad, this test is not required because there # is no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | windows* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 printf %s "checking how to convert $build file names to $host format... " >&6; } if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 else case e in #( e) case $host in *-*-mingw* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 printf %s "checking how to convert $build file names to toolchain format... " >&6; } if test ${lt_cv_to_tool_file_cmd+y} then : printf %s "(cached) " >&6 else case e in #( e) #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* | *-*-windows* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ld_reload_flag='-r' ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac # Extract the first word of "file", so it can be a program name with args. set dummy file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_FILECMD+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$FILECMD"; then ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_FILECMD="file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_FILECMD" && ac_cv_prog_FILECMD=":" fi ;; esac fi FILECMD=$ac_cv_prog_FILECMD if test -n "$FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 printf "%s\n" "$FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | windows* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; *-mlibc) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; serenity*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | windows* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 printf %s "checking how to associate runtime and link libraries... " >&6; } if test ${lt_cv_sharedlib_from_linklib_cmd+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because that's what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 printf %s "checking for archiver @FILE support... " >&6; } if test ${lt_cv_ar_at_file+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 printf %s "checking command to parse $NM output from $compiler object... " >&6; } if test ${lt_cv_sys_global_symbol_pipe+y} then : printf %s "(cached) " >&6 else case e in #( e) # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | windows* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BCDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw* | windows*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(void){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ;; esac fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 printf "%s\n" "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test ${with_sysroot+y} then : withval=$with_sysroot; else case e in #( e) with_sysroot=no ;; esac fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then # Trim trailing / since we'll always append absolute paths and we want # to avoid //, if only for less confusing output for the user. lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 printf "%s\n" "${lt_sysroot:-no}" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 printf %s "checking for a working dd... " >&6; } if test ${ac_cv_path_lt_DD+y} then : printf %s "(cached) " >&6 else case e in #( e) printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in dd do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 printf "%s\n" "$ac_cv_path_lt_DD" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 printf %s "checking how to truncate binary pipes... " >&6; } if test ${lt_cv_truncate_bin+y} then : printf %s "(cached) " >&6 else case e in #( e) printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 printf "%s\n" "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test ${enable_libtool_lock+y} then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*|x86_64-gnu*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*|x86_64-gnu*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_cc_needs_belf=yes else case e in #( e) lt_cv_cc_needs_belf=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 printf "%s\n" "$MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if test ${lt_cv_path_manifest_tool+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_path_manifest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_manifest_tool=yes fi rm -f conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_manifest_tool" >&5 printf "%s\n" "$lt_cv_path_manifest_tool" >&6; } if test yes != "$lt_cv_path_manifest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 printf "%s\n" "$DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 printf "%s\n" "$NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 printf "%s\n" "$ac_ct_NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LIPO+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 printf "%s\n" "$LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LIPO+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 printf "%s\n" "$ac_ct_LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 printf "%s\n" "$OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 printf "%s\n" "$ac_ct_OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL64+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 printf "%s\n" "$OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL64+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 printf "%s\n" "$ac_ct_OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } # Feature test to disable chained fixups since it is not # compatible with '-undefined dynamic_lookup' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -no_fixup_chains linker flag" >&5 printf %s "checking for -no_fixup_chains linker flag... " >&6; } if test ${lt_cv_support_no_fixup_chains+y} then : printf %s "(cached) " >&6 else case e in #( e) save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_support_no_fixup_chains=yes else case e in #( e) lt_cv_support_no_fixup_chains=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_support_no_fixup_chains" >&5 printf "%s\n" "$lt_cv_support_no_fixup_chains" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_ld_exported_symbols_list=yes else case e in #( e) lt_cv_ld_exported_symbols_list=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 printf %s "checking for -force_load linker flag... " >&6; } if test ${lt_cv_ld_force_load+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 $AR $AR_FLAGS libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main(void) { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[012],*|,*powerpc*-darwin[5-8]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' if test yes = "$lt_cv_support_no_fixup_chains"; then as_fn_append _lt_dar_allow_undefined ' $wl-no_fixup_chains' fi ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi _lt_dar_needs_single_mod=no case $host_os in rhapsody* | darwin1.*) _lt_dar_needs_single_mod=yes ;; darwin*) # When targeting Mac OS X 10.4 (darwin 8) or later, # -single_module is the default and -multi_module is unsupported. # The toolchain on macOS 10.14 (darwin 18) and later cannot # target any OS version that needs -single_module. case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*-darwin[567].*|10.[0-3],*-darwin[5-9].*|10.[0-3],*-darwin1[0-7].*) _lt_dar_needs_single_mod=yes ;; esac ;; esac if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes then : printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test ${enable_shared+y} then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) enable_shared=yes ;; esac fi # Check whether --enable-static was given. if test ${enable_static+y} then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) enable_static=yes ;; esac fi # Check whether --enable-pic was given. if test ${enable_pic+y} then : enableval=$enable_pic; lt_p=${PACKAGE-default} case $enableval in yes|no) pic_mode=$enableval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $enableval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) # Check whether --with-pic was given. if test ${with_pic+y} then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) pic_mode=default ;; esac fi ;; esac fi # Check whether --enable-fast-install was given. if test ${enable_fast_install+y} then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) enable_fast_install=yes ;; esac fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --enable-aix-soname was given. if test ${enable_aix_soname+y} then : enableval=$enable_aix_soname; case $enableval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --enable-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$enable_aix_soname else case e in #( e) # Check whether --with-aix-soname was given. if test ${with_aix_soname+y} then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else case e in #( e) if test ${lt_cv_with_aix_soname+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_with_aix_soname=aix ;; esac fi ;; esac fi enable_aix_soname=$lt_cv_with_aix_soname ;; esac fi with_aix_soname=$enable_aix_soname { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : printf %s "(cached) " >&6 else case e in #( e) rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else case e in #( e) case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else case e in #( e) case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(void){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; *flang* | ftn | f18* | f95*) # Flang compiler. lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *-mlibc) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; serenity*) ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach <jrb3@best.com> says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | windows* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' file_list_spec='@' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=no ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; *-mlibc) archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi ;; esac fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi ;; esac fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | windows* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly* | midnightbsd*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 printf %s "checking if $CC understands -b... " >&6; } if test ${lt_cv_prog_compiler__b+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 else case e in #( e) save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes else case e in #( e) lt_cv_irix_exported_symbol=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; esac ;; *-mlibc) ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; serenity*) ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc+y} then : printf %s "(cached) " >&6 else case e in #( e) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --enable-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib<name>.so # instead of lib<name>.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | windows* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds # If user builds GCC with multilib enabled, # it should just install on $(libdir) # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones. if test xyes = x"$multilib"; then postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ $install_prog $dir/$dlname $destdir/$dlname~ chmod a+x $destdir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib $destdir/$dlname'\'' || exit \$?; fi' else postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' fi postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | windows* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw* | windows*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac case $host_cpu in powerpc64) # On FreeBSD bi-arch platforms, a different variable is used for 32-bit # binaries. See <https://man.freebsd.org/cgi/man.cgi?query=ld.so>. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int test_pointer_size[sizeof (void *) - 5]; _ACEOF if ac_fn_c_try_compile "$LINENO" then : shlibpath_var=LD_LIBRARY_PATH else case e in #( e) shlibpath_var=LD_32_LIBRARY_PATH ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; *) shlibpath_var=LD_LIBRARY_PATH ;; esac case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib' sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib' hardcode_into_libs=no ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # -rpath works at least for libraries that are not overridden by # libraries installed in system locations. hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir ;; esac fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directories which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *-mlibc) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='mlibc ld.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; serenity*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no dynamic_linker='SerenityOS LibELF' ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; emscripten*) version_type=none need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= dynamic_linker="Emscripten linker" lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; *flang* | ftn | f18* | f95*) # Flang compiler. lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *-mlibc) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; serenity*) ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi ='-fPIC' archive_cmds='$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib' archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib -s EXPORTED_FUNCTIONS=@$output_objdir/$soname.expsym' archive_cmds_need_lc=no no_undefined_flag= ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | windows* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else case e in #( e) ac_cv_lib_dl_dlopen=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else case e in #( e) lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; esac fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes then : lt_cv_dlopen=shl_load else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char shl_load (void); int main (void) { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes else case e in #( e) ac_cv_lib_dld_shl_load=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else case e in #( e) ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : lt_cv_dlopen=dlopen else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else case e in #( e) ac_cv_lib_dl_dlopen=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_svld_dlopen=yes else case e in #( e) ac_cv_lib_svld_dlopen=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dld_link (void); int main (void) { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_dld_link=yes else case e in #( e) ac_cv_lib_dld_dld_link=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi ;; esac fi ;; esac fi ;; esac fi ;; esac fi ;; esac fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : printf %s "(cached) " >&6 else case e in #( e) if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include <dlfcn.h> #endif #include <stdio.h> #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord (void) __attribute__((visibility("default"))); #endif int fnord (void) { return 42; } int main (void) { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 printf %s "checking whether a statically linked program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self_static+y} then : printf %s "(cached) " >&6 else case e in #( e) if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include <dlfcn.h> #endif #include <stdio.h> #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord (void) __attribute__((visibility("default"))); #endif int fnord (void) { return 42; } int main (void) { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } if test -z "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi fi # Report what library types will actually be built { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 printf "%s\n" "$can_build_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 printf "%s\n" "$enable_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 printf "%s\n" "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_config_commands="$ac_config_commands libtool" # Only expand once: # Check whether --enable-largefile was given. if test ${enable_largefile+y} then : enableval=$enable_largefile; fi if test "$enable_largefile,$enable_year2038" != no,no then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable large file support" >&5 printf %s "checking for $CC option to enable large file support... " >&6; } if test ${ac_cv_sys_largefile_opts+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_CC="$CC" ac_opt_found=no for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1" "-n32"; do if test x"$ac_opt" != x"none needed" then : CC="$ac_save_CC $ac_opt" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <sys/types.h> #ifndef FTYPE # define FTYPE off_t #endif /* Check that FTYPE can represent 2**63 - 1 correctly. We can't simply define LARGE_FTYPE to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 && LARGE_FTYPE % 2147483647 == 1) ? 1 : -1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : if test x"$ac_opt" = x"none needed" then : # GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t. CC="$CC -DFTYPE=ino_t" if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) CC="$CC -D_FILE_OFFSET_BITS=64" if ac_fn_c_try_compile "$LINENO" then : ac_opt='-D_FILE_OFFSET_BITS=64' fi rm -f core conftest.err conftest.$ac_objext conftest.beam ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam fi ac_cv_sys_largefile_opts=$ac_opt ac_opt_found=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test $ac_opt_found = no || break done CC="$ac_save_CC" test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_opts" >&5 printf "%s\n" "$ac_cv_sys_largefile_opts" >&6; } ac_have_largefile=yes case $ac_cv_sys_largefile_opts in #( "none needed") : ;; #( "supported through gnulib") : ;; #( "support not detected") : ac_have_largefile=no ;; #( "-D_FILE_OFFSET_BITS=64") : printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h ;; #( "-D_LARGE_FILES=1") : printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h ;; #( "-n32") : CC="$CC -n32" ;; #( *) : as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;; esac if test "$enable_year2038" != no then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option for timestamps after 2038" >&5 printf %s "checking for $CC option for timestamps after 2038... " >&6; } if test ${ac_cv_sys_year2038_opts+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_CPPFLAGS="$CPPFLAGS" ac_opt_found=no for ac_opt in "none needed" "-D_TIME_BITS=64" "-D__MINGW_USE_VC2005_COMPAT" "-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"; do if test x"$ac_opt" != x"none needed" then : CPPFLAGS="$ac_save_CPPFLAGS $ac_opt" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <time.h> /* Check that time_t can represent 2**32 - 1 correctly. */ #define LARGE_TIME_T \\ ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 && LARGE_TIME_T % 65537 == 0) ? 1 : -1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_year2038_opts="$ac_opt" ac_opt_found=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test $ac_opt_found = no || break done CPPFLAGS="$ac_save_CPPFLAGS" test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_year2038_opts" >&5 printf "%s\n" "$ac_cv_sys_year2038_opts" >&6; } ac_have_year2038=yes case $ac_cv_sys_year2038_opts in #( "none needed") : ;; #( "support not detected") : ac_have_year2038=no ;; #( "-D_TIME_BITS=64") : printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h ;; #( "-D__MINGW_USE_VC2005_COMPAT") : printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h ;; #( "-U_USE_32_BIT_TIME_T"*) : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "the 'time_t' type is currently forced to be 32-bit. It will stop working after mid-January 2038. Remove _USE_32BIT_TIME_T from the compiler flags. See 'config.log' for more details" "$LINENO" 5; } ;; #( *) : as_fn_error $? "internal error: bad value for \$ac_cv_sys_year2038_opts" "$LINENO" 5 ;; esac fi fi # Require xorg-macros minimum of 1.15 for fop minimum version { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } if test ${ac_cv_c_undeclared_builtin_options+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_CFLAGS=$CFLAGS ac_cv_c_undeclared_builtin_options='cannot detect' for ac_arg in '' -fno-builtin; do CFLAGS="$ac_save_CFLAGS $ac_arg" # This test program should *not* compile successfully. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { (void) strchr; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) # This test program should compile successfully. # No library function is consistently available on # freestanding implementations, so test against a dummy # declaration. Include always-available headers on the # off chance that they somehow elicit warnings. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <float.h> #include <limits.h> #include <stdarg.h> #include <stddef.h> extern void ac_decl (int, char *); int main (void) { (void) ac_decl (0, (char *) 0); (void) ac_decl; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : if test x"$ac_arg" = x then : ac_cv_c_undeclared_builtin_options='none needed' else case e in #( e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; esac fi break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done CFLAGS=$ac_save_CFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } case $ac_cv_c_undeclared_builtin_options in #( 'cannot detect') : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot make $CC report undeclared builtins See 'config.log' for more details" "$LINENO" 5; } ;; #( 'none needed') : ac_c_undeclared_builtin_options='' ;; #( *) : ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; esac ac_fn_check_decl "$LINENO" "__clang__" "ac_cv_have_decl___clang__" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl___clang__" = xyes then : CLANGCC="yes" else case e in #( e) CLANGCC="no" ;; esac fi ac_fn_check_decl "$LINENO" "__INTEL_COMPILER" "ac_cv_have_decl___INTEL_COMPILER" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl___INTEL_COMPILER" = xyes then : INTELCC="yes" else case e in #( e) INTELCC="no" ;; esac fi ac_fn_check_decl "$LINENO" "__SUNPRO_C" "ac_cv_have_decl___SUNPRO_C" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl___SUNPRO_C" = xyes then : SUNCC="yes" else case e in #( e) SUNCC="no" ;; esac fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi # Check whether --enable-selective-werror was given. if test ${enable_selective_werror+y} then : enableval=$enable_selective_werror; SELECTIVE_WERROR=$enableval else case e in #( e) SELECTIVE_WERROR=yes ;; esac fi # -v is too short to test reliably with XORG_TESTSET_CFLAG if test "x$SUNCC" = "xyes"; then BASE_CFLAGS="-v" else BASE_CFLAGS="" fi # This chunk of warnings were those that existed in the legacy CWARNFLAGS xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wall" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wall" >&5 printf %s "checking if $CC supports -Wall... " >&6; } cacheid=xorg_cv_cc_flag__Wall if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wall" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wpointer-arith" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wpointer-arith" >&5 printf %s "checking if $CC supports -Wpointer-arith... " >&6; } cacheid=xorg_cv_cc_flag__Wpointer_arith if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wpointer-arith" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wmissing-declarations" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wmissing-declarations" >&5 printf %s "checking if $CC supports -Wmissing-declarations... " >&6; } cacheid=xorg_cv_cc_flag__Wmissing_declarations if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wmissing-declarations" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wformat=2" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wformat=2" >&5 printf %s "checking if $CC supports -Wformat=2... " >&6; } cacheid=xorg_cv_cc_flag__Wformat_2 if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wformat=2" found="yes" fi fi if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wformat" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wformat" >&5 printf %s "checking if $CC supports -Wformat... " >&6; } cacheid=xorg_cv_cc_flag__Wformat if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wformat" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wstrict-prototypes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wstrict-prototypes" >&5 printf %s "checking if $CC supports -Wstrict-prototypes... " >&6; } cacheid=xorg_cv_cc_flag__Wstrict_prototypes if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wstrict-prototypes" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wmissing-prototypes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wmissing-prototypes" >&5 printf %s "checking if $CC supports -Wmissing-prototypes... " >&6; } cacheid=xorg_cv_cc_flag__Wmissing_prototypes if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wmissing-prototypes" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wnested-externs" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wnested-externs" >&5 printf %s "checking if $CC supports -Wnested-externs... " >&6; } cacheid=xorg_cv_cc_flag__Wnested_externs if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wnested-externs" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wbad-function-cast" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wbad-function-cast" >&5 printf %s "checking if $CC supports -Wbad-function-cast... " >&6; } cacheid=xorg_cv_cc_flag__Wbad_function_cast if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wbad-function-cast" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wold-style-definition" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wold-style-definition" >&5 printf %s "checking if $CC supports -Wold-style-definition... " >&6; } cacheid=xorg_cv_cc_flag__Wold_style_definition if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wold-style-definition" found="yes" fi fi if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -fd" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -fd" >&5 printf %s "checking if $CC supports -fd... " >&6; } cacheid=xorg_cv_cc_flag__fd if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -fd" found="yes" fi fi # This chunk adds additional warnings that could catch undesired effects. xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wunused" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wunused" >&5 printf %s "checking if $CC supports -Wunused... " >&6; } cacheid=xorg_cv_cc_flag__Wunused if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wunused" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wuninitialized" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wuninitialized" >&5 printf %s "checking if $CC supports -Wuninitialized... " >&6; } cacheid=xorg_cv_cc_flag__Wuninitialized if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wuninitialized" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wshadow" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wshadow" >&5 printf %s "checking if $CC supports -Wshadow... " >&6; } cacheid=xorg_cv_cc_flag__Wshadow if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wshadow" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wmissing-noreturn" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wmissing-noreturn" >&5 printf %s "checking if $CC supports -Wmissing-noreturn... " >&6; } cacheid=xorg_cv_cc_flag__Wmissing_noreturn if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wmissing-noreturn" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wmissing-format-attribute" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wmissing-format-attribute" >&5 printf %s "checking if $CC supports -Wmissing-format-attribute... " >&6; } cacheid=xorg_cv_cc_flag__Wmissing_format_attribute if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wmissing-format-attribute" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wredundant-decls" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wredundant-decls" >&5 printf %s "checking if $CC supports -Wredundant-decls... " >&6; } cacheid=xorg_cv_cc_flag__Wredundant_decls if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wredundant-decls" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wlogical-op" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wlogical-op" >&5 printf %s "checking if $CC supports -Wlogical-op... " >&6; } cacheid=xorg_cv_cc_flag__Wlogical_op if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wlogical-op" found="yes" fi fi # These are currently disabled because they are noisy. They will be enabled # in the future once the codebase is sufficiently modernized to silence # them. For now, I don't want them to drown out the other warnings. # XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses]) # XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align]) # XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual]) # Turn some warnings into errors, so we don't accidentally get successful builds # when there are problems that should be fixed. if test "x$SELECTIVE_WERROR" = "xyes" ; then xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=implicit" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=implicit" >&5 printf %s "checking if $CC supports -Werror=implicit... " >&6; } cacheid=xorg_cv_cc_flag__Werror_implicit if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=implicit" found="yes" fi fi if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" >&5 printf %s "checking if $CC supports -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED... " >&6; } cacheid=xorg_cv_cc_flag__errwarn_E_NO_EXPLICIT_TYPE_GIVEN__errwarn_E_NO_IMPLICIT_DECL_ALLOWED if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=nonnull" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=nonnull" >&5 printf %s "checking if $CC supports -Werror=nonnull... " >&6; } cacheid=xorg_cv_cc_flag__Werror_nonnull if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=nonnull" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=init-self" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=init-self" >&5 printf %s "checking if $CC supports -Werror=init-self... " >&6; } cacheid=xorg_cv_cc_flag__Werror_init_self if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=init-self" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=main" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=main" >&5 printf %s "checking if $CC supports -Werror=main... " >&6; } cacheid=xorg_cv_cc_flag__Werror_main if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=main" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=missing-braces" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=missing-braces" >&5 printf %s "checking if $CC supports -Werror=missing-braces... " >&6; } cacheid=xorg_cv_cc_flag__Werror_missing_braces if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=missing-braces" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=sequence-point" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=sequence-point" >&5 printf %s "checking if $CC supports -Werror=sequence-point... " >&6; } cacheid=xorg_cv_cc_flag__Werror_sequence_point if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=sequence-point" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=return-type" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=return-type" >&5 printf %s "checking if $CC supports -Werror=return-type... " >&6; } cacheid=xorg_cv_cc_flag__Werror_return_type if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=return-type" found="yes" fi fi if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -errwarn=E_FUNC_HAS_NO_RETURN_STMT" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -errwarn=E_FUNC_HAS_NO_RETURN_STMT" >&5 printf %s "checking if $CC supports -errwarn=E_FUNC_HAS_NO_RETURN_STMT... " >&6; } cacheid=xorg_cv_cc_flag__errwarn_E_FUNC_HAS_NO_RETURN_STMT if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_FUNC_HAS_NO_RETURN_STMT" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=trigraphs" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=trigraphs" >&5 printf %s "checking if $CC supports -Werror=trigraphs... " >&6; } cacheid=xorg_cv_cc_flag__Werror_trigraphs if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=trigraphs" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=array-bounds" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=array-bounds" >&5 printf %s "checking if $CC supports -Werror=array-bounds... " >&6; } cacheid=xorg_cv_cc_flag__Werror_array_bounds if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=array-bounds" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=write-strings" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=write-strings" >&5 printf %s "checking if $CC supports -Werror=write-strings... " >&6; } cacheid=xorg_cv_cc_flag__Werror_write_strings if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=write-strings" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=address" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=address" >&5 printf %s "checking if $CC supports -Werror=address... " >&6; } cacheid=xorg_cv_cc_flag__Werror_address if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=address" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=int-to-pointer-cast" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=int-to-pointer-cast" >&5 printf %s "checking if $CC supports -Werror=int-to-pointer-cast... " >&6; } cacheid=xorg_cv_cc_flag__Werror_int_to_pointer_cast if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=int-to-pointer-cast" found="yes" fi fi if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -errwarn=E_BAD_PTR_INT_COMBINATION" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -errwarn=E_BAD_PTR_INT_COMBINATION" >&5 printf %s "checking if $CC supports -errwarn=E_BAD_PTR_INT_COMBINATION... " >&6; } cacheid=xorg_cv_cc_flag__errwarn_E_BAD_PTR_INT_COMBINATION if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_BAD_PTR_INT_COMBINATION" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=pointer-to-int-cast" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=pointer-to-int-cast" >&5 printf %s "checking if $CC supports -Werror=pointer-to-int-cast... " >&6; } cacheid=xorg_cv_cc_flag__Werror_pointer_to_int_cast if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Werror=pointer-to-int-cast" found="yes" fi fi # Also -errwarn=E_BAD_PTR_INT_COMBINATION else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT" >&5 printf "%s\n" "$as_me: WARNING: You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT" >&2;} xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wimplicit" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wimplicit" >&5 printf %s "checking if $CC supports -Wimplicit... " >&6; } cacheid=xorg_cv_cc_flag__Wimplicit if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wimplicit" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wnonnull" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wnonnull" >&5 printf %s "checking if $CC supports -Wnonnull... " >&6; } cacheid=xorg_cv_cc_flag__Wnonnull if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wnonnull" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Winit-self" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Winit-self" >&5 printf %s "checking if $CC supports -Winit-self... " >&6; } cacheid=xorg_cv_cc_flag__Winit_self if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Winit-self" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wmain" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wmain" >&5 printf %s "checking if $CC supports -Wmain... " >&6; } cacheid=xorg_cv_cc_flag__Wmain if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wmain" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wmissing-braces" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wmissing-braces" >&5 printf %s "checking if $CC supports -Wmissing-braces... " >&6; } cacheid=xorg_cv_cc_flag__Wmissing_braces if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wmissing-braces" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wsequence-point" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wsequence-point" >&5 printf %s "checking if $CC supports -Wsequence-point... " >&6; } cacheid=xorg_cv_cc_flag__Wsequence_point if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wsequence-point" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wreturn-type" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wreturn-type" >&5 printf %s "checking if $CC supports -Wreturn-type... " >&6; } cacheid=xorg_cv_cc_flag__Wreturn_type if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wreturn-type" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wtrigraphs" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wtrigraphs" >&5 printf %s "checking if $CC supports -Wtrigraphs... " >&6; } cacheid=xorg_cv_cc_flag__Wtrigraphs if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wtrigraphs" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Warray-bounds" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Warray-bounds" >&5 printf %s "checking if $CC supports -Warray-bounds... " >&6; } cacheid=xorg_cv_cc_flag__Warray_bounds if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Warray-bounds" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wwrite-strings" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wwrite-strings" >&5 printf %s "checking if $CC supports -Wwrite-strings... " >&6; } cacheid=xorg_cv_cc_flag__Wwrite_strings if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wwrite-strings" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Waddress" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Waddress" >&5 printf %s "checking if $CC supports -Waddress... " >&6; } cacheid=xorg_cv_cc_flag__Waddress if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Waddress" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wint-to-pointer-cast" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wint-to-pointer-cast" >&5 printf %s "checking if $CC supports -Wint-to-pointer-cast... " >&6; } cacheid=xorg_cv_cc_flag__Wint_to_pointer_cast if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wint-to-pointer-cast" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Wpointer-to-int-cast" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wpointer-to-int-cast" >&5 printf %s "checking if $CC supports -Wpointer-to-int-cast... " >&6; } cacheid=xorg_cv_cc_flag__Wpointer_to_int_cast if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then BASE_CFLAGS="$BASE_CFLAGS -Wpointer-to-int-cast" found="yes" fi fi fi CWARNFLAGS="$BASE_CFLAGS" if test "x$GCC" = xyes ; then CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing" fi # Check whether --enable-strict-compilation was given. if test ${enable_strict_compilation+y} then : enableval=$enable_strict_compilation; STRICT_COMPILE=$enableval else case e in #( e) STRICT_COMPILE=no ;; esac fi STRICT_CFLAGS="" xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -pedantic" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -pedantic" >&5 printf %s "checking if $CC supports -pedantic... " >&6; } cacheid=xorg_cv_cc_flag__pedantic if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then STRICT_CFLAGS="$STRICT_CFLAGS -pedantic" found="yes" fi fi xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror" >&5 printf %s "checking if $CC supports -Werror... " >&6; } cacheid=xorg_cv_cc_flag__Werror if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then STRICT_CFLAGS="$STRICT_CFLAGS -Werror" found="yes" fi fi if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -errwarn" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -errwarn" >&5 printf %s "checking if $CC supports -errwarn... " >&6; } cacheid=xorg_cv_cc_flag__errwarn if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then STRICT_CFLAGS="$STRICT_CFLAGS -errwarn" found="yes" fi fi # Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not # activate it with -Werror, so we add it here explicitly. xorg_testset_save_CFLAGS="$CFLAGS" if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 printf %s "checking if $CC supports -Werror=unknown-warning-option... " >&6; } if test ${xorg_cv_cc_flag_unknown_warning_option+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unknown_warning_option=yes else case e in #( e) xorg_cv_cc_flag_unknown_warning_option=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 printf "%s\n" "$xorg_cv_cc_flag_unknown_warning_option" >&6; } xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option CFLAGS="$xorg_testset_save_CFLAGS" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi CFLAGS="$CFLAGS -Werror=unused-command-line-argument" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 printf %s "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } if test ${xorg_cv_cc_flag_unused_command_line_argument+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; _ACEOF if ac_fn_c_try_compile "$LINENO" then : xorg_cv_cc_flag_unused_command_line_argument=yes else case e in #( e) xorg_cv_cc_flag_unused_command_line_argument=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 printf "%s\n" "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument CFLAGS="$xorg_testset_save_CFLAGS" fi found="no" if test $found = "no" ; then if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then CFLAGS="$CFLAGS -Werror=unused-command-line-argument" fi CFLAGS="$CFLAGS -Werror=attributes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=attributes" >&5 printf %s "checking if $CC supports -Werror=attributes... " >&6; } cacheid=xorg_cv_cc_flag__Werror_attributes if eval test \${$cacheid+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval $cacheid=yes else case e in #( e) eval $cacheid=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi CFLAGS="$xorg_testset_save_CFLAGS" eval supported=\$$cacheid { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 printf "%s\n" "$supported" >&6; } if test "$supported" = "yes" ; then STRICT_CFLAGS="$STRICT_CFLAGS -Werror=attributes" found="yes" fi fi if test "x$STRICT_COMPILE" = "xyes"; then BASE_CFLAGS="$BASE_CFLAGS $STRICT_CFLAGS" CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS" fi cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION_MAJOR `echo $PACKAGE_VERSION | cut -d . -f 1` _ACEOF PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1` if test "x$PVM" = "x"; then PVM="0" fi printf "%s\n" "#define PACKAGE_VERSION_MINOR $PVM" >>confdefs.h PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` if test "x$PVP" = "x"; then PVP="0" fi printf "%s\n" "#define PACKAGE_VERSION_PATCHLEVEL $PVP" >>confdefs.h CHANGELOG_CMD="((GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp) 2>/dev/null && \ mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \ || (rm -f \$(top_srcdir)/.changelog.tmp; test -e \$(top_srcdir)/ChangeLog || ( \ touch \$(top_srcdir)/ChangeLog; \ echo 'git failed to create ChangeLog: installing empty ChangeLog.' >&2))" macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros` INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \ mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \ || (rm -f \$(top_srcdir)/.INSTALL.tmp; test -e \$(top_srcdir)/INSTALL || ( \ touch \$(top_srcdir)/INSTALL; \ echo 'failed to copy INSTALL from util-macros: installing empty INSTALL.' >&2))" case $host_os in solaris*) # Solaris 2.0 - 11.3 use SysV man page section numbers, so we # check for a man page file found in later versions that use # traditional section numbers instead { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /usr/share/man/man7/attributes.7" >&5 printf %s "checking for /usr/share/man/man7/attributes.7... " >&6; } if test ${ac_cv_file__usr_share_man_man7_attributes_7+y} then : printf %s "(cached) " >&6 else case e in #( e) test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "/usr/share/man/man7/attributes.7"; then ac_cv_file__usr_share_man_man7_attributes_7=yes else ac_cv_file__usr_share_man_man7_attributes_7=no fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_share_man_man7_attributes_7" >&5 printf "%s\n" "$ac_cv_file__usr_share_man_man7_attributes_7" >&6; } if test "x$ac_cv_file__usr_share_man_man7_attributes_7" = xyes then : SYSV_MAN_SECTIONS=false else case e in #( e) SYSV_MAN_SECTIONS=true ;; esac fi ;; *) SYSV_MAN_SECTIONS=false ;; esac if test x$APP_MAN_SUFFIX = x ; then APP_MAN_SUFFIX=1 fi if test x$APP_MAN_DIR = x ; then APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)' fi if test x$LIB_MAN_SUFFIX = x ; then LIB_MAN_SUFFIX=3 fi if test x$LIB_MAN_DIR = x ; then LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)' fi if test x$FILE_MAN_SUFFIX = x ; then case $SYSV_MAN_SECTIONS in true) FILE_MAN_SUFFIX=4 ;; *) FILE_MAN_SUFFIX=5 ;; esac fi if test x$FILE_MAN_DIR = x ; then FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)' fi if test x$MISC_MAN_SUFFIX = x ; then case $SYSV_MAN_SECTIONS in true) MISC_MAN_SUFFIX=5 ;; *) MISC_MAN_SUFFIX=7 ;; esac fi if test x$MISC_MAN_DIR = x ; then MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)' fi if test x$DRIVER_MAN_SUFFIX = x ; then case $SYSV_MAN_SECTIONS in true) DRIVER_MAN_SUFFIX=7 ;; *) DRIVER_MAN_SUFFIX=4 ;; esac fi if test x$DRIVER_MAN_DIR = x ; then DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)' fi if test x$ADMIN_MAN_SUFFIX = x ; then case $SYSV_MAN_SECTIONS in true) ADMIN_MAN_SUFFIX=1m ;; *) ADMIN_MAN_SUFFIX=8 ;; esac fi if test x$ADMIN_MAN_DIR = x ; then ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)' fi XORG_MAN_PAGE="X Version 11" MAN_SUBSTS="\ -e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ -e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ -e 's|__xservername__|Xorg|g' \ -e 's|__xconfigfile__|xorg.conf|g' \ -e 's|__projectroot__|\$(prefix)|g' \ -e 's|__apploaddir__|\$(appdefaultdir)|g' \ -e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \ -e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \ -e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \ -e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \ -e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \ -e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'" AM_DEFAULT_VERBOSITY=0 # Check whether --enable-specs was given. if test ${enable_specs+y} then : enableval=$enable_specs; build_specs=$enableval else case e in #( e) build_specs=yes ;; esac fi if test x$build_specs = xyes; then ENABLE_SPECS_TRUE= ENABLE_SPECS_FALSE='#' else ENABLE_SPECS_TRUE='#' ENABLE_SPECS_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build functional specifications" >&5 printf %s "checking whether to build functional specifications... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $build_specs" >&5 printf "%s\n" "$build_specs" >&6; } # Check whether --with-xmlto was given. if test ${with_xmlto+y} then : withval=$with_xmlto; use_xmlto=$withval else case e in #( e) use_xmlto=auto ;; esac fi if test "x$use_xmlto" = x"auto"; then # Extract the first word of "xmlto", so it can be a program name with args. set dummy xmlto; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XMLTO+y} then : printf %s "(cached) " >&6 else case e in #( e) case $XMLTO in [\\/]* | ?:[\\/]*) ac_cv_path_XMLTO="$XMLTO" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_XMLTO="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi XMLTO=$ac_cv_path_XMLTO if test -n "$XMLTO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XMLTO" >&5 printf "%s\n" "$XMLTO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$XMLTO" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: xmlto not found - documentation targets will be skipped" >&5 printf "%s\n" "$as_me: WARNING: xmlto not found - documentation targets will be skipped" >&2;} have_xmlto=no else have_xmlto=yes fi elif test "x$use_xmlto" = x"yes" ; then # Extract the first word of "xmlto", so it can be a program name with args. set dummy xmlto; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XMLTO+y} then : printf %s "(cached) " >&6 else case e in #( e) case $XMLTO in [\\/]* | ?:[\\/]*) ac_cv_path_XMLTO="$XMLTO" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_XMLTO="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi XMLTO=$ac_cv_path_XMLTO if test -n "$XMLTO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XMLTO" >&5 printf "%s\n" "$XMLTO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$XMLTO" = "x"; then as_fn_error $? "--with-xmlto=yes specified but xmlto not found in PATH" "$LINENO" 5 fi have_xmlto=yes elif test "x$use_xmlto" = x"no" ; then if test "x$XMLTO" != "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ignoring XMLTO environment variable since --with-xmlto=no was specified" >&5 printf "%s\n" "$as_me: WARNING: ignoring XMLTO environment variable since --with-xmlto=no was specified" >&2;} fi have_xmlto=no else as_fn_error $? "--with-xmlto expects 'yes' or 'no'" "$LINENO" 5 fi # Test for a minimum version of xmlto, if provided. if test "$have_xmlto" = yes; then # scrape the xmlto version { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the xmlto version" >&5 printf %s "checking the xmlto version... " >&6; } xmlto_version=`$XMLTO --version 2>/dev/null | cut -d' ' -f3` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xmlto_version" >&5 printf "%s\n" "$xmlto_version" >&6; } as_arg_v1=$xmlto_version as_arg_v2=0.0.22 awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null case $? in #( 1) : if test "x$use_xmlto" = xauto; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: xmlto version $xmlto_version found, but 0.0.22 needed" >&5 printf "%s\n" "$as_me: WARNING: xmlto version $xmlto_version found, but 0.0.22 needed" >&2;} have_xmlto=no else as_fn_error $? "xmlto version $xmlto_version found, but 0.0.22 needed" "$LINENO" 5 fi ;; #( 0) : ;; #( 2) : ;; #( *) : ;; esac fi # Test for the ability of xmlto to generate a text target # # NOTE: xmlto 0.0.27 or higher return a non-zero return code in the # following test for empty XML docbook files. # For compatibility reasons use the following empty XML docbook file and if # it fails try it again with a non-empty XML file. have_xmlto_text=no cat > conftest.xml << "EOF" EOF if test "$have_xmlto" = yes then : if $XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1 then : have_xmlto_text=yes else case e in #( e) # Try it again with a non-empty XML file. cat > conftest.xml << "EOF" <x></x> EOF if $XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1 then : have_xmlto_text=yes else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: xmlto cannot generate text format, this format skipped" >&5 printf "%s\n" "$as_me: WARNING: xmlto cannot generate text format, this format skipped" >&2;} ;; esac fi ;; esac fi fi rm -f conftest.xml if test $have_xmlto_text = yes; then HAVE_XMLTO_TEXT_TRUE= HAVE_XMLTO_TEXT_FALSE='#' else HAVE_XMLTO_TEXT_TRUE='#' HAVE_XMLTO_TEXT_FALSE= fi if test "$have_xmlto" = yes; then HAVE_XMLTO_TRUE= HAVE_XMLTO_FALSE='#' else HAVE_XMLTO_TRUE='#' HAVE_XMLTO_FALSE= fi # Check whether --with-fop was given. if test ${with_fop+y} then : withval=$with_fop; use_fop=$withval else case e in #( e) use_fop=no ;; esac fi if test "x$use_fop" = x"auto"; then # Extract the first word of "fop", so it can be a program name with args. set dummy fop; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_FOP+y} then : printf %s "(cached) " >&6 else case e in #( e) case $FOP in [\\/]* | ?:[\\/]*) ac_cv_path_FOP="$FOP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_FOP="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi FOP=$ac_cv_path_FOP if test -n "$FOP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FOP" >&5 printf "%s\n" "$FOP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$FOP" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: fop not found - documentation targets will be skipped" >&5 printf "%s\n" "$as_me: WARNING: fop not found - documentation targets will be skipped" >&2;} have_fop=no else have_fop=yes fi elif test "x$use_fop" = x"yes" ; then # Extract the first word of "fop", so it can be a program name with args. set dummy fop; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_FOP+y} then : printf %s "(cached) " >&6 else case e in #( e) case $FOP in [\\/]* | ?:[\\/]*) ac_cv_path_FOP="$FOP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_FOP="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi FOP=$ac_cv_path_FOP if test -n "$FOP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FOP" >&5 printf "%s\n" "$FOP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$FOP" = "x"; then as_fn_error $? "--with-fop=yes specified but fop not found in PATH" "$LINENO" 5 fi have_fop=yes elif test "x$use_fop" = x"no" ; then if test "x$FOP" != "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ignoring FOP environment variable since --with-fop=no was specified" >&5 printf "%s\n" "$as_me: WARNING: ignoring FOP environment variable since --with-fop=no was specified" >&2;} fi have_fop=no else as_fn_error $? "--with-fop expects 'yes' or 'no'" "$LINENO" 5 fi # Test for a minimum version of fop, if provided. if test "$have_fop" = yes; then HAVE_FOP_TRUE= HAVE_FOP_FALSE='#' else HAVE_FOP_TRUE='#' HAVE_FOP_FALSE= fi # Preserves the interface, should it be implemented later # Check whether --with-xsltproc was given. if test ${with_xsltproc+y} then : withval=$with_xsltproc; use_xsltproc=$withval else case e in #( e) use_xsltproc=auto ;; esac fi if test "x$use_xsltproc" = x"auto"; then # Extract the first word of "xsltproc", so it can be a program name with args. set dummy xsltproc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XSLTPROC+y} then : printf %s "(cached) " >&6 else case e in #( e) case $XSLTPROC in [\\/]* | ?:[\\/]*) ac_cv_path_XSLTPROC="$XSLTPROC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_XSLTPROC="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi XSLTPROC=$ac_cv_path_XSLTPROC if test -n "$XSLTPROC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5 printf "%s\n" "$XSLTPROC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$XSLTPROC" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: xsltproc not found - cannot transform XML documents" >&5 printf "%s\n" "$as_me: WARNING: xsltproc not found - cannot transform XML documents" >&2;} have_xsltproc=no else have_xsltproc=yes fi elif test "x$use_xsltproc" = x"yes" ; then # Extract the first word of "xsltproc", so it can be a program name with args. set dummy xsltproc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XSLTPROC+y} then : printf %s "(cached) " >&6 else case e in #( e) case $XSLTPROC in [\\/]* | ?:[\\/]*) ac_cv_path_XSLTPROC="$XSLTPROC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_XSLTPROC="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi XSLTPROC=$ac_cv_path_XSLTPROC if test -n "$XSLTPROC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5 printf "%s\n" "$XSLTPROC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$XSLTPROC" = "x"; then as_fn_error $? "--with-xsltproc=yes specified but xsltproc not found in PATH" "$LINENO" 5 fi have_xsltproc=yes elif test "x$use_xsltproc" = x"no" ; then if test "x$XSLTPROC" != "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ignoring XSLTPROC environment variable since --with-xsltproc=no was specified" >&5 printf "%s\n" "$as_me: WARNING: ignoring XSLTPROC environment variable since --with-xsltproc=no was specified" >&2;} fi have_xsltproc=no else as_fn_error $? "--with-xsltproc expects 'yes' or 'no'" "$LINENO" 5 fi if test "$have_xsltproc" = yes; then HAVE_XSLTPROC_TRUE= HAVE_XSLTPROC_FALSE='#' else HAVE_XSLTPROC_TRUE='#' HAVE_XSLTPROC_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X.Org SGML entities >= 1.10" >&5 printf %s "checking for X.Org SGML entities >= 1.10... " >&6; } XORG_SGML_PATH= if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xorg-sgml-doctools >= 1.10\""; } >&5 ($PKG_CONFIG --exists --print-errors "xorg-sgml-doctools >= 1.10") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then XORG_SGML_PATH=`$PKG_CONFIG --variable=sgmlrootdir xorg-sgml-doctools` else : fi # Define variables STYLESHEET_SRCDIR and XSL_STYLESHEET containing # the path and the name of the doc stylesheet if test "x$XORG_SGML_PATH" != "x" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XORG_SGML_PATH" >&5 printf "%s\n" "$XORG_SGML_PATH" >&6; } STYLESHEET_SRCDIR=$XORG_SGML_PATH/X11 XSL_STYLESHEET=$STYLESHEET_SRCDIR/xorg.xsl else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$XSL_STYLESHEET" != "x"; then HAVE_STYLESHEETS_TRUE= HAVE_STYLESHEETS_FALSE='#' else HAVE_STYLESHEETS_TRUE='#' HAVE_STYLESHEETS_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test ${ac_cv_prog_CPP+y} then : printf %s "(cached) " >&6 else case e in #( e) # Double quotes because $CC needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <limits.h> Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else case e in #( e) # Broken: fails on valid input. continue ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else case e in #( e) # Passes both tests. ac_preproc_ok=: break ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CPP=$CPP ;; esac fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 printf "%s\n" "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <limits.h> Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else case e in #( e) # Broken: fails on valid input. continue ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else case e in #( e) # Passes both tests. ac_preproc_ok=: break ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else case e in #( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See 'config.log' for more details" "$LINENO" 5; } ;; esac fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cpp", so it can be a program name with args. set dummy ${ac_tool_prefix}cpp; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_RAWCPP+y} then : printf %s "(cached) " >&6 else case e in #( e) case $RAWCPP in [\\/]* | ?:[\\/]*) ac_cv_path_RAWCPP="$RAWCPP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/bin:/usr/bin:/usr/lib:/usr/libexec:/usr/ccs/lib:/usr/ccs/lbin:/lib" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_RAWCPP="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi RAWCPP=$ac_cv_path_RAWCPP if test -n "$RAWCPP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RAWCPP" >&5 printf "%s\n" "$RAWCPP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_RAWCPP"; then ac_pt_RAWCPP=$RAWCPP # Extract the first word of "cpp", so it can be a program name with args. set dummy cpp; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_RAWCPP+y} then : printf %s "(cached) " >&6 else case e in #( e) case $ac_pt_RAWCPP in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_RAWCPP="$ac_pt_RAWCPP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/bin:/usr/bin:/usr/lib:/usr/libexec:/usr/ccs/lib:/usr/ccs/lbin:/lib" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_RAWCPP="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi ac_pt_RAWCPP=$ac_cv_path_ac_pt_RAWCPP if test -n "$ac_pt_RAWCPP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_RAWCPP" >&5 printf "%s\n" "$ac_pt_RAWCPP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_RAWCPP" = x; then RAWCPP="${CPP}" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RAWCPP=$ac_pt_RAWCPP fi else RAWCPP="$ac_cv_path_RAWCPP" fi # Check for flag to avoid builtin definitions - assumes unix is predefined, # which is not the best choice for supporting other OS'es, but covers most # of the ones we need for now. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $RAWCPP requires -undef" >&5 printf %s "checking if $RAWCPP requires -undef... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ Does cpp redefine unix ? _ACEOF if test `${RAWCPP} < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else if test `${RAWCPP} -undef < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then RAWCPPFLAGS=-undef { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } # under Cygwin unix is still defined even with -undef elif test `${RAWCPP} -undef -ansi < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then RAWCPPFLAGS="-undef -ansi" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes, with -ansi" >&5 printf "%s\n" "yes, with -ansi" >&6; } else as_fn_error $? "${RAWCPP} defines unix with or without -undef. I don't know what to do." "$LINENO" 5 fi fi rm -f conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $RAWCPP requires -traditional" >&5 printf %s "checking if $RAWCPP requires -traditional... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ Does cpp preserve "whitespace"? _ACEOF if test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve "'` -eq 1 ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else if test `${RAWCPP} -traditional < conftest.$ac_ext | grep -c 'preserve "'` -eq 1 ; then TRADITIONALCPPFLAGS="-traditional" RAWCPPFLAGS="${RAWCPPFLAGS} -traditional" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else as_fn_error $? "${RAWCPP} does not preserve whitespace with or without -traditional. I don't know what to do." "$LINENO" 5 fi fi rm -f conftest.$ac_ext # Preserves the interface, should it be implemented later # Check whether --with-perl was given. if test ${with_perl+y} then : withval=$with_perl; use_perl=$withval else case e in #( e) use_perl=auto ;; esac fi if test "x$use_perl" = x"auto"; then # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PERL+y} then : printf %s "(cached) " >&6 else case e in #( e) case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 printf "%s\n" "$PERL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$PERL" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: perl not found - cannot extract information and report" >&5 printf "%s\n" "$as_me: WARNING: perl not found - cannot extract information and report" >&2;} have_perl=no else have_perl=yes fi elif test "x$use_perl" = x"yes" ; then # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PERL+y} then : printf %s "(cached) " >&6 else case e in #( e) case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 printf "%s\n" "$PERL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$PERL" = "x"; then as_fn_error $? "--with-perl=yes specified but perl not found in PATH" "$LINENO" 5 fi have_perl=yes elif test "x$use_perl" = x"no" ; then if test "x$PERL" != "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ignoring PERL environment variable since --with-perl=no was specified" >&5 printf "%s\n" "$as_me: WARNING: ignoring PERL environment variable since --with-perl=no was specified" >&2;} fi have_perl=no else as_fn_error $? "--with-perl expects 'yes' or 'no'" "$LINENO" 5 fi if test "$have_perl" = yes; then HAVE_PERL_TRUE= HAVE_PERL_FALSE='#' else HAVE_PERL_TRUE='#' HAVE_PERL_FALSE= fi # Required when PKG_CHECK_MODULES called within an if statement if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi if test x"$CC_FOR_BUILD" = x; then if test x"$cross_compiling" = xyes; then for ac_prog in gcc cc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC_FOR_BUILD+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC_FOR_BUILD="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 printf "%s\n" "$CC_FOR_BUILD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC_FOR_BUILD" && break done else CC_FOR_BUILD="$CC" fi fi if test x"$CPPFLAGS_FOR_BUILD" = x; then if test ! x"$cross_compiling" = xyes; then CPPFLAGS_FOR_BUILD=${CPPFLAGS} fi fi if test x"$CFLAGS_FOR_BUILD" = x; then if test ! x"$cross_compiling" = xyes; then CFLAGS_FOR_BUILD=${CFLAGS} fi fi if test x"$LDFLAGS_FOR_BUILD" = x; then if test ! x"$cross_compiling" = xyes; then LDFLAGS_FOR_BUILD=${LDFLAGS} fi fi if test x"$EXEEXT_FOR_BUILD" = x; then if test x"$cross_compiling" = xno; then EXEEXT_FOR_BUILD=${EXEEXT} fi # If cross-compiling and not provided, assume EXEEXT_FOR_BUILD is empty fi # Checks for pkg-config packages # Always required X11_REQUIRES='xproto >= 7.0.25 xextproto xtrans xcb >= 1.11.1' X11_EXTRA_DEPS="xcb >= 1.11.1" if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi # Issue an error if xtrans.m4 was not found and XTRANS_CONNECTION_FLAGS macro # was not expanded, since libX11 with no transport types is rather useless. # # If you're seeing an error here, be sure you installed the lib/xtrans module # first and if it's not in the default location, that you set the ACLOCAL # environment variable to find it, such as: # ACLOCAL="aclocal -I ${PREFIX}/share/aclocal" # Transport selection macro from xtrans.m4 case $host_os in mingw*) unixdef="no" ;; *) unixdef="yes" ;; esac # Check whether --enable-unix-transport was given. if test ${enable_unix_transport+y} then : enableval=$enable_unix_transport; UNIXCONN=$enableval else case e in #( e) UNIXCONN=$unixdef ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if Xtrans should support UNIX socket connections" >&5 printf %s "checking if Xtrans should support UNIX socket connections... " >&6; } if test "$UNIXCONN" = "yes"; then printf "%s\n" "#define UNIXCONN 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $UNIXCONN" >&5 printf "%s\n" "$UNIXCONN" >&6; } # Check whether --enable-tcp-transport was given. if test ${enable_tcp_transport+y} then : enableval=$enable_tcp_transport; TCPCONN=$enableval else case e in #( e) TCPCONN=yes ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if Xtrans should support TCP socket connections" >&5 printf %s "checking if Xtrans should support TCP socket connections... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TCPCONN" >&5 printf "%s\n" "$TCPCONN" >&6; } if test "$TCPCONN" = "yes"; then printf "%s\n" "#define TCPCONN 1" >>confdefs.h # SVR4 hides these in libraries other than libc { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 printf %s "checking for library containing socket... " >&6; } if test ${ac_cv_search_socket+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char socket (void); int main (void) { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_socket+y} then : break fi done if test ${ac_cv_search_socket+y} then : else case e in #( e) ac_cv_search_socket=no ;; esac fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 printf "%s\n" "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 printf %s "checking for library containing gethostbyname... " >&6; } if test ${ac_cv_search_gethostbyname+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char gethostbyname (void); int main (void) { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_gethostbyname+y} then : break fi done if test ${ac_cv_search_gethostbyname+y} then : else case e in #( e) ac_cv_search_gethostbyname=no ;; esac fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 printf "%s\n" "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi if test "$ac_cv_search_socket$ac_cv_search_gethostbyname" = "nono"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lws2_32" >&5 printf %s "checking for main in -lws2_32... " >&6; } if test ${ac_cv_lib_ws2_32_main+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-lws2_32 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ws2_32_main=yes else case e in #( e) ac_cv_lib_ws2_32_main=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ws2_32_main" >&5 printf "%s\n" "$ac_cv_lib_ws2_32_main" >&6; } if test "x$ac_cv_lib_ws2_32_main" = xyes then : printf "%s\n" "#define HAVE_LIBWS2_32 1" >>confdefs.h LIBS="-lws2_32 $LIBS" fi fi # Needs to come after above checks for libsocket & libnsl for SVR4 systems ac_fn_c_check_func "$LINENO" "getaddrinfo" "ac_cv_func_getaddrinfo" if test "x$ac_cv_func_getaddrinfo" = xyes then : printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "inet_ntop" "ac_cv_func_inet_ntop" if test "x$ac_cv_func_inet_ntop" = xyes then : printf "%s\n" "#define HAVE_INET_NTOP 1" >>confdefs.h fi # Check whether --enable-ipv6 was given. if test ${enable_ipv6+y} then : enableval=$enable_ipv6; IPV6CONN=$enableval else case e in #( e) IPV6CONN=$ac_cv_func_getaddrinfo ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IPv6 support should be built" >&5 printf %s "checking if IPv6 support should be built... " >&6; } if test "$IPV6CONN" = "yes"; then printf "%s\n" "#define IPv6 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $IPV6CONN" >&5 printf "%s\n" "$IPV6CONN" >&6; } # 4.3BSD-Reno added a new member to struct sockaddr_in ac_fn_c_check_member "$LINENO" "struct sockaddr_in" "sin_len" "ac_cv_member_struct_sockaddr_in_sin_len" " #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> " if test "x$ac_cv_member_struct_sockaddr_in_sin_len" = xyes then : printf "%s\n" "#define BSD44SOCKETS 1" >>confdefs.h fi # POSIX.1g changed the type of pointer passed to getsockname/getpeername/etc. # and added a type defined to be large enough to hold any sockaddr format. ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" " $ac_includes_default #include <sys/socket.h> " if test "x$ac_cv_type_socklen_t" = xyes then : printf "%s\n" "#define HAVE_SOCKLEN_T 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "struct sockaddr_storage" "ac_cv_type_struct_sockaddr_storage" " $ac_includes_default #include <sys/socket.h> " if test "x$ac_cv_type_struct_sockaddr_storage" = xyes then : printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_STORAGE 1" >>confdefs.h fi # XPG4v2/UNIX95 added msg_control - check to see if we need to define # _XOPEN_SOURCE to get it (such as on Solaris) ac_fn_c_check_member "$LINENO" "struct msghdr" "msg_control" "ac_cv_member_struct_msghdr_msg_control" " $ac_includes_default #include <sys/socket.h> " if test "x$ac_cv_member_struct_msghdr_msg_control" = xyes then : fi # First try for Solaris in C99 compliant mode, which requires XPG6/UNIX03 if test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then unset ac_cv_member_struct_msghdr_msg_control { printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying again with _XOPEN_SOURCE=600" >&5 printf "%s\n" "$as_me: trying again with _XOPEN_SOURCE=600" >&6;} ac_fn_c_check_member "$LINENO" "struct msghdr" "msg_control" "ac_cv_member_struct_msghdr_msg_control" " #define _XOPEN_SOURCE 600 $ac_includes_default #include <sys/socket.h> " if test "x$ac_cv_member_struct_msghdr_msg_control" = xyes then : printf "%s\n" "#define _XOPEN_SOURCE 600" >>confdefs.h fi fi # If that didn't work, fall back to XPG5/UNIX98 with C89 if test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then unset ac_cv_member_struct_msghdr_msg_control { printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying again with _XOPEN_SOURCE=500" >&5 printf "%s\n" "$as_me: trying again with _XOPEN_SOURCE=500" >&6;} ac_fn_c_check_member "$LINENO" "struct msghdr" "msg_control" "ac_cv_member_struct_msghdr_msg_control" " #define _XOPEN_SOURCE 500 $ac_includes_default #include <sys/socket.h> " if test "x$ac_cv_member_struct_msghdr_msg_control" = xyes then : printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h fi fi fi case $host_os in solaris*) localdef="yes" ;; *) localdef="no" ;; esac # Check whether --enable-local-transport was given. if test ${enable_local_transport+y} then : enableval=$enable_local_transport; LOCALCONN=$enableval else case e in #( e) LOCALCONN=$localdef ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if Xtrans should support os-specific local connections" >&5 printf %s "checking if Xtrans should support os-specific local connections... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LOCALCONN" >&5 printf "%s\n" "$LOCALCONN" >&6; } if test "$LOCALCONN" = "yes"; then printf "%s\n" "#define LOCALCONN 1" >>confdefs.h fi # Other functions Xtrans may need ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" if test "x$ac_cv_func_strcasecmp" = xyes then : printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy" if test "x$ac_cv_func_strlcpy" = xyes then : printf "%s\n" "#define HAVE_STRLCPY 1" >>confdefs.h fi # Check for dlopen { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 printf %s "checking for library containing dlopen... " >&6; } if test ${ac_cv_search_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF for ac_lib in '' dl svld do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_dlopen=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_dlopen+y} then : break fi done if test ${ac_cv_search_dlopen+y} then : else case e in #( e) ac_cv_search_dlopen=no ;; esac fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 printf "%s\n" "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi if test "x$ac_cv_search_dlopen" != xno; then printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" if test "x$ac_cv_header_dlfcn_h" = xyes then : printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if run-time linking is supported" >&5 printf %s "checking if run-time linking is supported... " >&6; } if test "x$ac_cv_header_dlfcn_h" = xyes; then HAVE_LOADABLE_MODULES=yes else HAVE_LOADABLE_MODULES=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAVE_LOADABLE_MODULES" >&5 printf "%s\n" "$HAVE_LOADABLE_MODULES" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if loadable i18n module support should be enabled" >&5 printf %s "checking if loadable i18n module support should be enabled... " >&6; } # Check whether --enable-loadable-i18n was given. if test ${enable_loadable_i18n+y} then : enableval=$enable_loadable_i18n; XLIB_LOADABLE_I18N=$enableval else case e in #( e) XLIB_LOADABLE_I18N="no" ;; esac fi if test x$XLIB_LOADABLE_I18N = xyes; then if test x$HAVE_LOADABLE_MODULES = xno; then as_fn_error $? "Loadable module support is required to enable loadable i18n module support" "$LINENO" 5 fi printf "%s\n" "#define USE_DYNAMIC_LC 1" >>confdefs.h I18N_MODULE_LIBS='${top_builddir}/src/libX11.la' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XLIB_LOADABLE_I18N" >&5 printf "%s\n" "$XLIB_LOADABLE_I18N" >&6; } if test x$XLIB_LOADABLE_I18N = xyes; then XLIB_LOADABLE_I18N_TRUE= XLIB_LOADABLE_I18N_FALSE='#' else XLIB_LOADABLE_I18N_TRUE='#' XLIB_LOADABLE_I18N_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if loadable Xcursor library support should be enabled" >&5 printf %s "checking if loadable Xcursor library support should be enabled... " >&6; } # Check whether --enable-loadable-xcursor was given. if test ${enable_loadable_xcursor+y} then : enableval=$enable_loadable_xcursor; XLIB_LOADABLE_XCURSOR=$enableval else case e in #( e) XLIB_LOADABLE_XCURSOR=$HAVE_LOADABLE_MODULES ;; esac fi if test x$XLIB_LOADABLE_XCURSOR = xyes; then printf "%s\n" "#define USE_DYNAMIC_XCURSOR 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XLIB_LOADABLE_XCURSOR" >&5 printf "%s\n" "$XLIB_LOADABLE_XCURSOR" >&6; } # Check whether --enable-thread-safety-constructor was given. if test ${enable_thread_safety_constructor+y} then : enableval=$enable_thread_safety_constructor; USE_THREAD_SAFETY_CONSTRUCTOR=$enableval else case e in #( e) USE_THREAD_SAFETY_CONSTRUCTOR="yes" ;; esac fi if test "x$USE_THREAD_SAFETY_CONSTRUCTOR" = "xyes"; then printf "%s\n" "#define USE_THREAD_SAFETY_CONSTRUCTOR 1" >>confdefs.h fi # Checks for header files. ac_fn_c_check_header_compile "$LINENO" "sys/filio.h" "ac_cv_header_sys_filio_h" "$ac_includes_default" if test "x$ac_cv_header_sys_filio_h" = xyes then : printf "%s\n" "#define HAVE_SYS_FILIO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" if test "x$ac_cv_header_sys_select_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default" if test "x$ac_cv_header_sys_ioctl_h" = xyes then : printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" if test "x$ac_cv_header_sys_socket_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi # Checks for typedefs, structures, and compiler characteristics. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_popcountl" >&5 printf %s "checking for __builtin_popcountl... " >&6; } if test ${ax_cv_have___builtin_popcountl+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { __builtin_popcountl(0) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ax_cv_have___builtin_popcountl=yes else case e in #( e) ax_cv_have___builtin_popcountl=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have___builtin_popcountl" >&5 printf "%s\n" "$ax_cv_have___builtin_popcountl" >&6; } if test yes = $ax_cv_have___builtin_popcountl then : printf "%s\n" "#define HAVE___BUILTIN_POPCOUNTL 1" >>confdefs.h fi # Checks for library functions. ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol" if test "x$ac_cv_func_strtol" = xyes then : printf "%s\n" "#define HAVE_STRTOL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" if test "x$ac_cv_func_seteuid" = xyes then : printf "%s\n" "#define HAVE_SETEUID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "reallocarray" "ac_cv_func_reallocarray" if test "x$ac_cv_func_reallocarray" = xyes then : printf "%s\n" "#define HAVE_REALLOCARRAY 1" >>confdefs.h else case e in #( e) case " $LIBOBJS " in *" reallocarray.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS reallocarray.$ac_objext" ;; esac ;; esac fi # Used in lcFile.c (see also --enable-xlocaledir settings below) XLOCALEDIR_IS_SAFE="no" ac_fn_check_decl "$LINENO" "issetugid" "ac_cv_have_decl_issetugid" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_issetugid" = xyes then : fi ac_fn_c_check_func "$LINENO" "issetugid" "ac_cv_func_issetugid" if test "x$ac_cv_func_issetugid" = xyes then : fi if test "$ac_cv_have_decl_issetugid" = yes && test "$ac_cv_func_issetugid" = yes; then XLOCALEDIR_IS_SAFE="yes" printf "%s\n" "#define HASSETUGID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getresuid" "ac_cv_func_getresuid" if test "x$ac_cv_func_getresuid" = xyes then : XLOCALEDIR_IS_SAFE="yes" printf "%s\n" "#define HASGETRESUID 1" >>confdefs.h fi # Used in Font.c ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" if test "x$ac_cv_func_shmat" = xyes then : printf "%s\n" "#define HAS_SHM 1" >>confdefs.h fi # Checks for system services # AC_PATH_XTRA # arch specific things WCHAR32="1" case $host_os in os2*) os2="true" ; WCHAR32="0" ;; *) ;; esac if test x$os2 = xtrue; then OS2_TRUE= OS2_FALSE='#' else OS2_TRUE='#' OS2_FALSE= fi # Check whether --with-launchd was given. if test ${with_launchd+y} then : withval=$with_launchd; LAUNCHD=$withval else case e in #( e) LAUNCHD=auto ;; esac fi if test "x$LAUNCHD" = xauto; then unset LAUNCHD # Extract the first word of "launchd", so it can be a program name with args. set dummy launchd; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LAUNCHD+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$LAUNCHD"; then ac_cv_prog_LAUNCHD="$LAUNCHD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/sbin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LAUNCHD="yes" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_LAUNCHD" && ac_cv_prog_LAUNCHD="no" fi ;; esac fi LAUNCHD=$ac_cv_prog_LAUNCHD if test -n "$LAUNCHD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LAUNCHD" >&5 printf "%s\n" "$LAUNCHD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test "x$LAUNCHD" = xyes ; then printf "%s\n" "#define HAVE_LAUNCHD 1" >>confdefs.h printf "%s\n" "#define TRANS_REOPEN 1" >>confdefs.h fi # Check whether --enable-xthreads was given. if test ${enable_xthreads+y} then : enableval=$enable_xthreads; xthreads=$enableval else case e in #( e) xthreads=yes ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpwuid_r in -lc" >&5 printf %s "checking for getpwuid_r in -lc... " >&6; } if test ${ac_cv_lib_c_getpwuid_r+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-lc $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char getpwuid_r (void); int main (void) { return getpwuid_r (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_c_getpwuid_r=yes else case e in #( e) ac_cv_lib_c_getpwuid_r=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_getpwuid_r" >&5 printf "%s\n" "$ac_cv_lib_c_getpwuid_r" >&6; } if test "x$ac_cv_lib_c_getpwuid_r" = xyes then : mtsafeapi="yes" else case e in #( e) mtsafeapi="no" ;; esac fi case x$xthreads in xyes) printf "%s\n" "#define XTHREADS 1" >>confdefs.h if test x$mtsafeapi = xyes then printf "%s\n" "#define XUSE_MTSAFE_API 1" >>confdefs.h fi ;; *) ;; esac # XXX incomplete, please fill this in if test x$xthreads = xyes ; then case $host_os in linux*|gnu*|k*bsd*-gnu) XTHREADLIB=-lpthread ;; netbsd*) XTHREAD_CFLAGS="-D_POSIX_THREAD_SAFE_FUNCTIONS" XTHREADLIB="-lpthread" ;; freebsd*) XTHREAD_CFLAGS="-D_THREAD_SAFE" XTHREADLIB="-pthread" ;; dragonfly*|openbsd*) XTHREADLIB="-pthread" ;; solaris*) XTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS" ;; esac fi if test "x$USE_THREAD_SAFETY_CONSTRUCTOR" = "xyes"; then USE_THREAD_LIBS="$XTHREADLIB" else # This should be kept in sync with libxcb case $host_os in linux*|darwin*|solaris*|dragonfly*|freebsd*|netbsd*) ;; *) X11_REQUIRES="$X11_REQUIRES pthread-stubs" ;; esac fi ac_fn_c_check_func "$LINENO" "poll" "ac_cv_func_poll" if test "x$ac_cv_func_poll" = xyes then : printf "%s\n" "#define USE_POLL 1" >>confdefs.h fi # # Find keysymdef.h # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking keysym definitions" >&5 printf %s "checking keysym definitions... " >&6; } # Check whether --with-keysymdefdir was given. if test ${with_keysymdefdir+y} then : withval=$with_keysymdefdir; KEYSYMDEFDIR=$withval else case e in #( e) KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11 ;; esac fi if test ! -d "$KEYSYMDEFDIR"; then as_fn_error $? "$KEYSYMDEFDIR doesn't exist or isn't a directory" "$LINENO" 5 fi FILES="keysymdef.h XF86keysym.h Sunkeysym.h DECkeysym.h HPkeysym.h" for i in $FILES; do if test -f "$KEYSYMDEFDIR/$i"; then KEYSYMDEFS="$KEYSYMDEFS $KEYSYMDEFDIR/$i" elif test "x$i" = "xkeysymdef.h"; then as_fn_error $? "Cannot find keysymdef.h" "$LINENO" 5 fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $KEYSYMDEFS" >&5 printf "%s\n" "$KEYSYMDEFS" >&6; } # Check whether --enable-xcms was given. if test ${enable_xcms+y} then : enableval=$enable_xcms; XCMS=$enableval else case e in #( e) XCMS=yes ;; esac fi if test x$XCMS = xyes ; then XCMS_TRUE= XCMS_FALSE='#' else XCMS_TRUE='#' XCMS_FALSE= fi if test x"$XCMS" = "xyes"; then printf "%s\n" "#define XCMS 1" >>confdefs.h fi # Check whether --enable-xlocale was given. if test ${enable_xlocale+y} then : enableval=$enable_xlocale; XLOCALE=$enableval else case e in #( e) XLOCALE=yes ;; esac fi if test x$XLOCALE = xyes ; then XLOCALE_TRUE= XLOCALE_FALSE='#' else XLOCALE_TRUE='#' XLOCALE_FALSE= fi if test x"$XLOCALE" = "xyes"; then printf "%s\n" "#define XLOCALE 1" >>confdefs.h fi # This disables XLOCALEDIR. Set it if you're using BuildLoadableXlibI18n, # don't have either issetugid() or getresuid(), and you need to protect # clients that are setgid or setuid to an id other than 0. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if XLOCALEDIR support should be enabled" >&5 printf %s "checking if XLOCALEDIR support should be enabled... " >&6; } # Check whether --enable-xlocaledir was given. if test ${enable_xlocaledir+y} then : enableval=$enable_xlocaledir; ENABLE_XLOCALEDIR=$enableval else case e in #( e) ENABLE_XLOCALEDIR=$XLOCALEDIR_IS_SAFE ;; esac fi if test "x$ENABLE_XLOCALEDIR" = "xno"; then printf "%s\n" "#define NO_XLOCALEDIR 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ENABLE_XLOCALEDIR" >&5 printf "%s\n" "$ENABLE_XLOCALEDIR" >&6; } # Check whether --enable-xf86bigfont was given. if test ${enable_xf86bigfont+y} then : enableval=$enable_xf86bigfont; XF86BIGFONT=$enableval else case e in #( e) XF86BIGFONT="yes" ;; esac fi if test "x$XF86BIGFONT" = "xyes"; then pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BIGFONT" >&5 printf %s "checking for BIGFONT... " >&6; } if test -n "$BIGFONT_CFLAGS"; then pkg_cv_BIGFONT_CFLAGS="$BIGFONT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xf86bigfontproto >= 1.2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "xf86bigfontproto >= 1.2.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_BIGFONT_CFLAGS=`$PKG_CONFIG --cflags "xf86bigfontproto >= 1.2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$BIGFONT_LIBS"; then pkg_cv_BIGFONT_LIBS="$BIGFONT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xf86bigfontproto >= 1.2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "xf86bigfontproto >= 1.2.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_BIGFONT_LIBS=`$PKG_CONFIG --libs "xf86bigfontproto >= 1.2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then BIGFONT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "xf86bigfontproto >= 1.2.0" 2>&1` else BIGFONT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "xf86bigfontproto >= 1.2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$BIGFONT_PKG_ERRORS" >&5 XF86BIGFONT="no" elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } XF86BIGFONT="no" else BIGFONT_CFLAGS=$pkg_cv_BIGFONT_CFLAGS BIGFONT_LIBS=$pkg_cv_BIGFONT_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define XF86BIGFONT 1" >>confdefs.h fi fi # Check whether --enable-xkb was given. if test ${enable_xkb+y} then : enableval=$enable_xkb; XKB=$enableval else case e in #( e) XKB=yes ;; esac fi if test x$XKB = xyes ; then XKB_TRUE= XKB_FALSE='#' else XKB_TRUE='#' XKB_FALSE= fi if test x"$XKB" = "xyes"; then XKBPROTO_REQUIRES="kbproto" X11_REQUIRES="${X11_REQUIRES} kbproto inputproto" printf "%s\n" "#define XKB 1" >>confdefs.h else XKBPROTO_REQUIRES="" fi ac_func= for ac_item in $ac_func_c_list do if test $ac_func; then ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then echo "#define $ac_item 1" >> confdefs.h fi ac_func= else ac_func=$ac_item fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 printf %s "checking for working mmap... " >&6; } if test ${ac_cv_func_mmap_fixed_mapped+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "$cross_compiling" = yes then : case "$host_os" in # (( # Guess yes on platforms where we know the result. linux*) ac_cv_func_mmap_fixed_mapped=yes ;; # If we don't know, assume the worst. *) ac_cv_func_mmap_fixed_mapped=no ;; esac else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default /* malloc might have been renamed as rpl_malloc. */ #undef malloc /* Thanks to Mike Haertel and Jim Avera for this test. Here is a matrix of mmap possibilities: mmap private not fixed mmap private fixed at somewhere currently unmapped mmap private fixed at somewhere already mapped mmap shared not fixed mmap shared fixed at somewhere currently unmapped mmap shared fixed at somewhere already mapped For private mappings, we should verify that changes cannot be read() back from the file, nor mmap's back from the file at a different address. (There have been systems where private was not correctly implemented like the infamous i386 svr4.0, and systems where the VM page cache was not coherent with the file system buffer cache like early versions of FreeBSD and possibly contemporary NetBSD.) For shared mappings, we should conversely verify that changes get propagated back to all the places they're supposed to be. */ #include <fcntl.h> #include <sys/mman.h> #ifndef getpagesize /* Prefer sysconf to the legacy getpagesize function, as getpagesize has been removed from POSIX and is limited to page sizes that fit in 'int'. */ # ifdef _SC_PAGESIZE # define getpagesize() sysconf (_SC_PAGESIZE) # elif defined _SC_PAGE_SIZE # define getpagesize() sysconf (_SC_PAGE_SIZE) # elif HAVE_GETPAGESIZE int getpagesize (); # else # ifdef HAVE_SYS_PARAM_H # include <sys/param.h> # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE # else /* no EXEC_PAGESIZE */ # ifdef NBPG # define getpagesize() NBPG * CLSIZE # ifndef CLSIZE # define CLSIZE 1 # endif /* no CLSIZE */ # else /* no NBPG */ # ifdef NBPC # define getpagesize() NBPC # else /* no NBPC */ # ifdef PAGESIZE # define getpagesize() PAGESIZE # endif /* PAGESIZE */ # endif /* no NBPC */ # endif /* no NBPG */ # endif /* no EXEC_PAGESIZE */ # else /* no HAVE_SYS_PARAM_H */ # define getpagesize() 8192 /* punt totally */ # endif /* no HAVE_SYS_PARAM_H */ # endif #endif int main (void) { char *data, *data2, *data3; const char *cdata2; long i, pagesize; int fd, fd2; pagesize = getpagesize (); /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) return 1; for (i = 0; i < pagesize; ++i) *(data + i) = rand (); umask (0); fd = creat ("conftest.mmap", 0600); if (fd < 0) return 2; if (write (fd, data, pagesize) != pagesize) return 3; close (fd); /* Next, check that the tail of a page is zero-filled. File must have non-zero length, otherwise we risk SIGBUS for entire page. */ fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); if (fd2 < 0) return 4; cdata2 = ""; if (write (fd2, cdata2, 1) != 1) return 5; data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); if (data2 == MAP_FAILED) return 6; for (i = 0; i < pagesize; ++i) if (*(data2 + i)) return 7; close (fd2); /* 'return 8;' not currently used. */ /* Next, try to mmap the file at a fixed address which already has something else allocated at it. If we can, also make sure that we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) return 9; if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L)) return 10; for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data2 + i)) return 11; /* Finally, make sure that changes to the mapped area do not percolate back to the file as seen by read(). (This is a bug on some variants of i386 svr4.0.) */ for (i = 0; i < pagesize; ++i) *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) return 12; if (read (fd, data3, pagesize) != pagesize) return 13; for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data3 + i)) return 14; close (fd); free (data); free (data3); return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_mmap_fixed_mapped=yes else case e in #( e) ac_cv_func_mmap_fixed_mapped=no ;; esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 printf "%s\n" "$ac_cv_func_mmap_fixed_mapped" >&6; } if test $ac_cv_func_mmap_fixed_mapped = yes; then printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h fi rm -f conftest.mmap conftest.txt composecache_default=$ac_cv_func_mmap_fixed_mapped ac_fn_c_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo" if test "x$ac_cv_func_nl_langinfo" = xyes then : else case e in #( e) composecache_default=no ;; esac fi # Check whether --enable-composecache was given. if test ${enable_composecache+y} then : enableval=$enable_composecache; COMPOSECACHE=$enableval else case e in #( e) COMPOSECACHE=$composecache_default ;; esac fi if test x"$COMPOSECACHE" = "xyes"; then printf "%s\n" "#define COMPOSECACHE 1" >>confdefs.h fi # Allow checking code with lint, sparse, etc. # Check whether --with-lint was given. if test ${with_lint+y} then : withval=$with_lint; use_lint=$withval else case e in #( e) use_lint=no ;; esac fi # Obtain platform specific info like program name and options # The lint program on FreeBSD and NetBSD is different from the one on Solaris case $host_os in *linux* | *openbsd* | kfreebsd*-gnu | darwin* | cygwin*) lint_name=splint lint_options="-badflag" ;; *freebsd* | *netbsd*) lint_name=lint lint_options="-u -b" ;; *solaris*) lint_name=lint lint_options="-u -b -h -erroff=E_INDISTING_FROM_TRUNC2" ;; esac # Test for the presence of the program (either guessed by the code or spelled out by the user) if test "x$use_lint" = x"yes" ; then # Extract the first word of "$lint_name", so it can be a program name with args. set dummy $lint_name; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_LINT+y} then : printf %s "(cached) " >&6 else case e in #( e) case $LINT in [\\/]* | ?:[\\/]*) ac_cv_path_LINT="$LINT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_LINT="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi LINT=$ac_cv_path_LINT if test -n "$LINT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LINT" >&5 printf "%s\n" "$LINT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$LINT" = "x"; then as_fn_error $? "--with-lint=yes specified but lint-style tool not found in PATH" "$LINENO" 5 fi elif test "x$use_lint" = x"no" ; then if test "x$LINT" != "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ignoring LINT environment variable since --with-lint=no was specified" >&5 printf "%s\n" "$as_me: WARNING: ignoring LINT environment variable since --with-lint=no was specified" >&2;} fi else as_fn_error $? "--with-lint expects 'yes' or 'no'. Use LINT variable to specify path." "$LINENO" 5 fi # User supplied flags override default flags if test "x$LINT_FLAGS" != "x"; then lint_options=$LINT_FLAGS fi LINT_FLAGS=$lint_options if test "x$LINT" != x; then LINT_TRUE= LINT_FALSE='#' else LINT_TRUE='#' LINT_FALSE= fi # Check whether --enable-lint-library was given. if test ${enable_lint_library+y} then : enableval=$enable_lint_library; make_lint_lib=$enableval else case e in #( e) make_lint_lib=no ;; esac fi if test "x$make_lint_lib" = x"yes" ; then LINTLIB=llib-lX11.ln if test "x$LINT" = "x"; then as_fn_error $? "Cannot make lint library without --with-lint" "$LINENO" 5 fi elif test "x$make_lint_lib" != x"no" ; then as_fn_error $? "--enable-lint-library expects 'yes' or 'no'." "$LINENO" 5 fi if test x$make_lint_lib != xno; then MAKE_LINT_LIB_TRUE= MAKE_LINT_LIB_FALSE='#' else MAKE_LINT_LIB_TRUE='#' MAKE_LINT_LIB_FALSE= fi X11_DATADIR="${datadir}/X11" prefix_NONE= exec_prefix_NONE= test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix eval ax_define_dir="\"$X11_DATADIR\"" eval ax_define_dir="\"$ax_define_dir\"" X11_DATADIR="$ax_define_dir" printf "%s\n" "#define X11_DATADIR \"$ax_define_dir\"" >>confdefs.h test "$prefix_NONE" && prefix=NONE test "$exec_prefix_NONE" && exec_prefix=NONE X11_LIBDIR="${libdir}/X11" prefix_NONE= exec_prefix_NONE= test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix eval ax_define_dir="\"$X11_LIBDIR\"" eval ax_define_dir="\"$ax_define_dir\"" X11_LIBDIR="$ax_define_dir" printf "%s\n" "#define X11_LIBDIR \"$ax_define_dir\"" >>confdefs.h test "$prefix_NONE" && prefix=NONE test "$exec_prefix_NONE" && exec_prefix=NONE pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X11" >&5 printf %s "checking for X11... " >&6; } if test -n "$X11_CFLAGS"; then pkg_cv_X11_CFLAGS="$X11_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$X11_REQUIRES\""; } >&5 ($PKG_CONFIG --exists --print-errors "$X11_REQUIRES") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_X11_CFLAGS=`$PKG_CONFIG --cflags "$X11_REQUIRES" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$X11_LIBS"; then pkg_cv_X11_LIBS="$X11_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$X11_REQUIRES\""; } >&5 ($PKG_CONFIG --exists --print-errors "$X11_REQUIRES") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_X11_LIBS=`$PKG_CONFIG --libs "$X11_REQUIRES" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then X11_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$X11_REQUIRES" 2>&1` else X11_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$X11_REQUIRES" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$X11_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ($X11_REQUIRES) were not met: $X11_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables X11_CFLAGS and X11_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables X11_CFLAGS and X11_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see <http://pkg-config.freedesktop.org/>. See 'config.log' for more details" "$LINENO" 5; } else X11_CFLAGS=$pkg_cv_X11_CFLAGS X11_LIBS=$pkg_cv_X11_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi X11_CFLAGS="$X11_CFLAGS $XTHREAD_CFLAGS" # # Yes, it would be nice to put the locale data in # /usr/share, but the locale stuff includes loadable # libraries which must be located in the same directory # as the other locale data, so for now, everything lives # in ${libdir} # X11_LOCALEDATADIR="${X11_DATADIR}/locale" prefix_NONE= exec_prefix_NONE= test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix eval ax_define_dir="\"$X11_LOCALEDATADIR\"" eval ax_define_dir="\"$ax_define_dir\"" XLOCALEDATADIR="$ax_define_dir" printf "%s\n" "#define XLOCALEDATADIR \"$ax_define_dir\"" >>confdefs.h test "$prefix_NONE" && prefix=NONE test "$exec_prefix_NONE" && exec_prefix=NONE # Check whether --with-locale-lib-dir was given. if test ${with_locale_lib_dir+y} then : withval=$with_locale_lib_dir; X11_LOCALELIBDIR="$withval" else case e in #( e) X11_LOCALELIBDIR="${X11_LIBDIR}/locale" ;; esac fi prefix_NONE= exec_prefix_NONE= test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix eval ax_define_dir="\"$X11_LOCALELIBDIR\"" eval ax_define_dir="\"$ax_define_dir\"" XLOCALELIBDIR="$ax_define_dir" printf "%s\n" "#define XLOCALELIBDIR \"$ax_define_dir\"" >>confdefs.h test "$prefix_NONE" && prefix=NONE test "$exec_prefix_NONE" && exec_prefix=NONE X11_LOCALEDIR="${X11_LOCALEDATADIR}" prefix_NONE= exec_prefix_NONE= test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix eval ax_define_dir="\"$X11_LOCALEDIR\"" eval ax_define_dir="\"$ax_define_dir\"" XLOCALEDIR="$ax_define_dir" printf "%s\n" "#define XLOCALEDIR \"$ax_define_dir\"" >>confdefs.h test "$prefix_NONE" && prefix=NONE test "$exec_prefix_NONE" && exec_prefix=NONE locales="\ am_ET.UTF-8 armscii-8 C cs_CZ.UTF-8 el_GR.UTF-8 en_US.UTF-8 \ fi_FI.UTF-8 georgian-academy georgian-ps ibm-cp1133 iscii-dev \ isiri-3342 iso8859-1 iso8859-10 iso8859-11 iso8859-13 iso8859-14 \ iso8859-15 iso8859-2 iso8859-3 iso8859-4 iso8859-5 iso8859-6 \ iso8859-7 iso8859-8 iso8859-9 iso8859-9e ja ja.JIS \ ja_JP.UTF-8 ja.SJIS km_KH.UTF-8 ko koi8-c koi8-r \ koi8-u ko_KR.UTF-8 microsoft-cp1251 microsoft-cp1255 \ microsoft-cp1256 mulelao-1 nokhchi-1 pt_BR.UTF-8 pt_PT.UTF-8 \ ru_RU.UTF-8 sr_RS.UTF-8 tatar-cyr th_TH th_TH.UTF-8 tscii-0 \ vi_VN.tcvn vi_VN.viscii zh_CN zh_CN.gb18030 \ zh_CN.gbk zh_CN.UTF-8 zh_HK.big5 zh_HK.big5hkscs zh_HK.UTF-8 \ zh_TW zh_TW.big5 zh_TW.UTF-8" XKEYSYMDB="${X11_DATADIR}/XKeysymDB" prefix_NONE= exec_prefix_NONE= test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix eval ax_define_dir="\"$XKEYSYMDB\"" eval ax_define_dir="\"$ax_define_dir\"" XKEYSYMDB="$ax_define_dir" printf "%s\n" "#define XKEYSYMDB \"$ax_define_dir\"" >>confdefs.h test "$prefix_NONE" && prefix=NONE test "$exec_prefix_NONE" && exec_prefix=NONE XERRORDB="${X11_DATADIR}/XErrorDB" prefix_NONE= exec_prefix_NONE= test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix eval ax_define_dir="\"$XERRORDB\"" eval ax_define_dir="\"$ax_define_dir\"" XERRORDB="$ax_define_dir" printf "%s\n" "#define XERRORDB \"$ax_define_dir\"" >>confdefs.h test "$prefix_NONE" && prefix=NONE test "$exec_prefix_NONE" && exec_prefix=NONE # Check whether --enable-malloc0returnsnull was given. if test ${enable_malloc0returnsnull+y} then : enableval=$enable_malloc0returnsnull; MALLOC_ZERO_RETURNS_NULL=$enableval else case e in #( e) MALLOC_ZERO_RETURNS_NULL=yes ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to act as if malloc(0) can return NULL" >&5 printf %s "checking whether to act as if malloc(0) can return NULL... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MALLOC_ZERO_RETURNS_NULL" >&5 printf "%s\n" "$MALLOC_ZERO_RETURNS_NULL" >&6; } if test "x$MALLOC_ZERO_RETURNS_NULL" = xyes; then MALLOC_ZERO_CFLAGS="-DMALLOC_0_RETURNS_NULL" XMALLOC_ZERO_CFLAGS=$MALLOC_ZERO_CFLAGS XTMALLOC_ZERO_CFLAGS="$MALLOC_ZERO_CFLAGS -DXTMALLOC_BC" else MALLOC_ZERO_CFLAGS="" XMALLOC_ZERO_CFLAGS="" XTMALLOC_ZERO_CFLAGS="" fi ac_config_files="$ac_config_files Makefile include/Makefile man/Makefile man/xkb/Makefile src/Makefile src/util/Makefile src/xcms/Makefile src/xlibi18n/Makefile modules/Makefile modules/im/Makefile modules/im/ximcp/Makefile modules/lc/Makefile modules/lc/def/Makefile modules/lc/gen/Makefile modules/lc/Utf8/Makefile modules/om/Makefile modules/om/generic/Makefile src/xkb/Makefile nls/Makefile specs/Makefile specs/i18n/Makefile specs/i18n/compose/Makefile specs/i18n/framework/Makefile specs/i18n/localedb/Makefile specs/i18n/trans/Makefile specs/libX11/Makefile specs/XIM/Makefile specs/XKB/Makefile x11.pc x11-xcb.pc" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # 'ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; esac if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi # Check whether --enable-year2038 was given. if test ${enable_year2038+y} then : enableval=$enable_year2038; fi if test -z "${ENABLE_SPECS_TRUE}" && test -z "${ENABLE_SPECS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SPECS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_XMLTO_TEXT_TRUE}" && test -z "${HAVE_XMLTO_TEXT_FALSE}"; then as_fn_error $? "conditional \"HAVE_XMLTO_TEXT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_XMLTO_TRUE}" && test -z "${HAVE_XMLTO_FALSE}"; then as_fn_error $? "conditional \"HAVE_XMLTO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_FOP_TRUE}" && test -z "${HAVE_FOP_FALSE}"; then as_fn_error $? "conditional \"HAVE_FOP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_XSLTPROC_TRUE}" && test -z "${HAVE_XSLTPROC_FALSE}"; then as_fn_error $? "conditional \"HAVE_XSLTPROC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_STYLESHEETS_TRUE}" && test -z "${HAVE_STYLESHEETS_FALSE}"; then as_fn_error $? "conditional \"HAVE_STYLESHEETS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PERL_TRUE}" && test -z "${HAVE_PERL_FALSE}"; then as_fn_error $? "conditional \"HAVE_PERL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XLIB_LOADABLE_I18N_TRUE}" && test -z "${XLIB_LOADABLE_I18N_FALSE}"; then as_fn_error $? "conditional \"XLIB_LOADABLE_I18N\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS2_TRUE}" && test -z "${OS2_FALSE}"; then as_fn_error $? "conditional \"OS2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XCMS_TRUE}" && test -z "${XCMS_FALSE}"; then as_fn_error $? "conditional \"XCMS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XLOCALE_TRUE}" && test -z "${XLOCALE_FALSE}"; then as_fn_error $? "conditional \"XLOCALE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XKB_TRUE}" && test -z "${XKB_FALSE}"; then as_fn_error $? "conditional \"XKB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LINT_TRUE}" && test -z "${LINT_FALSE}"; then as_fn_error $? "conditional \"LINT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${MAKE_LINT_LIB_TRUE}" && test -z "${MAKE_LINT_LIB_FALSE}"; then as_fn_error $? "conditional \"MAKE_LINT_LIB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by libX11 $as_me 1.8.12, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ '$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to <https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues>." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ libX11 config.status 1.8.12 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" Copyright (C) 2023 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: '$1' Try '$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: '$1' Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ FILECMD \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; "include/X11/XlibConf.h") CONFIG_HEADERS="$CONFIG_HEADERS include/X11/XlibConf.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "man/xkb/Makefile") CONFIG_FILES="$CONFIG_FILES man/xkb/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/util/Makefile") CONFIG_FILES="$CONFIG_FILES src/util/Makefile" ;; "src/xcms/Makefile") CONFIG_FILES="$CONFIG_FILES src/xcms/Makefile" ;; "src/xlibi18n/Makefile") CONFIG_FILES="$CONFIG_FILES src/xlibi18n/Makefile" ;; "modules/Makefile") CONFIG_FILES="$CONFIG_FILES modules/Makefile" ;; "modules/im/Makefile") CONFIG_FILES="$CONFIG_FILES modules/im/Makefile" ;; "modules/im/ximcp/Makefile") CONFIG_FILES="$CONFIG_FILES modules/im/ximcp/Makefile" ;; "modules/lc/Makefile") CONFIG_FILES="$CONFIG_FILES modules/lc/Makefile" ;; "modules/lc/def/Makefile") CONFIG_FILES="$CONFIG_FILES modules/lc/def/Makefile" ;; "modules/lc/gen/Makefile") CONFIG_FILES="$CONFIG_FILES modules/lc/gen/Makefile" ;; "modules/lc/Utf8/Makefile") CONFIG_FILES="$CONFIG_FILES modules/lc/Utf8/Makefile" ;; "modules/om/Makefile") CONFIG_FILES="$CONFIG_FILES modules/om/Makefile" ;; "modules/om/generic/Makefile") CONFIG_FILES="$CONFIG_FILES modules/om/generic/Makefile" ;; "src/xkb/Makefile") CONFIG_FILES="$CONFIG_FILES src/xkb/Makefile" ;; "nls/Makefile") CONFIG_FILES="$CONFIG_FILES nls/Makefile" ;; "specs/Makefile") CONFIG_FILES="$CONFIG_FILES specs/Makefile" ;; "specs/i18n/Makefile") CONFIG_FILES="$CONFIG_FILES specs/i18n/Makefile" ;; "specs/i18n/compose/Makefile") CONFIG_FILES="$CONFIG_FILES specs/i18n/compose/Makefile" ;; "specs/i18n/framework/Makefile") CONFIG_FILES="$CONFIG_FILES specs/i18n/framework/Makefile" ;; "specs/i18n/localedb/Makefile") CONFIG_FILES="$CONFIG_FILES specs/i18n/localedb/Makefile" ;; "specs/i18n/trans/Makefile") CONFIG_FILES="$CONFIG_FILES specs/i18n/trans/Makefile" ;; "specs/libX11/Makefile") CONFIG_FILES="$CONFIG_FILES specs/libX11/Makefile" ;; "specs/XIM/Makefile") CONFIG_FILES="$CONFIG_FILES specs/XIM/Makefile" ;; "specs/XKB/Makefile") CONFIG_FILES="$CONFIG_FILES specs/XKB/Makefile" ;; "x11.pc") CONFIG_FILES="$CONFIG_FILES x11.pc" ;; "x11-xcb.pc") CONFIG_FILES="$CONFIG_FILES x11-xcb.pc" ;; *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' <conf$$subs.awk | sed ' /^[^""]/{ N s/\n// } ' >>$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with './config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script 'defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' <confdefs.h | sed ' s/'"$ac_delim"'/"\\\ "/g' >>$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See 'config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2024 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # The names of the tagged configurations supported by this script. available_tags='' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # A file(cmd) program that detects file types. FILECMD=$lt_FILECMD # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive (by configure). lt_ar_flags=$lt_ar_flags # Flags to create an archive. AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e. impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi echo "" echo "$PACKAGE_STRING will be built with the following settings:" echo " Loadable i18n module support: "$XLIB_LOADABLE_I18N echo " Loadable xcursor library support: "$XLIB_LOADABLE_XCURSOR echo " Threading support: "$xthreads echo " Use Threads safe API: "$mtsafeapi echo " Use thread safety constructor: "$USE_THREAD_SAFETY_CONSTRUCTOR echo " XCMS: "$XCMS echo " Internationalization support: "$XLOCALE echo " XF86BigFont support: "$XF86BIGFONT echo " XKB support: "$XKB echo " XLOCALEDIR environment variable support: "$ENABLE_XLOCALEDIR echo " Compose table cache enabled: "$COMPOSECACHE echo " Functional specs building enabled: "$build_specs echo "" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libX11-1.8.12/README.md�����������������������������������������������������������������������������0000644�0143106�0000012�00000022037�14763154126�007610� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# libX11 - Core X11 protocol client library Documentation for this library can be found in the included man pages, and in the Xlib spec from the specs subdirectory, also available at: - https://www.x.org/releases/current/doc/libX11/libX11/libX11.html - https://www.x.org/releases/current/doc/libX11/libX11/libX11.pdf and the O'Reilly Xlib books, which they have made freely available online, though only for older versions of X11: - X Series Volume 2: Xlib Reference Manual (1989, covers X11R3) https://www.archive.org/details/xlibretmanver1102nyemiss - X Series Volume 2: Xlib Reference Manual, 2nd Edition (1990, covers X11R4) https://www.archive.org/details/xlibrefmanv115ed02nyemiss All questions regarding this software should be directed at the Xorg mailing list: https://lists.x.org/mailman/listinfo/xorg The primary development code repository can be found at: https://gitlab.freedesktop.org/xorg/lib/libX11 Please submit bug reports and requests to merge patches there. For patch submission instructions, see: https://www.x.org/wiki/Development/Documentation/SubmittingPatches ## Release 1.8.12 * x11.pc: Add URL field (!280) * xkb: Bring over fixes from Xserver to shared XKB source files (!279) ## Release 1.8.11 * Close xcb connection after freeing display structure to avoid XIO error when running synchronized (!264) * Don't allocate memory for a zero-sized list of directories when `SetFontPath()` is called with `ndirs == 0` (!266) * Fix `-Werror=array-bounds` build failures with gcc 14.2 when `MALLOC_0_RETURNS_NULL` is defined (!267) * Set `data` field to 0 when initializing new requests (!268) * ximcp: don't leak window if `XGetAtomName()` fails (!269) * ximcp: allow XNArea with OnTheSpot (!270) * ximcp: hide internal functions added in 1.8.10 (!271) * Handle `-Wextra-semi-stmt` warnings from clang (!272) * xkb: avoid undefined behavior due to left shift overflow (#225, !273) * Fix misuse of `UCSConvertCase()` in `XConvertCase()` (!274) * drop `pthread-stubs` dependency on Dragonfly, FreeBSD, & NetBSD (!277) ## Release 1.8.10 * Re-fix XIM input sometimes jumbled (#205, #206, #207, #208, !246) * Fix various static analysis errors (!250) * Add compose sequences for Arabic hamza (!218), Ezh (!221), and hryvnia currency (!259) * Make colormap private interfaces thread safe (#215, !254) * Fix deadlock in XRebindKeysym() (!256) * Assorted memory handling cleanups (!251, !258) * Restore VAX support still in use by NetBSD (!257) ## Release 1.8.9 * Fix regressions introduced in 1.8.8 (!245, !248) - this includes reverting for now the previous "Fix XIM input sometimes jumbled (#198, !236)" ## Release 1.8.8 * Fix XIM input sometimes jumbled (#198, !236) * Fix _XkbReadGetDeviceInfoReply for nButtons == dev->buttons (!237) * Drop ifdefs for platforms that are no longer supported (!242, !243) * Assorted memory handling cleanups ## Release 1.8.7 * Security fixes and hardening in XImage and pixmap handling code (CVE-2023-43786, CVE-2023-43787, !234) * Fix buffer allocation in _XkbReadKeySyms() (CVE-2023-43785) * Fail XOpenDisplay() if server-provided default visual is invalid (!233) * Bring XKB docs in line with actual implementation (!231, !228) * Xutil.h: declare XEmptyRegion() and XEqualRegion() as Bool (!225) * Assorted updates to en_US.UTF-8 compose keys (!213, !214, !215, !216, !217, !219, !220, !222, !223, !226, !227, !229) ## Release 1.8.6 * Add bounds checks in InitExt.c (CVE-2023-3138) ## Release 1.8.5 * autoconf & libtool updates (!187, !188) * Restore missing text in XSetScreenSaver man page (#187, !203) * Update am_ET.UTF-8 compose keys to use dead-vowel symbols, in coordination with xkeyboard-config 2.39 (!205) * Assorted updates to en_US.UTF-8 compose keys (!189, !195, !196, !198, !199, !200, !201, !207, !208, !209) ## Release 1.8.4 * Revert AddressSanitizer fix from 1.8.3 that caused regression (#176, !180) * Add two compose sequences for "capital B with stroke", remove others (!179) * Further improved handling of reentering libX11 via X*IfEvent() calls (!176) ## Release 1.8.3 * Improved handling of reentering libX11 via X*IfEvent() calls (!171, !173) * Fix loading of en_US.UTF-8/XLC_LOCALE (#167, !174) * Add XFreeThreads() and automatic call from a destructor function when thread-safety-constructor is enabled (!167). * Address issues found by UBSan and AddressSanitizer * Fix build with older gcc versions (!169) ## Release 1.8.2 * Allow X*IfEvent() to reenter libX11 to avoid deadlock from unsafe calls when thread-safety-constructor is enabled (!150). * Remove Xlib's pthread function stubs - instead use system provided threads functions, including linking against any needed pthread libraries if thread-safety-constructor is enabled (!155, !156). * Fix off-by-one error in XKeycodeToKeysym for indexes > 3 (!78). * Allow XNSpotLocation with OnTheSpot (!127). * Fix Win32 build when -fno-common is in effect (!140). * Fix memory leak in XRegisterIMInstantiateCallback (!158). * Add compose sequences for the double-struck capitals ℕ ℤ ℚ ℝ ℂ (!144), the Samogitian E with dot above and macron (!147), Unicode minus sign (!163). * Change <Compose> <^> <-> to mean superscript minus instead of macron (!162). * Delete compose sequences that mix top-row digits with numpad digits (!139) or mix upper & lower case letters (!144). * Delete some unuseful compose sequences meant for Bépo layout (!146). * Delete compose sequences using leftcaret & rightcaret keysyms (!163). * Remove KOI8-R character set from en_US.UTF-8/XLC_LOCALE (!148). * Map sr locales to sr_RS compose files (!161). ## Release 1.8.1 * Fix --enable-thread-safety-constructor configure option ## Release 1.8 * Add --enable-thread-safety-constructor configure option (default: enabled) to call XInitThreads() from the library's constructor, thus enabling thread-safety and locking by default. This may expose bugs in clients which did not follow documented rules for calling libX11 functions. * Fix Ethopian (am_ET.UTF-8) compose sequences. * Remove 8 compose sequences that generated the input symbols. * Add compose seuences for abovedot (\<period\> \<space\>), diaeresis (\<quotedbl\> \<space\>), and ogonek (\<semicolon\> \<space\>). ## Release 1.7.5 * Avoids a segfault when an invalid name is used for opening a display. ## Release 1.7.4 * Fixes the "Unknown sequence number" error by allowing backward jumps in the sequence number when widening it. * Any changes to virtual modifiers get propagated properly. * Greek case-conversion tables were updated to Unicode Data 14.0. * Compose sequences for ☮ 🄯 ⇐ ⇑ ⇓ were added, being the following: OY, ()), =<, =^, and =v. * Hammer-and-sickle can be composed with question mark plus backslash. ## Release 1.7.3 * Fixes a hanging issue in _XReply() where the replying thread would wait for an event when another thread was already waiting for one. * Avoids a crash when the X connection gets broken while closing down. ## Release 1.7.2 This is a bug fix release, correcting a regression introduced by and improving the checks from the fix for CVE-2021-31535. ## Release 1.7.1 This is a bug fix release, including a security fix for CVE-2021-31535, nls and documentation corrections. * Reject string longer than USHRT_MAX before sending them on the wire * Fix out-of-bound access in KeySymToUcs4() * nls: allow composing all breved letters also with a lowercase "u" * nls: add 'C.utf8' as an alias for 'en_US.UTF-8' * Nroff code fixes * Comments fixes ## Release 1.7.0 Version 1.7.0 includes a new API, hence the change from the 1.6 series to 1.7: * XSetIOErrorExitHandler which provides a mechanism for applications to recover from I/O error conditions instead of being forced to exit. Thanks to Carlos Garnacho for this. This release includes a bunch of bug fixes, some of which have been pending for over three years: * A bunch of nls cleanups to remove obsolete entries and clean up formatting of the list. Thanks to Benno Schulenberg for these. * Warning fixes and other cleanups across a huge swath of the library. Thanks to Alan Coopersmith for these. * Memory allocation bugs, including leaks and use after free in the locale code. Thanks to Krzesimir Nowak, Jacek Caban and Vittorio Zecca for these. * Thread safety fixes in the locale code. Thanks to Jacek Caban for these. * poll_for_response race condition fix. Thanks to Frediano Ziglio for the bulk of this effort, and to Peter Hutterer for careful review and improvements. Version 1.7.0 includes a couple of new locales: * ia and ie locales. Thanks to Carmina16 for these. There are also numerous compose entries added, including: * |^ or ^| for ↑, |v or v| for ↓, ~~ for ≈. Thanks to Antti Savolainen for this. * Allowing use of 'v' for caron, in addition to 'c', so things like vC for Č, vc for č. Thanks to Benno Schulenberg for this. * Compose sequences LT, lt for '<', and GT, gt for '>' for keyboards where those are difficult to access. Thanks to Jonathan Belsewir for this. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������